chore: initial commit

This commit is contained in:
你的用户名
2025-11-01 21:58:03 +08:00
commit a05a7dd40e
65 changed files with 16590 additions and 0 deletions

View File

@@ -0,0 +1,159 @@
#!/usr/bin/env python3
"""
交互式 Telegram BOT 测试工具
"""
import requests
import json
import time
import sys
BOT_TOKEN = "8410096573:AAFLJbWUp2Xog0oeoe7hfBlVqR7ChoSl9Pg"
BASE_URL = f"https://api.telegram.org/bot{BOT_TOKEN}"
# 这里需要你的 Telegram 用户 ID
# 可以通过向 @userinfobot 发送消息来获取
YOUR_USER_ID = None
def get_updates(offset=None, timeout=30):
"""获取消息更新"""
params = {"timeout": timeout}
if offset:
params["offset"] = offset
response = requests.get(f"{BASE_URL}/getUpdates", params=params)
return response.json()
def send_message_to_user(user_id, text):
"""向指定用户发送消息(作为 BOT"""
data = {
"chat_id": user_id,
"text": text
}
response = requests.post(f"{BASE_URL}/sendMessage", json=data)
return response.json()
def format_message(msg):
"""格式化消息显示"""
from_user = msg.get('from', {})
is_bot = from_user.get('is_bot', False)
username = from_user.get('username', '')
first_name = from_user.get('first_name', '')
sender = f"{'🤖 BOT' if is_bot else '👤 User'}"
sender_name = username or first_name or 'Unknown'
text = msg.get('text', '')
photo = msg.get('photo')
document = msg.get('document')
result = [f"\n{'='*60}"]
result.append(f"{sender} {sender_name}")
result.append('-'*60)
if text:
result.append(text)
if photo:
result.append("[图片消息]")
if msg.get('caption'):
result.append(f"说明: {msg['caption']}")
if document:
doc_name = document.get('file_name', 'unknown')
result.append(f"[文档: {doc_name}]")
if msg.get('caption'):
result.append(f"说明: {msg['caption']}")
if 'reply_markup' in msg:
markup = msg['reply_markup']
if 'inline_keyboard' in markup:
result.append("\n[内联按钮:]")
for row in markup['inline_keyboard']:
for btn in row:
callback = btn.get('callback_data', btn.get('url', ''))
result.append(f" [{btn.get('text')}] -> {callback}")
if 'keyboard' in markup:
result.append("\n[回复键盘:]")
for row in markup['keyboard']:
row_buttons = []
for btn in row:
btn_text = btn.get('text') if isinstance(btn, dict) else str(btn)
row_buttons.append(btn_text)
result.append(f" {' | '.join(row_buttons)}")
result.append('='*60)
return '\n'.join(result)
def main():
print("=" * 60)
print("Telegram BOT 交互式测试工具")
print("=" * 60)
# 首先,我们需要找到一个有效的聊天
print("\n正在查找活动聊天...")
updates = get_updates(timeout=5)
active_chats = {}
if updates.get('result'):
for update in updates['result']:
if 'message' in update:
msg = update['message']
chat_id = msg['chat']['id']
chat_title = msg['chat'].get('title') or msg['chat'].get('first_name', str(chat_id))
if chat_id not in active_chats:
active_chats[chat_id] = chat_title
if active_chats:
print(f"\n找到 {len(active_chats)} 个活动聊天:")
for i, (chat_id, title) in enumerate(active_chats.items(), 1):
print(f" {i}. {title} (ID: {chat_id})")
print("\n提示: 要与 BOT 交互,请:")
print("1. 在 Telegram 中打开 @openaiw_bot")
print("2. 发送 /start 命令")
print("3. 然后运行这个脚本来查看响应")
else:
print("\n没有找到活动聊天。")
print("\n要开始测试,请:")
print("1. 在 Telegram 中搜索 @openaiw_bot")
print("2. 发送任意消息(例如 /start")
print("3. 然后重新运行这个脚本")
# 监听新消息
print("\n" + "="*60)
print("开始监听消息... (按 Ctrl+C 退出)")
print("="*60)
last_update_id = None
if updates.get('result'):
last_update_id = updates['result'][-1]['update_id']
all_messages = []
try:
while True:
updates = get_updates(offset=last_update_id, timeout=30)
if updates.get('result'):
for update in updates['result']:
last_update_id = update['update_id'] + 1
if 'message' in update:
msg = update['message']
print(format_message(msg))
all_messages.append(msg)
except KeyboardInterrupt:
print("\n\n" + "="*60)
print("停止监听")
print("="*60)
# 保存所有消息
if all_messages:
with open("bot_interaction_log.json", "w", encoding="utf-8") as f:
json.dump(all_messages, f, indent=2, ensure_ascii=False)
print(f"\n✓ 已保存 {len(all_messages)} 条消息到 bot_interaction_log.json")
if __name__ == "__main__":
main()