Exemple #1
0
    async def guild_check(self, guild: Guild):
        settings = await get_guild_settings(guild)
        if settings.sync_twitch_followers:
            streamername: str = settings.twitch_account_name
            followerrole: Optional[Role] = utils.get(guild.roles, name=settings.follower_role_name)
            if followerrole is None:
                return

            for member in guild.members:
                # The following would work if discord allowed bots to check linked accounts.
                #
                # profile = await member.profile()
                # for acc in profile.connected_accounts:
                #     if acc["type"] == "twitch":
                #         following = await self.bot.loop.run_in_executor(executor, is_following, streamername, acc["id"])
                #
                #         if following and followerrole not in member.roles:
                #             await member.add_roles(followerrole)
                #         elif not following and followerrole in member.roles:
                #             await member.remove_roles(followerrole)
                query = UserData.filter(user_id=str(member.id))

                if await query.count() < 1:
                    continue
                else:

                    following = await self.bot.loop.run_in_executor(
                        executor, is_following, streamername, (await query.first()).twitch_account_id
                    )

                    if following and followerrole not in member.roles:
                        await member.add_roles(followerrole)
                    elif not following and followerrole in member.roles:
                        await member.remove_roles(followerrole)