如何在Telethon中处理用户进出群组的Telegram系统消息?
在Telethon中处理群成员进出的系统消息
Telethon 无法通过 events.NewMessage 捕获群成员进出的系统通知,你需要使用**events.ChatAction**事件处理器——它专门用于监听群聊内的各类操作事件,包括成员加入、退出、被踢等场景。
基础实现示例
直接通过事件属性判断成员进出行为,发送对应消息:
from telethon import events @bot.on(events.ChatAction) async def handle_group_actions(event): # 处理新成员入群(含主动加入、被邀请) if event.user_joined: user = await event.get_user() await event.reply(f"欢迎 {user.first_name} 加入群组!😊") # 处理成员退群(含主动退出、被踢出) elif event.user_left: user = await event.get_user() await event.reply(f"{user.first_name} 离开了群组,再见!👋")
精准区分场景(可选)
如果需要区分成员是主动退出还是被管理员踢出,可以额外判断 event.kicked 属性:
from telethon import events @bot.on(events.ChatAction) async def handle_group_actions(event): if event.user_joined: user = await event.get_user() await event.reply(f"欢迎 {user.first_name} 来到我们的群组!") elif event.user_left: user = await event.get_user() if event.kicked: await event.reply(f"{user.first_name} 被移出了群组") else: await event.reply(f"{user.first_name} 主动退出了群组,一路顺风!")
额外提示
- 确保机器人拥有群组的管理员权限,否则可能无法正常发送消息或获取事件细节
- 若只需监听特定群组,可在装饰器中通过
chats参数指定群组ID或用户名:@bot.on(events.ChatAction(chats=[123456789, "my_group_username"]))
内容的提问来源于stack exchange,提问作者NikGovn
相关产品推荐
相关产品推荐

