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

使用Telethon库报错AttributeError:coroutine对象无on属性求助

问题原因

你遇到的错误是因为Telethon v1.x版本之后,start()方法改成了异步函数,直接调用它返回的是协程对象,而非TelegramClient实例。你把这个协程对象赋值给bot变量,自然没法调用bot.on()方法,所以抛出了AttributeError。

解决方案

需要通过await获取真正的客户端实例,同时把代码放到异步函数中,用asyncio.run()启动整个程序。修改后的代码如下:

import asyncio
from telethon import TelegramClient, events

api_id=4563456
api_hash='5453gfgderfth5656uedgh56hdfg'
token_tg='234523452:ddfghe4356b345345g34364bn67'

async def main():
    bot = await TelegramClient('botu2', api_id, api_hash).start(bot_token=token_tg)

    @bot.on(events.NewMessage(pattern='/start'))
    async def send_welcome(event):
        await event.reply('Howdy, how are you doing?')

    @bot.on(events.NewMessage)
    async def echo_all(event):
        await event.reply(event.text)

    await bot.run_until_disconnected()

asyncio.run(main())
关键改动
  • 导入asyncio库,用于运行异步主函数
  • 将客户端初始化、事件绑定和运行逻辑全部放入async def main()函数中
  • 使用await获取start()返回的TelegramClient实例
  • 最后用asyncio.run(main())启动整个异步程序

如果非要兼容旧版同步写法,可以安装Telethon v1.x版本,但更推荐使用上述异步写法适配新版本。

内容的提问来源于stack exchange,提问作者Ivan Z

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 23:25:22