Aiogram3新成员问候事件未触发问题求助
问题解决与代码修正
代码核心错误修正
你的代码中send_message方法的第一个参数传入了Chat对象(chat_info),但该方法要求传入聊天ID(整数),这是导致事件未正常响应的直接原因。以下是修正后的完整代码:
from aiogram import F, Router, Bot from aiogram.filters.chat_member_updated import ChatMemberUpdatedFilter, IS_NOT_MEMBER, MEMBER from aiogram.types import ChatMemberUpdated new_member_router = Router() @new_member_router.chat_member( ChatMemberUpdatedFilter( member_status_changed=IS_NOT_MEMBER >> MEMBER ) ) async def new_member(event: ChatMemberUpdated, bot: Bot): # 直接使用event.chat.id作为目标聊天ID,无需额外获取chat_info await bot.send_message( chat_id=event.chat.id, text=f"Hi {event.new_chat_member.user.mention_html()}!", # 可选:@新成员提升问候友好度 parse_mode="HTML" )
额外排查步骤
如果修正后事件仍未触发,请逐一检查以下项:
- 机器人权限:确保机器人在目标群组/频道中是管理员,且开启了「读取消息」权限——没有该权限无法接收聊天成员更新事件。
- 路由注册:在
main.py中确认已正确将路由添加到Dispatcher:from aiogram import Dispatcher from your_module import new_member_router # 替换为你的路由文件实际路径 dp = Dispatcher() dp.include_router(new_member_router) - 版本兼容性:当前过滤器写法适用于aiogram 3.x,若使用2.x版本需调整语法(建议升级到3.x以使用最新特性)。
- 中间件拦截:检查是否有全局中间件误拦截了聊天成员更新事件,比如权限校验中间件未放行该类型事件。
内容的提问来源于stack exchange,提问作者Yana Malenko
相关产品推荐
相关产品推荐

