|
48 | 48 | ) |
49 | 49 | from core.thread import ThreadManager |
50 | 50 | from core.time import human_timedelta |
51 | | -from core.utils import extract_block_timestamp, normalize_alias, parse_alias, truncate, tryint |
| 51 | +from core.utils import extract_block_timestamp, normalize_alias, parse_alias, truncate, tryint, human_join |
52 | 52 |
|
53 | 53 | logger = getLogger(__name__) |
54 | 54 |
|
@@ -1380,28 +1380,44 @@ async def on_guild_channel_delete(self, channel): |
1380 | 1380 | await thread.close(closer=mod, silent=True, delete_channel=False) |
1381 | 1381 |
|
1382 | 1382 | async def on_member_remove(self, member): |
1383 | | - if member.guild != self.guild: |
1384 | | - return |
1385 | 1383 | thread = await self.threads.find(recipient=member) |
1386 | 1384 | if thread: |
1387 | | - if self.config["close_on_leave"]: |
| 1385 | + if member.guild == self.guild and self.config["close_on_leave"]: |
1388 | 1386 | await thread.close( |
1389 | 1387 | closer=member.guild.me, |
1390 | 1388 | message=self.config["close_on_leave_reason"], |
1391 | 1389 | silent=True, |
1392 | 1390 | ) |
1393 | 1391 | else: |
1394 | | - embed = discord.Embed( |
1395 | | - description=self.config["close_on_leave_reason"], color=self.error_color |
1396 | | - ) |
| 1392 | + if len(self.guilds) > 1: |
| 1393 | + guild_left = member.guild |
| 1394 | + remaining_guilds = member.mutual_guilds |
| 1395 | + |
| 1396 | + if remaining_guilds: |
| 1397 | + remaining_guild_names = [guild.name for guild in remaining_guilds] |
| 1398 | + leave_message = ( |
| 1399 | + f"The recipient has left {guild_left}. " |
| 1400 | + f"They are still in {human_join(remaining_guild_names, final='and')}." |
| 1401 | + ) |
| 1402 | + else: |
| 1403 | + leave_message = ( |
| 1404 | + f"The recipient has left {guild_left}. We no longer share any mutual servers." |
| 1405 | + ) |
| 1406 | + else: |
| 1407 | + leave_message = "The recipient has left the server." |
| 1408 | + |
| 1409 | + embed = discord.Embed(description=leave_message, color=self.error_color) |
1397 | 1410 | await thread.channel.send(embed=embed) |
1398 | 1411 |
|
1399 | 1412 | async def on_member_join(self, member): |
1400 | | - if member.guild != self.guild: |
1401 | | - return |
1402 | 1413 | thread = await self.threads.find(recipient=member) |
1403 | 1414 | if thread: |
1404 | | - embed = discord.Embed(description="The recipient has joined the server.", color=self.mod_color) |
| 1415 | + if len(self.guilds) > 1: |
| 1416 | + guild_joined = member.guild |
| 1417 | + join_message = f"The recipient has joined {guild_joined}." |
| 1418 | + else: |
| 1419 | + join_message = "The recipient has joined the server." |
| 1420 | + embed = discord.Embed(description=join_message, color=self.mod_color) |
1405 | 1421 | await thread.channel.send(embed=embed) |
1406 | 1422 |
|
1407 | 1423 | async def on_message_delete(self, message): |
|
0 commit comments