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

如何用Telethon事件检测Telegram群组中是否有人@我?

在Telethon中实现群组@提及检测

对应你Pyrogram的需求,Telethon可以通过事件过滤+自定义判断实现相同功能,以下是完整代码示例:

from telethon import TelegramClient, events, ChatType

# 初始化客户端(替换成你的API信息)
client = TelegramClient('session_name', api_id=12345, api_hash='your_api_hash')

# 获取当前登录用户信息,用于后续判断是否被提及
me = client.loop.run_until_complete(client.get_me())

@client.on(events.NewMessage(
    # 过滤群组/超级群组消息,对应Pyrogram的filters.group
    chat_type=(ChatType.GROUP, ChatType.SUPERGROUP),
    # 自定义过滤:检查消息中是否提及了自己,对应Pyrogram的filters.mentioned
    func=lambda e: me.id in [user.id for user in e.message.mentioned_users]
))
async def on_mentioned(event):
    # 这里写你的响应逻辑,比如调用处理函数
    do_response(event.message)

def do_response(message):
    # 示例:打印被提及的消息内容(根据你的需求修改)
    print(f"有人在群组@我了:{message.text}")

with client:
    client.run_until_disconnected()

关键部分说明:

  1. 群组过滤:通过chat_type=(ChatType.GROUP, ChatType.SUPERGROUP)直接限定只处理群组/超级群组消息,和Pyrogram的filters.group效果一致。
  2. 提及检测:利用message.mentioned_users获取消息中被@的用户列表,检查自己的ID是否在列表内,实现和filters.mentioned相同的检测逻辑。
  3. 异步处理:Telethon的事件处理函数必须是async异步函数,这和Pyrogram的同步/异步兼容不同,注意保持代码风格一致。

如果你的do_response函数是为Pyrogram编写的,需要注意适配Telethon的Message对象结构(比如获取聊天ID用message.chat_id,发送消息用await client.send_message(...))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:45:44