mirror of
https://github.com/idanoo/GoDiscMoji
synced 2025-07-05 04:02:14 +00:00
Handle removing emojis
This commit is contained in:
parent
08d83ef87f
commit
9103c4710c
3 changed files with 56 additions and 7 deletions
|
@ -54,7 +54,9 @@ func (bot *Bot) Start() error {
|
||||||
})
|
})
|
||||||
|
|
||||||
// Add handlers
|
// Add handlers
|
||||||
bot.DiscordSession.AddHandler(bot.HandleReaction)
|
bot.DiscordSession.AddHandler(bot.HandleAddReaction)
|
||||||
|
bot.DiscordSession.AddHandler(bot.HandleRemoveReaction)
|
||||||
|
bot.DiscordSession.AddHandler(bot.HandleRemoveAllReaction)
|
||||||
|
|
||||||
// Load session
|
// Load session
|
||||||
err = discord.Open()
|
err = discord.Open()
|
||||||
|
@ -80,14 +82,35 @@ func (bot *Bot) Start() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// HandleReaction - Simply log it
|
// HandleReaction - Simply log it
|
||||||
func (bot *Bot) HandleReaction(discord *discordgo.Session, reaction *discordgo.MessageReactionAdd) {
|
func (bot *Bot) HandleAddReaction(discord *discordgo.Session, reaction *discordgo.MessageReactionAdd) {
|
||||||
// Ignore Dyno user
|
// Ignore Dyno user
|
||||||
if reaction.UserID == dynoUserID {
|
if reaction.UserID == dynoUserID {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err := bot.Db.LogEmojiUsage(reaction.GuildID, reaction.ChannelID, reaction.UserID, reaction.Emoji.Name)
|
err := bot.Db.LogEmojiUsage(reaction.GuildID, reaction.ChannelID, reaction.MessageID, reaction.UserID, reaction.Emoji.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slog.Error("Failed to log emoji usage", "err", err)
|
slog.Error("Failed to log emoji usage", "err", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HandleRemoveReaction - Remove for user/message/emoji
|
||||||
|
func (bot *Bot) HandleRemoveReaction(discord *discordgo.Session, reaction *discordgo.MessageReactionRemove) {
|
||||||
|
// Ignore Dyno user
|
||||||
|
if reaction.UserID == dynoUserID {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err := bot.Db.DeleteEmojiUsage(reaction.GuildID, reaction.ChannelID, reaction.MessageID, reaction.UserID, reaction.Emoji.Name)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("Failed to delete single emoji usage", "err", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// HandleRemoveAllReaction - Remove all for message
|
||||||
|
func (bot *Bot) HandleRemoveAllReaction(discord *discordgo.Session, reaction *discordgo.MessageReactionRemoveAll) {
|
||||||
|
err := bot.Db.DeleteEmojiAll(reaction.GuildID, reaction.ChannelID, reaction.MessageID)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("Failed to delete all emoji usage for message", "err", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -41,9 +41,10 @@ func (db *Database) runMigrations() (*Database, error) {
|
||||||
"`id` INTEGER PRIMARY KEY AUTOINCREMENT, " +
|
"`id` INTEGER PRIMARY KEY AUTOINCREMENT, " +
|
||||||
"`guild_id` TEXT, " +
|
"`guild_id` TEXT, " +
|
||||||
"`channel_id` TEXT, " +
|
"`channel_id` TEXT, " +
|
||||||
|
"`message_id` TEXT, " +
|
||||||
"`user_id` TEXT, " +
|
"`user_id` TEXT, " +
|
||||||
"`emoji_id` TEXT, " +
|
"`emoji_id` TEXT, " +
|
||||||
"`timestamp` DATETIME, `viewed` INT DEFAULT 0" +
|
"`timestamp` DATETIME" +
|
||||||
")")
|
")")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return db, err
|
return db, err
|
||||||
|
@ -54,6 +55,11 @@ func (db *Database) runMigrations() (*Database, error) {
|
||||||
return db, err
|
return db, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_, err = db.db.Exec("CREATE INDEX IF NOT EXISTS `idx_emoji_usage_message_id_user_id_emoji_id` ON `emoji_usage` (`message_id`, `user_id`, `guild_id`, `emoji_id`)")
|
||||||
|
if err != nil {
|
||||||
|
return db, err
|
||||||
|
}
|
||||||
|
|
||||||
_, err = db.db.Exec("CREATE INDEX IF NOT EXISTS `idx_emoji_usage_emoji_id,guild_id` ON `emoji_usage` (`guild_id`, `emoji_id`)")
|
_, err = db.db.Exec("CREATE INDEX IF NOT EXISTS `idx_emoji_usage_emoji_id,guild_id` ON `emoji_usage` (`guild_id`, `emoji_id`)")
|
||||||
return db, err
|
return db, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,10 +6,30 @@ type EmojiMap struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// LogEmojiUsage - Log usage
|
// LogEmojiUsage - Log usage
|
||||||
func (db *Database) LogEmojiUsage(guildID, channelID, userID, emojiID string) error {
|
func (db *Database) LogEmojiUsage(guildID, channelID, messageID, userID, emojiID string) error {
|
||||||
_, err := db.db.Exec(
|
_, err := db.db.Exec(
|
||||||
"INSERT INTO `emoji_usage` (`guild_id`, `channel_id`, `user_id`, `emoji_id`, `timestamp`) VALUES (?,?,?,?, datetime())",
|
"INSERT INTO `emoji_usage` (`guild_id`, `channel_id`, `message_id`, `user_id`, `emoji_id`, `timestamp`) VALUES (?,?,?,?,?, datetime())",
|
||||||
guildID, channelID, userID, emojiID,
|
guildID, channelID, messageID, userID, emojiID,
|
||||||
|
)
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteEmojiUsage - Delete for guild/channel/message/user
|
||||||
|
func (db *Database) DeleteEmojiUsage(guildID, channelID, messageID, userID, emojiID string) error {
|
||||||
|
_, err := db.db.Exec(
|
||||||
|
"DELETE FROM `emoji_usage` WHERE `guild_id` = ? AND `channel_id` = ? AND `message_id` = ? AND `user_id` = ? AND `emoji_id` = ?",
|
||||||
|
guildID, channelID, messageID, userID, emojiID,
|
||||||
|
)
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteEmojiAll - Delete for whole message
|
||||||
|
func (db *Database) DeleteEmojiAll(guildID, channelID, messageID string) error {
|
||||||
|
_, err := db.db.Exec(
|
||||||
|
"DELETE FROM `emoji_usage` WHERE `guild_id` = ? AND `channel_id` = ? AND `message_id` = ?",
|
||||||
|
guildID, channelID, messageID,
|
||||||
)
|
)
|
||||||
|
|
||||||
return err
|
return err
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue