@@ -537,6 +537,7 @@ async def create_ticket(self, ticket: TicketModel) -> None:
537537 created_by_id = ticket .created_by .user_id ,
538538 closed_at = ticket .closed_at ,
539539 closed_by_id = ticket .closed_by .user_id if ticket .closed_by else None ,
540+ log_channel_message_id = ticket .log_channel_message_id ,
540541 status = ticket .status ,
541542 title = ticket .title ,
542543 nsfw = ticket .nsfw ,
@@ -563,6 +564,39 @@ async def create_ticket(self, ticket: TicketModel) -> None:
563564 self .__open_tickets_cache .add (ticket_row , key = ticket_row .key , channel_id = ticket_row .channel_id )
564565 logger .info ("Created ticket %s for %s." , ticket .key , ticket .recipients )
565566
567+ async def set_ticket_log_channel_message_id (self , ticket_key : str , message_id : int | None ) -> None :
568+ """Sets the log channel message ID for a ticket.
569+
570+ Args:
571+ ticket_key: The key of the ticket.
572+ message_id: The message ID to set, or None to clear it.
573+
574+ Raises:
575+ TicketNotFoundError: If the ticket is not found.
576+ """
577+ assert self ._async_session is not None , "Session is not initialized."
578+ async with self ._async_session () as session :
579+ query = select (SQLTicketTable ).where (
580+ and_ (
581+ SQLTicketTable .bot_id == self ._config .bot .bot_id ,
582+ SQLTicketTable .key == ticket_key ,
583+ )
584+ )
585+ result = await session .execute (query )
586+ ticket_row = result .scalar_one_or_none ()
587+ if ticket_row is None :
588+ raise TicketNotFoundError (f"Ticket with key { ticket_key } not found." )
589+
590+ ticket_row .log_channel_message_id = message_id
591+ await session .commit ()
592+
593+ # Update the cache if exists
594+ cached_ticket = self .__open_tickets_cache .get (key = ticket_key )
595+ if cached_ticket is not None :
596+ cached_ticket .log_channel_message_id = message_id
597+
598+ logger .debug ("Set log channel message ID for ticket %s to %s." , ticket_key , message_id )
599+
566600 async def get_ticket_by_channel (self , channel_id : int , * , only_open : bool = True ) -> TicketModel | None :
567601 """Get a ticket by channel ID.
568602
0 commit comments