From 7546dccef557b2a53f7d64c426a706611aeb35ce Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Tue, 31 May 2022 00:42:11 +0300 Subject: [PATCH] Forget stored token when receiving error code 4004 --- user.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/user.go b/user.go index ea47912..c62f790 100644 --- a/user.go +++ b/user.go @@ -10,6 +10,7 @@ import ( "sync" "time" + "github.com/gorilla/websocket" log "maunium.net/go/maulogger/v2" "github.com/bwmarrin/discordgo" @@ -223,7 +224,13 @@ func (br *DiscordBridge) startUsers() { err := user.Connect() if err != nil { user.log.Errorfln("Error connecting: %v", err) - user.BridgeState.Send(bridge.State{StateEvent: bridge.StateUnknownError, Message: err.Error()}) + if closeErr := (&websocket.CloseError{}); errors.As(err, &closeErr) && closeErr.Code == 4004 { + user.BridgeState.Send(bridge.State{StateEvent: bridge.StateBadCredentials, Message: err.Error()}) + user.DiscordToken = "" + user.Update() + } else { + user.BridgeState.Send(bridge.State{StateEvent: bridge.StateUnknownError, Message: err.Error()}) + } } }(u) }