bot
commited on
Commit
·
6f8116f
1
Parent(s):
ee969cd
添加机器人功能
Browse files- main.py +46 -3
- 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
|