소스 검색

Forget stored token when receiving error code 4004

Tulir Asokan 3 년 전
부모
커밋
7546dccef5
1개의 변경된 파일8개의 추가작업 그리고 1개의 파일을 삭제
  1. 8 1
      user.go

+ 8 - 1
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)
 	}