-
Notifications
You must be signed in to change notification settings - Fork 919
Expand file tree
/
Copy pathbot.py
More file actions
94 lines (79 loc) · 3.27 KB
/
bot.py
File metadata and controls
94 lines (79 loc) · 3.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
"""Telegram 机器人主程序"""
import logging
from functools import partial
from telegram.ext import Application, CommandHandler
from config import BOT_TOKEN
from database_mysql import Database
from handlers.user_commands import (
start_command,
about_command,
help_command,
balance_command,
checkin_command,
invite_command,
use_command,
)
from handlers.verify_commands import (
verify_command,
verify2_command,
verify3_command,
verify4_command,
getV4Code_command,
)
from handlers.admin_commands import (
addbalance_command,
block_command,
white_command,
blacklist_command,
genkey_command,
listkeys_command,
broadcast_command,
)
# 配置日志
logging.basicConfig(
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
level=logging.INFO,
)
logger = logging.getLogger(__name__)
async def error_handler(update: object, context) -> None:
"""全局错误处理"""
logger.exception("处理更新时发生异常: %s", context.error, exc_info=context.error)
def main():
"""主函数"""
# 初始化数据库
db = Database()
# 创建应用 - 启用并发处理
application = (
Application.builder()
.token(BOT_TOKEN)
.concurrent_updates(True) # 🔥 关键:启用并发处理多个命令
.build()
)
# 注册用户命令(使用 partial 传递 db 参数)
application.add_handler(CommandHandler("start", partial(start_command, db=db)))
application.add_handler(CommandHandler("about", partial(about_command, db=db)))
application.add_handler(CommandHandler("help", partial(help_command, db=db)))
application.add_handler(CommandHandler("balance", partial(balance_command, db=db)))
application.add_handler(CommandHandler("qd", partial(checkin_command, db=db)))
application.add_handler(CommandHandler("invite", partial(invite_command, db=db)))
application.add_handler(CommandHandler("use", partial(use_command, db=db)))
# 注册验证命令
application.add_handler(CommandHandler("verify", partial(verify_command, db=db)))
application.add_handler(CommandHandler("verify2", partial(verify2_command, db=db)))
application.add_handler(CommandHandler("verify3", partial(verify3_command, db=db)))
application.add_handler(CommandHandler("verify4", partial(verify4_command, db=db)))
application.add_handler(CommandHandler("getV4Code", partial(getV4Code_command, db=db)))
# 注册管理员命令
application.add_handler(CommandHandler("addbalance", partial(addbalance_command, db=db)))
application.add_handler(CommandHandler("block", partial(block_command, db=db)))
application.add_handler(CommandHandler("white", partial(white_command, db=db)))
application.add_handler(CommandHandler("blacklist", partial(blacklist_command, db=db)))
application.add_handler(CommandHandler("genkey", partial(genkey_command, db=db)))
application.add_handler(CommandHandler("listkeys", partial(listkeys_command, db=db)))
application.add_handler(CommandHandler("broadcast", partial(broadcast_command, db=db)))
# 注册错误处理器
application.add_error_handler(error_handler)
logger.info("机器人启动中...")
application.run_polling(drop_pending_updates=True)
if __name__ == "__main__":
main()