misc: add arsched
This commit is contained in:
parent
4f18677bc0
commit
bbbc82c611
1 changed files with 70 additions and 0 deletions
|
@ -256,3 +256,73 @@ vote.callback = async function (msg, line) {
|
|||
};
|
||||
};
|
||||
hf.registerCommand(vote);
|
||||
|
||||
const DAYS = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
|
||||
const arsched = new Command("arsched");
|
||||
arsched.category = CATEGORY;
|
||||
arsched.helpText = "aNONradio.net schedule";
|
||||
arsched.callback = async function (msg, line) {
|
||||
const now = new Date();
|
||||
|
||||
const schedule = await fetch("https://anonradio.net/schedule/").then((res) =>
|
||||
res.text()
|
||||
);
|
||||
|
||||
let lines = schedule.split("\n");
|
||||
lines = lines.slice(4, lines.length - 2);
|
||||
|
||||
const parsedLines = [];
|
||||
|
||||
for (const line of lines) {
|
||||
const [_, time, id, name] = line.match(/^(.{3,4} .{4})\s+(.+?) {2}(.+?)$/);
|
||||
|
||||
const tmp = time.split(" ");
|
||||
const day = tmp[0];
|
||||
let hour = tmp[1];
|
||||
const currentDay = now.getUTCDay();
|
||||
const targetDay = DAYS.indexOf(day);
|
||||
const delta = (targetDay + 7 - currentDay) % 7;
|
||||
|
||||
let currentYear = now.getUTCFullYear();
|
||||
const currentMonth = now.getUTCMonth();
|
||||
const currentDateDay = now.getUTCDate();
|
||||
let targetMonth = currentMonth;
|
||||
const lastDay = new Date(currentYear, currentMonth, 0).getDate();
|
||||
let targetDateDay = currentDateDay + delta;
|
||||
if (targetDateDay > lastDay) {
|
||||
targetMonth = currentMonth === 12 ? 1 : currentMonth + 1;
|
||||
targetDateDay = 1;
|
||||
if (currentMonth === 12) currentYear++;
|
||||
}
|
||||
|
||||
hour = hour.slice(0, 2) + ":" + hour.slice(-2);
|
||||
|
||||
const timestamp =
|
||||
Date.parse(
|
||||
`${DAYS[targetDay]}, ${currentYear}-${targetMonth}-${targetDateDay} ${hour} UTC`
|
||||
) / 1000;
|
||||
|
||||
parsedLines.push({timestamp, id, name});
|
||||
}
|
||||
|
||||
const liveNow = parsedLines.splice(0, 1)[0];
|
||||
liveNow.name = liveNow.name.replace(" <- Live NOW", "");
|
||||
|
||||
return {
|
||||
embeds: [
|
||||
{
|
||||
title: "Click to listen",
|
||||
url: "http://anonradio.net:8000/anonradio",
|
||||
author: {
|
||||
name: `LIVE NOW: ${liveNow.name} (\`${liveNow.id}\`)`,
|
||||
},
|
||||
fields: parsedLines.map((line) => ({
|
||||
inline: true,
|
||||
name: `${line.name} (\`${line.id}\`)`,
|
||||
value: `<t:${line.timestamp}:R>`,
|
||||
})),
|
||||
},
|
||||
],
|
||||
};
|
||||
};
|
||||
hf.registerCommand(arsched);
|
||||
|
|
Loading…
Reference in a new issue