Files
acecore/cmd_sticky.go

95 lines
2.9 KiB
Go

package main
import (
"github.com/bwmarrin/discordgo"
"github.com/sirupsen/logrus"
)
var cmd_sticky Command = Command{
Definition: discordgo.ApplicationCommand{
Name: "sticky",
Description: "Stick messages to the bottom of the current channel",
DefaultMemberPermissions: int64Ptr(discordgo.PermissionManageMessages),
Options: []*discordgo.ApplicationCommandOption{
{
Type: discordgo.ApplicationCommandOptionString,
Name: "message",
Description: "The message you want to stick to the bottom of this channel",
Required: false,
},
},
},
Interact: func(s *discordgo.Session, i *discordgo.InteractionCreate) {
if len(i.ApplicationCommandData().Options) == 0 {
if hasSticky(i.GuildID, i.ChannelID) {
err := s.ChannelMessageDelete(i.ChannelID, getStickyMessageID(i.GuildID, i.ChannelID))
if err != nil {
logrus.Error(err)
}
removeSticky(i.GuildID, i.ChannelID)
err = respond(i.Interaction, "The sticky message was removed from this channel!", true)
if err != nil {
logrus.Error(err)
}
} else {
err := respond(i.Interaction, "This channel has no sticky message!", true)
if err != nil {
logrus.Error(err)
}
}
} else {
inputStickyMessage(i)
}
},
}
var context_sticky Command = Command{
Definition: discordgo.ApplicationCommand{
Name: "Stick to channel",
Type: discordgo.MessageApplicationCommand,
DefaultMemberPermissions: int64Ptr(discordgo.PermissionManageMessages),
},
Interact: func(s *discordgo.Session, i *discordgo.InteractionCreate) {
inputStickyMessage(i)
},
}
func inputStickyMessage(i *discordgo.InteractionCreate) {
var messageText string
if len(i.ApplicationCommandData().Options) == 0 {
messageText = i.ApplicationCommandData().Resolved.Messages[i.ApplicationCommandData().TargetID].Content //TODO add more data then just content
} else {
messageText = i.ApplicationCommandData().Options[0].StringValue()
}
message, err := bot.ChannelMessageSendEmbed(i.ChannelID, &discordgo.MessageEmbed{
Type: discordgo.EmbedTypeArticle,
Footer: &discordgo.MessageEmbedFooter{
Text: "📌 Sticky message",
},
Color: hexToDecimal(color["primary"]),
Description: messageText,
})
if err != nil {
logrus.Error(err)
}
if hasSticky(i.GuildID, i.ChannelID) {
err = bot.ChannelMessageDelete(i.ChannelID, getStickyMessageID(i.GuildID, i.ChannelID))
if err != nil {
logrus.Error(err, getStickyMessageID(i.GuildID, i.ChannelID))
}
removeSticky(i.GuildID, i.ChannelID)
addSticky(i.GuildID, i.ChannelID, messageText, message.ID)
err = respond(i.Interaction, "Sticky message in this channel was updated!", true)
if err != nil {
logrus.Error(err)
}
} else {
addSticky(i.GuildID, i.ChannelID, messageText, message.ID)
err := respond(i.Interaction, "Message sticked to the channel!", true)
if err != nil {
logrus.Error(err)
}
}
}