From 2dfaa97e6ec00b27a7272519cecae3a940edd53c Mon Sep 17 00:00:00 2001 From: austinchan3678 Date: Wed, 12 Aug 2026 23:26:39 -0600 Subject: [PATCH 1/2] feat(discord): clean up spam from verification channel --- discord/commands/handler.go | 4 ++++ discord/commands/verify.go | 20 ++++++++++++++++++++ discord/config/config.go | 1 + discord/config/verify.go | 5 +++++ 4 files changed, 30 insertions(+) diff --git a/discord/commands/handler.go b/discord/commands/handler.go index 3368269..315a5ef 100644 --- a/discord/commands/handler.go +++ b/discord/commands/handler.go @@ -83,6 +83,10 @@ func OnDiscordMessage(s *discordgo.Session, m *discordgo.MessageCreate) { logger.SugarLogger.Errorf("Failed to persist discord message: %v", err) } + if enforceVerificationChannel(s, m) { + return + } + if !strings.HasPrefix(m.Content, config.DiscordPrefix) { return } diff --git a/discord/commands/verify.go b/discord/commands/verify.go index 54ba5f3..0973edc 100644 --- a/discord/commands/verify.go +++ b/discord/commands/verify.go @@ -3,6 +3,7 @@ package commands import ( "fmt" "net/url" + "strings" "time" "github.com/bwmarrin/discordgo" @@ -13,6 +14,25 @@ import ( const verifyReplyTTL = 5 * time.Second +// enforceVerificationChannel deletes non-verifification messages in +// DISCORD_VERIFICATION_CHANNEL and posts a disappearing reminder. +func enforceVerificationChannel(s *discordgo.Session, m *discordgo.MessageCreate) bool { + if config.DiscordVerificationChannel == "" || m.ChannelID != config.DiscordVerificationChannel { + return false + } + if strings.Contains(m.Content, "!verify") { + return false + } + + _ = s.ChannelMessageDelete(m.ChannelID, m.ID) + service.SendDisappearingMessage( + m.ChannelID, + fmt.Sprintf("<@%s> please run `%sverify` to verify.", m.Author.ID, config.DiscordPrefix), + verifyReplyTTL, + ) + return true +} + func Verify(args []string, s *discordgo.Session, m *discordgo.MessageCreate) { defer s.ChannelMessageDelete(m.ChannelID, m.ID) diff --git a/discord/config/config.go b/discord/config/config.go index 75c144f..af82079 100644 --- a/discord/config/config.go +++ b/discord/config/config.go @@ -31,6 +31,7 @@ var DatabaseName = os.Getenv("DATABASE_NAME") var DiscordToken = os.Getenv("DISCORD_TOKEN") var DiscordGuild = os.Getenv("DISCORD_GUILD") var DiscordPrefix = os.Getenv("DISCORD_PREFIX") +var DiscordVerificationChannel = os.Getenv("DISCORD_VERIFICATION_CHANNEL") var WebBaseURL = os.Getenv("WEB_BASE_URL") diff --git a/discord/config/verify.go b/discord/config/verify.go index f3783f6..b2292d0 100644 --- a/discord/config/verify.go +++ b/discord/config/verify.go @@ -43,6 +43,11 @@ func Verify() { DiscordPrefix = "d!" logger.SugarLogger.Infof("DISCORD_PREFIX is not set, defaulting to %s", DiscordPrefix) } + if DiscordVerificationChannel == "" { + logger.SugarLogger.Infoln("DISCORD_VERIFICATION_CHANNEL is not set — verification channel gate disabled") + } else { + logger.SugarLogger.Infof("DISCORD_VERIFICATION_CHANNEL set to %s", DiscordVerificationChannel) + } if WebBaseURL == "" { WebBaseURL = "http://localhost:10310" logger.SugarLogger.Infof("WEB_BASE_URL is not set, defaulting to %s", WebBaseURL) From 9ef9ab5ce5c92d9e5281a7f7b49de1e257377079 Mon Sep 17 00:00:00 2001 From: austeyen <147582674+austeyen@users.noreply.github.com> Date: Thu, 13 Aug 2026 00:12:09 -0600 Subject: [PATCH 2/2] fix(discord): fix typo in verification channel comment --- discord/commands/verify.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/discord/commands/verify.go b/discord/commands/verify.go index 0973edc..fccaa7e 100644 --- a/discord/commands/verify.go +++ b/discord/commands/verify.go @@ -14,8 +14,8 @@ import ( const verifyReplyTTL = 5 * time.Second -// enforceVerificationChannel deletes non-verifification messages in -// DISCORD_VERIFICATION_CHANNEL and posts a disappearing reminder. +// enforceVerificationChannel deletes non-verification messages in +// DISCORD_VERIFICATION_CHANNEL and posts a disappearing reminder. func enforceVerificationChannel(s *discordgo.Session, m *discordgo.MessageCreate) bool { if config.DiscordVerificationChannel == "" || m.ChannelID != config.DiscordVerificationChannel { return false