From 3b6b7031015d2ca701720bc986a89207fdb50321 Mon Sep 17 00:00:00 2001 From: mimu Date: Tue, 11 Oct 2022 00:47:51 +0200 Subject: [PATCH] fix --- commands/pinned.go | 40 +++++++++++++++++++++++++++++++++------- main.go | 8 ++++---- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/commands/pinned.go b/commands/pinned.go index 3c42eba..b5edccb 100644 --- a/commands/pinned.go +++ b/commands/pinned.go @@ -23,16 +23,23 @@ type PinnedData struct { // not ideal but good enough for this var data map[string]*PinnedData = make(map[string]*PinnedData) -func InitPinned(c tempest.Client, channelIDs []tempest.Snowflake) error { - for _, cid := range channelIDs { - messages, err := getPinnedMessages(c.Rest, cid.String()) +func InitPinned(c tempest.Client, serverIDs []tempest.Snowflake) error { + for _, sid := range serverIDs { + channels, err := getChannels(c.Rest, sid.String()) if err != nil { return err } - data[cid.String()] = &PinnedData{ - Messages: messages, - Count: len(messages), + for _, cid := range channels { + messages, err := getPinnedMessages(c.Rest, cid.ID.String()) + if err != nil { + fmt.Println("failed to get the pinned messages for channel", cid, err) + } + + data[cid.ID.String()] = &PinnedData{ + Messages: messages, + Count: len(messages), + } } } @@ -49,7 +56,6 @@ var Pinned tempest.Command = tempest.Command{ itx.SendLinearReply("no data for this channel", false) } - if channelData.Count == 0 { itx.SendLinearReply("no pinned messages", false) return @@ -74,8 +80,25 @@ var Pinned tempest.Command = tempest.Command{ }, } +func getChannels(rest tempest.Rest, serverID string) ([]Channel, error) { + route := fmt.Sprintf("/guilds/%s/channels", serverID) + + bytes, err := rest.Request("GET", route, nil) + if err != nil { + return nil, err + } + + channels := []Channel{} + if err = json.Unmarshal(bytes, &channels); err != nil { + return nil, err + } + + return channels, nil +} + func getPinnedMessages(rest tempest.Rest, channelID string) ([]tempest.Message, error) { route := fmt.Sprintf("/channels/%s/pins", channelID) + bytes, err := rest.Request("GET", route, nil) if err != nil { return nil, err @@ -89,3 +112,6 @@ func getPinnedMessages(rest tempest.Rest, channelID string) ([]tempest.Message, return messages, nil } +type Channel struct { + ID tempest.Snowflake `json:"id"` +} diff --git a/main.go b/main.go index 4169eb0..ee1e5f1 100644 --- a/main.go +++ b/main.go @@ -10,7 +10,7 @@ import ( tempest "github.com/Amatsagu/Tempest" ) -var channelIDs []tempest.Snowflake = []tempest.Snowflake{ +var serverIDs []tempest.Snowflake = []tempest.Snowflake{ 992760761812258868, // test server } @@ -42,7 +42,7 @@ func main() { client.RegisterCommand(commands.Pinned) - client.SyncCommands(channelIDs, nil, false) + client.SyncCommands(serverIDs, nil, false) addr := fmt.Sprintf("%s:%s", env.Addr, env.Port) @@ -55,7 +55,7 @@ func main() { } func initialize(c tempest.Client) error { - if err := commands.InitPinned(c, channelIDs); err != nil { + if err := commands.InitPinned(c, serverIDs); err != nil { return err } @@ -73,7 +73,7 @@ func getEnvVariables() Env { } } - return Env{} + return LocalEnv }