当前位置: 首页 > 面试题库 >

角色授予事件中的Discord Python

宗政德宇
2023-03-14
问题内容

因此,我一直试图让机器人在成员获得角色授予时宣布,我知道这段代码可能根本没有意义,但这就是为什么我问:我该怎么做?

@bot.event
async def on_member_update(before, after):
    if str(after.roles) == 'android':
        fmt = "{0.mention} your role request has been accepted! :confetti_ball: You've been granted the role '{1}'"
        await bot.send_message(bot.get_channel('495285593711050754'), fmt.format(member, after.roles.name))
        print(colored('moderation.clf: ', 'blue'), colored('Android granted', 'white'))

    if str(after.roles) == 'human':
        fmt = "{0.mention} your role request has been accepted! :confetti_ball: You've been granted the role '{1}'"
        await bot.send_message(bot.get_channel('495285593711050754'), fmt.format(member, after.roles.name))
        print(colored('moderation.clf: ', 'blue'), colored('Human granted', 'white'))

    if str(after.roles) == 'moderator':
        fmt = "{0.mention} you are now part of the CyberLife staff, we're so excited to have you here! :confetti_ball:"
        await bot.send_message(bot.get_channel('495285593711050754'), fmt.format(member, after.roles.name))
        print(colored('moderation.clf: ', 'blue'), colored('Moderator granted', 'white'))

问题答案:

首先,您必须检查用户是否具有新角色。然后,您可以检查他们所担任的角色是您所寻找的角色之一:

@bot.event
async def on_member_update(before, after):
    if len(before.roles) < len(after.roles):
        new_role = next(role for role in after.roles if role not in before.roles)
        if new_role.name in ('android', 'human'):
            fmt = "{0.mention} your role request has been accepted! :confetti_ball: You've been granted the role '{1}'"
            await bot.send_message(bot.get_channel('495285593711050754'), fmt.format(after, new_role.name))
        elif new_role.name in ('moderator'):
            fmt = "{0.mention} you are now part of the CyberLife staff, we're so excited to have you here! :confetti_ball:"
            await bot.send_message(bot.get_channel('495285593711050754'), fmt.format(after))


 类似资料:
  • 我对用JavaScript编码非常陌生,我正在为不和谐服务器设置一个简单的事件机器人。 这在概念上非常简单,机器人真正做的只是允许任何人给他们提到的任何成员分配一个“死亡”角色。 然而,我面临的问题是: •kill命令,虽然它可以为人们提供死亡角色,并宣布一个成员被淘汰,但如果一个成员已经死亡或具有职员角色,它不会抛出相应的错误。它只是宣布该成员已被淘汰,而不管他们扮演什么角色。 •输入任何带有字

  • 我分配一个角色权限来创建数据库。相同的角色被分配给登录用户,但是当我试图使用分配角色的登录用户创建新数据库时,我得到权限拒绝错误。 无法执行语句。权限拒绝,数据库主,所有者dbo。运行此命令需要以下权限:CREATE DATABASE。赛贝斯错误代码=10331严重级别=14,状态=3,事务状态=0第1行 我用15.5分和16分试了一下。我做错什么了吗?我们需要考虑其他参数吗?我经历了这次讨论 h

  • 我们有许多SecureString SSM参数存储值是通过bash脚本自动创建的。使用通过CloudFormation创建的特定于环境的KMS密钥+别名对其进行加密。 模板中还有EC2实例的IAM角色,它们需要允许检索和解密SSM参数。为了允许这一点,我们通过引用IAM角色ARN作为原则,在创建KMS密钥时授予对这些IAM角色的访问权。 但是,我们的AWS帐户中有一些非特定于环境的SSM变量,这些

  • 我对Spring靴还不熟悉。我需要在spring boot中实现基于角色的授权。我有不同的角色,多个用户将映射到每个角色。每当调用api时,我都会设置不同的访问权限(读取、添加、删除、编辑),需要检查访问权限并允许权限。我计划使用拦截器调用具有查询的方法,以从DB获取访问权限,并拒绝或访问api。有没有其他更好的方法我可以用同样的方法?

  • 我正在尝试做一个命令,给用户一个角色。它以前是工作的,但不是它只是给机器人一个角色。 这也发生在我的level命令上,该命令应该检查用户的级别。它检查的是机器人的水平,而不是用户的水平。

  • Using a delegation key The collaborator can now push to the repository using Docker Content Trust. Docker will automatically choose and pick the right key for the targets/release role. Edit the file o