2020-12-03 19:18:46 +00:00
|
|
|
|
import * as WebUntis from 'webuntis';
|
|
|
|
|
import main from '../index';
|
|
|
|
|
import Discord from 'discord.js';
|
|
|
|
|
const { bot, defaultEmbedColor, untis, db, sendEmbed } = main;
|
|
|
|
|
|
|
|
|
|
export async function run() {
|
2020-12-11 09:49:53 +00:00
|
|
|
|
let timetable = await untis.getOwnTimetableForRange(new Date(Date.now() - 86400000), new Date(Date.now() + (86400000 * 7)), true);
|
2020-12-03 19:18:46 +00:00
|
|
|
|
|
|
|
|
|
timetable.forEach(lesson => {
|
|
|
|
|
let kLesson = db.knownLessons.get(`${lesson.id}`);
|
|
|
|
|
if (kLesson && hasChanged(lesson, kLesson)) {
|
|
|
|
|
let dateInfo = {
|
|
|
|
|
year: Number(`${lesson.date}`.substr(0, 4)),
|
|
|
|
|
month: Number(`${lesson.date}`.substr(4, 2)),
|
|
|
|
|
day: Number(`${lesson.date}`.substr(6, 2))
|
|
|
|
|
}
|
|
|
|
|
let date = new Date()
|
|
|
|
|
date.setFullYear(dateInfo.year);
|
|
|
|
|
date.setMonth(dateInfo.month - 1);
|
|
|
|
|
date.setDate(dateInfo.day);
|
|
|
|
|
|
|
|
|
|
let weekDay = ['Sunday', 'Monday', 'Thursday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][date.getDay()];
|
|
|
|
|
|
|
|
|
|
let embed = new Discord.MessageEmbed()
|
|
|
|
|
.setTitle(`Lesson updated`)
|
|
|
|
|
.setColor(defaultEmbedColor)
|
|
|
|
|
.setAuthor(`${weekDay}: ${lesson.sg || '(Unnamed lesson)'} - ${lesson.te[0].longname || 'No teacher'}`);
|
|
|
|
|
|
|
|
|
|
let desc = ``;
|
|
|
|
|
|
|
|
|
|
const propFullName = {
|
|
|
|
|
kl: 'Class',
|
|
|
|
|
te: 'Teacher',
|
|
|
|
|
su: 'Subject',
|
|
|
|
|
ro: 'Room'
|
|
|
|
|
}
|
|
|
|
|
for (const prop of ['kl', 'te', 'su', 'ro']) {
|
2020-12-11 09:49:53 +00:00
|
|
|
|
if (lesson[prop] != kLesson[prop]) {
|
2020-12-03 19:18:46 +00:00
|
|
|
|
desc += `**${propFullName[prop]}:** ${kLesson[prop]?.[0]?.longname} ${kLesson[prop]?.[0]?.longname != kLesson[prop]?.[0]?.name ? `(${(kLesson[prop]?.[0]?.name)})` : ''} \u200b **=>** \u200b ${lesson[prop]?.[0]?.longname} ${lesson[prop]?.[0]?.longname != lesson[prop]?.[0]?.name ? `(${lesson[prop]?.[0]?.name})` : ''} \n`;
|
2020-12-11 09:49:53 +00:00
|
|
|
|
}
|
2020-12-03 19:18:46 +00:00
|
|
|
|
}
|
2020-12-11 09:49:53 +00:00
|
|
|
|
if (lesson.activityType != kLesson.activityType) {
|
2020-12-03 19:18:46 +00:00
|
|
|
|
desc += `**Type:** ${kLesson.activityType} \u200b **=>** \u200b ${lesson.activityType} \n`
|
2020-12-11 09:49:53 +00:00
|
|
|
|
}
|
|
|
|
|
|
2020-12-03 19:18:46 +00:00
|
|
|
|
if (lesson.substText)
|
|
|
|
|
desc += `\nℹ️ ${lesson.substText}`;
|
|
|
|
|
|
|
|
|
|
if (lesson.info)
|
|
|
|
|
desc += `\nℹ️ ${lesson.info}`
|
|
|
|
|
|
|
|
|
|
embed.setDescription(desc);
|
|
|
|
|
console.log(`Sent timetable update`);
|
|
|
|
|
sendEmbed(embed);
|
|
|
|
|
db.knownLessons.set(`${lesson.id}`, lesson);
|
|
|
|
|
}
|
|
|
|
|
else db.knownLessons.set(`${lesson.id}`, lesson);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function hasChanged(lesson1: WebUntis.Lesson, lesson2: WebUntis.Lesson) {
|
|
|
|
|
return (JSON.stringify(lesson1) != JSON.stringify(lesson2));
|
|
|
|
|
}
|