quotly.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. from io import BytesIO
  2. from traceback import format_exc
  3. from pyrogram import filters
  4. from pyrogram.types import Message
  5. from wbb import app, arq
  6. from wbb.core.decorators.errors import capture_err
  7. __MODULE__ = "Quotly"
  8. __HELP__ = """
  9. /q - To quote a message.
  10. /q [INTEGER] - To quote more than 1 messages.
  11. """
  12. async def quotify(messages: list):
  13. response = await arq.quotly(messages)
  14. if not response.ok:
  15. return [False, response.result]
  16. sticker = response.result
  17. sticker = BytesIO(sticker)
  18. sticker.name = "sticker.webp"
  19. return [True, sticker]
  20. def getArg(message: Message) -> str:
  21. arg = message.text.strip().split(None, 1)[1].strip()
  22. return arg
  23. def isArgInt(message: Message) -> bool:
  24. count = getArg(message)
  25. try:
  26. count = int(count)
  27. return [True, count]
  28. except ValueError:
  29. return [False, 0]
  30. @app.on_message(filters.command("q"))
  31. @capture_err
  32. async def quotly_func(_, message: Message):
  33. if not message.reply_to_message:
  34. await message.reply_text("Reply to a message to quote it.")
  35. return
  36. if not message.reply_to_message.text:
  37. await message.reply_text(
  38. "Replied message has no text, can't quote it."
  39. )
  40. return
  41. m = await message.reply_text("Quoting Messages")
  42. if len(message.command) < 2:
  43. messages = [message.reply_to_message]
  44. elif len(message.command) == 2:
  45. arg = isArgInt(message)
  46. if arg[0]:
  47. if arg[1] < 2 or arg[1] > 10:
  48. return await m.edit("Argument must be between 2-10.")
  49. count = arg[1]
  50. messages = await app.get_messages(
  51. message.chat.id,
  52. [
  53. i
  54. for i in range(
  55. message.reply_to_message.message_id,
  56. message.reply_to_message.message_id + count,
  57. )
  58. ],
  59. replies=0,
  60. )
  61. else:
  62. if getArg(message) != "r":
  63. return await m.edit(
  64. "Incorrect Argument, Pass **'r'** or **'INT'**, **EX:** __/q 2__"
  65. )
  66. reply_message = await app.get_messages(
  67. message.chat.id,
  68. message.reply_to_message.message_id,
  69. replies=1,
  70. )
  71. messages = [reply_message]
  72. else:
  73. await m.edit(
  74. "Incorrect argument, check quotly module in help section."
  75. )
  76. return
  77. try:
  78. sticker = await quotify(messages)
  79. if not sticker[0]:
  80. await message.rely_text(sticker[1])
  81. return await m.delete()
  82. sticker = sticker[1]
  83. await message.reply_sticker(sticker)
  84. await m.delete()
  85. sticker.close()
  86. except Exception as e:
  87. await message.reply_text(
  88. "Something wrong happened while quoting messages,"
  89. + " This error usually happens when there's a "
  90. + " message containing something other than text."
  91. )
  92. await m.delete()
  93. e = format_exc()
  94. print(e)