discord bot 无法发送直接消息,在踢 (discord.py)

discord bot failing to send direct message, upon kicking (discord.py)

代码踢用户,但无法发送 DM

@bot.command()
    async def kick(ctx,member : discord.Member, *, reason=None):
        await member.kick(reason=reason)
        await ctx.send(f'oh no- {member.mention} has been kicked :/')
        message=f"You have been kicked from {ctx.guild.name}"
        await member.send(message)

测试时:

  1. 被踢用户的私信已打开
  2. 机器人有管理员权限

控制台报错:

discord.ext.commands.errors.CommandInvokeError:命令引发异常:禁止:403 禁止(错误代码:50007):无法向该用户发送消息

如果您尝试直接向已禁用非朋友 DM 的用户发送消息,您将遇到 FORBIDDEN。

不要忘记处理异常:

try:
  /* send message */
except Exception: 
  pass

我认为你需要在实际踢球之前发送消息。

否则,机器人无法处理用户。

所以,给用户发消息,踢他。

@bot.command()
    async def kick(ctx,member : discord.Member, *, reason=None):
        message=f"You have been kicked from {ctx.guild.name}"
        await member.send(message)
        await member.kick(reason=reason)
        await ctx.send(f'oh no- {member.mention} has been kicked :/')