【问题标题】:discord.py has_role via DMdiscord.py has_role 通过 DM
【发布时间】:2021-11-23 00:51:24
【问题描述】:

我尝试使用has_role,但在 DM 中但无法正常工作。

@commands.check_any(commands.has_role(role_id))
@commands.dm_only()
elif isinstance(error, commands.CheckAnyFailure):
        await ctx.send("`ERROR: Permission denied`")

在服务器中工作!

在 DM 中总是返回 ERROR: Permission denied

好像看不懂这个角色。有什么想法吗?

【问题讨论】:

  • 你应该如何在 DM 中扮演角色?角色是每个公会的。
  • 有没有办法通过 dm 进行检查?
  • 有,但并不容易。一个用户可以在多个公会中,并且在每个公会中用户具有不同的角色。
  • 我明白了,你知道怎么做吗?
  • 遗憾的是没有装饰器(但是你可以制作一个),你应该在特定的公会中获取用户的角色,并检查它是否具有你想要的角色。我会写一个答案。

标签: python discord.py roles


【解决方案1】:

每个公会的用户可以有不同的角色,在 DM 中它没有。您应该检查用户在特定公会中的角色:

@bot.command()
@commands.dm_only()
async def whatever(ctx):
    guild = bot.get_guild(GUILD_ID)
    member = guild.get_member(ctx.author.id)
    role_id = 123123123

    if any(role.id == role_id for role in member.roles):
        # has necessary role
    else:
        await ctx.send("`ERROR: Permission denied`")

【讨论】:

    猜你喜欢
    • 2021-07-15
    • 1970-01-01
    • 2021-07-20
    • 2021-05-17
    • 2021-04-16
    • 2020-12-26
    • 1970-01-01
    • 2019-08-22
    • 2022-01-05
    相关资源
    最近更新 更多