@@ -68,6 +68,7 @@ async def send_temp_message(channel_id, message, time=60):
6868 await temp_message .delete (delay = time )
6969
7070async def role_message_control (payload , remove_role = False ):
71+ db = PostgresDB ()
7172 # Add/remove roles based on reactions and required roles
7273 message_ids = [int (DISCORD_ROLES ["ROLES_MESSAGE_ID" ]) for DISCORD_ROLES in DISCORD_ROLES_LIST ]
7374 if payload .message_id in message_ids and payload .user_id != client .user .id :
@@ -78,7 +79,13 @@ async def role_message_control(payload, remove_role=False):
7879 if payload .emoji .name in [role ["emoji" ] for role in roles ]:
7980 role = [x for x in roles if x ["emoji" ] == payload .emoji .name ][0 ]
8081 guild = client .get_guild (payload .guild_id )
81- member = await guild .fetch_member (payload .user_id )
82+ try :
83+ member = await guild .fetch_member (payload .user_id )
84+ except discord .errors .NotFound :
85+ print (f"User { payload .user_id } not found in server. Removing..." )
86+ await roles_message .remove_reaction (payload .emoji , discord .Object (id = payload .user_id ))
87+ db .remove_sponsor_by_discord_id (payload .user_id )
88+ return
8289 member_role_ids = [role .id for role in member .roles ]
8390 if not remove_role :
8491 intersection = set (member_role_ids ).intersection (set (required_roles ))
@@ -101,6 +108,7 @@ async def role_message_control(payload, remove_role=False):
101108 await send_temp_message (welcome_channel_id , f"Welcome to the channel, { member .mention } !" )
102109
103110async def give_old_reaction_roles ():
111+ db = PostgresDB ()
104112 # Give roles to users who have reacted to the roles message while the bot was offline
105113 all_users = [member async for member in client .get_guild (GUILD_ID ).fetch_members ()]
106114 for DISCORD_ROLES in DISCORD_ROLES_LIST :
@@ -116,7 +124,9 @@ async def give_old_reaction_roles():
116124 try :
117125 member = await client .get_guild (GUILD_ID ).fetch_member (fetched_user .id )
118126 except discord .errors .NotFound :
119- print (f"User { fetched_user .name } with ID { fetched_user .id } not found in server" )
127+ print (f"User { fetched_user .name } with ID { fetched_user .id } not found in server. Removing..." )
128+ await reaction .remove (fetched_user )
129+ db .remove_sponsor_by_discord_id (fetched_user .id )
120130 continue
121131 user_roles = [role .id for role in member .roles ]
122132 for role_item in roles_dict :
0 commit comments