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

Telethon监听Telegram事件无响应:代码还是配置问题?

Telethon监听事件未触发的排查与解决

针对你遇到的Telethon客户端登录正常但@client.on事件无响应的问题,可按以下步骤排查修复:

1. 调整事件注册顺序

Telethon的事件监听器必须在客户端启动前完成注册,你的代码中client.start()在事件注册之前,导致新注册的监听器无法被客户端加载。必须把事件监听函数移到client.start()之前。

2. 修正异步/同步模式冲突

你导入了sync模块但使用了异步事件处理函数,这会导致运行逻辑冲突。移除sync导入,并改用异步方式启动客户端。

3. 确认频道权限与目标正确性

  • 若监听特定频道,确保你的账号已加入该频道,且频道并非私有/需邀请才能加入的类型;
  • 频道标识(user_input_channel)优先使用频道ID或通过client.get_entity()获取的实体对象,避免字符串拼写错误或格式问题。

4. 重置会话文件

删除当前目录下的session_name.session文件,重新启动客户端登录,清除可能存在的会话缓存问题。

修改后的示例代码

import configparser
import json
import re
from telethon.errors import SessionPasswordNeededError
from telethon import TelegramClient, events
from telethon.tl.functions.messages import GetHistoryRequest
from telethon.tl.types import PeerChannel

api_id = 你的API_ID  # 替换为实际API_ID
api_hash = '你的API_HASH'  # 替换为实际API_HASH
user_input_channel = 'grupovipdofortunetiger'

# 先注册事件监听器
@client.on(events.NewMessage)
async def newMessageListener(event):
    print(f"收到新消息事件: {event}")
    # 如需打印消息内容,可启用下面一行
    # print(f"消息内容: {event.message.message}")

# 初始化并启动客户端
client = TelegramClient('session_name', api_id, api_hash)

async def main():
    await client.start()
    print('客户端已启动')
    await client.run_until_disconnected()

with client:
    client.loop.run_until_complete(main())

额外测试方案

如果上述修改后仍无响应,可先监听原始事件(events.Raw)验证客户端是否能接收到Telegram的事件推送:

@client.on(events.Raw)
async def raw_listener(event):
    print("收到原始事件:", event)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:11:33