1import { postJson } from "../util/http.js";
2import { replaceVariables } from "../util/helpers.js";
3
4const defaults = {
5 finished: ":sparkles: **A speedtest is finished**\n > :ping_pong: `Ping`: %ping% ms (±%jitter% ms)\n > :arrow_up: `Upload`: %upload% Mbps\n > :arrow_down: `Download`: %download% Mbps",
6 failed: ":x: **A speedtest has failed**\n > `Reason`: %error%"
7};
8
9const send = (url, username, color, description, activity) =>
10 postJson(url, {
11 content: null, username,
12 embeds: [{description, color, footer: {text: "Pixies"}, timestamp: new Date().toISOString()}]
13 }, {activity});
14
15export default (registerEvent) => {
16 registerEvent('testFinished', async ({data: c}, data, activity) => {
17 if (c.send_finished) await send(c.url, c.display_name || "Pixies", 4572762,
18 replaceVariables(c.finished_message || defaults.finished, data), activity);
19 });
20
21 registerEvent('testFailed', async ({data: c}, error, activity) => {
22 if (c.send_failed) await send(c.url, c.display_name || "Pixies", 12993861,
23 replaceVariables(c.failed_message || defaults.failed, {error}), activity);
24 });
25
26 return {
27 icon: "fa-brands fa-discord",
28 fields: [
29 {name: "url", type: "text", required: true, regex: /https:\/\/.*discord.com\/api\/webhooks\/\d+\/.+/},
30 {name: "display_name", type: "text", required: false},
31 {name: "send_finished", type: "boolean", required: false},
32 {name: "finished_message", type: "textarea", required: false},
33 {name: "send_failed", type: "boolean", required: false},
34 {name: "error_message", type: "textarea", required: false}
35 ]
36 };
37};
38