PaiGram/handler.py
2022-06-09 23:35:32 +08:00

82 lines
3.5 KiB
Python

from typing import Optional
from telegram.ext import CommandHandler, MessageHandler, filters, CallbackQueryHandler, InlineQueryHandler, Application
from plugins.admin import Admin
from plugins.auth import Auth
from plugins.base import NewChatMembersHandler
from plugins.cookies import Cookies
from plugins.daily_note import DailyNote
from plugins.errorhandler import error_handler
from plugins.gacha import Gacha
from plugins.help import Help
from plugins.inline import Inline
from plugins.post import Post
from plugins.quiz import Quiz
from plugins.sign import Sign
from plugins.start import start, ping, reply_keyboard_remove, unknown_command
from plugins.strategy import Strategy
from plugins.uid import Uid
from plugins.weapon import Weapon
from service import BaseService
def register_handlers(application: Application, service: BaseService):
"""
注册相关处理程序
:param application:
:param service:
:return:
"""
# 添加相关命令处理过程
def add_handler(handler, command: Optional[str] = None, regex: Optional[str] = None, query: Optional[str] = None,
block: bool = False) -> None:
if command:
application.add_handler(CommandHandler(command, handler, block=block))
if regex:
application.add_handler(MessageHandler(filters.Regex(regex), handler, block=block))
if query:
application.add_handler(CallbackQueryHandler(handler, pattern=query, block=block))
add_handler(start, command="start")
_help = Help(service)
add_handler(_help.command_start, command="help")
add_handler(ping, command="ping")
auth = Auth(service)
new_chat_members_handler = NewChatMembersHandler(service, auth.new_mem)
application.add_handler(MessageHandler(filters.StatusUpdate.NEW_CHAT_MEMBERS,
new_chat_members_handler.new_member, block=False))
add_handler(auth.query, query=r"^auth_challenge\|")
add_handler(auth.admin, query=r"^auth_admin\|")
cookies_handler = Cookies.create_conversation_handler(service)
uid_handler = Uid.create_conversation_handler(service)
daily_note_handler = DailyNote.create_conversation_handler(service)
sign_handler = Sign.create_conversation_handler(service)
quiz_handler = Quiz.create_conversation_handler(service)
post_handler = Post.create_conversation_handler(service)
gacha = Gacha(service)
add_handler(gacha.command_start, command="gacha", regex=r"^抽卡模拟器(.*)")
admin = Admin(service)
add_handler(admin.add_admin, command="add_admin")
add_handler(admin.del_admin, command="del_admin")
weapon = Weapon(service)
add_handler(weapon.command_start, command="weapon", regex=r"^武器查询(.*)")
strategy = Strategy(service)
add_handler(strategy.command_start, command="strategy", regex=r"^角色攻略查询(.*)")
# 调试功能
add_handler(reply_keyboard_remove, command="reply_keyboard_remove")
add_handler(admin.leave_chat, command="leave_chat")
application.add_handler(sign_handler)
application.add_handler(quiz_handler)
application.add_handler(cookies_handler)
application.add_handler(uid_handler)
application.add_handler(daily_note_handler)
application.add_handler(post_handler)
inline = Inline(service)
application.add_handler(InlineQueryHandler(inline.inline_query, block=False))
application.add_handler(MessageHandler(filters.COMMAND & filters.ChatType.PRIVATE, unknown_command))
application.add_error_handler(error_handler, block=False)