在 discord.py 中踢/禁止人

时间:2021-07-05 11:58:01

标签: python discord discord.py

因此,我创建了一个 discord.py 机器人,并且我正在为该机器人添加一个功能,以便它可以禁止和踢人。然而,有一个问题。每当我输入 !!kick @user_account 或 !!ban @user_account 时,它什么都不做。我也尝试将工作“ctx”更改为“message”,但发生了同样的事情。非常感谢您的帮助,谢谢。

@client.command()
async def kick(ctx, member: discord.Member, *, reason=None):
  await member.kick(reason=reason)

@client.command()
async def ban(ctx, member: discord.Member, *, reason=None):
  await member.ban(reason=reason)

3 个答案:

答案 0 :(得分:0)

@client.command()
async def kick(ctx, member: discord.Member):
  reason = ""
  await member.kick(reason=reason)

@client.command()
async def ban(ctx, member: discord.Member):
  reason=""
  await member.ban(reason=reason)

答案 1 :(得分:0)

这里是ban kick unban code discord py,命令下的错误是没有权限的人无法执行

<块引用>

#--- kick 命令 --- @client.command() @commands.guild_only() @commands.has_permissions(kick_members=True) async def kick(ctx, user: discord.Member, *, reason=None): await user.kick(reason=reason)
await ctx.send(f"{user} 被踢了!")

@kick.error async def kick(ctx, error): if isinstance(error, 命令。缺少权限): await ctx.send("您没有权限运行此命令")

#--- 禁止命令 --- @client.command() @commands.guild_only() @commands.has_permissions(ban_members=True) async def ban(ctx, user: 不和谐。成员,*,原因=无): 等待 user.ban(reason=reason) await ctx.send(f"{user} 已被禁止!")

@ban.error async def ban(ctx, error): if isinstance(error, 命令。缺少权限): await ctx.send("您没有权限运行此命令")

#--- unban 命令 --- @client.command() @commands.guild_only() @commands.has_permissions(ban_members=True) async def unban(ctx, id: 内部): user_id = await client.fetch_user(id) 等待 ctx.guild.unban(user_id) await ctx.send(f"{user_id} 已被解禁!")

@unban.error async def ban(ctx, error): if isinstance(error, 命令。缺少权限): await ctx.send("您没有权限运行此命令")

答案 2 :(得分:0)

我有自己的机器人,它似乎对我有用。由于您说没有打印错误,您必须通过执行以下操作来打印出错误是什么:

@client.event
async def on_command_error(ctx, error):
    if isinstance(error, commands.CommandError): # if a command fails
            print(error) # print the error

或者,如果您想为每个单独的命令执行此操作:

@kick.error
async def kick_error(ctx, error):
    if isinstance(error, commands.CommandError): # if a command fails
            print(error) # print the error

@ban.error
async def ban_error(ctx, error):
    if isinstance(error, commands.CommandError): # if a command fails
            print(error) # print the error

一旦发现错误,请尝试解决它。​​