如何在discord.py中编写新成员入群欢迎指令?代码不触发问题求助
问题排查与修复方案
1. 确认代码端已正确配置Intents
仅在Discord开发者后台开启权限不生效,必须在Bot初始化代码中显式启用成员相关Intent:
import discord from discord.ext import commands intents = discord.Intents.default() intents.members = True # 对应成员加入事件的必要权限,必须开启 bot = commands.Bot(command_prefix="你的指令前缀", intents=intents)
2. 优化事件代码增加异常兼容
现有代码缺少空值校验,频道获取失败时会静默报错无法发送消息,修改为以下版本:
@bot.event async def on_member_join(member): channel = bot.get_channel(906928559602421830) # 新增空值判断,出现异常可在控制台看到报错信息 if not channel: print("目标欢迎频道不存在,请检查频道ID是否正确") return # 检查机器人是否拥有对应频道的发送权限 if not channel.permissions_for(member.guild.me).send_messages or not channel.permissions_for(member.guild.me).embed_links: print("机器人缺少频道的发送消息/发送嵌入权限") return embed=discord.Embed(title="Welcome!",description=f"{member.mention} Just Joined") await channel.send(embed=embed)
3. 额外排查项
- 确认填写的频道ID
906928559602421830属于机器人已加入的服务器,且为可访问的文字频道 - 确认Discord开发者后台的Server Members Intent开关已经保持开启状态
- 不要重复注册
on_member_join事件,后面注册的同名称事件会覆盖之前的逻辑
内容的提问来源于stack exchange,提问作者JuicyOrange.py
相关产品推荐
相关产品推荐

