from redbot.core import commands from redbot.core.bot import Red from redbot.core.utils.chat_formatting import pagify import discord async def has_update_command_role(ctx): """ Checks if the user has the update command role. """ if ctx.guild is None: return False uc_role = discord.utils.get(ctx.guild.roles, name="Update Command") reporter_role = discord.utils.get(ctx.guild.roles, name="Reporter") if uc_role is None: return False return (uc_role in ctx.author.roles) or (reporter_role in ctx.author.roles) class LibcordRoster(commands.Cog): def __init__(self, bot: Red, *args, **kwargs): super().__init__(*args, **kwargs) self.bot = bot def cog_unload(self): pass @commands.command() @commands.check(has_update_command_role) async def roster(self, ctx: commands.Context): """Get the names of all users with the Updating role""" guild = ctx.guild role = discord.utils.get(guild.roles, name="Updating") members = [member for member in guild.members if role in member.roles] out = "" for member in members: if member.nick: out += f"{member.nick}\n" elif member.name: out += f"{member.name}\n" out = '\n'.join(sorted(out.splitlines(), key=str.lower)) for page in pagify(out): await ctx.send("```\n" + page + "```")