diff --git a/discord.go b/discord.go
index 2d48e326a8f5151e226d304b75a17eea54e7c3c9..41c7472f9fbe7bb7160718453c32c99dccf679d8 100644
--- a/discord.go
+++ b/discord.go
@@ -85,7 +85,10 @@ func openDiscord() {
 	ready <- struct{}{}
 }
 
-var idReference = make(map[string]int)
+var (
+	idReference = make(map[string]int)
+	referenceId = make(map[int]*discordgo.MessageReference)
+)
 
 func handleDiscord() {
 	session.AddHandler(discordHandleCreate)
@@ -151,6 +154,11 @@ func discordHandleCreate(session *discordgo.Session, create *discordgo.MessageCr
 		return
 	} else {
 		idReference[create.Message.ID] = m.MessageID
+		referenceId[m.MessageID] = &discordgo.MessageReference{
+			MessageID: create.Message.ID,
+			ChannelID: create.ChannelID,
+			GuildID:   create.GuildID,
+		}
 	}
 
 	log.Printf("D%vM%s -> T%vM%v %s#%s (%s): %s",
diff --git a/telegram.go b/telegram.go
index b55cbf35897348c11c941931b0e64bb7f5ba72dd..0e44195dfe6802b059391f2e9058208c0c8177c4 100644
--- a/telegram.go
+++ b/telegram.go
@@ -226,6 +226,9 @@ func respondTelegram(update tgbotapi.Update) {
 		if r, ok := messageReference[update.Message.ReplyToMessage.MessageID]; ok {
 			reference = r
 			setTelegramPreviousCaller(update.Message.Chat.ID, -1)
+		} else if r, ok = referenceId[update.Message.ReplyToMessage.MessageID]; ok {
+			reference = r
+			setTelegramPreviousCaller(update.Message.Chat.ID, -1)
 		}
 	}