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

运行GitHub下载的Telegram自动回复脚本出现coroutine无username属性错误

代码问题说明

核心报错原因

第36行me = await client.get_me().username的写法不符合异步语法规则:
client.get_me()是Telethon提供的异步方法,会返回协程对象,必须先await拿到返回的用户实例后,才能访问username属性。原写法的执行优先级是先尝试读取协程对象的username属性,该属性不存在,因此抛出AttributeError。

连带逻辑问题

修改第36行的赋值逻辑后,要对应调整第40行的匹配代码,避免二次报错:

  • 如果修改第36行先拿完整用户对象:me = await client.get_me(),第40行的@"+me.username写法可以保留
  • 如果修改第36行直接拿用户名:me = (await client.get_me()).username,需要把第40行的me.username改成me

冗余代码问题

代码末尾重复调用了client.start(),前面初始化客户端的时候已经执行过一次启动操作,多余的启动调用可以直接删除。

修复后参考代码片段(关键部分)
@client.on(events.NewMessage)
async def handle_new_message(event):
    # 修复后的写法,先await拿到用户对象
    me = await client.get_me()
    from_ = await event.client.get_entity(event.from_id)
    to_ = await event.client.get_entity(event.message.to_id)

    # 这里me.username可以正常使用
    needToProceed = from_.is_self if debug_mode else not from_.is_self and (event.is_private or re.search("@"+me.username,event.raw_text))
    # 后面原有逻辑不变

内容的提问来源于stack exchange,提问作者Ferdi Ansyah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:15:01