Skip to content

Commit c17443e

Browse files
committed
catch users who left server
1 parent c486359 commit c17443e

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

main.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ async def send_temp_message(channel_id, message, time=60):
6868
await temp_message.delete(delay=time)
6969

7070
async 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

103110
async 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

Comments
 (0)