Skip to content

Commit 2339cf1

Browse files
[Tickets] Fix persistent view registration and guild cache crashes. (#112)
Co-authored-by: AAA3A <89632044+AAA3A-AAA3A@users.noreply.github.com>
1 parent a31423f commit 2339cf1

2 files changed

Lines changed: 14 additions & 8 deletions

File tree

tickets/tickets.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -432,17 +432,23 @@ async def load_tickets(self) -> None:
432432
self.tickets.setdefault(guild_id, {})[int(ticket_id)] = ticket
433433
view: TicketView = TicketView(cog=self, ticket=ticket)
434434
view._message = ticket.message
435-
await view._update()
435+
if ticket.guild is not None:
436+
await view._update()
437+
else:
438+
view.members.custom_id = f"Tickets_#{ticket.id}_members"
439+
view.lock.custom_id = f"Tickets_#{ticket.id}_lock"
440+
view.claim.custom_id = f"Tickets_#{ticket.id}_claim"
441+
view.close.custom_id = f"Tickets_#{ticket.id}_close"
442+
view.approve_appeal.custom_id = f"Tickets_#{ticket.id}_approve_appeal"
436443
self.bot.add_view(view, message_id=ticket.message_id)
437-
self.views[ticket.message] = view
444+
if ticket.message is not None:
445+
self.views[ticket.message] = view
438446
for message, components in guild_data["buttons_dropdowns"].items():
439-
channel = self.bot.get_channel(int((str(message).split("-"))[0]))
440-
if channel is None:
441-
continue
442-
message_id = int((str(message).split("-"))[1])
447+
channel_id, message_id = (int(x) for x in str(message).split("-"))
443448
view: CreateTicketView = CreateTicketView(cog=self, components=components)
444449
self.bot.add_view(view, message_id=message_id)
445-
self.views[discord.PartialMessage(channel=channel, id=message_id)] = view
450+
if (channel := self.bot.get_channel(channel_id)) is not None:
451+
self.views[discord.PartialMessage(channel=channel, id=message_id)] = view
446452
view: OwnerCloseConfirmation = OwnerCloseConfirmation(cog=self)
447453
self.bot.add_view(view)
448454
self.views["OwnerCloseConfirmation"] = view

tickets/types.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ async def delete(self) -> None:
115115
else:
116116
if not self.cog.tickets[self.guild_id]:
117117
del self.cog.tickets[self.guild_id]
118-
await self.cog.config.guild(self.guild).tickets.clear_raw(str(self.id))
118+
await self.cog.config.guild_from_id(self.guild_id).tickets.clear_raw(str(self.id))
119119
if self.message in self.cog.views:
120120
self.cog.views.pop(self.message).stop()
121121

0 commit comments

Comments
 (0)