diff --git a/src/api/board.ins/main.ts b/src/api/board.ins/main.ts deleted file mode 100644 index 999fd95..0000000 --- a/src/api/board.ins/main.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Server, ServerManagement } from '../../class'; - -export default (management: ServerManagement) => new Server(management, 3892, `${__dirname}/routes`); diff --git a/src/api/board.ins/routes/index.ts b/src/api/board.ins/routes/index.ts deleted file mode 100644 index fb1d2b2..0000000 --- a/src/api/board.ins/routes/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as Root } from './root'; diff --git a/src/api/board.ins/routes/root.ts b/src/api/board.ins/routes/root.ts deleted file mode 100644 index c67035a..0000000 --- a/src/api/board.ins/routes/root.ts +++ /dev/null @@ -1,834 +0,0 @@ -import { TextChannel } from 'eris'; -import { v4 as genUUID } from 'uuid'; -import { Request, Response } from 'express'; -import { RichEmbed, Route, Server } from '../../../class'; - -export default class Root extends Route { - constructor(server: Server) { - super(server); - this.conf = { - path: '/', - }; - } - - public bind() { - this.router.post('/eo', async (req, res) => { - if (!req.headers.authorization) { - return res.status(401).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - const users = await this.server.client.db.Score.find(); - const director = users.filter((user) => user.pin.join('-') === req.headers.authorization)[0]; - const staffGuild = this.server.client.guilds.get(this.server.client.config.guildID) || await this.server.client.getRESTGuild(this.server.client.config.guildID); - - if (!director || !staffGuild.members.get(director.userID)?.roles?.includes('662163685439045632')) { - return res.status(403).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - if (typeof req.body.subject !== 'string' || typeof req.body.body !== 'string' || req.body.subject.length > 1024 || req.body.body.length > 1024) { - return res.status(400).json({ - code: this.constants.codes.CLIENT_ERROR, - message: this.constants.messages.CLIENT_ERROR, - }); - } - - const eoID = genUUID(); - - const directorDiscord = this.server.client.users.get(director.userID) || await this.server.client.getRESTUser(director.userID); - const directorInformation = await this.server.client.db.Staff.findOne({ userID: director.userID }); - - const embed = new RichEmbed(); - embed.setTitle('Executive Order'); - embed.setAuthor(`${directorDiscord.username}#${directorDiscord.discriminator}, ${directorInformation.pn.join(', ')}`, directorDiscord.avatarURL); - embed.setColor('#dd3acd'); - embed.addField('Subject', req.body.subject); - embed.addField('Body', req.body.body); - embed.setDescription(eoID); - embed.setTimestamp(new Date()); - - const channel = this.server.client.getChannel('807444198969835550'); - const msg = await channel.createMessage({ embed }); - - const executiveOrder = await this.server.client.db.ExecutiveOrder.create({ - issuer: director.userID, - subject: req.body.subject, - body: req.body.body, - at: Date.now(), - oID: eoID, - msg: msg.id, - }); - - res.status(200).json({ - code: this.constants.codes.SUCCESS, - message: `Created new Executive Order with ID ${executiveOrder.oID} by ${directorDiscord.username}#${directorDiscord.discriminator}, ${directorInformation.pn.join(', ')}.`, - }); - }); - - this.router.post('/motion', async (req, res) => { - if (!req.headers.authorization) { - return res.status(401).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - const users = await this.server.client.db.Score.find(); - const director = users.filter((user) => user.pin.join('-') === req.headers.authorization)[0]; - const staffGuild = this.server.client.guilds.get(this.server.client.config.guildID) || await this.server.client.getRESTGuild(this.server.client.config.guildID); - - if (!director || !staffGuild.members.get(director.userID)?.roles?.includes('662163685439045632')) { - return res.status(403).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - if (typeof req.body.subject !== 'string' || typeof req.body.body !== 'string' || req.body.subject.length > 1024 || req.body.body.length > 1024) { - return res.status(400).json({ - code: this.constants.codes.CLIENT_ERROR, - message: this.constants.messages.CLIENT_ERROR, - }); - } - - const motionID = genUUID(); - - const directorDiscord = this.server.client.users.get(director.userID) || await this.server.client.getRESTUser(director.userID); - const directorInformation = await this.server.client.db.Staff.findOne({ userID: director.userID }); - - const embed = new RichEmbed(); - embed.setTitle('Motion'); - embed.setAuthor(`${directorDiscord.username}#${directorDiscord.discriminator}, ${directorInformation.pn.join(', ')}`, directorDiscord.avatarURL); - embed.setColor('#dd3acd'); - embed.addField('Subject', req.body.subject); - embed.addField('Body', req.body.body); - embed.setDescription(motionID); - embed.setTimestamp(new Date()); - - const channel = this.server.client.getChannel('807444198969835550'); - const msg = await channel.createMessage({ embed }); - - const motion = await this.server.client.db.Motion.create({ - issuer: director.userID, - subject: req.body.subject, - body: req.body.body, - at: Date.now(), - oID: motionID, - msg: msg.id, - processed: false, - }); - - res.status(200).json({ - code: this.constants.codes.SUCCESS, - message: `Created new Motion with ID ${motion.oID} by ${directorDiscord.username}#${directorDiscord.discriminator}, ${directorInformation.pn.join(', ')}.`, - }); - }); - - this.router.post('/proc', async (req: Request, res: Response) => { - if (!req.headers.authorization) { - return res.status(401).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - const users = await this.server.client.db.Score.find(); - const director = users.filter((user) => user.pin.join('-') === req.headers.authorization)[0]; - const staffGuild = this.server.client.guilds.get(this.server.client.config.guildID) || await this.server.client.getRESTGuild(this.server.client.config.guildID); - - if (!director || !staffGuild.members.get(director.userID)?.roles?.includes('662163685439045632')) { - return res.status(401).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - if (typeof req.body.subject !== 'string' || typeof req.body.body !== 'string' || req.body.subject.length > 1024 || req.body.body.length > 1024) { - return res.status(400).json({ - code: this.constants.codes.CLIENT_ERROR, - message: this.constants.messages.CLIENT_ERROR, - }); - } - - const proclamationID = genUUID(); - - const directorDiscord = this.server.client.users.get(director.userID) || await this.server.client.getRESTUser(director.userID); - const directorInformation = await this.server.client.db.Staff.findOne({ userID: director.userID }); - - const embed = new RichEmbed(); - embed.setTitle('Proclamation'); - embed.setAuthor(`${directorDiscord.username}#${directorDiscord.discriminator}, ${directorInformation.pn.join(', ')}`, directorDiscord.avatarURL); - embed.setColor('#66e1ff'); - embed.addField('Subject', req.body.subject); - embed.addField('Body', req.body.body); - embed.setDescription(proclamationID); - embed.setTimestamp(new Date()); - - const channel = this.server.client.getChannel('807444198969835550'); - const procMessage = await channel.createMessage({ embed }); - await procMessage.addReaction('modSuccess:578750988907970567'); - await procMessage.addReaction('modError:578750737920688128'); - await procMessage.addReaction('🙋'); - - const proclamation = await this.server.client.db.Proclamation.create({ - issuer: director.userID, - subject: req.body.subject, - body: req.body.body, - at: Date.now(), - oID: proclamationID, - processed: false, - msg: procMessage.id, - }); - - res.status(200).json({ - code: this.constants.codes.SUCCESS, - message: `Created new Proclamation with ID ${proclamation.oID} by ${directorDiscord.username}#${directorDiscord.discriminator}, ${directorInformation.pn.join(', ')}.`, - }); - }); - - this.router.delete('/eo/:id', async (req, res) => { - if (!req.headers.authorization) { - return res.status(401).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - const users = await this.server.client.db.Score.find(); - const director = users.filter((user) => user.pin.join('-') === req.headers.authorization)[0]; - const staffGuild = this.server.client.guilds.get(this.server.client.config.guildID) || await this.server.client.getRESTGuild(this.server.client.config.guildID); - - if (!director || !staffGuild.members.get(director.userID)?.roles?.includes('662163685439045632')) { - return res.status(403).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - if (!req.params.id) { - return res.status(400).json({ - code: this.constants.codes.CLIENT_ERROR, - message: this.constants.messages.CLIENT_ERROR, - }); - } - - if (!(await this.server.client.db.ExecutiveOrder.exists({ oID: req.params.id }))) { - return res.status(404).json({ - code: this.constants.codes.NOT_FOUND, - message: this.constants.messages.NOT_FOUND, - }); - } - - const executiveOrder = await this.server.client.db.ExecutiveOrder.findOne({ oID: req.params.id }); - - if (!['278620217221971968', executiveOrder.issuer].includes(director.userID)) { - return res.status(403).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - await executiveOrder.delete(); - - res.status(200).json({ message: `Executive Order with ID ${req.params.id} deleted.` }); - }); - - this.router.delete('/motion/:id', async (req, res) => { - if (!req.headers.authorization) { - return res.status(401).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - const users = await this.server.client.db.Score.find(); - const director = users.filter((user) => user.pin.join('-') === req.headers.authorization)[0]; - const staffGuild = this.server.client.guilds.get(this.server.client.config.guildID) || await this.server.client.getRESTGuild(this.server.client.config.guildID); - - if (!director || !staffGuild.members.get(director.userID)?.roles?.includes('662163685439045632')) { - return res.status(403).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - if (!req.params.id) { - return res.status(400).json({ - code: this.constants.codes.CLIENT_ERROR, - message: this.constants.messages.CLIENT_ERROR, - }); - } - - if (!(await this.server.client.db.Motion.exists({ oID: req.params.id }))) { - return res.status(404).json({ - code: this.constants.codes.NOT_FOUND, - message: this.constants.messages.NOT_FOUND, - }); - } - - const motion = await this.server.client.db.Motion.findOne({ oID: req.params.id }); - - if (!['278620217221971968', motion.issuer].includes(director.userID)) { - return res.status(403).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - await motion.delete(); - - res.status(200).json({ message: `Motion with ID ${req.params.id} deleted.` }); - }); - - this.router.delete('/proc/:id', async (req, res) => { - if (!req.headers.authorization) { - return res.status(401).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - const users = await this.server.client.db.Score.find(); - const director = users.filter((user) => user.pin.join('-') === req.headers.authorization)[0]; - const staffGuild = this.server.client.guilds.get(this.server.client.config.guildID) || await this.server.client.getRESTGuild(this.server.client.config.guildID); - - if (!director || !staffGuild.members.get(director.userID)?.roles?.includes('662163685439045632')) { - return res.status(403).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - if (!req.params.id) { - return res.status(400).json({ - code: this.constants.codes.CLIENT_ERROR, - message: this.constants.messages.CLIENT_ERROR, - }); - } - if (!(await this.server.client.db.Proclamation.exists({ oID: req.params.id }))) { - return res.status(404).json({ - code: this.constants.codes.NOT_FOUND, - message: this.constants.messages.NOT_FOUND, - }); - } - - const proclamation = await this.server.client.db.Proclamation.findOne({ oID: req.params.id }); - - if (!['278620217221971968', proclamation.issuer].includes(director.userID)) { - return res.status(403).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - await proclamation.delete(); - - res.status(200).json({ message: `Proclamation with ID ${req.params.id} deleted.` }); - }); - - this.router.get('/eo/:id', async (req, res) => { - if (!req.params.id) { - return res.status(400).json({ - code: this.constants.codes.CLIENT_ERROR, - message: this.constants.messages.CLIENT_ERROR, - }); - } - if (!(await this.server.client.db.ExecutiveOrder.exists({ oID: req.params.id }))) { - return res.status(404).json({ - code: this.constants.codes.NOT_FOUND, - message: this.constants.messages.NOT_FOUND, - }); - } - - const executiveOrder = await this.server.client.db.ExecutiveOrder.findOne({ oID: req.params.id }).lean(); - - res.status(200).json(executiveOrder); - }); - - this.router.get('/motion/:id', async (req, res) => { - if (!req.params.id) { - return res.status(400).json({ - code: this.constants.codes.CLIENT_ERROR, - message: this.constants.messages.CLIENT_ERROR, - }); - } - if (!(await this.server.client.db.Motion.exists({ oID: req.params.id }))) { - return res.status(404).json({ - code: this.constants.codes.NOT_FOUND, - message: this.constants.messages.NOT_FOUND, - }); - } - - const motion = await this.server.client.db.Motion.findOne({ oID: req.params.id }).lean(); - - res.status(200).json(motion); - }); - - this.router.get('/proc/:id', async (req: Request, res: Response) => { - if (!req.params.id) { - return res.status(400).json({ - code: this.constants.codes.CLIENT_ERROR, - message: this.constants.messages.CLIENT_ERROR, - }); - } - if (!(await this.server.client.db.Proclamation.exists({ oID: req.params.id }))) { - return res.status(404).json({ - code: this.constants.codes.NOT_FOUND, - message: this.constants.messages.NOT_FOUND, - }); - } - - const proclamation = await this.server.client.db.Proclamation.findOne({ oID: req.params.id }).lean(); - - res.status(200).json(proclamation); - }); - - this.router.get('/resolution/:id', async (req, res) => { - if (!req.params.id) { - return res.status(400).json({ - code: this.constants.codes.CLIENT_ERROR, - message: this.constants.messages.CLIENT_ERROR, - }); - } - if (!(await this.server.client.db.Resolution.exists({ oID: req.params.id }))) { - return res.status(404).json({ - code: this.constants.codes.NOT_FOUND, - message: this.constants.messages.NOT_FOUND, - }); - } - - const resolution = await this.server.client.db.Resolution.findOne({ oID: req.params.id }).lean(); - - res.status(200).json(resolution); - }); - - this.router.patch('/eo/:id', async (req, res) => { - if (!req.headers.authorization) { - return res.status(401).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - const users = await this.server.client.db.Score.find(); - const director = users.filter((user) => user.pin.join('-') === req.headers.authorization)[0]; - const staffGuild = this.server.client.guilds.get(this.server.client.config.guildID) || await this.server.client.getRESTGuild(this.server.client.config.guildID); - const directorDiscord = staffGuild.members.get(director.userID); - - if (!director || !directorDiscord?.roles?.includes('662163685439045632')) { - return res.status(403).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - if (!req.params.id) { - return res.status(400).json({ - code: this.constants.codes.CLIENT_ERROR, - message: this.constants.messages.CLIENT_ERROR, - }); - } - if (!(await this.server.client.db.ExecutiveOrder.exists({ oID: req.params.id }))) { - return res.status(404).json({ - code: this.constants.codes.NOT_FOUND, - message: this.constants.messages.NOT_FOUND, - }); - } - if (typeof req.body.subject !== 'string' || typeof req.body.body !== 'string' || req.body.subject.length > 1024 || req.body.body.length > 1024) { - return res.status(400).json({ - code: this.constants.codes.CLIENT_ERROR, - message: this.constants.messages.CLIENT_ERROR, - }); - } - - const executiveOrder = await this.server.client.db.ExecutiveOrder.findOne({ oID: req.params.id }); - - if (!['278620217221971968', executiveOrder.issuer].includes(director.userID)) { - return res.status(403).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - await executiveOrder.updateOne({ - subject: req.body.subject || executiveOrder.subject, - body: req.body.body || executiveOrder.body, - }); - - if (executiveOrder.subject !== req.body.subject || executiveOrder.body !== req.body.body) { - const channel = this.server.client.getChannel('807444198969835550'); - const eoMessage = await channel.getMessage(executiveOrder.msg); - - const embed = new RichEmbed(); - embed.setTitle('Executive Order'); - embed.author = eoMessage.embeds[0].author; - embed.setColor('#66e1ff'); - embed.addField('Subject', req.body.subject || executiveOrder.subject); - embed.addField('Body', req.body.body || executiveOrder.body); - embed.setDescription(req.params.id); - embed.setTimestamp(new Date()); - - await eoMessage.edit({ embed }); - } - - res.status(200).json({ message: `Updated Executive Order with ID ${executiveOrder.oID}.` }); - }); - - this.router.patch('/motion/:id', async (req, res) => { - if (!req.headers.authorization) { - return res.status(401).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - const users = await this.server.client.db.Score.find(); - const director = users.filter((user) => user.pin.join('-') === req.headers.authorization)[0]; - const staffGuild = this.server.client.guilds.get(this.server.client.config.guildID) || await this.server.client.getRESTGuild(this.server.client.config.guildID); - const directorDiscord = staffGuild.members.get(director.userID); - - if (!director || !directorDiscord?.roles?.includes('662163685439045632')) { - return res.status(403).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - if (!req.params.id) { - return res.status(400).json({ - code: this.constants.codes.CLIENT_ERROR, - message: this.constants.messages.CLIENT_ERROR, - }); - } - if (!(await this.server.client.db.Motion.exists({ oID: req.params.id }))) { - return res.status(404).json({ - code: this.constants.codes.NOT_FOUND, - message: this.constants.messages.NOT_FOUND, - }); - } - if (typeof req.body.subject !== 'string' || typeof req.body.body !== 'string' || req.body.subject.length > 1024 || req.body.body.length > 1024) { - return res.status(400).json({ - code: this.constants.codes.CLIENT_ERROR, - message: this.constants.messages.CLIENT_ERROR, - }); - } - - const motion = await this.server.client.db.Motion.findOne({ oID: req.params.id }); - - if (!['278620217221971968', motion.issuer].includes(director.userID)) { - return res.status(403).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - await motion.updateOne({ - subject: req.body.subject || motion.subject, - body: req.body.body || motion.body, - }); - - if (motion.subject !== req.body.subject || motion.body !== req.body.body) { - const channel = this.server.client.getChannel('807444198969835550'); - const motionMessage = await channel.getMessage(motion.msg); - - const embed = new RichEmbed(); - embed.setTitle('Motion'); - embed.author = motionMessage.embeds[0].author; - embed.setColor('#66e1ff'); - embed.addField('Subject', req.body.subject || motion.subject); - embed.addField('Body', req.body.body || motion.body); - embed.setDescription(req.params.id); - embed.setTimestamp(new Date()); - - await motionMessage.edit({ embed }); - } - - res.status(200).json({ message: `Updated Motion with ID ${motion.oID}.` }); - }); - - this.router.patch('/proc/:id', async (req, res) => { - if (!req.headers.authorization) { - return res.status(401).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - const users = await this.server.client.db.Score.find(); - const director = users.filter((user) => user.pin.join('-') === req.headers.authorization)[0]; - const staffGuild = this.server.client.guilds.get(this.server.client.config.guildID) || await this.server.client.getRESTGuild(this.server.client.config.guildID); - const directorDiscord = staffGuild.members.get(director.userID); - - if (!director || !directorDiscord?.roles?.includes('662163685439045632')) { - return res.status(403).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - if (!req.params.id) { - return res.status(400).json({ - code: this.constants.codes.CLIENT_ERROR, - message: this.constants.messages.CLIENT_ERROR, - }); - } - if (!(await this.server.client.db.Proclamation.exists({ oID: req.params.id }))) { - return res.status(404).json({ - code: this.constants.codes.NOT_FOUND, - message: this.constants.messages.NOT_FOUND, - }); - } - if (typeof req.body.subject !== 'string' || typeof req.body.body !== 'string' || req.body.subject.length > 1024 || req.body.body.length > 1024) { - return res.status(400).json({ - code: this.constants.codes.CLIENT_ERROR, - message: this.constants.messages.CLIENT_ERROR, - }); - } - - const proclamation = await this.server.client.db.Proclamation.findOne({ oID: req.params.id }); - - if (!['278620217221971968', proclamation.issuer].includes(director.userID)) { - return res.status(403).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - await proclamation.updateOne({ - subject: req.body.subject || proclamation.subject, - body: req.body.body || proclamation.body, - }); - - if (proclamation.subject !== req.body.subject || proclamation.body !== req.body.body) { - const channel = this.server.client.getChannel('807444198969835550'); - const procMessage = await channel.getMessage(proclamation.msg); - - const embed = new RichEmbed(); - embed.setTitle('Proclamation'); - embed.author = procMessage.embeds[0].author; - embed.setColor('#66e1ff'); - embed.addField('Subject', req.body.subject || proclamation.subject); - embed.addField('Body', req.body.body || proclamation.body); - embed.setDescription(req.params.id); - embed.setTimestamp(new Date()); - - await procMessage.edit({ embed }); - } - - res.status(200).json({ message: `Updated Proclamation with ID ${proclamation.oID}.` }); - }); - - this.router.patch('/resolution/:id', async (req, res) => { - if (!req.headers.authorization) { - return res.status(401).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - const users = await this.server.client.db.Score.find(); - const director = users.filter((user) => user.pin.join('-') === req.headers.authorization)[0]; - const staffGuild = this.server.client.guilds.get(this.server.client.config.guildID) || await this.server.client.getRESTGuild(this.server.client.config.guildID); - const directorDiscord = staffGuild.members.get(director.userID); - - if (!director || !directorDiscord?.roles?.includes('662163685439045632')) { - return res.status(403).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - if (!req.params.id) { - return res.status(400).json({ - code: this.constants.codes.CLIENT_ERROR, - message: this.constants.messages.CLIENT_ERROR, - }); - } - if (!(await this.server.client.db.Resolution.exists({ oID: req.params.id }))) { - return res.status(404).json({ - code: this.constants.codes.NOT_FOUND, - message: this.constants.messages.NOT_FOUND, - }); - } - if (typeof req.body.subject !== 'string' || typeof req.body.body !== 'string' || req.body.subject.length > 1024 || req.body.body.length > 1024) { - return res.status(400).json({ - code: this.constants.codes.CLIENT_ERROR, - message: this.constants.messages.CLIENT_ERROR, - }); - } - - const resolution = await this.server.client.db.Resolution.findOne({ oID: req.params.id }); - - if (!['278620217221971968', resolution.issuer].includes(director.userID)) { - return res.status(403).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - await resolution.updateOne({ - subject: req.body.subject || resolution.subject, - body: req.body.body || resolution.body, - }); - - if (resolution.subject !== req.body.subject || resolution.body !== req.body.body) { - const channel = this.server.client.getChannel('807444198969835550'); - const resMessage = await channel.getMessage(resolution.msg); - - const embed = new RichEmbed(); - embed.setTitle('Resolution'); - embed.author = resMessage.embeds[0].author; - embed.setColor('#75b0ff'); - embed.addField('Subject', req.body.subject || resolution.subject); - embed.addField('Body', req.body.body || resolution.body); - embed.setDescription(req.params.id); - embed.setTimestamp(new Date()); - - await resMessage.edit({ - content: `<@!${resolution.issuer}>`, - embed, - }); - } - - res.status(200).json({ message: `Updated Resolution with ID ${resolution.oID}.` }); - }); - - this.router.get('/eo', async (_req, res) => { - const executiveOrders = await this.server.client.db.ExecutiveOrder.find().lean(); - - - res.status(200).json(executiveOrders); - }); - - this.router.get('/motion', async (_req, res) => { - const motions = await this.server.client.db.Motion.find().lean(); - - res.status(200).json(motions); - }); - - this.router.get('/proc', async (_req: Request, res: Response) => { - const proclamations = await this.server.client.db.Proclamation.find().lean(); - - res.status(200).send({ proclamations }); - }); - - this.router.get('/resolution', async (_req, res) => { - const resolutions = await this.server.client.db.Resolution.find().lean(); - - res.status(200).json(resolutions); - }); - - this.router.patch('/motion/confirm/:id', async (req, res) => { - if (!req.headers.authorization) { - return res.status(401).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - const users = await this.server.client.db.Score.find(); - const director = users.filter((user) => user.pin.join('-') === req.headers.authorization)[0]; - const staffGuild = this.server.client.guilds.get(this.server.client.config.guildID) || await this.server.client.getRESTGuild(this.server.client.config.guildID); - const directorDiscord = staffGuild.members.get(director.userID); - - if (!director || !directorDiscord?.roles?.includes('662163685439045632')) { - return res.status(403).json({ - code: this.constants.codes.UNAUTHORIZED, - message: this.constants.messages.UNAUTHORIZED, - }); - } - - if (!req.params.id) { - return res.status(400).json({ - code: this.constants.codes.CLIENT_ERROR, - message: this.constants.messages.CLIENT_ERROR, - }); - } - if (!(await this.server.client.db.Motion.exists({ oID: req.params.id, processed: false }))) { - return res.status(404).json({ - code: this.constants.codes.NOT_FOUND, - message: this.constants.messages.NOT_FOUND, - }); - } - - const yea = Number(req.body.yea); - const nay = Number(req.body.nay); - const present = Number(req.body.present); - const absent = Number(req.body.absent); - - if (Number.isNaN(yea) || Number.isNaN(nay) || Number.isNaN(present) || Number.isNaN(absent)) { - return res.status(400).json({ - code: this.constants.codes.CLIENT_ERROR, - message: this.constants.messages.CLIENT_ERROR, - }); - } - - const motion = await this.server.client.db.Motion.findOne({ oID: req.params.id }); - await motion.updateOne({ - processed: true, - results: { - yea, - nay, - present, - absent, - }, - }); - - const directorStaffProfile = await this.server.client.db.Staff.findOne({ userID: directorDiscord.id }); - - const channel = this.server.client.getChannel('807444198969835550'); - - const embed = new RichEmbed(); - embed.setTitle('Motion Confirmed'); - embed.setAuthor(`${directorDiscord.username}#${directorDiscord.discriminator}, ${directorStaffProfile.pn.join(', ')}`, directorDiscord.avatarURL); - embed.setColor('#27b17a'); - embed.addField('Subject', motion.subject); - embed.addField('Body', motion.body); - embed.addField('Results', `Yea: ${yea}\nNay: ${nay}\nPresent: ${present}\nAbsent: ${absent}`); - embed.setDescription(motion.oID); - embed.setTimestamp(new Date()); - - await channel.createMessage({ embed }); - - const excludingYea = nay + present + absent; - if (yea > excludingYea) { - const resolutionEmbed = new RichEmbed(); - resolutionEmbed.setTitle('Resolution'); - resolutionEmbed.setAuthor(`${directorDiscord.username}#${directorDiscord.discriminator}, ${directorStaffProfile.pn.join(', ')}`, directorDiscord.avatarURL); - resolutionEmbed.setColor('#75b0ff'); - resolutionEmbed.addField('Subject', motion.subject); - resolutionEmbed.addField('Body', motion.body); - resolutionEmbed.addField('Director', `<@!${motion.issuer}>`); - resolutionEmbed.setDescription(motion.oID); - resolutionEmbed.setTimestamp(new Date()); - - const resMsg = await channel.createMessage({ - content: `<@!${motion.issuer}>`, - embed: resolutionEmbed, - }); - - await this.server.client.db.Resolution.create({ - issuer: motion.issuer, - subject: motion.subject, - body: motion.body, - at: Date.now(), - oID: motion.oID, - results: { - yea, - nay, - present, - absent, - }, - msg: resMsg.id, - }); - } - - res.status(200).json({ message: `Confirmed results of motion with ID ${motion.oID}.` }); - }); - } -} diff --git a/src/api/index.ts b/src/api/index.ts index 096c31c..9af7ae9 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -1,10 +1,8 @@ import locsh from './loc.sh/main'; import crins from './cr.ins/main'; import commlibraryofcodeorg from './comm.libraryofcode.org/main'; -import boardins from './board.ins/main'; export default { - 'board.ins': boardins, 'loc.sh': locsh, 'cr.ins': crins, 'comm.libraryofcode.org': commlibraryofcodeorg, diff --git a/src/commands/whois.ts b/src/commands/whois.ts index 07510c6..21f937b 100644 --- a/src/commands/whois.ts +++ b/src/commands/whois.ts @@ -80,22 +80,7 @@ export default class Whois extends Command { embed.addField('Created At', `${moment(new Date(member.user.createdAt)).format('dddd, MMMM Do YYYY, h:mm:ss A')} ET`, true); const score = await this.client.db.Score.findOne({ userID: member.id }).lean().exec(); if (score) { -<<<<<<< HEAD - await this.client.db.Score.updateOne({ userID: member.id }, { $addToSet: { softInquiries: { name: 'Library of Code sp-us | Bureau of Community Reports', date: new Date() } } }); - const embed2 = new RichEmbed(); - embed2.setTitle('Inquiry Notification'); - embed2.setColor('#00FFFF'); - const mem = this.client.util.resolveMember(score.userID, this.client.guilds.get(this.client.config.guildID)); - embed2.addField('Member', `${mem.user.username}#${mem.user.discriminator} | <@${score.userID}>`, true); - embed2.addField('Type', 'SOFT', true); - embed2.addField('Department/Service', 'Library of Code sp-us | Bureau of Community Reports'.toUpperCase(), true); - embed2.setTimestamp(); - embed2.setFooter(this.client.user.username, this.client.user.avatarURL); - const log = this.client.guilds.get(this.client.config.guildID).channels.get('611584771356622849'); - log.createMessage({ embed: embed2 }).catch(() => { }); -======= await this.client.report.createInquiry(member.id, 'Library of Code sp-us | Bureau of Community Reports', 1); ->>>>>>> upstream/master let totalScore = '0'; if (score.total < 200) totalScore = '---'; else if (score.total > 800) totalScore = '800'; diff --git a/src/events/index.ts b/src/events/index.ts index 2c644b2..277d16c 100644 --- a/src/events/index.ts +++ b/src/events/index.ts @@ -1,6 +1,5 @@ export { default as CallBackHandler } from './CallBackHandler'; export { default as CommandHandler } from './CommandHandler'; export { default as guildMemberAdd } from './guildMemberAdd'; -export { default as messageReactionAdd } from './messageReactionAdd'; export { default as ready } from './ready'; export { default as Training } from './Training'; diff --git a/src/events/messageReactionAdd.ts b/src/events/messageReactionAdd.ts deleted file mode 100644 index b3c0007..0000000 --- a/src/events/messageReactionAdd.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { Emoji, GuildTextableChannel, Member, Message } from 'eris'; -import { Client, Event } from '../class'; - -export default class MessageReactionAdd extends Event { - public client: Client; - - constructor(client: Client) { - super(client); - this.event = 'messageReactionAdd'; - } - - public async run(message: Message, _emoji: Emoji, reactor: Member) { - if (message.channel.id !== '807444198969835550') return; - if (message.author.id !== this.client.user.id) return; - - if (!reactor.roles[0]) { - reactor = await message.channel.guild.getRESTMember(reactor.id); - } - - if (!reactor.roles.includes('662163685439045632')) return; - - if ((await this.client.db.Proclamation.exists({ msg: message.id, processed: false }))) { - let yea = await message.getReaction('modSuccess:578750988907970567'); - yea = yea.filter((val) => !val.bot); - let nay = await message.getReaction('modError:578750737920688128'); - nay = nay.filter((val) => !val.bot); - let present = await message.getReaction('🙋'); - present = present.filter((val) => !val.bot); - const totalDirectors = 6; - const proc = await this.client.db.Proclamation.findOne({ msg: message.id }); - if (proc.votedDirectors?.includes(message.author.id)) return; - const processed = totalDirectors === (yea.length + nay.length + present.length) || Date.now() - proc.at > 604800000; - const absent = totalDirectors - (yea.length + nay.length + present.length); - - await proc.updateOne({ - results: { - yea: yea.length, - nay: nay.length, - present: present.length, - absent, - }, - processed, - votedDirectors: [...(proc.votedDirectors || []), message.author.id], - }); - const inTheMajority = yea.length > nay.length + present.length; - - if (processed) { - const author = this.client.users.get(proc.issuer) || await this.client.getRESTUser(proc.issuer); - - if (inTheMajority) { - await author.createMessage(`__**Proclamation Majority Vote Received**__\nThe Proclamation you created at Library of Code sp-us, titled **${proc.subject}** (\`${proc.oID}\`) received the majority vote.`); - await message.channel.createMessage(`__**Proclamation Results**__\nProclamation issued by ${author.mention} **received** the majority vote. Proclamation ID: ${proc.oID}\n\n__Results:__\n**Yea:** ${yea.length}\n**Nay:** ${nay.length}\n**Present:** ${present.length}\n**Absent:** ${absent}`); - } else { - await author.createMessage(`__**Proclamation Majority Vote Lost**__\nThe Proclamation you created at Library of Code sp-us, titled **${proc.subject}** (\`${proc.oID}\`) lost the majority vote.`); - await message.channel.createMessage(`__**Proclamation Results**__\nProclamation issued by ${author.mention} **lost** the majority vote. Proclamation ID: ${proc.oID}\n\n__Results:__\n**Yea:** ${yea.length}\n**Nay:** ${nay.length}\n**Present:** ${present.length}\n**Absent:** ${absent}`); - } - } - - await reactor.user.createMessage(`__**Vote Recorded**__\nYour vote on the proclamation with ID \`${proc.id}\` at Library of Code sp-us was successfully recorded.`); - } - } -} diff --git a/src/models/ExecutiveOrder.ts b/src/models/ExecutiveOrder.ts deleted file mode 100644 index 39f7b39..0000000 --- a/src/models/ExecutiveOrder.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Document, model, Schema } from 'mongoose'; - -export interface ExecutiveOrderInterface extends Document { - issuer: string; - subject: string; - body: string; - at: number; - oID: string; - msg: string; -} - -const ExecutiveOrder = new Schema({ - issuer: { type: String, required: true }, - subject: { type: String, required: true }, - body: { type: String, required: true }, - at: { type: Number, required: true }, - oID: { type: String, required: true, unique: true }, - msg: { type: String, required: true, unique: true }, -}); - -export default model('ExecutiveOrders', ExecutiveOrder); diff --git a/src/models/Motion.ts b/src/models/Motion.ts deleted file mode 100644 index 0f42b20..0000000 --- a/src/models/Motion.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { Document, model, Schema } from 'mongoose'; - -export interface MotionInterface extends Document { - issuer: string; - subject: string; - body: string; - at: number; - oID: string; - results: { - yea: number; - nay: number; - present: number; - absent: number; - }; - processed: boolean; - msg: string; -} - -const Motion = new Schema({ - issuer: { type: String, required: true }, - subject: { type: String, required: true }, - body: { type: String, required: true }, - at: { type: Number, required: true }, - oID: { type: String, required: true, unique: true }, - results: { - yea: Number, - nay: Number, - present: Number, - absent: Number, - }, - processed: Boolean, - msg: { required: true, unique: true, type: String }, -}); - -export default model('Motions', Motion); diff --git a/src/models/Proclamation.ts b/src/models/Proclamation.ts deleted file mode 100644 index b2cb61e..0000000 --- a/src/models/Proclamation.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Document, model, Schema } from 'mongoose'; - -export interface ProclamationInterface extends Document { - issuer: string; - subject: string; - body: string; - at: number; - oID: string; - results: { - yea: number; - nay: number; - present: number; - absent: number; - }; - acceptedAt: number; - msg: string; - processed: boolean; - votedDirectors: string[]; -} - -const Proclamation = new Schema({ - issuer: { type: String, required: true }, - subject: { type: String, required: true }, - body: { type: String, required: true }, - at: { type: Number, required: true }, - oID: { type: String, required: true, unique: true }, - results: { - yea: Number, - nay: Number, - present: Number, - absent: Number, - }, - acceptedAt: Number, - msg: { type: String, required: true, unique: true }, - processed: Boolean, - votedDirectors: Array, -}); - -export default model('Proclamations', Proclamation); diff --git a/src/models/Resolution.ts b/src/models/Resolution.ts deleted file mode 100644 index b9f472c..0000000 --- a/src/models/Resolution.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Document, model, Schema } from 'mongoose'; - -export interface ResolutionInterface extends Document { - issuer: string; - subject: string; - body: string; - at: number; - oID: string; - results: { - yea: number; - nay: number; - present: number; - absent: number; - }; - msg: string; -} - -const Resolution = new Schema({ - issuer: { type: String, required: true }, - subject: { type: String, required: true }, - body: { type: String, required: true }, - at: { type: Number, required: true }, - oID: { type: String, required: true, unique: true }, - results: { - yea: Number, - Nay: Number, - present: Number, - absent: Number, - }, - msg: { type: String, required: true, unique: true }, -}); - -export default model('Resolutions', Resolution);