Explorar o código

Actually make logout detection work

Tulir Asokan %!s(int64=2) %!d(string=hai) anos
pai
achega
57ef7ec63f
Modificáronse 3 ficheiros con 6 adicións e 7 borrados
  1. 1 1
      go.mod
  2. 2 2
      go.sum
  3. 3 4
      user.go

+ 1 - 1
go.mod

@@ -32,4 +32,4 @@ require (
 	maunium.net/go/mauflag v1.0.0 // indirect
 )
 
-replace github.com/bwmarrin/discordgo => github.com/beeper/discordgo v0.0.0-20230113164344-18b9a67a16d5
+replace github.com/bwmarrin/discordgo => github.com/beeper/discordgo v0.0.0-20230113165952-ad6bb301721d

+ 2 - 2
go.sum

@@ -1,6 +1,6 @@
 github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60=
-github.com/beeper/discordgo v0.0.0-20230113164344-18b9a67a16d5 h1:pgQHGX+IVRy8rH+1+fW1HgXgTeUq5QZ+hbe+xpZr8Us=
-github.com/beeper/discordgo v0.0.0-20230113164344-18b9a67a16d5/go.mod h1:NJZpH+1AfhIcyQsPeuBKsUtYrRnjkyu0kIVMCHkZtRY=
+github.com/beeper/discordgo v0.0.0-20230113165952-ad6bb301721d h1:ce6Ib+y+4Iz5ogGUs23/1dVxvVrV/MqJZ7I2tZA8YH0=
+github.com/beeper/discordgo v0.0.0-20230113165952-ad6bb301721d/go.mod h1:NJZpH+1AfhIcyQsPeuBKsUtYrRnjkyu0kIVMCHkZtRY=
 github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=

+ 3 - 4
user.go

@@ -223,8 +223,7 @@ func (br *DiscordBridge) startUsers() {
 			if err != nil {
 				user.log.Errorfln("Error connecting: %v", err)
 				if closeErr := (&websocket.CloseError{}); errors.As(err, &closeErr) && closeErr.Code == 4004 {
-					user.BridgeState.Send(status.BridgeState{StateEvent: status.StateBadCredentials, Error: "dc-websocket-disconnect-4004"})
-					go user.Logout()
+					user.invalidAuthHandler(nil, nil)
 				} else {
 					user.BridgeState.Send(status.BridgeState{StateEvent: status.StateUnknownError, Error: "dc-unknown-websocket-error", Message: err.Error()})
 				}
@@ -715,12 +714,12 @@ func (user *User) connectedHandler(_ *discordgo.Session, _ *discordgo.Connect) {
 func (user *User) disconnectedHandler(_ *discordgo.Session, _ *discordgo.Disconnect) {
 	user.log.Debugln("Disconnected from Discord")
 	user.wasDisconnected.Store(true)
-	user.BridgeState.Send(status.BridgeState{StateEvent: status.StateTransientDisconnect, Error: "dc-transient-disconnect"})
+	user.BridgeState.Send(status.BridgeState{StateEvent: status.StateTransientDisconnect, Error: "dc-transient-disconnect", Message: "Temporarily disconnected from Discord, trying to reconnect"})
 }
 
 func (user *User) invalidAuthHandler(_ *discordgo.Session, _ *discordgo.InvalidAuth) {
 	user.log.Debugln("Got logged out from Discord")
-	user.BridgeState.Send(status.BridgeState{StateEvent: status.StateBadCredentials, Error: "dc-websocket-disconnect-4004"})
+	user.BridgeState.Send(status.BridgeState{StateEvent: status.StateBadCredentials, Error: "dc-websocket-disconnect-4004", Message: "Discord access token is no longer valid, please log in again"})
 	go user.Logout()
 }