|
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 |
|
@@ -1388,28 +1388,44 @@ async def on_guild_channel_delete(self, channel):
|
1388 | 1388 | await thread.close(closer=mod, silent=True, delete_channel=False)
|
1389 | 1389 |
|
1390 | 1390 | async def on_member_remove(self, member):
|
1391 |
| - if member.guild != self.guild: |
1392 |
| - return |
1393 | 1391 | thread = await self.threads.find(recipient=member)
|
1394 | 1392 | if thread:
|
1395 |
| - if self.config["close_on_leave"]: |
| 1393 | + if member.guild == self.guild and self.config["close_on_leave"]: |
1396 | 1394 | await thread.close(
|
1397 | 1395 | closer=member.guild.me,
|
1398 | 1396 | message=self.config["close_on_leave_reason"],
|
1399 | 1397 | silent=True,
|
1400 | 1398 | )
|
1401 | 1399 | else:
|
1402 |
| - embed = discord.Embed( |
1403 |
| - description=self.config["close_on_leave_reason"], color=self.error_color |
1404 |
| - ) |
| 1400 | + if len(self.guilds) > 1: |
| 1401 | + guild_left = member.guild |
| 1402 | + remaining_guilds = member.mutual_guilds |
| 1403 | + |
| 1404 | + if remaining_guilds: |
| 1405 | + remaining_guild_names = [guild.name for guild in remaining_guilds] |
| 1406 | + leave_message = ( |
| 1407 | + f"The recipient has left {guild_left}. " |
| 1408 | + f"They are still in {human_join(remaining_guild_names, final='and')}." |
| 1409 | + ) |
| 1410 | + else: |
| 1411 | + leave_message = ( |
| 1412 | + f"The recipient has left {guild_left}. We no longer share any mutual servers." |
| 1413 | + ) |
| 1414 | + else: |
| 1415 | + leave_message = "The recipient has left the server." |
| 1416 | + |
| 1417 | + embed = discord.Embed(description=leave_message, color=self.error_color) |
1405 | 1418 | await thread.channel.send(embed=embed)
|
1406 | 1419 |
|
1407 | 1420 | async def on_member_join(self, member):
|
1408 |
| - if member.guild != self.guild: |
1409 |
| - return |
1410 | 1421 | thread = await self.threads.find(recipient=member)
|
1411 | 1422 | if thread:
|
1412 |
| - embed = discord.Embed(description="The recipient has joined the server.", color=self.mod_color) |
| 1423 | + if len(self.guilds) > 1: |
| 1424 | + guild_joined = member.guild |
| 1425 | + join_message = f"The recipient has joined {guild_joined}." |
| 1426 | + else: |
| 1427 | + join_message = "The recipient has joined the server." |
| 1428 | + embed = discord.Embed(description=join_message, color=self.mod_color) |
1413 | 1429 | await thread.channel.send(embed=embed)
|
1414 | 1430 |
|
1415 | 1431 | async def on_message_delete(self, message):
|
|
0 commit comments