From 2c18fd4a5f0ee27b31008e8f1a623ab997d406e0 Mon Sep 17 00:00:00 2001 From: Brandon Silva Date: Sun, 16 Jan 2022 18:28:45 -0500 Subject: [PATCH 1/2] add admin view all subs for guild, fix bug when removing members from subscribers --- subscriber/subscriber.py | 55 ++++++++++++++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 8 deletions(-) diff --git a/subscriber/subscriber.py b/subscriber/subscriber.py index 84c664b..5b0ac65 100644 --- a/subscriber/subscriber.py +++ b/subscriber/subscriber.py @@ -1,6 +1,7 @@ from redbot.core import commands, Config, checks from redbot.core.commands import Context, Cog from redbot.core.utils.chat_formatting import * +from redbot.core.utils.menus import menu, DEFAULT_CONTROLS import discord @@ -126,10 +127,10 @@ class Subscriber(commands.Cog): del roles[role] await self.config.member(member).roles.set(roles) - if rm_members: - for mem in rm_members: - members.remove(mem) - await self.config.guild(guild).members.set(members) + if rm_members: + for mem in rm_members: + members.remove(mem) + await self.config.guild(guild).subscribers.set(members) # sleep for 30 minutes await asyncio.sleep(1800) @@ -308,6 +309,47 @@ class Subscriber(commands.Cog): await ctx.tick() + @commands.command(name="subviewall") + @checks.admin_or_permissions(administrator=True) + @commands.guild_only() + async def subview_all(self, ctx): + """ + View all subscriptions in the server + """ + members = await self.config.guild(ctx.guild).subscribers() + if not members: + await ctx.send(error("No users have subscriptions in your server."), delete_after=60) + return + + msg = "" + for member in members: + member = ctx.guild.get_member(member) + if not member: + continue + + msg += f"{member.mention}:\n" + roles = await self.config.member(member).roles() + for role, end_date in roles.items(): + role = ctx.guild.get_role(int(role)) + if not role: + continue + msg += f"\t- `@{role.name}`: \n" + + msg += "\n" + + pages = list(pagify(msg, page_length=1700, delims=["\n"], priority=True)) + pages = [f"{page}\n\n-----------------\n**Page {i+1} of {len(pages)}**" for i, page in enumerate(pages)] + + if not pages: # should never happen + await ctx.send( + error( + "There are subscribed users, but I couldn't get any of their information. Please contact the bot developer for help." + ), + delete_after=60, + ) + else: + await menu(ctx, pages, DEFAULT_CONTROLS) + @commands.command(name="subview") @commands.guild_only() async def subview(self, ctx): @@ -341,9 +383,6 @@ class Subscriber(commands.Cog): await ctx.send(embed=embed) async def red_delete_data_for_user( - self, - *, - requester: Literal["discord_deleted_user", "owner", "user", "user_strict"], - user_id: int, + self, *, requester: Literal["discord_deleted_user", "owner", "user", "user_strict"], user_id: int, ): pass From 238d63be4556525765da51af4ed7e912bc978633 Mon Sep 17 00:00:00 2001 From: Brandon Silva Date: Sun, 16 Jan 2022 18:31:45 -0500 Subject: [PATCH 2/2] black moment --- subscriber/subscriber.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/subscriber/subscriber.py b/subscriber/subscriber.py index 0b53dac..3ef380c 100644 --- a/subscriber/subscriber.py +++ b/subscriber/subscriber.py @@ -383,6 +383,9 @@ class Subscriber(commands.Cog): await ctx.send(embed=embed) async def red_delete_data_for_user( - self, *, requester: Literal["discord_deleted_user", "owner", "user", "user_strict"], user_id: int, + self, + *, + requester: Literal["discord_deleted_user", "owner", "user", "user_strict"], + user_id: int, ): pass