所以我正在构建一个小型的验证机器人,您可以从公会开始,然后再私下留言您继续。流程的每个阶段都需要一些用户输入或验证,所以我想通过角色来处理每个阶段。现在,为了完成bot,我计划只在用户有特定角色的情况下才能访问每个命令。
现在要说的是,在DMS中,用户没有角色!
我制作了一个角色处理程序,它指的是公会中的用户在DMS中授予和删除角色,但这似乎不适用于装饰师。
长话短说,我如何让@commands.has_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) P.S.正在进行的工作
发布于 2022-07-07 08:48:28
在这个实例中,您是正确的,用户是user对象,而不是member对象。
我会找到合适的公会,并使用member=guild.get_member(int(user.id))获取您需要的成员对象,然后使用if role in member.roles测试来自DM的角色。
https://stackoverflow.com/questions/72875680
复制相似问题