From 476e7c6ac385699984cd537df42348cd93ae64b4 Mon Sep 17 00:00:00 2001 From: TopiSenpai Date: Tue, 3 May 2022 01:54:45 +0200 Subject: [PATCH 1/4] update to snowflake/v2 --- README.md | 2 +- lavalink/_example/example.go | 19 ++++---- lavalink/go.mod | 2 +- lavalink/go.sum | 4 +- lavalink/lavalink.go | 38 +++++++-------- lavalink/lavalink_config.go | 9 ++-- lavalink/op.go | 8 ++-- lavalink/op_commands.go | 44 +++++++++--------- lavalink/op_events.go | 90 ++++++++++++++++++------------------ lavalink/player.go | 36 +++++++-------- lavalink/token.go | 10 ++-- lavalink/voice_update.go | 14 +++--- 12 files changed, 140 insertions(+), 136 deletions(-) diff --git a/README.md b/README.md index e1a3cdf..76c0772 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ While DisGoLink can be used with any [Discord](https://discord.com) Library [Dis * [DiscordGo](https://github.com/bwmarrin/discordgo) `string` * [Arikawa](https://github.com/diamondburned/arikawa) `type Snowflake uint64` * [Disgord](https://github.com/andersfylling/disgord) `type Snowflake uint64` -* [DisGo](https://github.com/disgoorg/disgo) `type Snowflake string` +* [DisGo](https://github.com/disgoorg/disgo) `type ID uint64` This Library uses the [Disgo Snowflake](https://github.com/disgoorg/snowflake) package like DisGo diff --git a/lavalink/_example/example.go b/lavalink/_example/example.go index c65cef1..1608c7f 100644 --- a/lavalink/_example/example.go +++ b/lavalink/_example/example.go @@ -10,7 +10,7 @@ import ( "syscall" "github.com/disgoorg/disgolink/lavalink" - "github.com/disgoorg/snowflake" + "github.com/disgoorg/snowflake/v2" ) var ( @@ -18,7 +18,7 @@ var ( ) func main() { - bot := &Bot{Link: lavalink.New(lavalink.WithUserID("0123456789"))} + bot := &Bot{Link: lavalink.New(lavalink.WithUserID(01234567))} bot.registerNodes() sc := make(chan os.Signal, 1) @@ -32,8 +32,8 @@ type Bot struct { func (b *Bot) messageCreateHandler() { command := "!play channelID url" - channelID := snowflake.Snowflake("") - guildID := snowflake.Snowflake("") + channelID := snowflake.ID(0) + guildID := snowflake.ID(0) args := strings.Split(command, " ") if len(args) < 3 { // TODO: send error message @@ -45,13 +45,16 @@ func (b *Bot) messageCreateHandler() { } _ = b.Link.BestRestClient().LoadItemHandler(context.TODO(), query, lavalink.NewResultHandler( func(track lavalink.AudioTrack) { - b.Play(guildID, snowflake.Snowflake(args[1]), channelID, track) + id, _ := snowflake.Parse(args[1]) + b.Play(guildID, id, channelID, track) }, func(playlist lavalink.AudioPlaylist) { - b.Play(guildID, snowflake.Snowflake(args[1]), channelID, playlist.Tracks()[0]) + id, _ := snowflake.Parse(args[1]) + b.Play(guildID, id, channelID, playlist.Tracks()[0]) }, func(tracks []lavalink.AudioTrack) { - b.Play(guildID, snowflake.Snowflake(args[1]), channelID, tracks[0]) + id, _ := snowflake.Parse(args[1]) + b.Play(guildID, id, channelID, tracks[0]) }, func() { // TODO: send error message @@ -62,7 +65,7 @@ func (b *Bot) messageCreateHandler() { )) } -func (b *Bot) Play(guildID snowflake.Snowflake, voiceChannelID snowflake.Snowflake, channelID snowflake.Snowflake, track lavalink.AudioTrack) { +func (b *Bot) Play(guildID snowflake.ID, voiceChannelID snowflake.ID, channelID snowflake.ID, track lavalink.AudioTrack) { // TODO: join voice channel if err := b.Link.Player(guildID).Play(track); err != nil { diff --git a/lavalink/go.mod b/lavalink/go.mod index 235770b..47ddf00 100644 --- a/lavalink/go.mod +++ b/lavalink/go.mod @@ -4,7 +4,7 @@ go 1.18 require ( github.com/disgoorg/log v1.2.0 - github.com/disgoorg/snowflake v1.1.0 + github.com/disgoorg/snowflake/v2 v2.0.0 github.com/gorilla/websocket v1.5.0 github.com/stretchr/testify v1.7.0 ) diff --git a/lavalink/go.sum b/lavalink/go.sum index a939428..f2ebeaf 100644 --- a/lavalink/go.sum +++ b/lavalink/go.sum @@ -2,8 +2,8 @@ github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/disgoorg/log v1.2.0 h1:sqlXnu/ZKAlIlHV9IO+dbMto7/hCQ474vlIdMWk8QKo= github.com/disgoorg/log v1.2.0/go.mod h1:3x1KDG6DI1CE2pDwi3qlwT3wlXpeHW/5rVay+1qDqOo= -github.com/disgoorg/snowflake v1.1.0 h1:uVF9QqI31uqo0kzbZahwvjaYQxn40SUfFK5pCNzfjYQ= -github.com/disgoorg/snowflake v1.1.0/go.mod h1:wUUTKWS1jSV0gIb3TSPsdJORNF8BcjKTjVeyrULEhr8= +github.com/disgoorg/snowflake/v2 v2.0.0 h1:+xvyyDddXmXLHmiG8SZiQ3sdZdZPbUR22fSHoqwkrOA= +github.com/disgoorg/snowflake/v2 v2.0.0/go.mod h1:SPU9c2CNn5DSyb86QcKtdZgix9osEtKrHLW4rMhfLCs= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= diff --git a/lavalink/lavalink.go b/lavalink/lavalink.go index 2a2e6fe..df28ddc 100644 --- a/lavalink/lavalink.go +++ b/lavalink/lavalink.go @@ -9,7 +9,7 @@ import ( "time" "github.com/disgoorg/log" - "github.com/disgoorg/snowflake" + "github.com/disgoorg/snowflake/v2" ) var ErrNoUserID = errors.New("no user id has been configured") @@ -31,15 +31,15 @@ type Lavalink interface { EncodeTrack(track AudioTrack) (string, error) DecodeTrack(track string) (AudioTrack, error) - Player(guildID snowflake.Snowflake) Player - PlayerOnNode(name string, guildID snowflake.Snowflake) Player + Player(guildID snowflake.ID) Player + PlayerOnNode(name string, guildID snowflake.ID) Player RestorePlayer(restoreState PlayerRestoreState) (Player, error) - ExistingPlayer(guildID snowflake.Snowflake) Player - RemovePlayer(guildID snowflake.Snowflake) - Players() map[snowflake.Snowflake]Player + ExistingPlayer(guildID snowflake.ID) Player + RemovePlayer(guildID snowflake.ID) + Players() map[snowflake.ID]Player - UserID() snowflake.Snowflake - SetUserID(userID snowflake.Snowflake) + UserID() snowflake.ID + SetUserID(userID snowflake.ID) Close() @@ -60,7 +60,7 @@ func New(opts ...ConfigOpt) Lavalink { return &lavalinkImpl{ config: *config, nodes: map[string]Node{}, - players: map[snowflake.Snowflake]Player{}, + players: map[snowflake.ID]Player{}, } } @@ -74,7 +74,7 @@ type lavalinkImpl struct { nodes map[string]Node playersMu sync.Mutex - players map[snowflake.Snowflake]Player + players map[snowflake.ID]Player } func (l *lavalinkImpl) Logger() log.Logger { @@ -82,7 +82,7 @@ func (l *lavalinkImpl) Logger() log.Logger { } func (l *lavalinkImpl) AddNode(ctx context.Context, config NodeConfig) (Node, error) { - if l.UserID() == "" { + if l.UserID() == 0 { return nil, ErrNoUserID } node := &nodeImpl{ @@ -206,11 +206,11 @@ func (l *lavalinkImpl) DecodeTrack(str string) (AudioTrack, error) { }) } -func (l *lavalinkImpl) Player(guildID snowflake.Snowflake) Player { +func (l *lavalinkImpl) Player(guildID snowflake.ID) Player { return l.PlayerOnNode("", guildID) } -func (l *lavalinkImpl) PlayerOnNode(name string, guildID snowflake.Snowflake) Player { +func (l *lavalinkImpl) PlayerOnNode(name string, guildID snowflake.ID) Player { l.playersMu.Lock() defer l.playersMu.Unlock() if player, ok := l.players[guildID]; ok { @@ -250,33 +250,33 @@ func (l *lavalinkImpl) RestorePlayer(restoreState PlayerRestoreState) (Player, e return player, nil } -func (l *lavalinkImpl) ExistingPlayer(guildID snowflake.Snowflake) Player { +func (l *lavalinkImpl) ExistingPlayer(guildID snowflake.ID) Player { l.playersMu.Lock() defer l.playersMu.Unlock() return l.players[guildID] } -func (l *lavalinkImpl) RemovePlayer(guildID snowflake.Snowflake) { +func (l *lavalinkImpl) RemovePlayer(guildID snowflake.ID) { l.playersMu.Lock() defer l.playersMu.Unlock() delete(l.players, guildID) } -func (l *lavalinkImpl) Players() map[snowflake.Snowflake]Player { +func (l *lavalinkImpl) Players() map[snowflake.ID]Player { l.playersMu.Lock() defer l.playersMu.Unlock() - players := make(map[snowflake.Snowflake]Player, len(l.players)) + players := make(map[snowflake.ID]Player, len(l.players)) for guildID, player := range l.players { players[guildID] = player } return players } -func (l *lavalinkImpl) UserID() snowflake.Snowflake { +func (l *lavalinkImpl) UserID() snowflake.ID { return l.config.UserID } -func (l *lavalinkImpl) SetUserID(userID snowflake.Snowflake) { +func (l *lavalinkImpl) SetUserID(userID snowflake.ID) { l.config.UserID = userID } diff --git a/lavalink/lavalink_config.go b/lavalink/lavalink_config.go index 9276fc2..f2cff84 100644 --- a/lavalink/lavalink_config.go +++ b/lavalink/lavalink_config.go @@ -5,7 +5,7 @@ import ( "time" "github.com/disgoorg/log" - "github.com/disgoorg/snowflake" + "github.com/disgoorg/snowflake/v2" ) func DefaultConfig() *Config { @@ -19,7 +19,7 @@ func DefaultConfig() *Config { type Config struct { Logger log.Logger HTTPClient *http.Client - UserID snowflake.Snowflake + UserID snowflake.ID Plugins []any } @@ -44,14 +44,15 @@ func WithHTTPClient(httpClient *http.Client) ConfigOpt { } } -func WithUserID(userID snowflake.Snowflake) ConfigOpt { +func WithUserID(userID snowflake.ID) ConfigOpt { return func(config *Config) { config.UserID = userID } } func WithUserIDString(userID string) ConfigOpt { - return WithUserID(snowflake.Snowflake(userID)) + parsed, _ := snowflake.Parse(userID) + return WithUserID(parsed) } func WithUserIDFromBotToken(botToken string) ConfigOpt { diff --git a/lavalink/op.go b/lavalink/op.go index d962459..fe52384 100644 --- a/lavalink/op.go +++ b/lavalink/op.go @@ -3,7 +3,7 @@ package lavalink import ( "encoding/json" - "github.com/disgoorg/snowflake" + "github.com/disgoorg/snowflake/v2" ) type OpType string @@ -46,7 +46,7 @@ type OpCommand interface { type OpEvent interface { Op Event() EventType - GuildID() snowflake.Snowflake + GuildID() snowflake.ID OpEvent() } @@ -90,8 +90,8 @@ func (e *UnmarshalOp) UnmarshalJSON(data []byte) error { } type PlayerUpdateOp struct { - GuildID snowflake.Snowflake `json:"guildId"` - State PlayerState `json:"state"` + GuildID snowflake.ID `json:"guildId"` + State PlayerState `json:"state"` } func (PlayerUpdateOp) Op() OpType { return OpTypePlayerUpdate } diff --git a/lavalink/op_commands.go b/lavalink/op_commands.go index 8b2adfb..e3c00ac 100644 --- a/lavalink/op_commands.go +++ b/lavalink/op_commands.go @@ -3,17 +3,17 @@ package lavalink import ( "encoding/json" - "github.com/disgoorg/snowflake" + "github.com/disgoorg/snowflake/v2" ) type PlayCommand struct { - GuildID snowflake.Snowflake `json:"guildId"` - Track string `json:"track"` - StartTime *Duration `json:"startTime,omitempty"` - EndTime *Duration `json:"endTime,omitempty"` - NoReplace *bool `json:"noReplace,omitempty"` - Pause *bool `json:"pause,omitempty"` - Volume *int `json:"volume,omitempty"` + GuildID snowflake.ID `json:"guildId"` + Track string `json:"track"` + StartTime *Duration `json:"startTime,omitempty"` + EndTime *Duration `json:"endTime,omitempty"` + NoReplace *bool `json:"noReplace,omitempty"` + Pause *bool `json:"pause,omitempty"` + Volume *int `json:"volume,omitempty"` } func (c PlayCommand) MarshalJSON() ([]byte, error) { @@ -30,7 +30,7 @@ func (PlayCommand) Op() OpType { return OpTypePlay } func (PlayCommand) OpCommand() {} type StopCommand struct { - GuildID snowflake.Snowflake `json:"guildId"` + GuildID snowflake.ID `json:"guildId"` } func (c StopCommand) MarshalJSON() ([]byte, error) { @@ -47,7 +47,7 @@ func (StopCommand) Op() OpType { return OpTypeStop } func (StopCommand) OpCommand() {} type DestroyCommand struct { - GuildID snowflake.Snowflake `json:"guildId"` + GuildID snowflake.ID `json:"guildId"` } func (c DestroyCommand) MarshalJSON() ([]byte, error) { @@ -64,8 +64,8 @@ func (DestroyCommand) Op() OpType { return OpTypeDestroy } func (DestroyCommand) OpCommand() {} type PauseCommand struct { - GuildID snowflake.Snowflake `json:"guildId"` - Pause bool `json:"pause"` + GuildID snowflake.ID `json:"guildId"` + Pause bool `json:"pause"` } func (c PauseCommand) MarshalJSON() ([]byte, error) { @@ -82,8 +82,8 @@ func (PauseCommand) Op() OpType { return OpTypePause } func (PauseCommand) OpCommand() {} type SeekCommand struct { - GuildID snowflake.Snowflake `json:"guildId"` - Position Duration `json:"position"` + GuildID snowflake.ID `json:"guildId"` + Position Duration `json:"position"` } func (c SeekCommand) MarshalJSON() ([]byte, error) { @@ -100,8 +100,8 @@ func (SeekCommand) Op() OpType { return OpTypeSeek } func (SeekCommand) OpCommand() {} type VolumeCommand struct { - GuildID snowflake.Snowflake `json:"guildId"` - Volume int `json:"volume"` + GuildID snowflake.ID `json:"guildId"` + Volume int `json:"volume"` } func (c VolumeCommand) MarshalJSON() ([]byte, error) { @@ -118,9 +118,9 @@ func (VolumeCommand) Op() OpType { return OpTypeVolume } func (VolumeCommand) OpCommand() {} type VoiceUpdateCommand struct { - GuildID snowflake.Snowflake `json:"guildId"` - SessionID string `json:"sessionId"` - Event VoiceServerUpdate `json:"event"` + GuildID snowflake.ID `json:"guildId"` + SessionID string `json:"sessionId"` + Event VoiceServerUpdate `json:"event"` } func (c VoiceUpdateCommand) MarshalJSON() ([]byte, error) { @@ -155,14 +155,14 @@ func (ConfigureResumingCommand) Op() OpType { return OpTypeConfigureResuming } func (ConfigureResumingCommand) OpCommand() {} type FiltersCommand struct { - GuildID snowflake.Snowflake `json:"guildId"` + GuildID snowflake.ID `json:"guildId"` Filters } func (c FiltersCommand) MarshalJSON() ([]byte, error) { b1, err := json.Marshal(struct { - Op OpType `json:"op"` - GuildID snowflake.Snowflake `json:"guildId"` + Op OpType `json:"op"` + GuildID snowflake.ID `json:"guildId"` }{ Op: c.Op(), GuildID: c.GuildID, diff --git a/lavalink/op_events.go b/lavalink/op_events.go index 8edbe6d..eab2010 100644 --- a/lavalink/op_events.go +++ b/lavalink/op_events.go @@ -3,7 +3,7 @@ package lavalink import ( "encoding/json" - "github.com/disgoorg/snowflake" + "github.com/disgoorg/snowflake/v2" ) type UnmarshalOpEvent struct { @@ -73,74 +73,74 @@ type TrackEvent interface { } type TrackStartEvent struct { - GID snowflake.Snowflake `json:"guildId"` - TrackString string `json:"track"` + GID snowflake.ID `json:"guildId"` + TrackString string `json:"track"` } -func (TrackStartEvent) Event() EventType { return EventTypeTrackStart } -func (TrackStartEvent) Op() OpType { return OpTypeEvent } -func (e TrackStartEvent) GuildID() snowflake.Snowflake { return e.GID } -func (e TrackStartEvent) Track() string { return e.TrackString } -func (TrackStartEvent) OpEvent() {} +func (TrackStartEvent) Event() EventType { return EventTypeTrackStart } +func (TrackStartEvent) Op() OpType { return OpTypeEvent } +func (e TrackStartEvent) GuildID() snowflake.ID { return e.GID } +func (e TrackStartEvent) Track() string { return e.TrackString } +func (TrackStartEvent) OpEvent() {} type TrackEndEvent struct { - GID snowflake.Snowflake `json:"guildId"` + GID snowflake.ID `json:"guildId"` TrackString string `json:"track"` Reason AudioTrackEndReason `json:"reason"` } -func (TrackEndEvent) Event() EventType { return EventTypeTrackEnd } -func (TrackEndEvent) Op() OpType { return OpTypeEvent } -func (e TrackEndEvent) GuildID() snowflake.Snowflake { return e.GID } -func (e TrackEndEvent) Track() string { return e.TrackString } -func (TrackEndEvent) OpEvent() {} +func (TrackEndEvent) Event() EventType { return EventTypeTrackEnd } +func (TrackEndEvent) Op() OpType { return OpTypeEvent } +func (e TrackEndEvent) GuildID() snowflake.ID { return e.GID } +func (e TrackEndEvent) Track() string { return e.TrackString } +func (TrackEndEvent) OpEvent() {} type TrackExceptionEvent struct { - GID snowflake.Snowflake `json:"guildId"` - TrackString string `json:"track"` - Exception FriendlyException `json:"exception"` + GID snowflake.ID `json:"guildId"` + TrackString string `json:"track"` + Exception FriendlyException `json:"exception"` } -func (TrackExceptionEvent) Event() EventType { return EventTypeTrackException } -func (TrackExceptionEvent) Op() OpType { return OpTypeEvent } -func (e TrackExceptionEvent) GuildID() snowflake.Snowflake { return e.GID } -func (e TrackExceptionEvent) Track() string { return e.TrackString } -func (TrackExceptionEvent) OpEvent() {} +func (TrackExceptionEvent) Event() EventType { return EventTypeTrackException } +func (TrackExceptionEvent) Op() OpType { return OpTypeEvent } +func (e TrackExceptionEvent) GuildID() snowflake.ID { return e.GID } +func (e TrackExceptionEvent) Track() string { return e.TrackString } +func (TrackExceptionEvent) OpEvent() {} type TrackStuckEvent struct { - GID snowflake.Snowflake `json:"guildId"` - TrackString string `json:"track"` - ThresholdMs Duration `json:"threasholdMs"` + GID snowflake.ID `json:"guildId"` + TrackString string `json:"track"` + ThresholdMs Duration `json:"threasholdMs"` } -func (TrackStuckEvent) Event() EventType { return EventTypeTrackStuck } -func (TrackStuckEvent) Op() OpType { return OpTypeEvent } -func (e TrackStuckEvent) GuildID() snowflake.Snowflake { return e.GID } -func (e TrackStuckEvent) Track() string { return e.TrackString } -func (TrackStuckEvent) OpEvent() {} +func (TrackStuckEvent) Event() EventType { return EventTypeTrackStuck } +func (TrackStuckEvent) Op() OpType { return OpTypeEvent } +func (e TrackStuckEvent) GuildID() snowflake.ID { return e.GID } +func (e TrackStuckEvent) Track() string { return e.TrackString } +func (TrackStuckEvent) OpEvent() {} type WebsocketClosedEvent struct { - GID snowflake.Snowflake `json:"guildId"` - Code int `json:"code"` - Reason string `json:"reason"` - ByRemote bool `json:"byRemote"` + GID snowflake.ID `json:"guildId"` + Code int `json:"code"` + Reason string `json:"reason"` + ByRemote bool `json:"byRemote"` } -func (WebsocketClosedEvent) Event() EventType { return EventTypeWebSocketClosed } -func (WebsocketClosedEvent) Op() OpType { return OpTypeEvent } -func (e WebsocketClosedEvent) GuildID() snowflake.Snowflake { return e.GID } -func (WebsocketClosedEvent) OpEvent() {} +func (WebsocketClosedEvent) Event() EventType { return EventTypeWebSocketClosed } +func (WebsocketClosedEvent) Op() OpType { return OpTypeEvent } +func (e WebsocketClosedEvent) GuildID() snowflake.ID { return e.GID } +func (WebsocketClosedEvent) OpEvent() {} type UnknownEvent struct { event EventType - guildID snowflake.Snowflake + guildID snowflake.ID Data []byte } func (e *UnknownEvent) UnmarshalJSON(data []byte) error { var v struct { - Event EventType `json:"type"` - GuildID snowflake.Snowflake `json:"guildId"` + Event EventType `json:"type"` + GuildID snowflake.ID `json:"guildId"` } if err := json.Unmarshal(data, &v); err != nil { return err @@ -155,7 +155,7 @@ func (e UnknownEvent) MarshalJSON() ([]byte, error) { return e.Data, nil } -func (e UnknownEvent) Event() EventType { return e.event } -func (UnknownEvent) Op() OpType { return OpTypeEvent } -func (e UnknownEvent) GuildID() snowflake.Snowflake { return e.guildID } -func (UnknownEvent) OpEvent() {} +func (e UnknownEvent) Event() EventType { return e.event } +func (UnknownEvent) Op() OpType { return OpTypeEvent } +func (e UnknownEvent) GuildID() snowflake.ID { return e.guildID } +func (UnknownEvent) OpEvent() {} diff --git a/lavalink/player.go b/lavalink/player.go index 455c168..8487eeb 100644 --- a/lavalink/player.go +++ b/lavalink/player.go @@ -7,7 +7,7 @@ import ( "runtime/debug" "time" - "github.com/disgoorg/snowflake" + "github.com/disgoorg/snowflake/v2" ) type Player interface { @@ -17,8 +17,8 @@ type Player interface { Connected() bool Volume() int Filters() Filters - GuildID() snowflake.Snowflake - ChannelID() *snowflake.Snowflake + GuildID() snowflake.ID + ChannelID() *snowflake.ID Node() Node Export() PlayerRestoreState @@ -52,7 +52,7 @@ type PlayOptions struct { var _ Player = (*DefaultPlayer)(nil) -func NewPlayer(node Node, lavalink Lavalink, guildID snowflake.Snowflake) Player { +func NewPlayer(node Node, lavalink Lavalink, guildID snowflake.ID) Player { return &DefaultPlayer{ guildID: guildID, volume: 100, @@ -92,8 +92,8 @@ func newResumingPlayer(node Node, lavalink Lavalink, resumeState PlayerRestoreSt } type DefaultPlayer struct { - guildID snowflake.Snowflake - channelID *snowflake.Snowflake + guildID snowflake.ID + channelID *snowflake.ID lastSessionID *string lastVoiceServerUpdate *VoiceServerUpdate track AudioTrack @@ -315,11 +315,11 @@ func (p *DefaultPlayer) SetFilters(filters Filters) { p.filters = filters } -func (p *DefaultPlayer) GuildID() snowflake.Snowflake { +func (p *DefaultPlayer) GuildID() snowflake.ID { return p.guildID } -func (p *DefaultPlayer) ChannelID() *snowflake.Snowflake { +func (p *DefaultPlayer) ChannelID() *snowflake.ID { return p.channelID } @@ -421,16 +421,16 @@ type PlayerState struct { } type PlayerRestoreState struct { - PlayingTrack *string `json:"playing_track"` - Paused bool `json:"paused"` - State PlayerState `json:"state"` - Volume int `json:"volume"` - Filters Filters `json:"filters"` - GuildID snowflake.Snowflake `json:"guild_id"` - ChannelID *snowflake.Snowflake `json:"channel_id"` - LastSessionID *string `json:"last_session_id"` - LastVoiceServerUpdate *VoiceServerUpdate `json:"last_voice_server_update"` - Node string `json:"node"` + PlayingTrack *string `json:"playing_track"` + Paused bool `json:"paused"` + State PlayerState `json:"state"` + Volume int `json:"volume"` + Filters Filters `json:"filters"` + GuildID snowflake.ID `json:"guild_id"` + ChannelID *snowflake.ID `json:"channel_id"` + LastSessionID *string `json:"last_session_id"` + LastVoiceServerUpdate *VoiceServerUpdate `json:"last_voice_server_update"` + Node string `json:"node"` } func (s *PlayerRestoreState) UnmarshalJSON(data []byte) error { diff --git a/lavalink/token.go b/lavalink/token.go index c8deada..e91a639 100644 --- a/lavalink/token.go +++ b/lavalink/token.go @@ -5,20 +5,20 @@ import ( "errors" "strings" - "github.com/disgoorg/snowflake" + "github.com/disgoorg/snowflake/v2" ) var ErrInvalidBotToken = errors.New("invalid bot token") -func UserIDFromBotToken(token string) (snowflake.Snowflake, error) { +func UserIDFromBotToken(token string) (snowflake.ID, error) { token = strings.TrimPrefix(token, "Bot ") strs := strings.Split(token, ".") if len(strs) == 0 { - return "", ErrInvalidBotToken + return 0, ErrInvalidBotToken } byteID, err := base64.StdEncoding.DecodeString(strs[0]) if err != nil { - return "", err + return 0, err } - return snowflake.Snowflake(byteID), nil + return snowflake.Parse(string(byteID)) } diff --git a/lavalink/voice_update.go b/lavalink/voice_update.go index 8d31914..1d49d02 100644 --- a/lavalink/voice_update.go +++ b/lavalink/voice_update.go @@ -1,17 +1,17 @@ package lavalink import ( - "github.com/disgoorg/snowflake" + "github.com/disgoorg/snowflake/v2" ) type VoiceServerUpdate struct { - Token string `json:"token"` - GuildID snowflake.Snowflake `json:"guildId"` - Endpoint *string `json:"endpoint"` + Token string `json:"token"` + GuildID snowflake.ID `json:"guildId"` + Endpoint *string `json:"endpoint"` } type VoiceStateUpdate struct { - GuildID snowflake.Snowflake `json:"guild_id"` - ChannelID *snowflake.Snowflake `json:"channel_id"` - SessionID string `json:"session_id"` + GuildID snowflake.ID `json:"guild_id"` + ChannelID *snowflake.ID `json:"channel_id"` + SessionID string `json:"session_id"` } From 18d3dfe29087eebe71a86044ec2e62776680772f Mon Sep 17 00:00:00 2001 From: TopiSenpai Date: Tue, 3 May 2022 02:05:55 +0200 Subject: [PATCH 2/4] fix dgolink & disgolink --- dgolink/_example/example.go | 3 +-- dgolink/dgolink.go | 33 ++++++++++++++++++++++++------ dgolink/go.mod | 4 ++-- dgolink/go.sum | 8 ++++---- disgolink/_example/example.go | 6 +++--- disgolink/_example/music_player.go | 6 +++--- disgolink/go.mod | 6 +++--- disgolink/go.sum | 12 +++++------ 8 files changed, 49 insertions(+), 29 deletions(-) diff --git a/dgolink/_example/example.go b/dgolink/_example/example.go index bab6f1b..b8cd69f 100644 --- a/dgolink/_example/example.go +++ b/dgolink/_example/example.go @@ -14,7 +14,6 @@ import ( "github.com/bwmarrin/discordgo" "github.com/disgoorg/disgolink/dgolink" "github.com/disgoorg/disgolink/lavalink" - "github.com/disgoorg/snowflake" ) var ( @@ -154,7 +153,7 @@ func (b *Bot) play(s *discordgo.Session, guildID string, voiceChannelID string, manager, ok := b.PlayerManagers[guildID] if !ok { manager = &PlayerManager{ - Player: b.Link.Player(snowflake.Snowflake(guildID)), + Player: b.Link.Player(snowflake.ID(guildID)), RepeatingMode: RepeatingModeOff, } b.PlayerManagers[guildID] = manager diff --git a/dgolink/dgolink.go b/dgolink/dgolink.go index d278565..6f045cd 100644 --- a/dgolink/dgolink.go +++ b/dgolink/dgolink.go @@ -3,7 +3,7 @@ package dgolink import ( "github.com/bwmarrin/discordgo" "github.com/disgoorg/disgolink/lavalink" - "github.com/disgoorg/snowflake" + "github.com/disgoorg/snowflake/v2" ) func New(s *discordgo.Session, opts ...lavalink.ConfigOpt) *Link { @@ -26,15 +26,30 @@ type Link struct { } func (l *Link) OnVoiceStateUpdateHandler(_ *discordgo.Session, voiceStateUpdate *discordgo.VoiceStateUpdate) { - if snowflake.Snowflake(voiceStateUpdate.UserID) != l.UserID() { + userID, err := snowflake.Parse(voiceStateUpdate.UserID) + if err != nil { + l.Logger().Error("Failed to parse user ID: ", err) return } - var channelID *snowflake.Snowflake + if userID != l.UserID() { + return + } + var channelID *snowflake.ID if voiceStateUpdate.ChannelID != "" { - channelID = (*snowflake.Snowflake)(&voiceStateUpdate.ChannelID) + id, err := snowflake.Parse(voiceStateUpdate.ChannelID) + if err != nil { + l.Logger().Error("Failed to parse channel ID: ", err) + return + } + channelID = &id + } + guildID, err := snowflake.Parse(voiceStateUpdate.GuildID) + if err != nil { + l.Logger().Error("Failed to parse guild ID: ", err) + return } l.OnVoiceStateUpdate(lavalink.VoiceStateUpdate{ - GuildID: snowflake.Snowflake(voiceStateUpdate.GuildID), + GuildID: guildID, ChannelID: channelID, SessionID: voiceStateUpdate.SessionID, }) @@ -45,8 +60,14 @@ func (l *Link) OnVoiceServerUpdateHandler(_ *discordgo.Session, voiceServerUpdat if voiceServerUpdate.Endpoint != "" { endpoint = &voiceServerUpdate.Endpoint } + + guildID, err := snowflake.Parse(voiceServerUpdate.GuildID) + if err != nil { + l.Logger().Error("Failed to parse guild ID: ", err) + return + } l.OnVoiceServerUpdate(lavalink.VoiceServerUpdate{ - GuildID: snowflake.Snowflake(voiceServerUpdate.GuildID), + GuildID: guildID, Token: voiceServerUpdate.Token, Endpoint: endpoint, }) diff --git a/dgolink/go.mod b/dgolink/go.mod index 6a56f78..b5ac776 100644 --- a/dgolink/go.mod +++ b/dgolink/go.mod @@ -4,8 +4,8 @@ go 1.18 require ( github.com/bwmarrin/discordgo v0.24.0 - github.com/disgoorg/disgolink/lavalink v1.6.0 - github.com/disgoorg/snowflake v1.1.0 + github.com/disgoorg/disgolink/lavalink v1.6.1-0.20220502235445-476e7c6ac385 + github.com/disgoorg/snowflake/v2 v2.0.0 ) require ( diff --git a/dgolink/go.sum b/dgolink/go.sum index 38c07eb..ad7ef88 100644 --- a/dgolink/go.sum +++ b/dgolink/go.sum @@ -1,12 +1,12 @@ github.com/bwmarrin/discordgo v0.24.0 h1:Gw4MYxqHdvhO99A3nXnSLy97z5pmIKHZVJ1JY5ZDPqY= github.com/bwmarrin/discordgo v0.24.0/go.mod h1:NJZpH+1AfhIcyQsPeuBKsUtYrRnjkyu0kIVMCHkZtRY= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/disgoorg/disgolink/lavalink v1.6.0 h1:HwyqPkxZppCxKy0oHX5irrszfADzFozDclczrBen2P4= -github.com/disgoorg/disgolink/lavalink v1.6.0/go.mod h1:gQ/ehyTfqfUnrPGjgECDaQOUai/ft9YmlPth7TTUJkI= +github.com/disgoorg/disgolink/lavalink v1.6.1-0.20220502235445-476e7c6ac385 h1:EM3uTmHXi0JUX6tQBbyhkMirO0CWM7YfGeciHOpVlsw= +github.com/disgoorg/disgolink/lavalink v1.6.1-0.20220502235445-476e7c6ac385/go.mod h1:e/oo6afxnHvjkgGeJYrDazVIJEsQuWVSFahsek+K1mo= github.com/disgoorg/log v1.2.0 h1:sqlXnu/ZKAlIlHV9IO+dbMto7/hCQ474vlIdMWk8QKo= github.com/disgoorg/log v1.2.0/go.mod h1:3x1KDG6DI1CE2pDwi3qlwT3wlXpeHW/5rVay+1qDqOo= -github.com/disgoorg/snowflake v1.1.0 h1:uVF9QqI31uqo0kzbZahwvjaYQxn40SUfFK5pCNzfjYQ= -github.com/disgoorg/snowflake v1.1.0/go.mod h1:wUUTKWS1jSV0gIb3TSPsdJORNF8BcjKTjVeyrULEhr8= +github.com/disgoorg/snowflake/v2 v2.0.0 h1:+xvyyDddXmXLHmiG8SZiQ3sdZdZPbUR22fSHoqwkrOA= +github.com/disgoorg/snowflake/v2 v2.0.0/go.mod h1:SPU9c2CNn5DSyb86QcKtdZgix9osEtKrHLW4rMhfLCs= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= diff --git a/disgolink/_example/example.go b/disgolink/_example/example.go index 1879ae6..54759e1 100644 --- a/disgolink/_example/example.go +++ b/disgolink/_example/example.go @@ -17,17 +17,17 @@ import ( "github.com/disgoorg/disgolink/disgolink" "github.com/disgoorg/disgolink/lavalink" "github.com/disgoorg/log" - "github.com/disgoorg/snowflake" + "github.com/disgoorg/snowflake/v2" ) var ( URLPattern = regexp.MustCompile("^https?://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]?") token = os.Getenv("disgolink_token") - guildID = snowflake.GetSnowflakeEnv("guild_id") + guildID = snowflake.GetEnv("guild_id") client bot.Client dgolink disgolink.Link - musicPlayers = map[snowflake.Snowflake]*MusicPlayer{} + musicPlayers = map[snowflake.ID]*MusicPlayer{} ) func main() { diff --git a/disgolink/_example/music_player.go b/disgolink/_example/music_player.go index e807079..4712183 100644 --- a/disgolink/_example/music_player.go +++ b/disgolink/_example/music_player.go @@ -8,10 +8,10 @@ import ( "github.com/disgoorg/disgo/events" "github.com/disgoorg/disgolink/lavalink" "github.com/disgoorg/log" - "github.com/disgoorg/snowflake" + "github.com/disgoorg/snowflake/v2" ) -func NewMusicPlayer(client bot.Client, guildID snowflake.Snowflake) *MusicPlayer { +func NewMusicPlayer(client bot.Client, guildID snowflake.ID) *MusicPlayer { player := dgolink.Player(guildID) musicPlayer := &MusicPlayer{ Player: player, @@ -27,7 +27,7 @@ type MusicPlayer struct { lavalink.Player queue []lavalink.AudioTrack client bot.Client - channelID snowflake.Snowflake + channelID snowflake.ID } func (p *MusicPlayer) Queue(event *events.ApplicationCommandInteractionEvent, tracks ...lavalink.AudioTrack) { diff --git a/disgolink/go.mod b/disgolink/go.mod index 04324fd..f2767b7 100644 --- a/disgolink/go.mod +++ b/disgolink/go.mod @@ -3,13 +3,13 @@ module github.com/disgoorg/disgolink/disgolink go 1.18 require ( - github.com/disgoorg/disgo v0.8.11-0.20220430142413-be50405c2a91 - github.com/disgoorg/disgolink/lavalink v1.6.0 + github.com/disgoorg/disgo v0.9.1-0.20220502233708-70e6fa8a9b8f + github.com/disgoorg/disgolink/lavalink v1.6.1-0.20220502235445-476e7c6ac385 ) require ( github.com/disgoorg/log v1.2.0 // indirect - github.com/disgoorg/snowflake v1.1.0 // indirect + github.com/disgoorg/snowflake/v2 v2.0.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/sasha-s/go-csync v0.0.0-20210812194225-61421b77c44b // indirect ) diff --git a/disgolink/go.sum b/disgolink/go.sum index e5266aa..18a574e 100644 --- a/disgolink/go.sum +++ b/disgolink/go.sum @@ -1,12 +1,12 @@ github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/disgoorg/disgo v0.8.11-0.20220430142413-be50405c2a91 h1:vjBwIECUwFJ5H9EPZaY27Spy2UviMX1/Z1H05FE7AMA= -github.com/disgoorg/disgo v0.8.11-0.20220430142413-be50405c2a91/go.mod h1:F5Qj4yeX3auG0JiEY3pP5nRSUjBsbuhITTAslNsIOvA= -github.com/disgoorg/disgolink/lavalink v1.6.0 h1:HwyqPkxZppCxKy0oHX5irrszfADzFozDclczrBen2P4= -github.com/disgoorg/disgolink/lavalink v1.6.0/go.mod h1:gQ/ehyTfqfUnrPGjgECDaQOUai/ft9YmlPth7TTUJkI= +github.com/disgoorg/disgo v0.9.1-0.20220502233708-70e6fa8a9b8f h1:c5T0xxL9BV1NGdFLWOXm2XTiAz4gS6Fxz4DsjJZf9qs= +github.com/disgoorg/disgo v0.9.1-0.20220502233708-70e6fa8a9b8f/go.mod h1:Cyip4bCYHD3rHgDhBPT9cLo81e9AMbDe8ocM50UNRM4= +github.com/disgoorg/disgolink/lavalink v1.6.1-0.20220502235445-476e7c6ac385 h1:EM3uTmHXi0JUX6tQBbyhkMirO0CWM7YfGeciHOpVlsw= +github.com/disgoorg/disgolink/lavalink v1.6.1-0.20220502235445-476e7c6ac385/go.mod h1:e/oo6afxnHvjkgGeJYrDazVIJEsQuWVSFahsek+K1mo= github.com/disgoorg/log v1.2.0 h1:sqlXnu/ZKAlIlHV9IO+dbMto7/hCQ474vlIdMWk8QKo= github.com/disgoorg/log v1.2.0/go.mod h1:3x1KDG6DI1CE2pDwi3qlwT3wlXpeHW/5rVay+1qDqOo= -github.com/disgoorg/snowflake v1.1.0 h1:uVF9QqI31uqo0kzbZahwvjaYQxn40SUfFK5pCNzfjYQ= -github.com/disgoorg/snowflake v1.1.0/go.mod h1:wUUTKWS1jSV0gIb3TSPsdJORNF8BcjKTjVeyrULEhr8= +github.com/disgoorg/snowflake/v2 v2.0.0 h1:+xvyyDddXmXLHmiG8SZiQ3sdZdZPbUR22fSHoqwkrOA= +github.com/disgoorg/snowflake/v2 v2.0.0/go.mod h1:SPU9c2CNn5DSyb86QcKtdZgix9osEtKrHLW4rMhfLCs= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= From d4328dcb07584ccdb9a06f642d32dfca677e93c2 Mon Sep 17 00:00:00 2001 From: TopiSenpai Date: Sun, 8 May 2022 13:33:44 +0200 Subject: [PATCH 3/4] fix op_commands unit test --- lavalink/op_commands_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lavalink/op_commands_test.go b/lavalink/op_commands_test.go index ee490eb..e818e59 100644 --- a/lavalink/op_commands_test.go +++ b/lavalink/op_commands_test.go @@ -18,7 +18,7 @@ func TestConfigureResumingCommand_MarshalJSON(t *testing.T) { func TestFiltersCommand_MarshalJSON(t *testing.T) { data, err := json.Marshal(FiltersCommand{ - GuildID: "1234", + GuildID: 1234, Filters: &DefaultFilters{ FilterTimescale: &Timescale{ Speed: 2, From 139cd3c80b67b333d509e53727a7260fe6300389 Mon Sep 17 00:00:00 2001 From: TopiSenpai Date: Wed, 11 May 2022 21:55:41 +0200 Subject: [PATCH 4/4] bump disgo version --- disgolink/go.mod | 2 +- disgolink/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/disgolink/go.mod b/disgolink/go.mod index f2767b7..9b2285f 100644 --- a/disgolink/go.mod +++ b/disgolink/go.mod @@ -3,7 +3,7 @@ module github.com/disgoorg/disgolink/disgolink go 1.18 require ( - github.com/disgoorg/disgo v0.9.1-0.20220502233708-70e6fa8a9b8f + github.com/disgoorg/disgo v0.10.0 github.com/disgoorg/disgolink/lavalink v1.6.1-0.20220502235445-476e7c6ac385 ) diff --git a/disgolink/go.sum b/disgolink/go.sum index 18a574e..de11487 100644 --- a/disgolink/go.sum +++ b/disgolink/go.sum @@ -1,6 +1,6 @@ github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/disgoorg/disgo v0.9.1-0.20220502233708-70e6fa8a9b8f h1:c5T0xxL9BV1NGdFLWOXm2XTiAz4gS6Fxz4DsjJZf9qs= -github.com/disgoorg/disgo v0.9.1-0.20220502233708-70e6fa8a9b8f/go.mod h1:Cyip4bCYHD3rHgDhBPT9cLo81e9AMbDe8ocM50UNRM4= +github.com/disgoorg/disgo v0.10.0 h1:HjATKy13z6/RnjTFHPaJ6XC9o3W0Ls5v9I/gK/hbLLA= +github.com/disgoorg/disgo v0.10.0/go.mod h1:Cyip4bCYHD3rHgDhBPT9cLo81e9AMbDe8ocM50UNRM4= github.com/disgoorg/disgolink/lavalink v1.6.1-0.20220502235445-476e7c6ac385 h1:EM3uTmHXi0JUX6tQBbyhkMirO0CWM7YfGeciHOpVlsw= github.com/disgoorg/disgolink/lavalink v1.6.1-0.20220502235445-476e7c6ac385/go.mod h1:e/oo6afxnHvjkgGeJYrDazVIJEsQuWVSFahsek+K1mo= github.com/disgoorg/log v1.2.0 h1:sqlXnu/ZKAlIlHV9IO+dbMto7/hCQ474vlIdMWk8QKo=