11from typing import Optional , Union , Dict , List
22
33import discord .ext .commands
4- from discord import Role , Embed , Member , Status , Guild , NotFound , User , Forbidden
4+ from discord import Role , Embed , Member , Status , Guild , NotFound , User , Forbidden , Permissions
55from discord .ext import commands
66from discord .ext .commands import CommandError , Context , guild_only , UserInputError , Group
77
88from PyDrocsid .cog import Cog
99from PyDrocsid .command import reply , docs , optional_permissions
1010from PyDrocsid .config import Config
11- from ...contributor import Contributor
1211from PyDrocsid .converter import UserMemberConverter
1312from PyDrocsid .database import db , select , filter_by
1413from PyDrocsid .embeds import send_long_embed
2019from .colors import Colors
2120from .models import RoleAuth , PermaRole
2221from .permissions import RolesPermission
22+ from ...contributor import Contributor
2323from ...pubsub import send_to_changelog , send_alert
2424
2525tg = t .g
@@ -247,54 +247,13 @@ async def roles_add(self, ctx: Context, member: Member, *, role: Role):
247247 @RolesPermission .roles_clone .check
248248 @docs (t .commands .roles_clone )
249249 async def roles_clone (self , ctx : Context , role : Role ):
250- if not await is_authorized (ctx .author , role , perma = False ):
251- raise CommandError (t .role_not_authorized )
252-
253- permission_list = [
254- "add_reactions" ,
255- "administrator" ,
256- "attach_files" ,
257- "ban_members" ,
258- "change_nickname" ,
259- "connect" ,
260- "create_instant_invite" ,
261- "deafen_members" ,
262- "embed_links" ,
263- "external_emojis" ,
264- "kick_members" ,
265- "manage_channels" ,
266- "manage_emojis" ,
267- "manage_guild" ,
268- "manage_messages" ,
269- "manage_nicknames" ,
270- "manage_permissions" ,
271- "manage_roles" ,
272- "manage_webhooks" ,
273- "mention_everyone" ,
274- "move_members" ,
275- "mute_members" ,
276- "priority_speaker" ,
277- "read_message_history" ,
278- "read_messages" ,
279- "request_to_speak" ,
280- "send_messages" ,
281- "send_tts_messages" ,
282- "speak" ,
283- "stream" ,
284- "use_external_emojis" ,
285- "use_slash_commands" ,
286- "use_voice_activation" ,
287- "value" ,
288- "view_audit_log" ,
289- "view_channel" ,
290- "view_guild_insights" ,
291- ]
292250
293251 missing_perms = []
252+
294253 params = discord .Permissions ()
295- bot_member_object = ctx .guild .get_member ( self . bot . user . id )
254+ bot_member_object = ctx .guild .me
296255
297- for permission in permission_list :
256+ for permission , _ in Permissions . all () :
298257 if (
299258 getattr (bot_member_object .guild_permissions ,
300259 permission
@@ -310,9 +269,7 @@ async def roles_clone(self, ctx: Context, role: Role):
310269 )
311270 await ctx .message .add_reaction (name_to_emoji ["white_check_mark" ])
312271 if missing_perms :
313- descrip = ""
314- for mis in missing_perms :
315- descrip += f"`{ mis } `\n "
272+ descrip = "`" + "`\n `" .join (missing_perms ) + "`"
316273 em = Embed (title = t .failed_to_clone_role_permissions , description = descrip , color = Colors .MissingPermissions )
317274 await send_long_embed (ctx , em , paginate = True )
318275
0 commit comments