代码踢用户,但无法发送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)
测试时:
- 被踢的用户DM已打开
- 机器人拥有管理员权限
控制台显示此错误:
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