68 lines
1.8 KiB
Go
68 lines
1.8 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"time"
|
||
|
|
||
|
"github.com/bwmarrin/discordgo"
|
||
|
)
|
||
|
|
||
|
const starEmoji = "⭐"
|
||
|
|
||
|
func starboardAutoReact(s *discordgo.Session, m *discordgo.MessageCreate) {
|
||
|
err := s.MessageReactionAdd(m.ChannelID, m.ID, starEmoji)
|
||
|
if err != nil {
|
||
|
logError(s, "starboardAutoReact", m.ChannelID, m.ID, err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func listenToStarboardReact(s *discordgo.Session, m *discordgo.MessageReactionAdd) {
|
||
|
if m.Emoji.Name != starEmoji {
|
||
|
return
|
||
|
}
|
||
|
messageTimestamp, err := discordgo.SnowflakeTimestamp(m.MessageID)
|
||
|
if err != nil {
|
||
|
logError(s, "listenToStarboardReact", "snowflakeTimestamp", m.MessageID, err)
|
||
|
return
|
||
|
}
|
||
|
if time.Now().Sub(messageTimestamp) > 24*time.Hour {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
reacter, err := s.MessageReactions(m.ChannelID, m.MessageID, starEmoji, 5)
|
||
|
if err != nil {
|
||
|
logError(s, "listenToStarboardReact", "messageReactions", m.ChannelID, m.MessageID, err)
|
||
|
return
|
||
|
}
|
||
|
if len(reacter) < 5 {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
msg, err := s.ChannelMessage(m.ChannelID, m.MessageID)
|
||
|
if err != nil {
|
||
|
logError(s, "listenToStarboardReact", "channelMessage", m.ChannelID, m.MessageID, err)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
color := s.State.UserColor(msg.Author.ID, m.ChannelID)
|
||
|
if color == 0 {
|
||
|
//White as fallback
|
||
|
color = 0xFFFFFF
|
||
|
}
|
||
|
_, err = s.ChannelMessageSendEmbed(
|
||
|
"645551408283648000",
|
||
|
&discordgo.MessageEmbed{
|
||
|
Title: "Starred Message",
|
||
|
URL: "https://discordapp.com/channels/" + m.GuildID + "/" + m.ChannelID + "/" + m.MessageID,
|
||
|
Color: color,
|
||
|
Timestamp: messageTimestamp.Format(time.RFC3339),
|
||
|
Author: &discordgo.MessageEmbedAuthor{
|
||
|
Name: msg.Author.Username + "#" + msg.Author.Discriminator,
|
||
|
IconURL: "https://cdn.discordapp.com/avatars/" + msg.Author.ID + "/" + msg.Author.Avatar + ".png",
|
||
|
},
|
||
|
},
|
||
|
)
|
||
|
if err != nil {
|
||
|
logError(s, "listenToStarboardReact", "channelMessageSendEmbed", err)
|
||
|
}
|
||
|
}
|