首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不和谐@commands.has_role(角色)更改引用

不和谐@commands.has_role(角色)更改引用
EN

Stack Overflow用户
提问于 2022-07-05 21:22:51
回答 1查看 38关注 0票数 1

所以我正在构建一个小型的验证机器人,您可以从公会开始,然后再私下留言您继续。流程的每个阶段都需要一些用户输入或验证,所以我想通过角色来处理每个阶段。现在,为了完成bot,我计划只在用户有特定角色的情况下才能访问每个命令。

现在要说的是,在DMS中,用户没有角色!

我制作了一个角色处理程序,它指的是公会中的用户在DMS中授予和删除角色,但这似乎不适用于装饰师。

长话短说,我如何让@commands.has_role(角色)装饰师参考公会中的用户??

非常感谢大家的帮助。

诚挚的问候

代码语言:javascript
运行
复制
@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) 

P.S.正在进行的工作

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-07 08:48:28

在这个实例中,您是正确的,用户是user对象,而不是member对象。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72875680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档