开启「隐藏成员」时aiogram机器人无法捕获新成员的问题
解决aiogram在「隐藏成员」群组中无法检测新成员的问题
当群组开启「隐藏成员」设置时,Telegram不会在群聊内发送新成员加入的系统通知,因此基于@dp.message_handler(content_types=types.ContentTypes.NEW_CHAT_MEMBERS)的处理器无法捕获到新成员事件。但可以通过监听chat_member类型的更新来解决这个问题——只要机器人拥有群组管理员权限并开启「查看成员」权限,Telegram会直接向机器人推送成员状态变更的事件,不受「隐藏成员」设置影响。
具体实现步骤
确认机器人权限
- 将机器人添加为群组管理员,确保开启「查看成员」权限(这是接收
chat_member更新的必要条件)。
- 将机器人添加为群组管理员,确保开启「查看成员」权限(这是接收
使用
ChatMemberHandler替代消息处理器
放弃监听NEW_CHAT_MEMBERS消息,转而监听成员状态变更事件:from aiogram import Dispatcher from aiogram.types import ChatMemberUpdated, ChatMember async def handle_new_member(event: ChatMemberUpdated): # 判断用户是否为新加入:从非成员状态变为成员状态 if (event.new_chat_member.status == ChatMember.MEMBER and event.old_chat_member.status == ChatMember.LEFT): user = event.new_chat_member.user # 发送欢迎消息 await event.bot.send_message( chat_id=event.chat.id, text=f"欢迎 {user.mention_html()} 加入我们的群组!" ) def register_join_handlers(dp: Dispatcher): dp.chat_member_handler()(handle_new_member)
关键注意事项
- 如果机器人没有管理员权限,无法获取
chat_member更新,这是Telegram的权限限制,没有绕过方法。 chat_member更新仅推送给机器人,不会在群聊中显示系统消息,完全适配「隐藏成员」的群组设置。
内容的提问来源于stack exchange,提问作者Saliomsbnaiurealiosma Calipmbn
相关产品推荐
相关产品推荐

