Skip to content

Commit 3f4ce01

Browse files
committed
Additional mysql conversions + bug fixes
1 parent 7ccb334 commit 3f4ce01

File tree

10 files changed

+177
-78
lines changed

10 files changed

+177
-78
lines changed

commands/Moderator/ban.js

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
const Command = require('../../base/Command.js');
22
const { EmbedBuilder } = require('discord.js');
3-
const { QuickDB } = require('quick.db');
4-
const db = new QuickDB();
53

64
class Ban extends Command {
75
constructor(client) {
@@ -21,7 +19,6 @@ class Ban extends Command {
2119
return this.client.util.errorEmbed(msg, 'The bot is missing Ban Members permission.');
2220

2321
const successColor = msg.settings.embedSuccessColor;
24-
const logChan = await db.get(`servers.${msg.guild.id}.logs.channel`);
2522
const regex = /^\d{17,19}$/;
2623

2724
let banMem = await this.client.util.getMember(msg, args[0]);
@@ -60,7 +57,23 @@ class Ban extends Command {
6057

6158
msg.guild.members.ban(banMem, { reason });
6259

63-
if (logChan) {
60+
const [logRows] = await this.client.db.execute(
61+
/* sql */ `
62+
SELECT
63+
channel_id,
64+
member_banned,
65+
no_log_channels
66+
FROM
67+
log_settings
68+
WHERE
69+
server_id = ?
70+
`,
71+
[msg.guild.id],
72+
);
73+
const logChannelID = logRows[0].channel_id;
74+
const logSystem = logRows[0].member_banned;
75+
76+
if (logRows.length && logChannelID && logSystem === 1) {
6477
// Embed for reply
6578
const em2 = new EmbedBuilder()
6679
.setTitle('User Banned')
@@ -69,7 +82,7 @@ class Ban extends Command {
6982
.setDescription('Full info posted in the log channel.');
7083

7184
const reply = await msg.channel.send({ embeds: [em2] });
72-
msg.guild.channels.cache.get(logChan).send({ embeds: [em] });
85+
msg.guild.channels.cache.get(logChannelID).send({ embeds: [em] });
7386

7487
setTimeout(() => {
7588
reply.delete();

commands/Moderator/kick.js

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
const Command = require('../../base/Command.js');
22
const { EmbedBuilder } = require('discord.js');
3-
const { QuickDB } = require('quick.db');
4-
const db = new QuickDB();
53

64
class Kick extends Command {
75
constructor(client) {
@@ -18,10 +16,10 @@ class Kick extends Command {
1816

1917
async run(msg, args) {
2018
if (msg.guild.members.me.permissions.has('ManageMessages')) msg.delete();
21-
if (!msg.guild.members.me.permissions.has('KickMembers'))
19+
if (!msg.guild.members.me.permissions.has('KickMembers')) {
2220
return this.client.util.errorEmbed(msg, 'The bot is missing the Kick Members permission.');
21+
}
2322

24-
const logChan = await db.get(`servers.${msg.guild.id}.logs.channel`);
2523
const kickMem = await this.client.util.getMember(msg, args[0]);
2624
if (!kickMem) return this.client.util.errorEmbed(msg, 'Member is either not in server or is invalid.');
2725
if (!kickMem.kickable) return this.client.util.errorEmbed(msg, 'The member is not kickable by the bot.');
@@ -32,6 +30,22 @@ class Kick extends Command {
3230

3331
kickMem.kick(reason);
3432

33+
const [logRows] = await this.client.db.execute(
34+
/* sql */ `
35+
SELECT
36+
channel_id,
37+
member_kicked,
38+
no_log_channels
39+
FROM
40+
log_settings
41+
WHERE
42+
server_id = ?
43+
`,
44+
[msg.guild.id],
45+
);
46+
const logChannelID = logRows[0].channel_id;
47+
const logSystem = logRows[0].member_kicked;
48+
3549
const em = new EmbedBuilder()
3650
.setTitle('User Kicked')
3751
.setAuthor({ name: msg.member.displayName, iconURL: msg.member.displayAvatarURL() })
@@ -44,15 +58,15 @@ class Kick extends Command {
4458
.setFooter({ text: `User ID: ${kickMem.id}` })
4559
.setTimestamp();
4660

47-
if (logChan) {
61+
if (logRows.length && logChannelID && logSystem === 1) {
4862
const em2 = new EmbedBuilder()
4963
.setTitle('User Kicked')
5064
.setColor('#FFA500')
5165
.setAuthor({ name: msg.member.displayName, iconURL: msg.member.displayAvatarURL() })
5266
.setDescription('Full info posted in the log channel.');
5367

5468
const reply = await msg.channel.send({ embeds: [em2] });
55-
msg.guild.channels.cache.get(logChan).send({ embeds: [em] });
69+
msg.guild.channels.cache.get(logChannelID).send({ embeds: [em] });
5670
setTimeout(() => {
5771
reply.delete();
5872
}, 30000);

commands/Moderator/unban.js

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
const Command = require('../../base/Command.js');
22
const { EmbedBuilder } = require('discord.js');
3-
const { QuickDB } = require('quick.db');
4-
const db = new QuickDB();
53

64
class Unban extends Command {
75
constructor(client) {
@@ -17,10 +15,9 @@ class Unban extends Command {
1715
}
1816

1917
async run(msg, args) {
20-
if (!msg.guild.members.me.permissions.has('BanMembers'))
18+
if (!msg.guild.members.me.permissions.has('BanMembers')) {
2119
return msg.channel.send('The bot is missing Ban Members permission.');
22-
23-
const logChan = await db.get(`servers.${msg.guild.id}.logs.channel`);
20+
}
2421

2522
// Regex to check if the input for userID is a number
2623
const regex = /\d+/g;
@@ -29,7 +26,11 @@ class Unban extends Command {
2926
const reason = args.join(' ');
3027
const successColor = msg.settings.embedSuccessColor;
3128

32-
if (!userID.matches(regex)) return msg.channel.send(`Please provide a valid User ID. \nInput: ${userID}`);
29+
if (!userID.matches(regex)) {
30+
return msg.channel.send(
31+
`Please provide a valid User ID. \nInput: ${this.client.util.clean(this.client, userID)}`,
32+
);
33+
}
3334
if (msg.guild.members.me.permissions.has('ManageMessages')) msg.delete();
3435

3536
try {
@@ -42,6 +43,23 @@ class Unban extends Command {
4243
const unbanP = await msg.guild.members.unban(userID, { reason }).catch((err) => {
4344
return msg.channel.send(`An error occurred: ${err}`);
4445
});
46+
47+
const [logRows] = await this.client.db.execute(
48+
/* sql */ `
49+
SELECT
50+
channel_id,
51+
member_banned,
52+
no_log_channels
53+
FROM
54+
log_settings
55+
WHERE
56+
server_id = ?
57+
`,
58+
[msg.guild.id],
59+
);
60+
const logChannelID = logRows[0].channel_id;
61+
const logSystem = logRows[0].member_banned;
62+
4563
const embed = new EmbedBuilder()
4664
.setTitle('Member Unbanned')
4765
.setAuthor({ name: msg.member.displayName, iconURL: msg.member.displayAvatarURL() })
@@ -54,14 +72,14 @@ class Unban extends Command {
5472
.setFooter({ text: `ID: ${unbanP.id}` })
5573
.setTimestamp();
5674

57-
if (logChan) {
75+
if (logRows.length && logChannelID && logSystem === 1) {
5876
const em2 = new EmbedBuilder()
5977
.setTitle('User unbanned')
6078
.setColor(successColor)
6179
.setAuthor({ name: msg.member.displayName, iconURL: msg.member.displayAvatarURL() })
6280
.setDescription('Full info posted in the log channel.');
6381

64-
msg.guild.channels.cache.get(logChan).send({ embeds: [embed] });
82+
msg.guild.channels.cache.get(logChannelID).send({ embeds: [embed] });
6583
return msg.channel.send({ embeds: [em2] }).then((msg) => {
6684
setTimeout(() => msg.delete(), 30000);
6785
});

events/Guild/guildCreate.mjs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
import { QuickDB } from 'quick.db';
2-
const db = new QuickDB();
3-
41
export async function run(client, guild) {
52
// Wait 1 second to try and solve guild somehow being undefined
63
client.util.wait(1000);
@@ -11,11 +8,6 @@ export async function run(client, guild) {
118
);
129
client.logger.log(`New guild has been joined: ${guild.name} (${guild.id}) with ${guild.memberCount - 1} members`);
1310

14-
const leaveTimestamp = await db.get(`servers.${guild.id}.leave_timestamp`);
15-
if (leaveTimestamp) {
16-
await db.delete(`servers.${guild.id}.leave_timestamp`);
17-
}
18-
1911
const [timestampRows] = await client.db.execute(
2012
/* sql */ `
2113
SELECT

events/Guild/guildDelete.mjs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
import { QuickDB } from 'quick.db';
2-
const db = new QuickDB();
3-
41
export async function run(client, guild) {
52
// Wait 1 second to try and solve guild somehow being undefined
63
client.util.wait(1000);
@@ -13,8 +10,6 @@ export async function run(client, guild) {
1310
client.logger.log(`Left guild: ${guild.name} (${guild.id}) with ${guild.memberCount} members`);
1411
}
1512

16-
await db.set(`servers.${guild.id}.leave_timestamp`, Date.now());
17-
1813
const timestamp = Date.now();
1914
await client.db.execute(
2015
/* sql */ `

index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -899,6 +899,8 @@ const loadMysql = async () => {
899899
member_join BOOLEAN DEFAULT FALSE,
900900
member_leave BOOLEAN DEFAULT FALSE,
901901
member_timeout BOOLEAN DEFAULT FALSE,
902+
member_kicked BOOLEAN DEFAULT FALSE,
903+
member_banned BOOLEAN DEFAULT FALSE,
902904
message_deleted BOOLEAN DEFAULT FALSE,
903905
message_updated BOOLEAN DEFAULT FALSE,
904906
role_created BOOLEAN DEFAULT FALSE,

slash_commands/Administrator/auto-role.js

Lines changed: 52 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
const { SlashCommandBuilder, InteractionContextType, EmbedBuilder } = require('discord.js');
2-
const { QuickDB } = require('quick.db');
3-
const db = new QuickDB();
42

53
exports.conf = {
64
permLevel: 'Administrator',
@@ -47,23 +45,46 @@ exports.run = async (interaction) => {
4745
.setColor(interaction.settings.embedColor)
4846
.setAuthor({ name: interaction.member.displayName, iconURL: interaction.member.displayAvatarURL() });
4947

48+
const [autoRoleRows] = await interaction.client.db.execute(
49+
/* sql */ `
50+
SELECT
51+
roles
52+
FROM
53+
auto_roles
54+
WHERE
55+
server_id = ?
56+
`,
57+
[interaction.guild.id],
58+
);
59+
let autoRoles = autoRoleRows[0]?.roles ? JSON.parse(autoRoleRows[0].roles) : [];
60+
5061
switch (type) {
5162
case 'add': {
52-
const autoRoles = (await db.get(`servers.${interaction.guild.id}.autoRoles`)) || [];
5363
if (autoRoles.includes(role.id)) {
5464
embed.setDescription('This role is already set as an auto-role.');
5565
return interaction.editReply({ embeds: [embed] });
5666
}
5767

5868
autoRoles.push(role.id);
59-
await db.set(`servers.${interaction.guild.id}.autoRoles`, autoRoles);
69+
await interaction.client.db.execute(
70+
/* sql */
71+
`
72+
INSERT INTO
73+
auto_roles (server_id, roles)
74+
VALUES
75+
(?, ?) ON DUPLICATE KEY
76+
UPDATE roles =
77+
VALUES
78+
(roles)
79+
`,
80+
[interaction.guild.id, JSON.stringify(autoRoles)],
81+
);
6082

6183
embed.setDescription(`The ${role} role will be given to all new members when they join the server.`);
6284
return interaction.editReply({ embeds: [embed] });
6385
}
6486

6587
case 'remove': {
66-
let autoRoles = (await db.get(`servers.${interaction.guild.id}.autoRoles`)) || [];
6788
if (!autoRoles.includes(role.id)) {
6889
embed
6990
.setDescription(`The ${role} role is not as as an auto-role.`)
@@ -72,15 +93,25 @@ exports.run = async (interaction) => {
7293
}
7394

7495
autoRoles = autoRoles.filter((r) => r !== role.id);
75-
await db.set(`servers.${interaction.guild.id}.autoRoles`, autoRoles);
96+
await interaction.client.db.execute(
97+
/* sql */
98+
`
99+
INSERT INTO
100+
auto_roles (server_id, roles)
101+
VALUES
102+
(?, ?) ON DUPLICATE KEY
103+
UPDATE roles =
104+
VALUES
105+
(roles)
106+
`,
107+
[interaction.guild.id, JSON.stringify(autoRoles)],
108+
);
76109

77110
embed.setDescription(`The ${role} role will no longer be given to new members when they join the server.`);
78111
return interaction.editReply({ embeds: [embed] });
79112
}
80113

81114
case 'list': {
82-
const autoRoles = (await db.get(`servers.${interaction.guild.id}.autoRoles`)) || [];
83-
84115
// Fetch all roles to ensure uncached roles are included
85116
const allRoles = await interaction.guild.roles.fetch();
86117

@@ -89,7 +120,19 @@ exports.run = async (interaction) => {
89120

90121
// Update the database if roles were removed
91122
if (validRoles.length !== autoRoles.length) {
92-
await db.set(`servers.${interaction.guild.id}.autoRoles`, validRoles);
123+
await interaction.client.db.execute(
124+
/* sql */
125+
`
126+
INSERT INTO
127+
auto_roles (server_id, roles)
128+
VALUES
129+
(?, ?) ON DUPLICATE KEY
130+
UPDATE roles =
131+
VALUES
132+
(roles)
133+
`,
134+
[interaction.guild.id, JSON.stringify(validRoles)],
135+
);
93136
}
94137

95138
// If no valid roles remain, send an appropriate message

0 commit comments

Comments
 (0)