【问题标题】:Discord.py Member has specific roleDiscord.py 成员具有特定角色
【发布时间】:2021-06-29 17:16:27
【问题描述】:

我想检查输入了 %unban 之类的命令的用户是否具有执行此操作的权限。我的问题是我不知道该怎么做。 我不想使用 @command.has_role() 方法。我想要一个 if-else-clause 代码检查作者是否有权打印以下内容:“您有权执行此操作”或“您无权执行此操作”。

@bot.command()
async def unban(ctx, *, member):
teamler = ctx.message.author.id
role = get(ctx.guild.roles, name='↬ Team Member')
banned_users = await ctx.guild.bans()
member_name, member_discriminator = member.split('#')

for ban_entry in banned_users:
    user = ban_entry.user

    if (user.name, user.discriminator) == (member_name, member_discriminator):
        await ctx.guild.unban(user)
        await ctx.send(f'Das {role.mention} ' + '<@' + f'{teamler}' + '>' + ' hat den Spieler ' + f'{user.mention}' + ' entbannt.')

也许你能够解决我的问题,这样用户就可以收到一条消息,如果他有权限/角色来执行 %ban / %unban 之类的操作。

【问题讨论】:

  • 我不处理 discord.py,但我喜欢检查代码:您可以检查 @command.has_role() 装饰器的外观,看看他们是如何做到的? ;P
  • 非常感谢 h4z3。这对我帮助很大。弄清楚它是如何工作的:)

标签: python discord discord.py user-roles


【解决方案1】:

你应该可以用一个简单的 if 语句来做到这一点:

# This will define the role you want them to have
role = client.get_role(roleid)

@bot.command()
async def unban(ctx, member : discord.Member):
    author = ctx.message.author
    if role in author.roles:
        try:
            await ctx.guild.unban(member)
            await ctx.channel.send(f'{member.mention} has been unbanned!')
        except:
            await ctx.channel.send(f'{member.mention} is already unbanned!')
    else:
        await ctx.channel.send('You do not have the required role!')

这应该检查角色是否在他们的角色中。

您也可以使用 has_permissions 标志:

@bot.command()
@bot.has_permissions(ban_members=True)
async def unban(ctx, member : discord.Member):

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-01
    • 2020-12-05
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多