Compare commits

..

5 commits

12 changed files with 57 additions and 35 deletions

View file

@ -19,13 +19,13 @@ export default {
const row = new ActionRowBuilder() const row = new ActionRowBuilder()
.addComponents( .addComponents(
new ButtonBuilder() new ButtonBuilder()
.setCustomId('yes') .setCustomId(`yes${interaction.user.id}`)
.setLabel('Yes') .setLabel('Yes')
.setStyle(ButtonStyle.Primary), .setStyle(ButtonStyle.Primary),
) )
.addComponents( .addComponents(
new ButtonBuilder() new ButtonBuilder()
.setCustomId('no') .setCustomId(`no${interaction.user.id}`)
.setLabel('No') .setLabel('No')
.setStyle(ButtonStyle.Danger), .setStyle(ButtonStyle.Danger),
); );
@ -36,7 +36,7 @@ export default {
if (interaction.user !== interactionMenu.user) return; if (interaction.user !== interactionMenu.user) return;
if (!interactionMenu.isButton) return; if (!interactionMenu.isButton) return;
interactionMenu.update({ components: [] }); interactionMenu.update({ components: [] });
if (interactionMenu.customId === 'yes') { if (interactionMenu.customId === `yes${interaction.user.id}`) {
const body = { serverID: interaction.guild.id, stat: 'disable' }; const body = { serverID: interaction.guild.id, stat: 'disable' };
await db.autoresponseStat.update(body, { where: { serverID: interaction.guild.id } }); await db.autoresponseStat.update(body, { where: { serverID: interaction.guild.id } });
return interaction.editReply({ content: 'Auto response has been disabled.', ephemeral: true }); return interaction.editReply({ content: 'Auto response has been disabled.', ephemeral: true });

View file

@ -25,19 +25,19 @@ export default {
const row = new ActionRowBuilder() const row = new ActionRowBuilder()
.addComponents( .addComponents(
new ButtonBuilder() new ButtonBuilder()
.setCustomId('edit') .setCustomId(`edit${interaction.user.id}`)
.setLabel('Edit') .setLabel('Edit')
.setStyle(ButtonStyle.Primary), .setStyle(ButtonStyle.Primary),
) )
.addComponents( .addComponents(
new ButtonBuilder() new ButtonBuilder()
.setCustomId('remove') .setCustomId(`remove${interaction.user.id}`)
.setLabel('Remove') .setLabel('Remove')
.setStyle(ButtonStyle.Danger), .setStyle(ButtonStyle.Danger),
) )
.addComponents( .addComponents(
new ButtonBuilder() new ButtonBuilder()
.setCustomId('nothing') .setCustomId(`nothing${interaction.user.id}`)
.setLabel('Do nothing') .setLabel('Do nothing')
.setStyle(ButtonStyle.Secondary), .setStyle(ButtonStyle.Secondary),
); );
@ -48,7 +48,7 @@ export default {
if (interaction.user !== interactionMenu.user) return; if (interaction.user !== interactionMenu.user) return;
if (!interactionMenu.isButton) return; if (!interactionMenu.isButton) return;
interactionMenu.update({ components: [] }); interactionMenu.update({ components: [] });
if (interactionMenu.customId === 'edit') { if (interactionMenu.customId === `edit${interaction.user.id}`) {
if (!args.message) { if (!args.message) {
return interaction.reply({ content: 'You need to input a message for me to edit!', ephemeral: true }); return interaction.reply({ content: 'You need to input a message for me to edit!', ephemeral: true });
} }
@ -56,7 +56,7 @@ export default {
await db.leaveChannel.update(body, { where: { guildID: interaction.guild.id } }); await db.leaveChannel.update(body, { where: { guildID: interaction.guild.id } });
return interaction.editReply({ content: `The leave message has been set to ${args.message}`, ephemeral: true }); return interaction.editReply({ content: `The leave message has been set to ${args.message}`, ephemeral: true });
} }
else if (interactionMenu.customId === 'remove') { else if (interactionMenu.customId === `remove${interaction.user.id}`) {
db.leaveChannel.destroy({ where: { guildID: interaction.guild.id, channelID: interaction.channel.id } }); db.leaveChannel.destroy({ where: { guildID: interaction.guild.id, channelID: interaction.channel.id } });
return interaction.editReply({ content: 'The leave message has been deleted.', ephemeral: true }); return interaction.editReply({ content: 'The leave message has been deleted.', ephemeral: true });
} }

View file

@ -19,13 +19,13 @@ export default {
const row = new ActionRowBuilder() const row = new ActionRowBuilder()
.addComponents( .addComponents(
new ButtonBuilder() new ButtonBuilder()
.setCustomId('yes') .setCustomId(`yes${interaction.user.id}`)
.setLabel('Yes') .setLabel('Yes')
.setStyle(ButtonStyle.Primary), .setStyle(ButtonStyle.Primary),
) )
.addComponents( .addComponents(
new ButtonBuilder() new ButtonBuilder()
.setCustomId('no') .setCustomId(`no${interaction.user.id}`)
.setLabel('No') .setLabel('No')
.setStyle(ButtonStyle.Danger), .setStyle(ButtonStyle.Danger),
); );
@ -36,7 +36,7 @@ export default {
if (interaction.user !== interactionMenu.user) return; if (interaction.user !== interactionMenu.user) return;
if (!interactionMenu.isButton) return; if (!interactionMenu.isButton) return;
interactionMenu.update({ components: [] }); interactionMenu.update({ components: [] });
if (interactionMenu.customId === 'yes') { if (interactionMenu.customId === `yes${interaction.user.id}`) {
const body = { serverID: interaction.guild.id, stat: 'disable' }; const body = { serverID: interaction.guild.id, stat: 'disable' };
await db.quotationStat.update(body, { where: { serverID: interaction.guild.id } }); await db.quotationStat.update(body, { where: { serverID: interaction.guild.id } });
return interaction.editReply({ content: 'Quotation has been disabled.', ephemeral: true }); return interaction.editReply({ content: 'Quotation has been disabled.', ephemeral: true });

View file

@ -26,19 +26,19 @@ export default {
const row = new ActionRowBuilder() const row = new ActionRowBuilder()
.addComponents( .addComponents(
new ButtonBuilder() new ButtonBuilder()
.setCustomId('edit') .setCustomId(`edit${interaction.user.id}`)
.setLabel('Edit') .setLabel('Edit')
.setStyle(ButtonStyle.Primary), .setStyle(ButtonStyle.Primary),
) )
.addComponents( .addComponents(
new ButtonBuilder() new ButtonBuilder()
.setCustomId('remove') .setCustomId(`remove${interaction.user.id}`)
.setLabel('Remove') .setLabel('Remove')
.setStyle(ButtonStyle.Danger), .setStyle(ButtonStyle.Danger),
) )
.addComponents( .addComponents(
new ButtonBuilder() new ButtonBuilder()
.setCustomId('nothing') .setCustomId(`nothing${interaction.user.id}`)
.setLabel('Do nothing') .setLabel('Do nothing')
.setStyle(ButtonStyle.Secondary), .setStyle(ButtonStyle.Secondary),
); );
@ -49,7 +49,7 @@ export default {
if (interaction.user !== interactionMenu.user) return; if (interaction.user !== interactionMenu.user) return;
if (!interactionMenu.isButton) return; if (!interactionMenu.isButton) return;
interactionMenu.update({ components: [] }); interactionMenu.update({ components: [] });
if (interactionMenu.customId === 'edit') { if (interactionMenu.customId === `edit${interaction.user.id}`) {
if (!args.message) { if (!args.message) {
return interaction.reply({ content: 'You need to input a message for me to edit!', ephemeral: true }); return interaction.reply({ content: 'You need to input a message for me to edit!', ephemeral: true });
} }
@ -57,7 +57,7 @@ export default {
await db.joinChannel.update(body, { where: { guildID: interaction.guild.id } }); await db.joinChannel.update(body, { where: { guildID: interaction.guild.id } });
return interaction.editReply({ content: `The join message has been set to ${args.message}`, ephemeral: true }); return interaction.editReply({ content: `The join message has been set to ${args.message}`, ephemeral: true });
} }
else if (interactionMenu.customId === 'remove') { else if (interactionMenu.customId === `remove${interaction.user.id}`) {
db.joinChannel.destroy({ where: { guildID: interaction.guild.id, channelID: interaction.channel.id } }); db.joinChannel.destroy({ where: { guildID: interaction.guild.id, channelID: interaction.channel.id } });
return interaction.editReply({ content: 'The join message has been deleted.', ephemeral: true }); return interaction.editReply({ content: 'The join message has been deleted.', ephemeral: true });
} }

View file

@ -41,13 +41,13 @@ export default {
const row = new ActionRowBuilder() const row = new ActionRowBuilder()
.addComponents( .addComponents(
new ButtonBuilder() new ButtonBuilder()
.setCustomId('yes') .setCustomId(`yes${interaction.user.id}`)
.setLabel('Yes') .setLabel('Yes')
.setStyle(ButtonStyle.Primary), .setStyle(ButtonStyle.Primary),
) )
.addComponents( .addComponents(
new ButtonBuilder() new ButtonBuilder()
.setCustomId('no') .setCustomId(`no${interaction.user.id}`)
.setLabel('No') .setLabel('No')
.setStyle(ButtonStyle.Danger), .setStyle(ButtonStyle.Danger),
); );
@ -58,7 +58,7 @@ export default {
if (interaction.user !== interactionMenu.user) return; if (interaction.user !== interactionMenu.user) return;
if (!interactionMenu.isButton) return; if (!interactionMenu.isButton) return;
interactionMenu.update({ components: [] }); interactionMenu.update({ components: [] });
if (interactionMenu.customId === 'yes') { if (interactionMenu.customId === `yes${interaction.user.id}`) {
Blacklists.destroy({ where: { type:command, uid:userid } }); Blacklists.destroy({ where: { type:command, uid:userid } });
return interaction.editReply(`The following ID have been unblacklisted from ${command}: ${userid}`); return interaction.editReply(`The following ID have been unblacklisted from ${command}: ${userid}`);
} }

View file

@ -90,7 +90,7 @@ export default {
const row = new ActionRowBuilder() const row = new ActionRowBuilder()
.addComponents( .addComponents(
new SelectMenuBuilder() new SelectMenuBuilder()
.setCustomId('downloadQuality') .setCustomId(`downloadQuality${interaction.user.id}`)
.setPlaceholder('Nothing selected') .setPlaceholder('Nothing selected')
.setMinValues(1) .setMinValues(1)
.setMaxValues(2) .setMaxValues(2)
@ -103,7 +103,7 @@ export default {
client.on('interactionCreate', async (interactionMenu) => { client.on('interactionCreate', async (interactionMenu) => {
if (interaction.user !== interactionMenu.user) return; if (interaction.user !== interactionMenu.user) return;
if (!interactionMenu.isSelectMenu()) return; if (!interactionMenu.isSelectMenu()) return;
if (interactionMenu.customId === 'downloadQuality') { if (interactionMenu.customId === `downloadQuality${interaction.user.id}`) {
await interactionMenu.deferReply({ ephemeral: false }); await interactionMenu.deferReply({ ephemeral: false });
download(url, interactionMenu, interaction); download(url, interactionMenu, interaction);
} }
@ -121,7 +121,7 @@ async function download(url, interaction, originalInteraction) {
.setAuthor({ name: `Downloaded by ${interaction.user.tag}`, iconURL: interaction.user.displayAvatarURL(), url: url }) .setAuthor({ name: `Downloaded by ${interaction.user.tag}`, iconURL: interaction.user.displayAvatarURL(), url: url })
.setFooter({ text: `You can get the original video by clicking on the "Downloaded by ${interaction.user.tag}" message!` }); .setFooter({ text: `You can get the original video by clicking on the "Downloaded by ${interaction.user.tag}" message!` });
if (interaction.customId === 'downloadQuality') { if (interaction.customId === `downloadQuality${interaction.user.id}`) {
format = interaction.values[0]; format = interaction.values[0];
if (interaction.values[1]) format += '+' + interaction.values[1]; if (interaction.values[1]) format += '+' + interaction.values[1];
} }
@ -148,7 +148,7 @@ async function download(url, interaction, originalInteraction) {
const row = new ActionRowBuilder() const row = new ActionRowBuilder()
.addComponents( .addComponents(
new SelectMenuBuilder() new SelectMenuBuilder()
.setCustomId('preset') .setCustomId(`preset${interaction.user.id}`)
.setPlaceholder('Nothing selected') .setPlaceholder('Nothing selected')
.addOptions(options), .addOptions(options),
); );
@ -158,7 +158,7 @@ async function download(url, interaction, originalInteraction) {
client.on('interactionCreate', async (interactionMenu) => { client.on('interactionCreate', async (interactionMenu) => {
if (interaction.user !== interactionMenu.user) return; if (interaction.user !== interactionMenu.user) return;
if (!interactionMenu.isSelectMenu()) return; if (!interactionMenu.isSelectMenu()) return;
if (interactionMenu.customId === 'preset') { if (interactionMenu.customId === `preset${interaction.user.id}`) {
await interactionMenu.deferReply({ ephemeral: false }); await interactionMenu.deferReply({ ephemeral: false });
compress(file, interactionMenu, Embed); compress(file, interactionMenu, Embed);
if (interaction.isMessage) cleanUp(); if (interaction.isMessage) cleanUp();

View file

@ -10,7 +10,11 @@ export default {
.addStringOption(option => .addStringOption(option =>
option.setName('feedback') option.setName('feedback')
.setDescription('The message you want to send me.') .setDescription('The message you want to send me.')
.setRequired(true)), .setRequired(true))
.addAttachmentOption(option =>
option.setName('image')
.setDescription('Optional attachment.')
.setRequired(false)),
category: 'utility', category: 'utility',
async execute(interaction, args) { async execute(interaction, args) {
const Embed = new EmbedBuilder() const Embed = new EmbedBuilder()
@ -27,7 +31,12 @@ export default {
} }
const channel = interaction.client.channels.resolve(feedbackChannelId); const channel = interaction.client.channels.resolve(feedbackChannelId);
if (args.image) {
channel.send({ embeds: [Embed], files: [args.image] });
}
else {
channel.send({ embeds: [Embed] }); channel.send({ embeds: [Embed] });
}
await interaction.reply({ content: 'Your feedback has been sent! Don\'t forget to have dm open if you want to get an answer from the dev!', ephemeral: true }); await interaction.reply({ content: 'Your feedback has been sent! Don\'t forget to have dm open if you want to get an answer from the dev!', ephemeral: true });
}, },
}; };

View file

@ -18,13 +18,13 @@ export default {
const row = new ActionRowBuilder() const row = new ActionRowBuilder()
.addComponents( .addComponents(
new ButtonBuilder() new ButtonBuilder()
.setCustomId('yes') .setCustomId(`yes${interaction.user.id}`)
.setLabel('Yes') .setLabel('Yes')
.setStyle(ButtonStyle.Primary), .setStyle(ButtonStyle.Primary),
) )
.addComponents( .addComponents(
new ButtonBuilder() new ButtonBuilder()
.setCustomId('no') .setCustomId(`no${interaction.user.id}`)
.setLabel('No') .setLabel('No')
.setStyle(ButtonStyle.Danger), .setStyle(ButtonStyle.Danger),
); );
@ -35,7 +35,7 @@ export default {
if (interaction.user !== interactionMenu.user) return; if (interaction.user !== interactionMenu.user) return;
if (!interactionMenu.isButton) return; if (!interactionMenu.isButton) return;
interactionMenu.update({ components: [] }); interactionMenu.update({ components: [] });
if (interactionMenu.customId === 'yes') { if (interactionMenu.customId === `yes${interaction.user.id}`) {
await db.optout.destroy({ where: { userID: interaction.user.id } }); await db.optout.destroy({ where: { userID: interaction.user.id } });
return interaction.editReply('You have successfully been opt in'); return interaction.editReply('You have successfully been opt in');
} }

View file

@ -4,6 +4,7 @@ import fs from 'node:fs';
import os from 'node:os'; import os from 'node:os';
import path from 'node:path'; import path from 'node:path';
import { exec } from 'node:child_process'; import { exec } from 'node:child_process';
const { NODE_ENV } = process.env;
export default { export default {
@ -68,6 +69,7 @@ async function gifski(output, input) {
if (stderr) { if (stderr) {
console.error(stderr); console.error(stderr);
} }
console.log(NODE_ENV === 'development' ? stdout : null);
resolve(); resolve();
}); });
}); });
@ -82,6 +84,7 @@ async function gifsicle(input, output) {
if (stderr) { if (stderr) {
console.error(stderr); console.error(stderr);
} }
console.log(NODE_ENV === 'development' ? stdout : null);
resolve(); resolve();
}); });
}); });

View file

@ -370,15 +370,17 @@ export default {
}; };
const args = {}; const args = {};
for (let i = 0; i < command.data.options.length; i++) { for (let i = 0, j = 0; i < command.data.options.length; i++, j++) {
if (!messageArgs[i]) continue; if (!messageArgs[i]) continue;
const arg = command.data.options[i]; const arg = command.data.options[j];
const type = arg.constructor.name.toLowerCase(); const type = arg.constructor.name.toLowerCase();
let payloadName = arg.name;
let payload = messageArgs[i]; let payload = messageArgs[i];
if (payload.startsWith('--')) { if (messageArgs[i].startsWith('--')) {
arg.name = payload.substring(2); payloadName = payload.substring(2);
payload = true; payload = true;
j--;
} }
else if (type.includes('mentionable')) { else if (type.includes('mentionable')) {
payload = message.mentions.members.first(); payload = message.mentions.members.first();
@ -387,7 +389,7 @@ export default {
payload = message.attachments.first(); payload = message.attachments.first();
} }
args[arg.name] = payload; args[payloadName] = payload;
} }
await command.execute(message, args, client); await command.execute(message, args, client);
} }

View file

@ -49,7 +49,11 @@ const commands = [
.addStringOption(option => .addStringOption(option =>
option.setName('feedback') option.setName('feedback')
.setDescription('The message you want to send me.') .setDescription('The message you want to send me.')
.setRequired(true)), .setRequired(true))
.addAttachmentOption(option =>
option.setName('image')
.setDescription('Optional attachment.')
.setRequired(false)),
new SlashCommandBuilder() new SlashCommandBuilder()
.setName('inspirobot') .setName('inspirobot')

View file

@ -1,5 +1,6 @@
import os from 'node:os'; import os from 'node:os';
import { exec } from 'node:child_process'; import { exec } from 'node:child_process';
const { NODE_ENV } = process.env;
export default { export default {
downloadVideo, downloadVideo,
@ -17,6 +18,7 @@ async function downloadVideo(urlArg, output, format = 'bestvideo*+bestaudio/best
if (stderr) { if (stderr) {
console.error(stderr); console.error(stderr);
} }
console.log(NODE_ENV === 'development' ? stdout : null);
resolve(); resolve();
}); });
}); });
@ -45,6 +47,7 @@ async function ffmpeg(command) {
if (stderr) { if (stderr) {
console.error(stderr); console.error(stderr);
} }
console.log(NODE_ENV === 'development' ? stdout : null);
resolve(); resolve();
}); });
}); });
@ -69,6 +72,7 @@ async function compressVideo(input, output, preset) {
if (stderr) { if (stderr) {
console.error(stderr); console.error(stderr);
} }
console.log(NODE_ENV === 'development' ? stdout : null);
resolve(); resolve();
}); });
}); });