discord.py |"list index out of range"踢命令错误


@commands.command(name = "kick")
@commands.has_permissions(kick_members=True)
async def kick(self, ctx:commands.Context, member, *reason):
member = re.findall(r'd+', member)
guild = ctx.guild
memberToKick = get(guild.members, id=int(member[0])) # I think the error is here?
if int(member[0]) == int(ctx.author.id):
return await ctx.message.reply(content="You can't kick yourself.")
if memberToKick:
try:
reason = " ".join(reason)

await memberToKick.send(content=f"You were kicked out of {ctx.guild.name}! Reason: {reason}.")
if reason:
await memberToKick.kick(reason=reason)
return await ctx.message.reply(content='User was kicked.')
else:
await memberToKick.kick()
return await ctx.message.reply(content='User was kicked.')
except:
pass

我们有用户bob#4142,我试着只用";昵称":
!kick bob
当我这样做时,它会抛出一个错误:IndexError:列表索引超出范围
如何修复?

使用discord.utils.get()按昵称查找成员:

@commands.command(name="kick")
@commands.has_permissions(kick_members=True)
async def kick(self, ctx: commands.Context, nick: str, *, reason: str):
member = discord.utils.get(ctx.guild.members, display_name=nick)
if member is None:
return await ctx.send("Member not found.")
# do your checks and kick the member

最新更新