如何在Telegram群组中模拟多用户单独测试自建机器人
解决办法
1. 改用私聊触发Telethon客户端发消息
核心问题是Telegram禁止机器人接收其他机器人的消息,所以把Telethon客户端的指令触发从群组改成和你主账号的私聊,用真实账号发指令给Telethon客户端,再让它在群组里模拟用户发言,就能绕开限制。
修改后的Telethon代码示例:
from telethon import events # 替换成你主账号的Telegram ID YOUR_MAIN_ACCOUNT_ID = 123456789 @client.on(events.NewMessage(chats=YOUR_MAIN_ACCOUNT_ID)) async def private_command_handler(event): # 指令格式:send <群组ID> <内容> msg_parts = event.text.split(maxsplit=2) if len(msg_parts) < 3 or msg_parts[0].lower() != 'send': await event.reply("指令格式错误,请用:send <群组ID> <要发送的内容>") return target_chat_id = int(msg_parts[1]) content = msg_parts[2] try: await client.send_message(target_chat_id, content) await event.reply(f"已发送到群组:{content}") except Exception as e: await event.reply(f"发送失败:{str(e)}")
使用方法:
- 用主账号给Telethon客户端账号发私聊消息,比如
send -100123456789 这是模拟用户的发言 - 客户端会自动把内容发到指定群组,测试机器人就能收到这条“用户消息”
2. 注册多个Telegram小号
如果不想折腾代码,可以用虚拟手机号或接码平台注册1-2个小号(需遵守Telegram服务条款),直接用小号在群组里手动操作,模拟多用户交互场景,这种方法最直观,适合快速测试简单逻辑。
3. 给Telethon客户端加终端键盘交互
要更灵活的实时操作,可以给Telethon客户端加本地键盘输入功能,直接在终端输入内容发送到群组:
import asyncio async def input_loop(): while True: content = input("请输入要发送到群组的内容(输入exit退出):") if content.lower() == 'exit': break # 替换成你的测试群组ID await client.send_message(-100123456789, content) # 启动客户端后运行输入循环 client.start() loop = asyncio.get_event_loop() loop.create_task(input_loop()) loop.run_forever()
启动客户端后,直接在终端输入内容就能发送到群组,无需聊天指令,完全实时操作。
内容的提问来源于stack exchange,提问作者Satoshi
相关产品推荐
相关产品推荐

