Basic login test making sure we logged in properly

This just adds a message handler and spits out the message in the log to verify
that the websocket did connect successfully.
This commit is contained in:
Gary Kramlich
2022-01-05 11:47:03 -06:00
parent 94104102d2
commit aa7059b1e3
3 changed files with 41 additions and 14 deletions

View File

@@ -118,17 +118,16 @@ func (l *loginCmd) Run(g *globals) error {
user, err := client.Result() user, err := client.Result()
if err != nil { if err != nil {
fmt.Printfln(g.context.Stdout, "failed to log in") fmt.Println(g.context.Stdout, "failed to log in")
return err return err
} }
g.user.User.ID = user.UserID if err := g.user.login(user.Token); err != nil {
g.user.User.Discriminator = user.Discriminator fmt.Println(g.context.Stdout, "failed to login", err)
g.user.User.Username = user.Username
g.handler.log.Warnln("users:", user) return err
g.handler.log.Warnln("err:", err) }
return nil return nil
} }

View File

@@ -1,6 +1,7 @@
package bridge package bridge
import ( import (
"github.com/bwmarrin/discordgo"
"github.com/skip2/go-qrcode" "github.com/skip2/go-qrcode"
log "maunium.net/go/maulogger/v2" log "maunium.net/go/maulogger/v2"
@@ -135,3 +136,20 @@ func (u *User) uploadQRCode(code string) (id.ContentURI, error) {
return resp.ContentURI, nil return resp.ContentURI, nil
} }
func (u *User) login(token string) error {
err := u.User.Login(token)
if err != nil {
return err
}
u.User.Session.AddHandler(u.messageHandler)
u.log.Warnln("logged in, opening websocket")
return u.User.Session.Open()
}
func (u *User) messageHandler(s *discordgo.Session, m *discordgo.MessageCreate) {
u.log.Warnln("received message", m)
}

View File

@@ -16,14 +16,27 @@ type User struct {
MXID id.UserID MXID id.UserID
ID string ID string
Discriminator string
Username string
ManagementRoom id.RoomID ManagementRoom id.RoomID
Session *discordgo.Session Session *discordgo.Session
} }
// Login is just used to create the session and update the database and should
// only be called by bridge.User.Login which will continue setting up event
// handlers.
func (u *User) Login(token string) error {
session, err := discordgo.New(token)
if err != nil {
return err
}
u.Session = session
u.Update()
return nil
}
func (u *User) Scan(row Scannable) *User { func (u *User) Scan(row Scannable) *User {
var token sql.NullString var token sql.NullString
@@ -37,11 +50,8 @@ func (u *User) Scan(row Scannable) *User {
} }
if token.Valid { if token.Valid {
session, err := discordgo.New("Bearer " + token.String) if err := u.Login(token.String); err != nil {
if err != nil { u.log.Errorln("Failed to login: ", err)
u.log.Errorln("Failed to create discord session:", err)
} else {
u.Session = session
} }
} }