bansync/interactions/commands/guild.js
2026-01-17 16:05:33 -07:00

143 lines
6.9 KiB
JavaScript

// Guild subcommands
const colors = require('colors');
module.exports = async (interaction, db, client) => {
if (interaction.commandName !== 'guild') return;
const subcommand = interaction.options.getSubcommand();
switch (subcommand) {
case 'autoadd':
{
const listId = interaction.options.getString('list_id');
const enabled = interaction.options.getBoolean('enabled');
// Check if the guild is joined to the list
db.get(`SELECT * FROM guilds WHERE guild_id = ? AND list_id = ?`, [interaction.guild.id, listId], (err, row) => {
if (err) {
console.error(err);
return interaction.reply({ content: '❌ An error occurred while accessing the database.', ephemeral: true });
}
if (!row) {
return interaction.reply({ content: '❌ This guild is not joined to the specified ban list.', ephemeral: true });
}
// Update auto_add setting
db.run(`UPDATE guilds SET auto_add = ? WHERE guild_id = ? AND list_id = ?`, [enabled ? 1 : 0, interaction.guild.id, listId], (err) => {
if (err) {
console.error(err);
return interaction.reply({ content: '❌ An error occurred while updating the database.', ephemeral: true });
}
interaction.reply({ content: `✅ Auto-add from the ban list has been ${enabled ? 'enabled' : 'disabled'}.`, ephemeral: true });
});
});
}
break;
case 'autoremove':
{
const listId = interaction.options.getString('list_id');
const enabled = interaction.options.getBoolean('enabled');
// Check if the guild is joined to the list
db.get(`SELECT * FROM guilds WHERE guild_id = ? AND list_id = ?`, [interaction.guild.id, listId], (err, row) => {
if (err) {
console.error(err);
return interaction.reply({ content: '❌ An error occurred while accessing the database.', ephemeral: true });
}
if (!row) {
return interaction.reply({ content: '❌ This guild is not joined to the specified ban list.', ephemeral: true });
}
// Update auto_remove setting
db.run(`UPDATE guilds SET auto_remove = ? WHERE guild_id = ? AND list_id = ?`, [enabled ? 1 : 0, interaction.guild.id, listId], (err) => {
if (err) {
console.error(err);
return interaction.reply({ content: '❌ An error occurred while updating the database.', ephemeral: true });
}
interaction.reply({ content: `✅ Auto-remove from the ban list has been ${enabled ? 'enabled' : 'disabled'}.`, ephemeral: true });
});
});
}
break;
case "join":
{
// then fucking impliment it
const listId = interaction.options.getString('list_id');
// Check if the list exists
db.get(`SELECT * FROM lists WHERE id = ?`, [listId], (err, list) => {
if (err) {
console.error(err);
return interaction.reply({ content: '❌ An error occurred while accessing the database.', ephemeral: true });
}
if (!list) {
return interaction.reply({ content: '❌ The specified ban list does not exist.', ephemeral: true });
}
// Check if the guild is already joined to the list
db.get(`SELECT * FROM guilds WHERE guild_id = ? AND list_id = ?`, [interaction.guild.id, listId], (err, row) => {
if (err) {
console.error(err);
return interaction.reply({ content: '❌ An error occurred while accessing the database.', ephemeral: true });
}
if (row) {
return interaction.reply({ content: '❌ This guild is already joined to the specified ban list.', ephemeral: true });
}
// Join the guild to the list
db.run(`INSERT INTO guilds (guild_id, list_id, auto_add, auto_remove) VALUES (?, ?, 0, 0)`, [interaction.guild.id, listId], (err) => {
if (err) {
console.error(err);
return interaction.reply({ content: '❌ An error occurred while updating the database.', ephemeral: true });
}
interaction.reply({ content: `✅ This guild has successfully joined the ban list "${list.name}".`, ephemeral: true });
});
});
});
}
break;
case "leave":
{
const listId = interaction.options.getString('list_id');
// Check if the guild is joined to the list
db.get(`SELECT * FROM guilds WHERE guild_id = ? AND list_id = ?`, [interaction.guild.id, listId], (err, row) => {
if (err) {
console.error(err);
return interaction.reply({ content: '❌ An error occurred while accessing the database.', ephemeral: true });
}
if (!row) {
return interaction.reply({ content: '❌ This guild is not joined to the specified ban list.', ephemeral: true });
}
// Leave the guild from the list
db.run(`DELETE FROM guilds WHERE guild_id = ? AND list_id = ?`, [interaction.guild.id, listId], (err) => {
if (err) {
console.error(err);
return interaction.reply({ content: '❌ An error occurred while updating the database.', ephemeral: true });
}
interaction.reply({ content: `✅ This guild has successfully left the ban list.`, ephemeral: true });
});
});
}
break;
case 'sync':
{
// Manual sync logic to be implemented
await interaction.reply({ content: '🔄 Manual sync initiated. (Not yet implemented)', ephemeral: true });
}
break;
default:
await interaction.reply({ content: '❌ Unknown subcommand.', ephemeral: true });
}
};