如何让Discord机器人发送随机DM 对应代码错误排查
错误排查及修复方案
现有问题列表
- 随机消息列表语法错误:第三个字符串末尾缺失逗号,导致第三、第四个字符串被自动拼接为单个字符串,打乱随机抽取逻辑
- 私信发送逻辑完全错误:
client对象本身不存在message属性,调用client.message.author.send会直接抛出属性不存在的异常,且方法传参逻辑完全混乱,不需要传入ctx.message.author.send作为参数 - 冗余参数:discord.py v1.0+版本中命令默认自动传递上下文,
pass_context=True属于过时冗余参数,可直接删除 - 冗余代码:最上方重复实例化了
discord.Client(),后续直接被commands.Bot实例覆盖,属于无效代码可删除
修复后的meowzdm命令代码
@client.command() async def meowzdm(ctx): variable = [ "Hi im a bot and i wish you a good day!", "Hi, my name is Meowzbot and i hope you sleep well tonight!", "Hello, thanks for using this command, now i can tell you that you are a great human!", "did you know: a person who uses this command is a very kind person!"] await ctx.author.send(random.choice(variable))
额外注意事项
如果修复后仍收不到私信,检查两个配置即可:
- 机器人账号是否被允许发送私信,对应权限在Discord开发者后台配置
- 触发命令的用户是否开启了「允许服务器成员发送私信」的设置
内容的提问来源于stack exchange,提问作者The Lil Meowz
相关产品推荐
相关产品推荐

