autorole.py 文件源码

python
阅读 20 收藏 0 点赞 0 评论 0

项目:dogbot 作者: slice 项目源码 文件源码
def assign_roles(self, autorole_type: str, member: Member):
        async with self.bot.pgpool.acquire() as pg:
            # fetch autoroles for that user
            record = await pg.fetchrow('SELECT * FROM autoroles WHERE guild_id = $1 AND type = $2', member.guild.id,
                                       autorole_type)
            if not record:
                return []

            # get the role ids we need
            role_ids = record['roles']

            # collect roles to add
            roles_to_add = [discord.utils.get(member.guild.roles, id=role_id) for role_id in role_ids]

            # filter out dead roles
            roles_to_add = list(filter(lambda r: r is not None, roles_to_add))

            if not roles_to_add:
                # no roles to add
                return

            log.debug('Adding {} roles to {}.'.format(len(roles_to_add), member))

            try:
                # add roles
                await member.add_roles(*roles_to_add)
            except discord.Forbidden:
                log.warning('Failed to autorole %s. Forbidden!', member)
            except discord.NotFound:
                log.warning('Failed to autorole %s, not found?', member)
            else:
                return roles_to_add
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号