Python开发Discord欢迎机器人on_member_join事件无响应无报错求助
问题原因
- 变量名不统一:你初始化的机器人实例命名为
bot,但on_member_join事件中调用了未定义的client对象获取频道,若事件触发会抛出名称错误,但当前事件未被触发所以无报错。 - 未开启成员监听特权意图:Discord API v8及以上版本默认关闭服务器成员相关的特权推送意图,未手动开启的话
on_member_join事件不会被推送到你的机器人,自然不会触发对应逻辑也不会报错。 - 消息格式不符合@需求:当前代码使用
member.name只会输出用户昵称文本,无法实际@到对应用户。
解决方法
- 首先进入Discord开发者后台的对应机器人设置页,在「Privileged Gateway Intents」分类下开启
Server Members Intent开关。 - 修正代码内的变量名错误,补充意图声明,调整@用户的消息格式,修正后代码如下:
import discord from discord.ext import commands # 声明启用的意图,开启成员监听权限 intents = discord.Intents.default() intents.members = True bot = commands.Bot(command_prefix='Please', intents=intents) @bot.command() async def _say(ctx, arg): await ctx.send(arg) @bot.event async def on_member_join(member): # 修正变量名,使用member.mention实现@用户效果 await bot.get_channel(819281283803906071).send(f"{member.mention} has joined") bot.run('Token')
- 确认你的机器人账号拥有目标频道的「发送消息」、「提及@everyone、@here和所有角色」权限,避免权限不足导致消息发送失败。
内容的提问来源于stack exchange,提问作者Velnades
相关产品推荐
相关产品推荐

