Bot become a Community Guard & Post send manager
added: dictionary support for censore message/user management with dict triggers
This commit is contained in:
41
app/main.py
41
app/main.py
@@ -8,6 +8,14 @@ from app.bot.handlers.media import on_media
|
||||
from app.bot.handlers.callbacks import on_callback
|
||||
from app.bot.handlers.join_info import on_my_chat_member
|
||||
from app.bot.handlers.chat_id_cmd import chat_id_cmd
|
||||
from app.bot.handlers.bind_chat import bind_chat_cb
|
||||
from app.bot.handlers.security import security_cmd, security_cb, spam_import_cmd, spam_import_capture
|
||||
from app.bot.handlers.moderation import moderate_message
|
||||
from app.bot.handlers.errors import on_error
|
||||
from app.bot.handlers.mod_status import mod_status_cmd
|
||||
from app.infra.metrics import start_metrics_server
|
||||
from app.bot.handlers.security import dicts_cmd, dicts_cb
|
||||
|
||||
|
||||
def main():
|
||||
cfg = load_config()
|
||||
@@ -21,18 +29,43 @@ def main():
|
||||
app.add_handler(CommandHandler("add_group", add_group_cmd))
|
||||
app.add_handler(CommandHandler("new", new_cmd))
|
||||
app.add_handler(CommandHandler("id", chat_id_cmd))
|
||||
app.add_handler(CommandHandler("mod_status", mod_status_cmd))
|
||||
# команды
|
||||
app.add_handler(CommandHandler("dicts", dicts_cmd))
|
||||
|
||||
# Callback queries
|
||||
app.add_handler(CallbackQueryHandler(on_callback))
|
||||
# коллбэки словарей
|
||||
app.add_handler(CallbackQueryHandler(dicts_cb, pattern=r"^dict:"))
|
||||
|
||||
# Callbacks (order matters!)
|
||||
app.add_handler(CallbackQueryHandler(security_cb, pattern=r"^pol:"))
|
||||
app.add_handler(CallbackQueryHandler(bind_chat_cb, pattern=r"^bind:"))
|
||||
app.add_handler(CallbackQueryHandler(on_callback, pattern=r"^(draft_|tgl:|selall:|clear:|sendmulti:)"))
|
||||
|
||||
# Private chat handlers
|
||||
app.add_handler(MessageHandler(filters.ChatType.PRIVATE & filters.TEXT, on_text))
|
||||
# Private chat helpers
|
||||
app.add_handler(MessageHandler(filters.ChatType.PRIVATE & filters.FORWARDED, add_group_capture))
|
||||
app.add_handler(MessageHandler(filters.ChatType.PRIVATE & (filters.PHOTO | filters.VIDEO | filters.ANIMATION), on_media))
|
||||
|
||||
# Join/rights updates
|
||||
app.add_handler(ChatMemberHandler(on_my_chat_member, chat_member_types=ChatMemberHandler.MY_CHAT_MEMBER))
|
||||
|
||||
# Security / Dict
|
||||
app.add_handler(CommandHandler("security", security_cmd))
|
||||
app.add_handler(CommandHandler("spam_import", spam_import_cmd, filters.ChatType.PRIVATE))
|
||||
async def spam_import_redirect(update, ctx):
|
||||
await update.effective_message.reply_text("Эту команду нужно выполнять в ЛС. Откройте чат со мной и пришлите /spam_import.")
|
||||
app.add_handler(CommandHandler("spam_import", spam_import_redirect, filters.ChatType.GROUPS))
|
||||
app.add_handler(MessageHandler(filters.ChatType.PRIVATE & filters.Document.ALL, spam_import_capture))
|
||||
from app.bot.handlers.security import spam_import_text_capture
|
||||
app.add_handler(MessageHandler(filters.ChatType.PRIVATE & filters.TEXT & ~filters.COMMAND, spam_import_text_capture, block=False))
|
||||
|
||||
# Moderation
|
||||
app.add_handler(MessageHandler(filters.ChatType.GROUPS & ~filters.COMMAND, moderate_message))
|
||||
|
||||
# Draft editor (after import handlers)
|
||||
app.add_handler(MessageHandler(filters.ChatType.PRIVATE & filters.TEXT & ~filters.COMMAND, on_text))
|
||||
|
||||
start_metrics_server(cfg.metrics_port)
|
||||
|
||||
app.run_polling(allowed_updates=None)
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user