quotly.py 2.5 KB

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