1 |
|
/** |
2 |
|
* This file is part of SudoBot. |
3 |
|
* |
4 |
|
* Copyright (C) 2021-2022 OSN Inc. |
5 |
|
* |
6 |
|
* SudoBot is free software; you can redistribute it and/or modify it |
7 |
|
* under the terms of the GNU Affero General Public License as published by |
8 |
|
* the Free Software Foundation, either version 3 of the License, or |
9 |
|
* (at your option) any later version. |
10 |
|
* |
11 |
|
* SudoBot is distributed in the hope that it will be useful, but |
12 |
|
* WITHOUT ANY WARRANTY; without even the implied warranty of |
13 |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 |
|
* GNU Affero General Public License for more details. |
15 |
|
* |
16 |
|
* You should have received a copy of the GNU Affero General Public License |
17 |
|
* along with SudoBot. If not, see <https://www.gnu.org/licenses/>. |
18 |
|
*/ |
19 |
|
|
20 |
import { CommandInteraction, EmojiIdentifierResolvable, GuildMember, Message, TextChannel, User } from 'discord.js'; |
import { CommandInteraction, EmojiIdentifierResolvable, GuildMember, Message, TextChannel, User } from 'discord.js'; |
21 |
import BaseCommand from '../../utils/structures/BaseCommand'; |
import BaseCommand from '../../utils/structures/BaseCommand'; |
22 |
import DiscordClient from '../../client/Client'; |
import DiscordClient from '../../client/Client'; |
24 |
import CommandOptions from '../../types/CommandOptions'; |
import CommandOptions from '../../types/CommandOptions'; |
25 |
import InteractionOptions from '../../types/InteractionOptions'; |
import InteractionOptions from '../../types/InteractionOptions'; |
26 |
import { fetchEmoji } from '../../utils/Emoji'; |
import { fetchEmoji } from '../../utils/Emoji'; |
27 |
|
import Ballot from '../../models/Ballot'; |
28 |
|
|
29 |
export default class BallotCommand extends BaseCommand { |
export default class BallotCommand extends BaseCommand { |
30 |
supportsInteractions = true; |
supportsInteractions = true; |
93 |
] |
] |
94 |
}); |
}); |
95 |
|
|
96 |
await client.db.runAsync('INSERT INTO ballots(content, author, msg_id, guild_id, date, channel_id) VALUES(?, ?, ?, ?, ?, ?)', [content, anonymous ? null : msg.member?.user.id, message.id, msg.guild!.id, new Date().toISOString(), msg.channel!.id]); |
const ballot = new Ballot({ |
97 |
const ballot = await client.db.getAsync("SELECT * FROM ballots WHERE msg_id = ? AND guild_id = ? ORDER BY id DESC LIMIT 0, 1", [message.id, msg.guild!.id]); |
content, |
98 |
|
author: anonymous ? null : msg.member?.user.id, |
99 |
|
msg_id: message.id, |
100 |
|
guild_id: msg.guild!.id, |
101 |
|
date: new Date(), |
102 |
|
channel_id: msg.channel!.id |
103 |
|
}); |
104 |
|
|
105 |
|
await ballot.save(); |
106 |
|
|
107 |
await message.react(<EmojiIdentifierResolvable> await fetchEmoji('check')); |
await message.react(<EmojiIdentifierResolvable> await fetchEmoji('check')); |
108 |
await message.react(<EmojiIdentifierResolvable> await fetchEmoji('error')); |
await message.react(<EmojiIdentifierResolvable> await fetchEmoji('error')); |
109 |
|
|
110 |
await this.deferReply(msg, { |
await this.deferReply(msg, { |
111 |
content: `${(await fetchEmoji('check'))!.toString()} Your message has been delivered. The ballot ID is ${ballot.id}.`, |
content: `${(await fetchEmoji('check'))!.toString()} Your message has been delivered. The ballot ID is ${ballot.get('id')}.`, |
112 |
}); |
}); |
113 |
} |
} |
114 |
|
|
126 |
} |
} |
127 |
|
|
128 |
try { |
try { |
129 |
const id = options.isInteraction ? options.options.getInteger('id') : options.args[0]; |
const id = options.isInteraction ? options.options.getString('id') : options.args[0]; |
130 |
const ballot = await client.db.getAsync("SELECT * FROM ballots WHERE id = ? ORDER BY id DESC LIMIT 0, 1", [id]); |
//const ballot = await client.db.getAsync("SELECT * FROM ballots WHERE id = ? ORDER BY id DESC LIMIT 0, 1", [id]); |
131 |
|
const ballot = await Ballot.findById(id); |
132 |
|
|
133 |
if (!ballot) |
if (!ballot) |
134 |
throw new Error(); |
throw new Error(); |