11import asyncio
22import discord
3+ from tqdm .asyncio import tqdm
4+
5+ from guildmaster .config .logger import Logger
36from guildmaster .client .discord_client import DiscordClient
47
58class DiscordRoleManager :
69 """
710 A class for managing a role to every member in a Discord server.
811 """
912 def __init__ (self ):
10- pass
13+ self . logger = Logger . setup_logger ( __name__ )
1114
1215 def assign_to_all (self , guild : int , role : str , delay : float = 3.0 ):
1316 """
@@ -23,36 +26,36 @@ def assign_to_all(self, guild: int, role: str, delay: float = 3.0):
2326
2427 @client .bot .event
2528 async def on_ready ():
26- print (f"Logged in as { client .bot .user } " )
27- print ("Guilds:" , client .bot .guilds )
29+ self .logger .info ("Logged in as %s" , client .bot .user )
2830
2931 # Fetch the guild using the provided guild ID
3032 guild_obj = client .bot .get_guild (guild )
3133 if not guild_obj :
32- print ("Guild not found. Please check your guild ID." )
34+ self . logger . error ("Guild not found. Please check your guild ID." )
3335 await client .bot .close ()
3436 return
3537
3638 # Retrieve the role by name
3739 role_obj = discord .utils .get (guild_obj .roles , name = role )
3840 if not role_obj :
39- print ("Role not found. Please check the role name." )
41+ self . logger . error ("Role not found. Please check the role name." )
4042 await client .bot .close ()
4143 return
4244
43- print ( f "Assigning role '{ role_obj . name } ' to all members of '{ guild_obj . name } '..." )
45+ self . logger . debug ( "Assigning role '%s ' to all members of '%s '..." , role , guild_obj . name )
4446
4547 # Iterate through each member and add the role if they don't have it
46- for member in guild_obj .members :
48+ members = guild_obj .members
49+ async for member in tqdm (members , desc = "Assigning roles" , unit = "member" ):
4750 if role_obj not in member .roles :
4851 try :
4952 await member .add_roles (role_obj )
50- print ( f "Added role to { member .name } # { member .discriminator } " )
53+ self . logger . debug ( "Added role to %s#%s" , member .name , member .discriminator )
5154 await asyncio .sleep (delay )
5255 except Exception as e :
53- print ( f "Failed to add role to { member .name } # { member .discriminator } : { e } " )
56+ self . logger . error ( "Failed to add role to %s#%s: %s" , member .name , member .discriminator , e )
5457
55- print ("Finished processing all members." )
58+ self . logger . debug ("Finished processing all members." )
5659 await client .bot .close ()
5760
5861 client .run ()
0 commit comments