如何防止我的 discord.py Bot 禁止我?

时间:2021-07-01 08:59:59

标签: discord.py

我想了解如何防止通过我的 Bot 禁止我使用服务器,但遗憾的是,我没有成功......有人有任何解决方案吗?

@commands.has_permissions(ban_members = True)
@client.command()
async def ban(ctx, *, member: discord.Member = None, reason=None):
    bot_owner = client.get_user(705557092802625576)
    if member is None:
        embed = discord.Embed(color = 0xff2200, title = "Argumente Fehlen",
                              description = f'{ctx.author.mention} Bitte nenne einen User den du Bannen möchtest.\n\n`o?ban [@nutzer / id] [(optional) Grund]`')
        embed.set_author(name = f'{ctx.author.name}#{ctx.author.discriminator}',
                         icon_url = f'{ctx.message.author.avatar_url}')
        return await ctx.send(embed = embed)

    elif member.id == bot_owner:
        embed = discord.Embed(color = 0xff2200, title = 'Fehler aufgetreten!',
                              description = f'{ctx.author.mention} Ohnezahn DNC#8135 kann nicht gebannt werden!\nGrund: Er ist der Bot-Inhaber',
                              footer = f'User-ID: str(member.id)')
        return await ctx.send(embed = embed)

    elif member.id != bot_owner:

        await ctx.guild.ban(member, reason = reason)
        embed = discord.Embed(color = 0xff2200, title = ":hammer: Bannhammer wurde geschwungen!",
                              description = 'Gebannt von:' f'{ctx.author.mention} / {ctx.author.id} / {ctx.author.name}#{ctx.author.discriminator}\n\nNutzer: {member.name}#{member.discriminator} / {member.id} / {member.mention}\nGrund des Banns: **```py\n{reason}\n```**')
        embed.set_author(name = f'{ctx.author.name}#{ctx.author.discriminator}',
                         icon_url = f'{ctx.message.author.avatar_url}')
        embed.set_footer(text = 'User-ID: ' + str(member.id))
    return await ctx.send(embed = embed)

2 个答案:

答案 0 :(得分:1)

使用 get_user 要求用户兑现,您可以提出 fetch_user 请求,但实际上您不需要像这样比较 id。

@client.command()
@commands.has_permissions(ban_members=True)
async def ban(ctx, member: discord.Member, *, reason=None):
    if member.id == 1234:
        return await ctx.send('Can not ban owner')


    # code here

答案 1 :(得分:0)

我在上面稍微简化了您的代码,并通过 ifelse 示例展示了它,当然您可以随时在最后进行调整。

您可以使用内置函数 client.owner_id 一次,然后将其与 member 进行比较,但您也可以使用一些不同的方法。 为此,我们首先定义一个用户,您不想被自己的机器人禁止:

bot_owner = client.get_user(YourID)

然后我们将 member 对象与此 ID 进行比较,如果 bot_owner 匹配 member,则不让用户被禁止:

    if member == bot_owner: # Or member.id
        return await ctx.send("You can't ban the bot owner")

当然,另一种情况是用户被禁止。

一种可能的代码是:

@client.command()
@commands.has_permissions(ban_members=True)
async def ban(ctx, member: discord.Member, *, reason=None):
    bot_owner = client.get_user(YourID)
    if member == bot_owner: # Or member.id
        return await ctx.send("You can't ban the bot owner")
    else:
        await ctx.guild.ban(member, reason=reason)
        await ctx.send(f"{member} got banned. Reason: {reason}")