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 {