Update app.py
Browse files
app.py
CHANGED
@@ -83,6 +83,66 @@ BAN_TRIGGER_PHRASES = [
|
|
83 |
]
|
84 |
UNBAN_PHRASE = "close username"
|
85 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
def make_telegram_request(method, data=None):
|
87 |
url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/{method}"
|
88 |
if PHP_PROXY_URL:
|
@@ -475,65 +535,5 @@ async def unbanUser(chatId, userId):
|
|
475 |
await sendTelegramMessage(chatId, f"用户 {userId} 已被解禁。")
|
476 |
print(f"用户 {userId} 在群组 {chatId} 中被解禁。")
|
477 |
|
478 |
-
WEBDAV_URL = os.environ.get('WEBDAV_URL')
|
479 |
-
WEBDAV_USERNAME = os.environ.get('WEBDAV_USERNAME')
|
480 |
-
WEBDAV_PASSWORD = os.environ.get('WEBDAV_PASSWORD')
|
481 |
-
|
482 |
-
def save_data_to_webdav():
|
483 |
-
data = {
|
484 |
-
'chatHistories': chatHistories,
|
485 |
-
'GROUP_SETTINGS': GROUP_SETTINGS,
|
486 |
-
'USER_SETTINGS': USER_SETTINGS,
|
487 |
-
'USER_LAST_ACTIVE': {k: v.isoformat() for k, v in USER_LAST_ACTIVE.items()},
|
488 |
-
'GROUP_ACTIVE_USERS': {k: list(v) for k, v in GROUP_ACTIVE_USERS.items()},
|
489 |
-
'GROUP_INFO': {k: {**v, 'last_active': v['last_active'].isoformat()} for k, v in GROUP_INFO.items()},
|
490 |
-
'BANNED_USERS': {k: v.isoformat() for k, v in BANNED_USERS.items()}
|
491 |
-
}
|
492 |
-
|
493 |
-
json_data = json.dumps(data)
|
494 |
-
|
495 |
-
response = requests.put(f"{WEBDAV_URL}/tg_bot/bot_data.json",
|
496 |
-
data=json_data,
|
497 |
-
auth=HTTPBasicAuth(WEBDAV_USERNAME, WEBDAV_PASSWORD))
|
498 |
-
|
499 |
-
if response.status_code in [200, 201, 204]:
|
500 |
-
print("数据已保存到WebDAV")
|
501 |
-
else:
|
502 |
-
print(f"保存到WebDAV失败: {response.status_code}")
|
503 |
-
|
504 |
-
def load_data_from_webdav():
|
505 |
-
global chatHistories, GROUP_SETTINGS, USER_SETTINGS, USER_LAST_ACTIVE, GROUP_ACTIVE_USERS, GROUP_INFO, BANNED_USERS
|
506 |
-
|
507 |
-
response = requests.get(f"{WEBDAV_URL}/tg_bot/bot_data.json",
|
508 |
-
auth=HTTPBasicAuth(WEBDAV_USERNAME, WEBDAV_PASSWORD))
|
509 |
-
|
510 |
-
if response.status_code == 200:
|
511 |
-
data = json.loads(response.text)
|
512 |
-
|
513 |
-
chatHistories = data['chatHistories']
|
514 |
-
GROUP_SETTINGS = data['GROUP_SETTINGS']
|
515 |
-
USER_SETTINGS = data['USER_SETTINGS']
|
516 |
-
USER_LAST_ACTIVE = {k: datetime.fromisoformat(v) for k, v in data['USER_LAST_ACTIVE'].items()}
|
517 |
-
GROUP_ACTIVE_USERS = {k: set(v) for k, v in data['GROUP_ACTIVE_USERS'].items()}
|
518 |
-
GROUP_INFO = {k: {**v, 'last_active': datetime.fromisoformat(v['last_active'])} for k, v in data['GROUP_INFO'].items()}
|
519 |
-
BANNED_USERS = {k: datetime.fromisoformat(v) for k, v in data['BANNED_USERS'].items()}
|
520 |
-
|
521 |
-
print("数据已从WebDAV加载")
|
522 |
-
else:
|
523 |
-
print("WebDAV中没有找到数��或加载失败,使用初始值")
|
524 |
-
|
525 |
-
def periodic_save():
|
526 |
-
while True:
|
527 |
-
time.sleep(60) # 等待60秒
|
528 |
-
save_data_to_webdav()
|
529 |
-
|
530 |
-
# 在程序启动时加载数据
|
531 |
-
load_data_from_webdav()
|
532 |
-
|
533 |
-
# 启动定期保存的线程
|
534 |
-
save_thread = threading.Thread(target=periodic_save)
|
535 |
-
save_thread.daemon = True
|
536 |
-
save_thread.start()
|
537 |
-
|
538 |
if __name__ == '__main__':
|
539 |
app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860)))
|
|
|
83 |
]
|
84 |
UNBAN_PHRASE = "close username"
|
85 |
|
86 |
+
WEBDAV_URL = os.environ.get('WEBDAV_URL')
|
87 |
+
WEBDAV_USERNAME = os.environ.get('WEBDAV_USERNAME')
|
88 |
+
WEBDAV_PASSWORD = os.environ.get('WEBDAV_PASSWORD')
|
89 |
+
|
90 |
+
def save_data_to_webdav():
|
91 |
+
data = {
|
92 |
+
'chatHistories': chatHistories,
|
93 |
+
'GROUP_SETTINGS': GROUP_SETTINGS,
|
94 |
+
'USER_SETTINGS': USER_SETTINGS,
|
95 |
+
'USER_LAST_ACTIVE': {k: v.isoformat() for k, v in USER_LAST_ACTIVE.items()},
|
96 |
+
'GROUP_ACTIVE_USERS': {k: list(v) for k, v in GROUP_ACTIVE_USERS.items()},
|
97 |
+
'GROUP_INFO': {k: {**v, 'last_active': v['last_active'].isoformat()} for k, v in GROUP_INFO.items()},
|
98 |
+
'BANNED_USERS': {k: v.isoformat() for k, v in BANNED_USERS.items()}
|
99 |
+
}
|
100 |
+
|
101 |
+
json_data = json.dumps(data)
|
102 |
+
|
103 |
+
response = requests.put(f"{WEBDAV_URL}/tg_bot/bot_data.json",
|
104 |
+
data=json_data,
|
105 |
+
auth=HTTPBasicAuth(WEBDAV_USERNAME, WEBDAV_PASSWORD))
|
106 |
+
|
107 |
+
if response.status_code in [200, 201, 204]:
|
108 |
+
print("数据已保存到WebDAV")
|
109 |
+
else:
|
110 |
+
print(f"保存到WebDAV失败: {response.status_code}")
|
111 |
+
|
112 |
+
def load_data_from_webdav():
|
113 |
+
global chatHistories, GROUP_SETTINGS, USER_SETTINGS, USER_LAST_ACTIVE, GROUP_ACTIVE_USERS, GROUP_INFO, BANNED_USERS
|
114 |
+
|
115 |
+
response = requests.get(f"{WEBDAV_URL}/tg_bot/bot_data.json",
|
116 |
+
auth=HTTPBasicAuth(WEBDAV_USERNAME, WEBDAV_PASSWORD))
|
117 |
+
|
118 |
+
if response.status_code == 200:
|
119 |
+
data = json.loads(response.text)
|
120 |
+
|
121 |
+
chatHistories = data['chatHistories']
|
122 |
+
GROUP_SETTINGS = data['GROUP_SETTINGS']
|
123 |
+
USER_SETTINGS = data['USER_SETTINGS']
|
124 |
+
USER_LAST_ACTIVE = {k: datetime.fromisoformat(v) for k, v in data['USER_LAST_ACTIVE'].items()}
|
125 |
+
GROUP_ACTIVE_USERS = {k: set(v) for k, v in data['GROUP_ACTIVE_USERS'].items()}
|
126 |
+
GROUP_INFO = {k: {**v, 'last_active': datetime.fromisoformat(v['last_active'])} for k, v in data['GROUP_INFO'].items()}
|
127 |
+
BANNED_USERS = {k: datetime.fromisoformat(v) for k, v in data['BANNED_USERS'].items()}
|
128 |
+
|
129 |
+
print("数据已从WebDAV加载")
|
130 |
+
else:
|
131 |
+
print("WebDAV中没有找到数据或加载失败,使用初始值")
|
132 |
+
|
133 |
+
def periodic_save():
|
134 |
+
while True:
|
135 |
+
time.sleep(10) # 等待60秒
|
136 |
+
save_data_to_webdav()
|
137 |
+
|
138 |
+
# 在程序启动时加载数据
|
139 |
+
load_data_from_webdav()
|
140 |
+
|
141 |
+
# 启动定期保存的线程
|
142 |
+
save_thread = threading.Thread(target=periodic_save)
|
143 |
+
save_thread.daemon = True
|
144 |
+
save_thread.start()
|
145 |
+
|
146 |
def make_telegram_request(method, data=None):
|
147 |
url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/{method}"
|
148 |
if PHP_PROXY_URL:
|
|
|
535 |
await sendTelegramMessage(chatId, f"用户 {userId} 已被解禁。")
|
536 |
print(f"用户 {userId} 在群组 {chatId} 中被解禁。")
|
537 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
538 |
if __name__ == '__main__':
|
539 |
app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860)))
|