This commit is contained in:
mimu
2022-10-11 00:47:51 +02:00
parent c282ebb32c
commit 3b6b703101
2 changed files with 37 additions and 11 deletions
+31 -5
View File
@@ -23,18 +23,25 @@ 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{
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),
}
}
}
return nil
}
@@ -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"`
}
+4 -4
View File
@@ -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
}