mirror of
https://github.com/danbulant/ssps-bot
synced 2026-06-17 05:11:23 +00:00
72 lines
No EOL
3.2 KiB
JavaScript
72 lines
No EOL
3.2 KiB
JavaScript
const commando = require("@iceprod/discord.js-commando");
|
|
const { MessageEmbed, APIMessage } = require("discord.js");
|
|
const { DateTime } = require("luxon");
|
|
const Person = require("../../utils/models/person");
|
|
const api = require("../../utils/api");
|
|
const Teacher = require("../../utils/models/teacher");
|
|
const Student = require("../../utils/models/student");
|
|
const sequelize = require("../../utils/sequelize");
|
|
const Subject = require("../../utils/models/subject");
|
|
|
|
module.exports = class profil extends commando.Command {
|
|
constructor(client) {
|
|
super(client, {
|
|
name: "profil",
|
|
memberName: "profil",
|
|
aliases: ["profile", "whoami", "whois"],
|
|
group: "ssps",
|
|
description: "Zobrazí profil uživatele",
|
|
args: [{
|
|
key: "user",
|
|
type: "user",
|
|
default: msg => msg.author,
|
|
prompt: "Čí profil zobrazit?"
|
|
}]
|
|
});
|
|
}
|
|
|
|
async run(msg, { user }) {
|
|
const embed = new MessageEmbed();
|
|
const person = await Person.findOne({
|
|
where: { discord: user.id }
|
|
});
|
|
if(!person) {
|
|
embed.setColor("RED");
|
|
embed.setTitle("Uživatel nenalezen.");
|
|
embed.setDescription("Discord účet není propojený s účtem školním.");
|
|
return msg.say(embed);
|
|
}
|
|
embed.setTitle(person.name);
|
|
embed.setThumbnail(person.avatar || user.displayAvatarURL());
|
|
if(person.about) embed.setDescription(person.about);
|
|
if(person.birthday) embed.addField("Narozeniny", DateTime.fromFormat(person.birthday, "yyyy-MM-dd").toFormat("dd. MM. yyyy"));
|
|
embed.addField("Email", person.mail, true);
|
|
embed.addField("Typ", person.type === "teacher" ? "Učitel" : person.type === "student" ? "Student" : "Neprestižní", true);
|
|
if(person.discord) embed.addField("Discord", "<@" + person.discord + ">", true)
|
|
if(person.type === "teacher") {
|
|
const teacher = await Teacher.findOne({
|
|
where: { personId: person.id }
|
|
});
|
|
embed.addField("Zkratka", teacher.abbrev, true);
|
|
if(teacher.roomId) embed.addField("Místnost", teacher.roomId, true);
|
|
if(teacher.komise) embed.addField("Komise", teacher.komise, true);
|
|
const subjects = await Subject.findAll({
|
|
where: sequelize.where(sequelize.literal("(SELECT 1 FROM prestiz.timetables WHERE subjectId=subject.id AND teacherId = $teacher LIMIT 1)"), 1),
|
|
attributes: ["abbrev"],
|
|
bind: {
|
|
teacher: teacher.id
|
|
}
|
|
});
|
|
embed.addField("Učí", subjects.map(t => t.abbrev).join(", ") || "Neučí žádné předměty");
|
|
} else if(person.type === "student") {
|
|
const student = await Student.findOne({
|
|
where: { personId: person.id }
|
|
});
|
|
embed.addField("Třída", api.demap[student.classId], true);
|
|
const groups = await student.getGroups();
|
|
embed.addField("Skupiny", groups.filter(t => t.abbrev !== "celá").map(t => t.name).join(", "), true);
|
|
}
|
|
|
|
return msg.say(embed);
|
|
}
|
|
}; |