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

Telethon运行报TypeError需asyncio可等待对象,该如何修复?

问题修复方案

报错根因

这个TypeError: An asyncio.Future, a coroutine or an awaitable is required报错由两处写法错误共同导致:

  • 你提前对work()协程执行了await,执行完成后返回的是普通值(该函数无显式return,实际返回None),而asyncio.gather()要求传入的是未执行的协程对象
  • asyncio.gather()本身就是可等待对象,调用时需要前置await关键字,否则会触发未等待协程的相关异常

修复后的完整代码

import asyncio
from telethon import TelegramClient
from telethon.functions import JoinChannelRequest

# 替换为自己申请的API参数
api_id = 你的APIID
api_hash = "你的APIHASH"
bot = "@bot"
ch1 = "t.me/bot"

async def work(client):
    async with client:
        me = await client.get_me()
        username = me.username
        print('Working with',username)
        print('')
        channel1 = await client.get_entity(ch1)
        await client(JoinChannelRequest(channel1))
        print(username, 'Some Text', ch1)
        print('----------------------------------------------------------')

async def main():
    await asyncio.gather(
        # 直接传入协程对象,不要提前加await
        work(TelegramClient('user01', api_id, api_hash)),
        # 如果需要同时运行多个账号,直接在下方追加对应的work调用即可
        # work(TelegramClient('user02', api_id, api_hash)),
    )

asyncio.run(main())

补充说明

如果仅需要运行单个客户端,你也可以不用asyncio.gather,直接在main函数里await work调用即可,写法更简洁:

async def main():
    await work(TelegramClient('user01', api_id, api_hash))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 20:36:03