diff --git a/discord.go b/discord.go index a3e73f1294bea8e88b15d863caa5fcb0f60c5e17..2d48e326a8f5151e226d304b75a17eea54e7c3c9 100644 --- a/discord.go +++ b/discord.go @@ -90,6 +90,7 @@ var idReference = make(map[string]int) func handleDiscord() { session.AddHandler(discordHandleCreate) session.AddHandler(discordHandleUpdate) + session.AddHandler(discordHandleDelete) } func discordHandleCreate(session *discordgo.Session, create *discordgo.MessageCreate) { @@ -194,6 +195,30 @@ func discordHandleUpdate(session *discordgo.Session, update *discordgo.MessageUp update.Message.Content) } +func discordHandleDelete(_ *discordgo.Session, delete *discordgo.MessageDelete) { + dc, tc := discordGetConf(delete.ChannelID) + if dc == nil || tc == nil { + return + } + if !dc.Delete { + return + } + + var tid int + if id, ok := idReference[delete.ID]; !ok { + return + } else { + tid = id + } + + if _, err := botAPI.DeleteMessage(tgbotapi.NewDeleteMessage(int64(tc.ID), tid)); err != nil { + log.Printf("error relaying delete on message %s: %s", delete.ID, err) + return + } + log.Printf("D%vM%s -> T%vM%v [delete]", + dc.ID, delete.ID, tc.ID, idReference[delete.ID]) +} + func discordGetConf(id string) (dc, tc *bridgePlatformConf) { if c, ok := discordBridge[id]; !ok { if config.System.Verbose {