discordbot在踢(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. 被踢的用户DM已打开
  2. 机器人拥有管理员权限

控制台显示此错误:

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

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

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

因此,将消息发送给用户并踢他。

@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 :/')

如果您试图直接向非好友禁用DM的用户发送消息,则会遇到FORBIDDEN。

不要忘记处理异常:

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

最新更新