func SBMessageUpdate(s *discordgo.Session, m *discordgo.MessageUpdate) { info := GetChannelGuild(m.ChannelID) if info == nil { return } if boolXOR(sb.Debug, info.IsDebug(m.ChannelID)) { return } if m.Author == nil { // Discord sends an update message with an empty author when certain media links are posted original, err := s.ChannelMessage(m.ChannelID, m.ID) if err != nil { info.log.LogError("Error processing MessageUpdate: ", err) return // F**k it, we can't process this } m.Author = original.Author } ch, err := sb.dg.State.Channel(m.ChannelID) info.log.LogError("Error retrieving channel ID "+m.ChannelID+": ", err) private := true if err == nil { private = ch.IsPrivate } cid := SBatoi(m.ChannelID) if cid != info.config.LogChannel && !private && sb.IsDBGuild(info) { // Always ignore messages from the log channel sb.db.AddMessage(SBatoi(m.ID), SBatoi(m.Author.ID), m.ContentWithMentionsReplaced(), cid, m.MentionEveryone, SBatoi(ch.GuildID)) } if m.Author.ID == sb.SelfID { return } ApplyFuncRange(len(info.hooks.OnMessageUpdate), func(i int) { if info.ProcessModule(m.ChannelID, info.hooks.OnMessageUpdate[i]) { info.hooks.OnMessageUpdate[i].OnMessageUpdate(info, m.Message) } }) }