Skip to content

Commit 6011971

Browse files
committed
Add silent_close and scheduled_close attributes to thread after closure and add close_log method to mongodb client
1 parent d83561b commit 6011971

2 files changed

Lines changed: 51 additions & 23 deletions

File tree

core/clients.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -701,6 +701,34 @@ async def post_log(self, channel_id: Union[int, str], data: dict) -> dict:
701701
{"channel_id": str(channel_id)}, {"$set": data}, return_document=True
702702
)
703703

704+
async def close_log(
705+
self,
706+
channel_id: int | str,
707+
closer: discord.Member | discord.User,
708+
message: Optional[str],
709+
title: str,
710+
silent: bool = False,
711+
scheduled: bool = False,
712+
) -> dict:
713+
data = {
714+
"open": False,
715+
"title": title,
716+
"closed_at": discord.utils.utcnow(),
717+
"close_message": message,
718+
"silent_close": silent,
719+
"scheduled_close": scheduled,
720+
"closer": {
721+
"id": str(closer.id),
722+
"name": closer.name,
723+
"discriminator": closer.discriminator,
724+
"avatar_url": closer.display_avatar.url,
725+
"mod": True,
726+
},
727+
}
728+
return await self.logs.find_one_and_update(
729+
{"channel_id": str(channel_id)}, {"$set": data}, return_document=True
730+
)
731+
704732
async def search_closed_by(self, user_id: Union[int, str]):
705733
return await self.logs.find(
706734
{"guild_id": str(self.bot.guild_id), "open": False, "closer.id": str(user_id)},

core/thread.py

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ async def _close_after(self, after, closer, silent, delete_channel, message):
389389
async def close(
390390
self,
391391
*,
392-
closer: typing.Union[discord.Member, discord.User],
392+
closer: discord.Member | discord.User,
393393
after: int = 0,
394394
silent: bool = False,
395395
delete_channel: bool = True,
@@ -426,7 +426,14 @@ async def close(
426426
else:
427427
await self._close(closer, silent, delete_channel, message)
428428

429-
async def _close(self, closer, silent=False, delete_channel=True, message=None, scheduled=False):
429+
async def _close(
430+
self,
431+
closer: discord.Member | discord.User,
432+
silent=False,
433+
delete_channel=True,
434+
message=None,
435+
scheduled=False,
436+
):
430437
try:
431438
self.manager.cache.pop(self.id)
432439
except KeyError as e:
@@ -442,22 +449,13 @@ async def _close(self, closer, silent=False, delete_channel=True, message=None,
442449

443450
# Logging
444451
if self.channel:
445-
log_data = await self.bot.api.post_log(
446-
self.channel.id,
447-
{
448-
"open": False,
449-
"title": match_title(self.channel.topic),
450-
"closed_at": str(discord.utils.utcnow()),
451-
"nsfw": self.channel.nsfw,
452-
"close_message": message,
453-
"closer": {
454-
"id": str(closer.id),
455-
"name": closer.name,
456-
"discriminator": closer.discriminator,
457-
"avatar_url": closer.display_avatar.url,
458-
"mod": True,
459-
},
460-
},
452+
log_data = await self.bot.api.close_log(
453+
channel_id=self.channel.id,
454+
closer=closer,
455+
message=message,
456+
title=match_title(self.channel.topic),
457+
silent=silent,
458+
scheduled=scheduled,
461459
)
462460
else:
463461
log_data = None
@@ -467,7 +465,7 @@ async def _close(self, closer, silent=False, delete_channel=True, message=None,
467465
if prefix == "NONE":
468466
prefix = ""
469467
log_url = (
470-
f"{self.bot.config['log_url'].strip('/')}{'/' + prefix if prefix else ''}/{log_data['key']}"
468+
f"{self.bot.config['log_url'].strip('/')}{'/' + prefix if prefix else ''}/{log_data['_id']}"
471469
)
472470

473471
if log_data["title"]:
@@ -483,7 +481,7 @@ async def _close(self, closer, silent=False, delete_channel=True, message=None,
483481
else:
484482
_nsfw = ""
485483

486-
desc = f"[`{_nsfw}{log_data['key']}`]({log_url}): "
484+
desc = f"[`{_nsfw}{log_data['_id']}`]({log_url}): "
487485
desc += truncate(sneak_peak, max=75 - 13)
488486
else:
489487
desc = "Could not resolve log url."
@@ -1025,9 +1023,11 @@ async def send(
10251023
images.extend(image_urls)
10261024
images.extend(
10271025
(
1028-
i.url
1029-
if i.format in (discord.StickerFormatType.png, discord.StickerFormatType.apng)
1030-
else None,
1026+
(
1027+
i.url
1028+
if i.format in (discord.StickerFormatType.png, discord.StickerFormatType.apng)
1029+
else None
1030+
),
10311031
i.name,
10321032
True,
10331033
)

0 commit comments

Comments
 (0)