From 85368af7930519030ac3da0e0bcdee3635f36363 Mon Sep 17 00:00:00 2001 From: biast12 <53872542+biast12@users.noreply.github.com> Date: Thu, 27 Aug 2026 18:16:51 +0200 Subject: [PATCH] Add guild-wide panel auto-close reset Introduce a new `Reset` method on `PanelAutoCloseTable` that clears premium inactivity timers (`since_open_with_no_response` and `since_last_message`) for all panels in a guild. The update intentionally preserves `enabled` and `on_user_leave` settings while targeting only panels linked to the specified guild. --- panelautoclose.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/panelautoclose.go b/panelautoclose.go index 35b05bb..d27605a 100644 --- a/panelautoclose.go +++ b/panelautoclose.go @@ -58,6 +58,16 @@ ON CONFLICT("panel_id") DO UPDATE SET return } +func (t *PanelAutoCloseTable) Reset(ctx context.Context, guildId uint64) (err error) { + query := ` +UPDATE panel_auto_close +SET "since_open_with_no_response" = NULL, "since_last_message" = NULL +WHERE "panel_id" IN (SELECT "panel_id" FROM panels WHERE "guild_id" = $1);` + + _, err = t.Exec(ctx, query, guildId) + return +} + func (t *PanelAutoCloseTable) Delete(ctx context.Context, panelId int) (err error) { _, err = t.Exec(ctx, `DELETE FROM panel_auto_close WHERE "panel_id" = $1;`, panelId) return