Telethon机器人无法实现用户自动回复功能问题求助
解决Telethon机器人无法自动回复问候消息的问题
你的代码无法触发自动回复,核心原因是错误地对用户发送的/start消息调用了click()方法——这条消息并没有可点击的回复按钮,而且你需要操作的是机器人自己刚发送的问候消息,而非用户的触发消息。
修改后的代码实现
from telethon import TelegramClient, events api_id = 'api_id' api_hash = 'api_hash' channel_id = 'channel_id' client = TelegramClient("session", api_id, api_hash) @client.on(events.NewMessage(chats=channel_id, pattern="/start")) async def handler(event): sender = await event.get_sender() # 发送问候消息并保存消息对象 greeting_msg = await event.respond(f"Hi [{sender.first_name}](tg://user?id={sender.id})!") # 模拟点击回复按钮,发送自动回复内容 await client.send_message(channel_id, "自动回复的内容", reply_to=greeting_msg.id) client.start() client.run_until_disconnected()
关键修改说明
- 保存问候消息对象:
event.respond()方法会返回机器人发送的消息对象,我们需要用它来指定回复目标。 - 模拟回复操作:通过
client.send_message()并设置reply_to参数为问候消息的ID,就能实现“点击消息回复按钮发送内容”的效果——这和手动点击消息的回复按钮后发送消息的行为完全一致。
如果你的需求是让发送/start的用户账号自动回复(而非机器人账号),则需要额外登录该用户的Telegram账号(使用另一个TelegramClient实例),再执行回复操作,但这种场景需要用户授权,实际开发中需谨慎处理。
内容的提问来源于stack exchange,提问作者Pythonist
相关产品推荐
相关产品推荐

