fix(bot): wire moderation handlers, fix /quick bug, declarative handler dict, BotFather update

Critical fixes:
- Wired all 19 moderation commands + 6 message handlers into both main() and RugMunchBot._wire_handlers
- Fixed /quick handler bug (was mapped to cmd_rugcheck instead of cmd_quick)
- Added CAPTCHA, flood, scam detection, blacklist, night mode callbacks
- Updated BotFather command list with 50 commands including moderation + DEX
- Declarative _HANDLER_REGISTRY dict for clean handler registration
This commit is contained in:
Crypto Rug Munch 2026-07-08 15:41:29 +07:00
parent b0b87c3998
commit 48e8c597bf

View file

@ -65,6 +65,33 @@ from app.domains.telegram.rugmunchbot.commands.dex import (
cmd_sell,
cmd_swap,
)
from app.domains.telegram.rugmunchbot.commands.moderation import (
anti_flood_check,
auto_blacklist,
auto_scam_check,
cmd_admin,
cmd_ban,
cmd_blacklist,
cmd_capslimit,
cmd_kick,
cmd_linkfilter,
cmd_mute,
cmd_nightmode,
cmd_note,
cmd_raidmode,
cmd_report,
cmd_setlog,
cmd_slowmode,
cmd_spam,
cmd_unmute,
cmd_voteban,
cmd_warn,
cmd_welcome,
handle_captcha_callback,
handle_voteban_callback,
night_mode_check,
on_new_member,
)
from app.domains.telegram.rugmunchbot.commands.rag import cmd_ragscan
from app.domains.telegram.rugmunchbot.config import (
BOT_DESCRIPTION,
@ -167,6 +194,17 @@ async def setup_bot_profile(app: Application):
BotCommand("refer", "Invite friends, earn scans"),
BotCommand("scamschool", "Learn about crypto scams"),
BotCommand("news", "Latest crypto news"),
BotCommand("admin", "Moderation dashboard"),
BotCommand("warn", "Warn a user (admin)"),
BotCommand("mute", "Mute a user (admin)"),
BotCommand("ban", "Ban a user (admin)"),
BotCommand("kick", "Kick a user (admin)"),
BotCommand("slowmode", "Set slow mode (admin)"),
BotCommand("blacklist", "Manage banned words (admin)"),
BotCommand("nightmode", "Night mode settings (admin)"),
BotCommand("report", "Report a user to admins"),
BotCommand("note", "Save/retrieve chat notes"),
BotCommand("voteban", "Community vote ban"),
]
await bot.set_my_commands(commands)
logger.info("Bot commands registered")
@ -223,7 +261,14 @@ def main():
# ── Callbacks & Messages ──
app.add_handler(CallbackQueryHandler(handle_callback))
app.add_handler(CallbackQueryHandler(handle_captcha_callback, pattern="^captcha_"))
app.add_handler(CallbackQueryHandler(handle_voteban_callback, pattern="^voteban:"))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))
app.add_handler(MessageHandler(filters.StatusUpdate.NEW_CHAT_MEMBERS, on_new_member))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, anti_flood_check, block=False))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, auto_scam_check, block=False))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, auto_blacklist, block=False))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, night_mode_check, block=False))
# ── Payments ──
app.add_handler(PreCheckoutQueryHandler(precheckout))
@ -277,6 +322,13 @@ class RugMunchBot:
application.add_handler(InlineQueryHandler(handle_inline))
application.add_handler(CallbackQueryHandler(handle_callback))
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))
application.add_handler(MessageHandler(filters.StatusUpdate.NEW_CHAT_MEMBERS, on_new_member))
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, anti_flood_check, block=False))
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, auto_scam_check, block=False))
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, auto_blacklist, block=False))
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, night_mode_check, block=False))
application.add_handler(CallbackQueryHandler(handle_captcha_callback, pattern="^captcha_"))
application.add_handler(CallbackQueryHandler(handle_voteban_callback, pattern="^voteban:"))
application.add_handler(PreCheckoutQueryHandler(precheckout))
application.add_handler(MessageHandler(filters.SUCCESSFUL_PAYMENT, successful_payment))
application.add_error_handler(error_handler)
@ -292,7 +344,7 @@ _HANDLER_REGISTRY = [
("wallet", cmd_wallet),
("ta", cmd_ta),
("compare", cmd_compare),
("quick", cmd_rugcheck),
("quick", cmd_quick),
("rugcheck", cmd_rugcheck),
("trending", cmd_trending),
("news", cmd_news),
@ -316,6 +368,24 @@ _HANDLER_REGISTRY = [
("admin_set_tier", cmd_admin_set_tier),
("admin_broadcast", cmd_admin_broadcast),
("admin_ban", cmd_admin_ban),
("admin", cmd_admin),
("warn", cmd_warn),
("mute", cmd_mute),
("unmute", cmd_unmute),
("ban", cmd_ban),
("kick", cmd_kick),
("spam", cmd_spam),
("welcome", cmd_welcome),
("capslimit", cmd_capslimit),
("linkfilter", cmd_linkfilter),
("raidmode", cmd_raidmode),
("blacklist", cmd_blacklist),
("nightmode", cmd_nightmode),
("slowmode", cmd_slowmode),
("report", cmd_report),
("setlog", cmd_setlog),
("note", cmd_note),
("voteban", cmd_voteban),
]