diff --git a/bot/discord/commands/user_mentions.go b/bot/discord/commands/user_mentions.go index 613d17b..d33f695 100755 --- a/bot/discord/commands/user_mentions.go +++ b/bot/discord/commands/user_mentions.go @@ -28,17 +28,31 @@ func DirectedMessageReceive(s *discordgo.Session, m *discordgo.MessageCreate) { nsfwContext = channel.NSFW } + guildEmojis, err := s.GuildEmojis(m.GuildID) + if err != nil { + logger.Warn("could not get emoji for guild", zap.String("guildID", m.GuildID)) + } + botMentioned := false // Filter only commands we care about if len(m.Mentions) > 0 { // Just react to some mentions mysteriously - if rand.Float32()<0.5 { + if rand.Float32() < 0.5 { var err error if nsfwContext { err = s.MessageReactionAdd(m.ChannelID, m.ID, "imwetrn:1236826185783316552") } else { + if guildEmojis != nil { + emj := selectGuildEmojiForReaction(guildEmojis) + if emj.Available { + err = s.MessageReactionAdd(m.ChannelID, m.ID, emj.APIName()) + } else { + err = s.MessageReactionAdd(m.ChannelID, m.ID, "👁‍🗨") + } + } else{ err = s.MessageReactionAdd(m.ChannelID, m.ID, "👁‍🗨") } + } if err != nil { logger.Warn(fmt.Sprintf("Error adding reaction to message %s from user %s", m.ID, m.Author.Username)) } @@ -60,7 +74,7 @@ func DirectedMessageReceive(s *discordgo.Session, m *discordgo.MessageCreate) { if !directMessage && botMentioned { logger.Sugar().Debug(fmt.Sprintf("Detected Channel Mention in message from %s with UserID %s and Content: ", m.Author.Username, m.Author.ID), m.Content) - err := s.MessageReactionAdd(m.ChannelID, m.ID,emojiZoop) + err := s.MessageReactionAdd(m.ChannelID, m.ID, emojiZoop) if err != nil { logger.Sugar().Error(err) return diff --git a/bot/discord/commands/util.go b/bot/discord/commands/util.go index 2953ec3..9904bb7 100755 --- a/bot/discord/commands/util.go +++ b/bot/discord/commands/util.go @@ -2,6 +2,7 @@ package commands import ( "fmt" + "math/rand" "time" "github.com/bwmarrin/discordgo" @@ -37,3 +38,7 @@ func typeInChannel(channel chan bool, s *discordgo.Session, channelID string) { } } } + +func selectGuildEmojiForReaction(emojiPool []*discordgo.Emoji) *discordgo.Emoji { + return emojiPool[rand.Intn(len(emojiPool))] +} diff --git a/bot/internal/models/discord_helpers.go b/bot/internal/models/discord_helpers.go index 466b893..1d39678 100755 --- a/bot/internal/models/discord_helpers.go +++ b/bot/internal/models/discord_helpers.go @@ -23,3 +23,7 @@ type DiscordAppCommand interface { GetGuildID() string GetAllowedRoles() []int64 } + +type EmojiProvider interface { + GetEmoji() string +}