diff --git a/pkg/connector/client.go b/pkg/connector/client.go index 6ab8d45..13eae65 100644 --- a/pkg/connector/client.go +++ b/pkg/connector/client.go @@ -46,7 +46,7 @@ type DiscordClient struct { func (d *DiscordConnector) LoadUserLogin(ctx context.Context, login *bridgev2.UserLogin) error { meta := login.Metadata.(*UserLoginMetadata) - session, err := discordgo.New(meta.Token) + session, err := NewDiscordSession(ctx, meta.Token) login.Save(ctx) if err != nil { diff --git a/pkg/connector/login_remoteauth.go b/pkg/connector/login_remoteauth.go index c93a08e..e1ae04a 100644 --- a/pkg/connector/login_remoteauth.go +++ b/pkg/connector/login_remoteauth.go @@ -116,7 +116,7 @@ func (dl *DiscordRemoteAuthLogin) Wait(ctx context.Context) (*bridgev2.LoginStep func (dl *DiscordRemoteAuthLogin) finalizeSuccessfulLogin(ctx context.Context, user remoteauth.User) (*bridgev2.LoginStep, error) { log := zerolog.Ctx(ctx) - session, err := discordgo.New(user.Token) + session, err := NewDiscordSession(ctx, user.Token) if err != nil { return nil, fmt.Errorf("couldn't create discord session from successful remoteauth: %w", err) } diff --git a/pkg/connector/login_token.go b/pkg/connector/login_token.go index d499343..60678b8 100644 --- a/pkg/connector/login_token.go +++ b/pkg/connector/login_token.go @@ -19,7 +19,6 @@ package connector import ( "context" "fmt" - "strings" "github.com/bwmarrin/discordgo" "github.com/rs/zerolog" @@ -68,18 +67,11 @@ func (dl *DiscordTokenLogin) SubmitUserInput(ctx context.Context, input map[stri log.Info().Msg("Creating session from provided token") dl.Token = token - session, err := discordgo.New(token) + session, err := NewDiscordSession(ctx, token) if err != nil { return nil, fmt.Errorf("couldn't create discord session: %w", err) } - // Set up logging. - session.LogLevel = discordgo.LogInformational - session.Logger = func(msgL, caller int, format string, a ...any) { - // FIXME(skip): Hook up zerolog properly. - log.Debug().Str("component", "discordgo").Msgf(strings.TrimSpace(format), a...) // zerolog-allow-msgf - } - client := DiscordClient{ connector: dl.connector, Session: session, diff --git a/pkg/connector/session.go b/pkg/connector/session.go new file mode 100644 index 0000000..f56a094 --- /dev/null +++ b/pkg/connector/session.go @@ -0,0 +1,44 @@ +// mautrix-discord - A Matrix-Discord puppeting bridge. +// Copyright (C) 2024 Tulir Asokan +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package connector + +import ( + "context" + "fmt" + "strings" + + "github.com/bwmarrin/discordgo" + "github.com/rs/zerolog" +) + +func NewDiscordSession(ctx context.Context, token string) (*discordgo.Session, error) { + log := zerolog.Ctx(ctx) + + session, err := discordgo.New(token) + if err != nil { + return nil, fmt.Errorf("couldn't create discord session: %w", err) + } + + // Set up logging. + session.LogLevel = discordgo.LogInformational + session.Logger = func(msgL, caller int, format string, a ...any) { + // FIXME(skip): Hook up zerolog properly. + log.Debug().Str("component", "discordgo").Msgf(strings.TrimSpace(format), a...) // zerolog-allow-msgf + } + + return session, nil +}