|
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