【问题标题】:Discord @commands.has_role(role) change referenceDiscord @commands.has_role(role) 更改参考
【发布时间】:2022-07-07 16:48:28
【问题描述】:

所以我正在构建一个小型验证机器人,你可以从公会开始,然后私信你继续。流程的每个阶段都需要一些用户输入或验证,因此我考虑通过角色来处理每个阶段。现在要完成机器人,我计划让每个命令只有在用户具有特定角色时才能访问。

现在问题来了,在 DMS 中,用户没有角色!

我创建了一个角色处理程序,它引用公会中的用户来授予和删除 DMS 中的角色,但这似乎不适用于装饰器。

长话短说,我如何让@commands.has_role(role) 装饰器引用公会中的用户??

非常感谢大家的帮助。

最好的问候

@commands.has_role("Verf Stage 2") #Issue
@slash.slash(
    name="IamReady",
    description="Allows you to continue with the verification.",
    guild_ids=guildIds,
    permissions = permission2     
)

async def _IamReady(ctx:SlashContext):
    global user_obj
    role = "Verf Stage 2"
    await ctx.author.send('Let me see what i can find')
    username = user_obj.usrname
    #For testing
    tempateId = os.getenv('TEMPLATE_ID_TEST')
    state = await getUserData(userName = username, templateId = tempateId)
    if state == "NoAssetfound":
        pass
    elif state == "Usernotfound":
        pass
    else:
        nftemebed = await getNftEmbed(state)
        user_obj.assetId = state['asset_id']
        # Addrole
        await rolehandler(user = user_obj.auth, newrole = role, guild = bot.get_guild(id=guildIds[-1]))
    await ctx.author.send(embed = nftemebed) 

附:正在进行中

【问题讨论】:

    标签: discord.py


    【解决方案1】:

    在这种情况下,您是正确的,用户是 user 对象而不是 member 对象。

    我会找到合适的公会并使用member=guild.get_member(int(user.id)) 获取您需要的成员对象,然后使用if role in member.roles 测试来自 DM 的角色。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-18
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-21
      相关资源
      最近更新 更多