1import { postJson } from "../util/http.js";
2import { replaceVariables } from "../util/helpers.js";
3
4const defaults = {
5 finished: "✨ *A speedtest is finished*\n🏓 `Ping`: %ping% ms (±%jitter% ms)\n🔼 `Upload`: %upload% Mbps\n🔽 `Download`: %download% Mbps",
6 failed: "❌ *A speedtest has failed*\n`Reason`: %error%"
7};
8
9const send = (token, chat_id, text, activity) =>
10 postJson(`https://api.telegram.org/bot${token}/sendMessage`,
11 {text, chat_id, parse_mode: "markdown"}, {activity});
12
13export default (registerEvent) => {
14 registerEvent('testFinished', async ({data: c}, data, activity) => {
15 if (c.send_finished) await send(c.token, c.chat_id,
16 replaceVariables(c.finished_message || defaults.finished, data), activity);
17 });
18
19 registerEvent('testFailed', async ({data: c}, error, activity) => {
20 if (c.send_failed) await send(c.token, c.chat_id,
21 replaceVariables(c.failed_message || defaults.failed, {error}), activity);
22 });
23
24 return {
25 icon: "fa-brands fa-telegram",
26 fields: [
27 {name: "token", type: "text", required: true, regex: /(\d+):[a-zA-Z0-9_-]+/},
28 {name: "chat_id", type: "text", required: true, regex: /\d+/},
29 {name: "send_finished", type: "boolean", required: false},
30 {name: "finished_message", type: "textarea", required: false},
31 {name: "send_failed", type: "boolean", required: false},
32 {name: "error_message", type: "textarea", required: false}
33 ]
34 };
35};
36