【问题标题】:kick/ban people in discord.py在 discord.py 中踢/禁止人
【发布时间】:2021-09-16 05:06:44
【问题描述】:

所以,我创建了一个 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)

【问题讨论】:

  • Discord.py 库产生了大量的日志记录。查看输出,这样你就知道出了什么问题
  • 是否有任何 stderr 输出,或者它只是不执行任务?我在这里能想到的是 kick_member 和 ban_member 权限,但这应该会提高 Forbidden。
  • 所以,它不会输出任何错误。感谢您的信息
  • 我在互联网上说很容易通过点击“踢和禁止 discord.py”。在这里提问之前,请阅读文档并在互联网上搜索答案
  • 你好。是的,这正是我所做的。有问题,我找不到任何东西。也许我应该进行更多搜索,但我只是想,为什么不在这里提出这个问题,以便有人可以帮助我。 :)

标签: python discord discord.py


【解决方案1】:

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

@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

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

【讨论】:

    【解决方案2】:

    这里是ban kick unban code discord py,命令下的错误是没有perms的人做不到

    #--- 踢命令 --- @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, commands.MissingPermissions): await ctx.send("你没有权限运行这个命令")

    #--- 禁止命令 --- @client.command() @commands.guild_only() @commands.has_permissions(ban_members=True) async def ban(ctx, user: discord.Member,*,原因=无): 等待用户.ban(原因=原因) await ctx.send(f"{user} 已被封禁!")

    @ban.error async def ban(ctx, error): if isinstance(error, commands.MissingPermissions): await ctx.send("你没有权限运行这个命令")

    #--- unban command --- @client.command() @commands.guild_only() @commands.has_permissions(ban_members=True) async def unban(ctx, id: 诠释): user_id = 等待 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, commands.MissingPermissions): await ctx.send("你没有权限运行这个命令")

    【讨论】:

      【解决方案3】:
      @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)
      

      【讨论】:

      • 您好,感谢您的回复!由于某种奇怪的原因,它似乎不起作用,但它不会输出错误。你知道为什么吗?
      猜你喜欢
      • 2020-12-19
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      相关资源
      最近更新 更多