bot commited on
Commit
6f8116f
·
1 Parent(s): ee969cd

添加机器人功能

Browse files
Files changed (2) hide show
  1. main.py +46 -3
  2. requirements.txt +1 -0
main.py CHANGED
@@ -2,7 +2,8 @@ import os
2
  import asyncio
3
  import json
4
  import logging
5
-
 
6
  import httpx
7
 
8
  from pikpakapi import PikPakApi
@@ -68,6 +69,8 @@ if THUNDERX_PASSWORD is None:
68
  raise ValueError("请在环境变量中设置THUNDERX_PASSWORD,密码用来登陆!")
69
 
70
  PROXY_URL = os.getenv("PROXY_URL")
 
 
71
 
72
 
73
  async def verify_token(
@@ -92,6 +95,8 @@ async def verify_token(
92
 
93
 
94
  app = FastAPI()
 
 
95
  app.add_middleware(
96
  CORSMiddleware,
97
  allow_origins=["*"],
@@ -107,16 +112,30 @@ templates = Jinja2Templates(
107
  directory="templates", variable_start_string="{[", variable_end_string="]}"
108
  )
109
 
110
- THUNDERX_CLIENT = None
111
-
112
 
113
  async def log_token(THUNDERX_CLIENT, extra_data):
114
  logging.info(f"Token: {THUNDERX_CLIENT.encoded_token}, Extra Data: {extra_data}")
115
 
116
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  @app.on_event("startup")
118
  async def init_client():
119
  global THUNDERX_CLIENT
 
 
120
  if not os.path.exists("thunderx.txt"):
121
  THUNDERX_CLIENT = PikPakApi(
122
  username=THUNDERX_USERNAME,
@@ -143,6 +162,30 @@ async def init_client():
143
  )
144
  )
145
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
 
147
  @front_router.get(
148
  "/",
 
2
  import asyncio
3
  import json
4
  import logging
5
+ from telegram import Bot, Update
6
+ from telegram.ext import Application, CommandHandler, MessageHandler
7
  import httpx
8
 
9
  from pikpakapi import PikPakApi
 
69
  raise ValueError("请在环境变量中设置THUNDERX_PASSWORD,密码用来登陆!")
70
 
71
  PROXY_URL = os.getenv("PROXY_URL")
72
+ TG_BOT_TOKEN = os.getenv("TG_BOT_TOKEN")
73
+ TG_WEBHOOK_URL = os.getenv("TG_WEBHOOK_URL")
74
 
75
 
76
  async def verify_token(
 
95
 
96
 
97
  app = FastAPI()
98
+
99
+
100
  app.add_middleware(
101
  CORSMiddleware,
102
  allow_origins=["*"],
 
112
  directory="templates", variable_start_string="{[", variable_end_string="]}"
113
  )
114
 
 
 
115
 
116
  async def log_token(THUNDERX_CLIENT, extra_data):
117
  logging.info(f"Token: {THUNDERX_CLIENT.encoded_token}, Extra Data: {extra_data}")
118
 
119
 
120
+ THUNDERX_CLIENT = None
121
+ TG_BOT_APPLICATION = None
122
+
123
+
124
+ ###################TG机器人功能区###################
125
+ # 定义命令处理函数
126
+ def start(update: Update, context):
127
+ update.message.reply_text("你好!我是一个 FastAPI + Telegram 机器人!")
128
+
129
+
130
+ def help(update: Update, context):
131
+ update.message.reply_text("这是一个帮助信息!")
132
+
133
+
134
  @app.on_event("startup")
135
  async def init_client():
136
  global THUNDERX_CLIENT
137
+ global TG_BOT
138
+ global TG_DISPATHER
139
  if not os.path.exists("thunderx.txt"):
140
  THUNDERX_CLIENT = PikPakApi(
141
  username=THUNDERX_USERNAME,
 
162
  )
163
  )
164
 
165
+ if TG_BOT_TOKEN is None:
166
+ print("未设置TG_BOT_TOKEN无法实现TG机器人功能!")
167
+ else:
168
+ TG_BOT_APPLICATION = Application.builder().token(TG_BOT_TOKEN).build()
169
+ await TG_BOT_APPLICATION.bot.set_webhook(TG_WEBHOOK_URL)
170
+ # 将命令处理函数添加到 dispatcher
171
+ TG_BOT_APPLICATION.add_handler(CommandHandler("start", start))
172
+ TG_BOT_APPLICATION.add_handler(CommandHandler("help", help))
173
+
174
+
175
+ # FastAPI 路由:接收来自 Telegram 的 Webhook 回调
176
+ @app.post("/webhook")
177
+ async def webhook(request: Request):
178
+ # 从请求获取 JSON 数据
179
+ data = await request.json()
180
+
181
+ # 将 Telegram Update 转换为 Update 对象
182
+ update = Update.de_json(data, TG_BOT_APPLICATION.bot)
183
+
184
+ # 将 Update 对象传递给 Application 进行处理
185
+ await TG_BOT_APPLICATION.process_update(update)
186
+
187
+ return JSONResponse({"status": "ok"})
188
+
189
 
190
  @front_router.get(
191
  "/",
requirements.txt CHANGED
@@ -1,4 +1,5 @@
1
  fastapi
 
2
  pydantic-settings
3
  requests
4
  jinja2
 
1
  fastapi
2
+ python-telegram-bot
3
  pydantic-settings
4
  requests
5
  jinja2