filters.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. from wbb import app, db
  2. from wbb.modules.admin import member_permissions
  3. from wbb.utils.dbfunctions import (
  4. _get_filters, save_filter,
  5. get_filters_names, get_filter,
  6. delete_filter
  7. )
  8. from pyrogram import filters
  9. from wbb.utils.errors import capture_err
  10. from wbb.utils.filter_groups import chat_filters_group
  11. __MODULE__ = "Filters"
  12. __HELP__ = """/filters To Get All The Filters In The Chat.
  13. /filter [FILTER_NAME] To Save A Filter (Can be a sticker or text).
  14. /stop [FILTER_NAME] To Stop A Filter."""
  15. @app.on_message(filters.command("filter") & ~filters.edited & ~filters.private)
  16. @capture_err
  17. async def save_filters(_, message):
  18. if len(message.command) < 2 or not message.reply_to_message:
  19. await message.reply_text("Usage:\nReply to a text or sticker with /filter [FILTER_NAME] to save it.")
  20. elif not message.reply_to_message.text and not message.reply_to_message.sticker:
  21. await message.reply_text("__**You can only save text or stickers in filters.**__")
  22. elif len(await member_permissions(message.chat.id, message.from_user.id)) < 1:
  23. await message.reply_text("**You don't have enough permissions**")
  24. else:
  25. name = message.text.split(None, 1)[1].strip()
  26. if not name:
  27. await message.reply_text("**Usage**\n__/filter [FILTER_NAME]__")
  28. return
  29. _type = "text" if message.reply_to_message.text else "sticker"
  30. _filter = {
  31. "type": _type,
  32. "data": message.reply_to_message.text.markdown if _type == "text" else message.reply_to_message.sticker.file_id
  33. }
  34. await save_filter(message.chat.id, name, _filter)
  35. await message.reply_text(f"__**Saved filter {name}.**__")
  36. @app.on_message(filters.command("filters") & ~filters.edited & ~filters.private)
  37. @capture_err
  38. async def get_filterss(_, message):
  39. _filters = await get_filters_names(message.chat.id)
  40. if not _filters:
  41. await message.reply_text("**No filters in this chat.**")
  42. else:
  43. msg = f"List of filters in {message.chat.title}\n"
  44. for _filter in _filters:
  45. msg += f"**-** `{_filter}`\n"
  46. await message.reply_text(msg)
  47. @app.on_message(filters.command("stop") & ~filters.edited & ~filters.private)
  48. @capture_err
  49. async def del_filter(_, message):
  50. if len(message.command) < 2:
  51. await message.reply_text("**Usage**\n__/stop [FILTER_NAME]__")
  52. elif len(await member_permissions(message.chat.id, message.from_user.id)) < 1:
  53. await message.reply_text("**You don't have enough permissions**")
  54. else:
  55. name = message.text.split(None, 1)[1].strip()
  56. if not name:
  57. await message.reply_text("**Usage**\n__/stop [FILTER_NAME]__")
  58. return
  59. chat_id = message.chat.id
  60. deleted = await delete_filter(chat_id, name)
  61. if deleted:
  62. await message.reply_text(f"**Deleted filter {name}.**")
  63. else:
  64. await message.reply_text(f"**No such filter.**")
  65. @app.on_message(filters.text & ~filters.edited &
  66. ~filters.private & ~filters.via_bot &
  67. ~filters.forwarded, group=chat_filters_group)
  68. async def filters_re(_, message):
  69. try:
  70. if message.text[0] != "/":
  71. text = message.text.lower().strip().split(" ")
  72. if text:
  73. chat_id = message.chat.id
  74. list_of_filters = await get_filters_names(chat_id)
  75. for word in text:
  76. if word in list_of_filters:
  77. _filter = await get_filter(chat_id, word)
  78. data_type = _filter['type']
  79. data = _filter['data']
  80. if data_type == "text":
  81. await message.reply_text(data)
  82. else:
  83. await message.reply_sticker(data)
  84. return
  85. except Exception as e:
  86. print("Error in filters_re function in filters.py [IGNORE THIS]")
  87. pass