【问题标题】:How can I make the bot say something when someone tries to kick a higher admin or himself?当有人试图踢高级管理员或他自己时,我怎样才能让机器人说些什么?
【发布时间】:2021-04-27 11:54:34
【问题描述】:

当有人试图踢出更高级别的管理员时,机器人什么都不做,甚至没有错误,我希望它改为将文本返回到聊天中。此外,如果有人试图踢/禁止自己,它会起作用,我该如何禁用它?谢谢 这是代码

@client.command()
@commands.has_permissions(kick_members = True)
async def kick(ctx, member : discord.Member, *, reason=None):
  await member.kick(reason=reason)
  await ctx.channel.send(f"User {member} got kicked")

 @client.command()
 @commands.has_permissions(ban_members = True)
 async def ban(ctx, member : discord.Member, *, reason=None):
    await member.ban(reason=reason)
    await ctx.channel.send(f"User {member} got banned")

【问题讨论】:

标签: python python-3.x bots discord.py


【解决方案1】:

你可以比较成员的top_role

@client.command()
@commands.has_permissions(kick_members = True)
async def kick(ctx, member : discord.Member, *, reason=None):
    if ctx.author.top_role <= member.top_role:
        await ctx.send("The person you tried to kick has equal or higher role than you")
        return
    await member.kick(reason=reason)
    await ctx.channel.send(f"User {member} got kicked")

@client.command()
@commands.has_permissions(ban_members = True)
async def ban(ctx, member : discord.Member, *, reason=None):
    if ctx.author.top_role <= member.top_role:
        await ctx.send("The person you tried to ban has equal or higher role than you")
        return
    await member.ban(reason=reason)
    await ctx.channel.send(f"User {member} got banned")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 2011-08-09
    • 2021-08-29
    • 2021-05-10
    • 2021-06-08
    • 2021-04-16
    • 2021-08-02
    相关资源
    最近更新 更多