我想了解如何防止通过我的 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)
答案 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)
我在上面稍微简化了您的代码,并通过 if
和 else
示例展示了它,当然您可以随时在最后进行调整。
您可以使用内置函数 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}")