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

使用Python Telethon定时发消息异常:首次告警后续无消息

问题解决:Telethon定时发消息失败及RuntimeWarning问题

错误原因

Telethon的核心方法(如start()、send_file()、disconnect())都是异步协程,直接调用这些方法却未用await触发执行,会导致协程从未运行,既抛出RuntimeWarning,消息也实际未发送。另外你的phone变量多了一个多余的括号,可能引发客户端初始化异常。

修改后的完整代码

from telethon import TelegramClient
import schedule
import asyncio

async def sendImage():
    apiId = 1111111
    apiHash = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
    phone = "+111111111111"  # 移除了多余的括号
    client = TelegramClient(phone, apiId, apiHash)

    toChat = 1641242898

    await client.start()
    print("Sending...")
    await client.send_file(toChat, "./image.jpg", caption="Write text here")
    await client.disconnect()

def main():
    # 用asyncio.run包装异步函数,适配同步的schedule库
    schedule.every(10).seconds.do(lambda: asyncio.run(sendImage()))

    while True:
        schedule.run_pending()

if __name__ == "__main__":
    main()

关键修改说明

  • 将sendImage定义为异步函数(async def),所有Telethon异步方法前添加await,确保协程被执行;
  • 修正phone变量的语法错误;
  • 由于schedule是同步调度库,通过lambda+asyncio.run()的方式,让调度器能正确触发异步任务;
  • client.disconnect()同样是异步方法,必须用await等待断开完成。

可选优化方案

如果长期使用异步任务,建议替换为支持异步的调度库(如APScheduler的AsyncIOScheduler),代码结构会更简洁,避免同步/异步混合的适配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:25:18