From e69a2f81f8011c5e33770089f2f8da1608d864bb Mon Sep 17 00:00:00 2001 From: large <36236750+szerookii@users.noreply.github.com> Date: Tue, 3 Oct 2023 13:10:13 +0000 Subject: [PATCH 1/5] Update example --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ebce208..2d43985 100644 --- a/README.md +++ b/README.md @@ -37,8 +37,8 @@ import ( "fmt" - "github.com/Goscord/goscord" - "github.com/Goscord/goscord/discord" + "github.com/Goscord/goscord/goscord" + "github.com/Goscord/goscord/goscord/discord" "github.com/Goscord/goscord/goscord/gateway" "github.com/Goscord/goscord/goscord/gateway/event" ) From a6736fe8e68265eb29d362406a72616f38ced2f4 Mon Sep 17 00:00:00 2001 From: Tom O'Connor Date: Wed, 14 Feb 2024 22:30:09 +0000 Subject: [PATCH 2/5] Add MessageReaction and MessageReactionAdd event handlers Also fixed import paths because /embed is now in /discord --- goscord/discord/channel.go | 12 +++++++++- goscord/discord/interaction.go | 3 +-- goscord/gateway/event/message_reaction_add.go | 22 +++++++++++++++++++ goscord/gateway/reaction_handler.go | 16 ++++++++++++++ goscord/gateway/session.go | 2 ++ goscord/rest/channel.go | 17 +++++++++++++- goscord/rest/interaction.go | 1 - 7 files changed, 68 insertions(+), 5 deletions(-) create mode 100644 goscord/gateway/event/message_reaction_add.go create mode 100644 goscord/gateway/reaction_handler.go diff --git a/goscord/discord/channel.go b/goscord/discord/channel.go index c006ee5..0b474f0 100644 --- a/goscord/discord/channel.go +++ b/goscord/discord/channel.go @@ -1,7 +1,6 @@ package discord import ( - "github.com/Goscord/goscord/goscord/discord/embed" "github.com/bytedance/sonic" "time" ) @@ -173,6 +172,17 @@ type AllowedMentions struct { RepliedUsers bool `json:"replied_users"` } + +type MessageReaction struct { + UserId string `json:"user_id"` + ChannelId string `json:"channel_id"` + MessageId string `json:"message_id"` + GuildId string `json:"guild_id"` + Member *GuildMember `json:"member"` + Emoji *Emoji `json:"emoji"` + MessageAuthorId string `json:"message_author_id"` +} + type Message struct { Id string `json:"id"` ChannelId string `json:"channel_id"` diff --git a/goscord/discord/interaction.go b/goscord/discord/interaction.go index 075f13f..e1c919b 100644 --- a/goscord/discord/interaction.go +++ b/goscord/discord/interaction.go @@ -2,8 +2,7 @@ package discord import ( "encoding/json" - "github.com/Goscord/goscord/goscord/discord/embed" - "github.com/bytedance/sonic" + "github.com/bytedance/sonic" ) type ApplicationCommandType int diff --git a/goscord/gateway/event/message_reaction_add.go b/goscord/gateway/event/message_reaction_add.go new file mode 100644 index 0000000..f6cfa9e --- /dev/null +++ b/goscord/gateway/event/message_reaction_add.go @@ -0,0 +1,22 @@ +package event + +import ( + "github.com/bytedance/sonic" + "github.com/Goscord/goscord/goscord/discord" + "github.com/Goscord/goscord/goscord/rest" +) + +type MessageReactionAdd struct { + Data *discord.MessageReaction `json:"d"` +} + +func NewMessageReactionAdd(rest *rest.Client, data []byte) (*MessageReactionAdd, error) { + pk := new(MessageReactionAdd) + + err := sonic.Unmarshal(data, pk) + + if err != nil { + return nil, err + } + return pk, nil +} \ No newline at end of file diff --git a/goscord/gateway/reaction_handler.go b/goscord/gateway/reaction_handler.go new file mode 100644 index 0000000..81b381e --- /dev/null +++ b/goscord/gateway/reaction_handler.go @@ -0,0 +1,16 @@ +package gateway + +import ( + "github.com/Goscord/goscord/goscord/gateway/event" +) + +type MessageReactionHandler struct{} + +func (_ *MessageReactionHandler) Handle(s *Session, data []byte) { + ev, err := event.NewMessageReactionAdd(s.rest, data) + + if err != nil { + return + } + s.Publish(event.EventMessageReactionAdd, ev.Data) +} \ No newline at end of file diff --git a/goscord/gateway/session.go b/goscord/gateway/session.go index aaca116..ef97a20 100644 --- a/goscord/gateway/session.go +++ b/goscord/gateway/session.go @@ -143,6 +143,8 @@ func (s *Session) registerHandlers() { event.EventInteractionCreate: &InteractionCreateHandler{}, event.EventVoiceStateUpdate: &VoiceStateUpdateHandler{}, event.EventVoiceServerUpdate: &VoiceServerUpdateHandler{}, + + event.EventMessageReactionAdd: &MessageReactionHandler{}, } } diff --git a/goscord/rest/channel.go b/goscord/rest/channel.go index 48b78b4..3dbf7a1 100644 --- a/goscord/rest/channel.go +++ b/goscord/rest/channel.go @@ -6,7 +6,6 @@ import ( "errors" "fmt" "github.com/Goscord/goscord/goscord/discord" - "github.com/Goscord/goscord/goscord/discord/embed" "github.com/bytedance/sonic" "io" "mime/multipart" @@ -38,6 +37,22 @@ func (ch *ChannelHandler) GetChannel(channelId string) (*discord.Channel, error) return channel, nil } +// GetMessages gets messages from a channel +func (ch *ChannelHandler) GetMessages(channelId string, limit int) ([]*discord.Message, error) { + data, err := ch.rest.Request(fmt.Sprintf(EndpointGetChannelMessages, channelId), "GET", nil, "application/json") + if err != nil { + return nil, err + } + + var messages []*discord.Message + err = sonic.Unmarshal(data, &messages) + if err != nil { + return nil, err + } + + return messages, nil +} + // GetMessage gets a message from a channel func (ch *ChannelHandler) GetMessage(channelId, messageId string) (*discord.Message, error) { res, err := ch.rest.Request(fmt.Sprintf(EndpointGetChannelMessage, channelId, messageId), "GET", nil, "application/json") diff --git a/goscord/rest/interaction.go b/goscord/rest/interaction.go index 6ed78bb..c80bd9d 100644 --- a/goscord/rest/interaction.go +++ b/goscord/rest/interaction.go @@ -6,7 +6,6 @@ import ( "errors" "fmt" "github.com/Goscord/goscord/goscord/discord" - "github.com/Goscord/goscord/goscord/discord/embed" "github.com/bytedance/sonic" ) From 7dd31d5a23e0e9de91998c240799b258490786cf Mon Sep 17 00:00:00 2001 From: Tom O'Connor Date: Wed, 14 Feb 2024 22:31:13 +0000 Subject: [PATCH 3/5] Refactor message reaction structs and fix import statement --- goscord/discord/channel.go | 13 ++++++------- goscord/discord/interaction.go | 2 +- goscord/gateway/event/message_reaction_add.go | 4 ++-- goscord/gateway/reaction_handler.go | 2 +- goscord/gateway/session.go | 2 +- 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/goscord/discord/channel.go b/goscord/discord/channel.go index 0b474f0..839622d 100644 --- a/goscord/discord/channel.go +++ b/goscord/discord/channel.go @@ -172,14 +172,13 @@ type AllowedMentions struct { RepliedUsers bool `json:"replied_users"` } - type MessageReaction struct { - UserId string `json:"user_id"` - ChannelId string `json:"channel_id"` - MessageId string `json:"message_id"` - GuildId string `json:"guild_id"` - Member *GuildMember `json:"member"` - Emoji *Emoji `json:"emoji"` + UserId string `json:"user_id"` + ChannelId string `json:"channel_id"` + MessageId string `json:"message_id"` + GuildId string `json:"guild_id"` + Member *GuildMember `json:"member"` + Emoji *Emoji `json:"emoji"` MessageAuthorId string `json:"message_author_id"` } diff --git a/goscord/discord/interaction.go b/goscord/discord/interaction.go index e1c919b..2a2f380 100644 --- a/goscord/discord/interaction.go +++ b/goscord/discord/interaction.go @@ -2,7 +2,7 @@ package discord import ( "encoding/json" - "github.com/bytedance/sonic" + "github.com/bytedance/sonic" ) type ApplicationCommandType int diff --git a/goscord/gateway/event/message_reaction_add.go b/goscord/gateway/event/message_reaction_add.go index f6cfa9e..204878f 100644 --- a/goscord/gateway/event/message_reaction_add.go +++ b/goscord/gateway/event/message_reaction_add.go @@ -1,9 +1,9 @@ package event import ( - "github.com/bytedance/sonic" "github.com/Goscord/goscord/goscord/discord" "github.com/Goscord/goscord/goscord/rest" + "github.com/bytedance/sonic" ) type MessageReactionAdd struct { @@ -19,4 +19,4 @@ func NewMessageReactionAdd(rest *rest.Client, data []byte) (*MessageReactionAdd, return nil, err } return pk, nil -} \ No newline at end of file +} diff --git a/goscord/gateway/reaction_handler.go b/goscord/gateway/reaction_handler.go index 81b381e..a09c63f 100644 --- a/goscord/gateway/reaction_handler.go +++ b/goscord/gateway/reaction_handler.go @@ -13,4 +13,4 @@ func (_ *MessageReactionHandler) Handle(s *Session, data []byte) { return } s.Publish(event.EventMessageReactionAdd, ev.Data) -} \ No newline at end of file +} diff --git a/goscord/gateway/session.go b/goscord/gateway/session.go index ef97a20..86c0822 100644 --- a/goscord/gateway/session.go +++ b/goscord/gateway/session.go @@ -144,7 +144,7 @@ func (s *Session) registerHandlers() { event.EventVoiceStateUpdate: &VoiceStateUpdateHandler{}, event.EventVoiceServerUpdate: &VoiceServerUpdateHandler{}, - event.EventMessageReactionAdd: &MessageReactionHandler{}, + event.EventMessageReactionAdd: &MessageReactionHandler{}, } } From 918c1420d6286bcaa1b4403907604fc210d9733e Mon Sep 17 00:00:00 2001 From: Tom O'Connor Date: Thu, 15 Feb 2024 23:18:33 +0000 Subject: [PATCH 4/5] Add discord/builder package import and remove os, fixing bug from PR --- goscord/rest/channel.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/goscord/rest/channel.go b/goscord/rest/channel.go index 3dbf7a1..02993ba 100644 --- a/goscord/rest/channel.go +++ b/goscord/rest/channel.go @@ -6,10 +6,10 @@ import ( "errors" "fmt" "github.com/Goscord/goscord/goscord/discord" + "github.com/Goscord/goscord/goscord/discord/builder" "github.com/bytedance/sonic" "io" "mime/multipart" - "os" ) type ChannelHandler struct { From 17a79b767fd5470d2cdbcc407d437f720e3c76fc Mon Sep 17 00:00:00 2001 From: Bluzzi Date: Thu, 21 Mar 2024 01:04:36 +0100 Subject: [PATCH 5/5] README: fix indents --- README.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 2d43985..0a3798a 100644 --- a/README.md +++ b/README.md @@ -53,16 +53,15 @@ func main() { Intents: gateway.IntentGuildMessages, }) - client.On(event.EventReady, func() { - fmt.Println("Logged in as " + client.Me().Tag()) - }) - - client.On(event.EventMessageCreate, func(msg *discord.Message) { - if msg.Content == "ping" { - client.Channel.SendMessage(msg.ChannelId, "Pong ! 🏓") - } - }) + client.On(event.EventReady, func() { + fmt.Println("Logged in as " + client.Me().Tag()) + }) + client.On(event.EventMessageCreate, func(msg *discord.Message) { + if msg.Content == "ping" { + client.Channel.SendMessage(msg.ChannelId, "Pong ! 🏓") + } + }) client.Login()