-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
83 lines (67 loc) · 3.81 KB
/
main.py
File metadata and controls
83 lines (67 loc) · 3.81 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
from datetime import time
import pytz
from telegram.ext import ApplicationBuilder, CommandHandler, MessageHandler, filters, CallbackQueryHandler
from config import BOT_TOKEN, ADMIN_ID, CLEANUP_TIME_HOUR
from database.storage import init_db, cleanup_old_data
# 引入模块
from handlers.common import cmd_start, cmd_help, cmd_id, cmd_fear
from handlers.gatekeeper import on_new_member, callback_verify
from handlers.admin import cmd_request_broadcast, callback_approval, cmd_report, cmd_revoke, post_init, cmd_set_admin_topic
from handlers.broadcast import handle_broadcast_input, callback_broadcast_exec, callback_signal_btn
from handlers.setup import setup_handler
from handlers.interaction import handle_text_interaction, handle_photo_interaction, cmd_my_points, cmd_top
from handlers.invite import cmd_invite, callback_invite_select
# 新增:商城模块
from handlers.shop import (
add_product_handler, cmd_manage_products, callback_list_products,
callback_del_product, cmd_use_code, cmd_shop, callback_buy_confirm
)
from handlers.common import cmd_sign_word
async def on_startup(application):
await init_db()
await post_init(application)
if __name__ == '__main__':
if not BOT_TOKEN: exit(1)
app = ApplicationBuilder().token(BOT_TOKEN).post_init(on_startup).build()
tz = pytz.timezone('Asia/Shanghai')
app.job_queue.run_daily(cleanup_old_data, time(hour=CLEANUP_TIME_HOUR, minute=0, tzinfo=tz))
# --- 1. 基础指令 ---
app.add_handler(CommandHandler("start", cmd_start))
app.add_handler(CommandHandler("help", cmd_help))
app.add_handler(CommandHandler("id", cmd_id))
app.add_handler(CommandHandler("fear", cmd_fear))
app.add_handler(CommandHandler("sign", cmd_sign_word))
app.add_handler(CommandHandler("my", cmd_my_points))
app.add_handler(CommandHandler("top", cmd_top))
app.add_handler(CommandHandler("invite", cmd_invite))
# --- 2. 商城指令 (用户) ---
app.add_handler(CommandHandler("shop", cmd_shop))
# --- 3. 商城管理 (管理员) ---
app.add_handler(add_product_handler) # 复杂的上架向导
app.add_handler(CommandHandler("products", cmd_manage_products)) # 管理列表
app.add_handler(CommandHandler("use", cmd_use_code)) # 核销
# --- 4. 管理指令 ---
app.add_handler(CommandHandler("report", cmd_report))
app.add_handler(CommandHandler("revoke", cmd_revoke))
app.add_handler(CommandHandler("request_broadcast", cmd_request_broadcast))
app.add_handler(CommandHandler("set_topic", cmd_set_admin_topic))
# --- 5. 复杂流程 ---
app.add_handler(setup_handler)
# --- 6. 回调处理 ---
app.add_handler(CallbackQueryHandler(callback_verify, pattern="^verify_"))
app.add_handler(CallbackQueryHandler(callback_approval, pattern="^appr_"))
app.add_handler(CallbackQueryHandler(callback_broadcast_exec, pattern="^c_"))
app.add_handler(CallbackQueryHandler(callback_signal_btn, pattern="^btn_"))
app.add_handler(CallbackQueryHandler(callback_invite_select, pattern="^inv_sel_"))
# 商城回调
app.add_handler(CallbackQueryHandler(callback_list_products, pattern="^mprod_sel_"))
app.add_handler(CallbackQueryHandler(callback_del_product, pattern="^delprod_"))
app.add_handler(CallbackQueryHandler(callback_buy_confirm, pattern="^buy_"))
# --- 7. 消息监听 ---
app.add_handler(MessageHandler(filters.StatusUpdate.NEW_CHAT_MEMBERS, on_new_member))
if ADMIN_ID:
app.add_handler(MessageHandler(filters.Chat(chat_id=ADMIN_ID) & ~filters.COMMAND, handle_broadcast_input))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_text_interaction))
app.add_handler(MessageHandler(filters.PHOTO, handle_photo_interaction))
print("🚀 EchoWave Pro Max (SQLite Edition) 已启动...")
app.run_polling()