From 8b5711b793d4bbe37e7588436162c39124e811f5 Mon Sep 17 00:00:00 2001 From: mrf1n <39709365+mrf1n@users.noreply.github.com> Date: Fri, 17 Jul 2026 14:51:33 +0200 Subject: [PATCH] forked: add optional topic_id field for Telegram message sending --- client/public/assets/locales/bg.json | 1 + client/public/assets/locales/da.json | 1 + client/public/assets/locales/de.json | 1 + client/public/assets/locales/en.json | 1 + client/public/assets/locales/es.json | 1 + client/public/assets/locales/fr.json | 1 + client/public/assets/locales/id.json | 1 + client/public/assets/locales/it.json | 1 + client/public/assets/locales/nl.json | 1 + client/public/assets/locales/pl.json | 1 + client/public/assets/locales/pt.json | 1 + client/public/assets/locales/ru.json | 1 + client/public/assets/locales/tr.json | 1 + client/public/assets/locales/zh.json | 1 + server/integrations/telegram.js | 9 +++++---- 15 files changed, 19 insertions(+), 4 deletions(-) diff --git a/client/public/assets/locales/bg.json b/client/public/assets/locales/bg.json index f226fc07..b3cec39e 100644 --- a/client/public/assets/locales/bg.json +++ b/client/public/assets/locales/bg.json @@ -393,6 +393,7 @@ "fields": { "token": "Токен на бот", "chat_id": "Идентификатор на чата", + "topic_id": "ID на темата (незадължително)", "error_message": "Съобщение за грешка", "error_message_placeholder": "Грешка: %error%", "send_failed": "Изпращане на съобщения за грешки", diff --git a/client/public/assets/locales/da.json b/client/public/assets/locales/da.json index a1651a1c..8bc563cc 100644 --- a/client/public/assets/locales/da.json +++ b/client/public/assets/locales/da.json @@ -393,6 +393,7 @@ "fields": { "token": "Bot-token", "chat_id": "Chat-ID", + "topic_id": "Emne-ID (valgfrit)", "error_message": "Fejlmeddelelse", "error_message_placeholder": "Fejl: %error%", "send_failed": "Send fejlmeddelelser", diff --git a/client/public/assets/locales/de.json b/client/public/assets/locales/de.json index 2acd4b5f..8e35e520 100644 --- a/client/public/assets/locales/de.json +++ b/client/public/assets/locales/de.json @@ -445,6 +445,7 @@ "fields": { "token": "Bot Token", "chat_id": "Chat ID", + "topic_id": "Themen-ID (optional)", "error_message": "Fehlernachricht", "error_message_placeholder": "Fehler: %error%", "send_failed": "Fehlernachrichten senden", diff --git a/client/public/assets/locales/en.json b/client/public/assets/locales/en.json index c712e78b..9c55f026 100644 --- a/client/public/assets/locales/en.json +++ b/client/public/assets/locales/en.json @@ -513,6 +513,7 @@ "fields": { "token": "Bot Token", "chat_id": "Chat ID", + "topic_id": "Topic ID (optional)", "error_message": "Error message", "error_message_placeholder": "[%year%-%month%-%day% %hour%:%minute%] Error: %error%", "send_failed": "Send error messages", diff --git a/client/public/assets/locales/es.json b/client/public/assets/locales/es.json index 19e5d28a..434d45b3 100644 --- a/client/public/assets/locales/es.json +++ b/client/public/assets/locales/es.json @@ -393,6 +393,7 @@ "fields": { "token": "Bot Token", "chat_id": "Chat ID", + "topic_id": "ID de tema (opcional)", "error_message": "Mensaje de error", "error_message_placeholder": "Error: %error%", "send_failed": "Enviar mensajes de error", diff --git a/client/public/assets/locales/fr.json b/client/public/assets/locales/fr.json index 1f7f89b0..784f9071 100644 --- a/client/public/assets/locales/fr.json +++ b/client/public/assets/locales/fr.json @@ -393,6 +393,7 @@ "fields": { "token": "Token du bot", "chat_id": "ID de conversation", + "topic_id": "ID du sujet (facultatif)", "error_message": "Message d'erreur", "error_message_placeholder": "Erreur : %error%", "send_failed": "Envoyer des messages d'erreur", diff --git a/client/public/assets/locales/id.json b/client/public/assets/locales/id.json index c1c204a8..f2b42e4a 100644 --- a/client/public/assets/locales/id.json +++ b/client/public/assets/locales/id.json @@ -393,6 +393,7 @@ "fields": { "token": "Token Bot", "chat_id": "ID Chat", + "topic_id": "ID Topik (opsional)", "error_message": "Pesan kesalahan", "error_message_placeholder": "Kesalahan: %error%", "send_failed": "Kirim pesan kesalahan", diff --git a/client/public/assets/locales/it.json b/client/public/assets/locales/it.json index 321592ea..f7aa4191 100644 --- a/client/public/assets/locales/it.json +++ b/client/public/assets/locales/it.json @@ -393,6 +393,7 @@ "fields": { "token": "Bot Token", "chat_id": "ID chat", + "topic_id": "ID argomento (opzionale)", "error_message": "Messaggio di errore", "error_message_placeholder": "Errore: %error%", "send_failed": "Inviare messaggi di errore", diff --git a/client/public/assets/locales/nl.json b/client/public/assets/locales/nl.json index 99dc59c2..e99309d9 100644 --- a/client/public/assets/locales/nl.json +++ b/client/public/assets/locales/nl.json @@ -393,6 +393,7 @@ "fields": { "token": "Bot Token", "chat_id": "Chat-ID", + "topic_id": "Onderwerp-ID (optioneel)", "error_message": "Foutmelding", "error_message_placeholder": "Fout: %error%", "send_failed": "Foutberichten verzenden", diff --git a/client/public/assets/locales/pl.json b/client/public/assets/locales/pl.json index 364e570f..3178cf74 100644 --- a/client/public/assets/locales/pl.json +++ b/client/public/assets/locales/pl.json @@ -393,6 +393,7 @@ "fields": { "token": "Token bota", "chat_id": "ID czatu", + "topic_id": "ID wątku (opcjonalne)", "error_message": "Komunikat o błędzie", "error_message_placeholder": "Błąd: %error%", "send_failed": "Wysyłaj komunikaty o błędach", diff --git a/client/public/assets/locales/pt.json b/client/public/assets/locales/pt.json index 07aad8b8..17c6f8c0 100644 --- a/client/public/assets/locales/pt.json +++ b/client/public/assets/locales/pt.json @@ -393,6 +393,7 @@ "fields": { "token": "Token de bot", "chat_id": "ID do bate-papo", + "topic_id": "ID do tópico (opcional)", "error_message": "Mensagem de erro", "error_message_placeholder": "Erro: %error%", "send_failed": "Enviar mensagens de erro", diff --git a/client/public/assets/locales/ru.json b/client/public/assets/locales/ru.json index 210e43dc..b0f07495 100644 --- a/client/public/assets/locales/ru.json +++ b/client/public/assets/locales/ru.json @@ -393,6 +393,7 @@ "fields": { "token": "Токен бота", "chat_id": "Идентификатор чата", + "topic_id": "ID темы (необязательно)", "error_message": "Сообщение об ошибке", "error_message_placeholder": "Ошибка: %error%", "send_failed": "Отправка сообщений об ошибках", diff --git a/client/public/assets/locales/tr.json b/client/public/assets/locales/tr.json index 4e32e189..76d7bcda 100644 --- a/client/public/assets/locales/tr.json +++ b/client/public/assets/locales/tr.json @@ -393,6 +393,7 @@ "fields": { "token": "Bot Token", "chat_id": "Sohbet Kimliği", + "topic_id": "Konu Kimliği (opsiyonel)", "error_message": "Hata mesajı", "error_message_placeholder": "Hata: %error%", "send_failed": "Hata mesajlarını gönder", diff --git a/client/public/assets/locales/zh.json b/client/public/assets/locales/zh.json index c6404d8e..e88bbfd8 100644 --- a/client/public/assets/locales/zh.json +++ b/client/public/assets/locales/zh.json @@ -393,6 +393,7 @@ "fields": { "token": "机器人令牌", "chat_id": "聊天ID", + "topic_id": "话题ID(可选)", "error_message": "测试失败通知内容", "error_message_placeholder": "错误: %error%", "send_failed": "发送测试失败通知", diff --git a/server/integrations/telegram.js b/server/integrations/telegram.js index c029e73a..7cb964c9 100644 --- a/server/integrations/telegram.js +++ b/server/integrations/telegram.js @@ -6,19 +6,19 @@ const defaults = { failed: "❌ *A speedtest has failed*\n`Reason`: %error%" }; -const send = (token, chat_id, text, activity) => +const send = (token, chat_id, text, activity, topic_id) => postJson(`https://api.telegram.org/bot${token}/sendMessage`, - {text, chat_id, parse_mode: "markdown"}, {activity}); + {text, chat_id, parse_mode: "markdown", ...(topic_id ? {message_thread_id: topic_id} : {})}, {activity}); export default (registerEvent) => { registerEvent('testFinished', async ({data: c}, data, activity) => { if (c.send_finished) await send(c.token, c.chat_id, - replaceVariables(c.finished_message || defaults.finished, data), activity); + replaceVariables(c.finished_message || defaults.finished, data), activity, c.topic_id); }); registerEvent('testFailed', async ({data: c}, error, activity) => { if (c.send_failed) await send(c.token, c.chat_id, - replaceVariables(c.failed_message || defaults.failed, {error}), activity); + replaceVariables(c.failed_message || defaults.failed, {error}), activity, c.topic_id); }); return { @@ -26,6 +26,7 @@ export default (registerEvent) => { fields: [ {name: "token", type: "text", required: true, regex: /(\d+):[a-zA-Z0-9_-]+/}, {name: "chat_id", type: "text", required: true, regex: /\d+/}, + {name: "topic_id", type: "text", required: false, regex: /^\d+$/}, {name: "send_finished", type: "boolean", required: false}, {name: "finished_message", type: "textarea", required: false}, {name: "send_failed", type: "boolean", required: false},