Discord机器人无法给成员发送私信问题求助
解决Discord机器人私信嵌入消息失效问题
排查方向1:参数覆盖与命令触发验证
你的代码将传入的message参数强制赋值为"hello",这虽不直接导致失效,但可先添加触发反馈和错误捕获,确认命令是否正常执行:
@client.command() async def message(ctx, user: discord.Member, *, message=None): await ctx.send(f"尝试给{user.display_name}发送私信...") embed = discord.Embed(title="hello") try: await user.send(embed=embed) await ctx.send("私信发送成功!") except Exception as e: await ctx.send(f"发送失败:{str(e)}")
添加这段代码后,能直接看到命令是否触发,以及失败的具体原因(比如权限问题、用户设置拦截等)。
排查方向2:用户私信设置与机器人权限
- 目标用户可能开启了「仅接受好友私信」或「阻止服务器成员私信」,这种情况下机器人无法发送私信且无报错。
- 检查目标用户是否拉黑了机器人,或关闭了来自服务器机器人的私信权限。
排查方向3:命令调用格式
调用命令时必须正确传递用户参数,比如使用!message @目标用户名,确保user参数能正确解析为discord.Member对象。如果用户不在当前服务器,或@提及格式错误,会导致参数解析失败,命令无响应。
排查方向4:Intents配置验证
即使你启用了所有Intents,需确认Members Intent已在Discord开发者门户的机器人页面开启,且代码中正确加载:
intents = discord.Intents.all() client = commands.Bot(command_prefix='!', intents=intents)
内容的提问来源于stack exchange,提问作者KinRog06
相关产品推荐
相关产品推荐

