You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telethon机器人无法接收消息求助:可发送消息但对用户输入无响应

Telethon机器人无法接收消息修复方案

1. 检查必要模块导入

确保代码开头已经导入事件相关模块,缺少导入会导致事件处理器注册静默失败,无法触发消息回调:

from telethon import TelegramClient, events

2. 修正事件对象属性调用

你代码中使用的msg.user_id、msg.username都是错误的属性名,Telethon NewMessage事件对象的正确属性如下:

  • 发送者ID:msg.sender_id
  • 发送者用户名:msg.sender.username(调用前需判断sender是否存在,避免匿名消息、频道消息触发空指针异常)
    属性调用错误会直接抛出异常,导致处理器终止运行,无任何日志输出。

3. 初始化全局变量users

代码中直接判断if not userID in users,如果全局变量users未提前初始化为集合/字典,会直接抛出NameError,导致处理器崩溃,需要提前初始化:

users = set() # 按照你的业务需求选择对应存储结构

4. 关闭Bot隐私模式(群聊场景适用)

如果是在群聊中测试收消息,Telegram Bot默认开启隐私模式,仅会收到@机器人、/开头的命令消息,关闭方法:

  • 找@BotFather发送/setprivacy
  • 选择对应机器人,设置为Disable

5. 调整执行顺序(适配新版Telethon)

新版Telethon中同步调用如果在事件注册前执行异常,可能阻塞后续事件注册,建议调整顺序:先注册事件处理器,再执行发送test消息的操作。

6. 添加异常捕获排查问题

如果修复以上问题后仍无响应,给事件处理器添加异常捕获,打印具体报错信息:

@client.on(events.NewMessage())
async def newMessageHandler(msg):
    try:
        global users
        # 原有处理逻辑
    except Exception as e:
        print(f"处理消息出错:{e}")

内容的提问来源于stack exchange,提问作者KvaksMan play

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 15:30:02