aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Lee <andrew@alee14.me>2025-04-01 21:52:44 -0400
committerAndrew Lee <andrew@alee14.me>2025-04-01 21:52:44 -0400
commit657599acccf351c7c9366cec9f648b7496c89bdb (patch)
treed35ed13d5234312d8eef5f9584c46ebb16d4b155
parent43e2344173178a5945ddca24a9ef7c091269b040 (diff)
downloadAleeBot-657599acccf351c7c9366cec9f648b7496c89bdb.tar.gz
AleeBot-657599acccf351c7c9366cec9f648b7496c89bdb.tar.bz2
AleeBot-657599acccf351c7c9366cec9f648b7496c89bdb.zip
New commands (warn, adventure); Splitting log channels
-rw-r--r--bot/package.json2
-rw-r--r--bot/src/commands/adventure.js12
-rw-r--r--bot/src/commands/settings.js24
-rw-r--r--bot/src/commands/warn.js12
-rw-r--r--bot/src/db/migrations/20250401223204-rename-logchannelid.js45
-rw-r--r--bot/src/db/models/guild-settings.js10
-rw-r--r--bot/src/db/models/warn.js42
-rw-r--r--bot/src/events/GuildBanAdd.js4
-rw-r--r--bot/src/events/GuildBanRemove.js4
-rw-r--r--bot/src/events/GuildMemberAdd.js4
-rw-r--r--bot/src/events/GuildMemberRemove.js4
-rw-r--r--bot/src/events/GuildMemberUpdate.js4
-rw-r--r--bot/src/events/MessageBulkDelete.js4
-rw-r--r--bot/src/events/MessageDelete.js4
-rw-r--r--bot/src/events/MessageUpdate.js4
15 files changed, 156 insertions, 23 deletions
diff --git a/bot/package.json b/bot/package.json
index 17d7d66..ac40765 100644
--- a/bot/package.json
+++ b/bot/package.json
@@ -1,6 +1,6 @@
{
"name": "aleebot",
- "version": "4.0.0",
+ "version": "4.1.0 Beta",
"main": "src/bot.js",
"type": "module",
"author": "Andrew Lee",
diff --git a/bot/src/commands/adventure.js b/bot/src/commands/adventure.js
new file mode 100644
index 0000000..0565478
--- /dev/null
+++ b/bot/src/commands/adventure.js
@@ -0,0 +1,12 @@
+// The plan for this command is that the user can select a story, then the bot sends the story that the user selected, and it will be interactive
+// so it will be like an adventure story, and it will have multiple paths that the user can select.
+import { SlashCommandBuilder } from 'discord.js';
+
+export default {
+ data: new SlashCommandBuilder()
+ .setName('adventure')
+ .setDescription('Select an interactive story'),
+ async execute(interaction) {
+ return await interaction.reply('Hello world');
+ }
+};
diff --git a/bot/src/commands/settings.js b/bot/src/commands/settings.js
index 36fe4d9..872bbd7 100644
--- a/bot/src/commands/settings.js
+++ b/bot/src/commands/settings.js
@@ -13,8 +13,16 @@ export default {
.setDescription('Sets the settings for this guild.')
.addChannelOption(option =>
option
- .setName('log')
- .setDescription('Log channel.'))
+ .setName('memberlog')
+ .setDescription('Member Log channel.'))
+ .addChannelOption(option =>
+ option
+ .setName('messagelog')
+ .setDescription('Message Log channel.'))
+ .addChannelOption(option =>
+ option
+ .setName('warnlog')
+ .setDescription('Warn Log channel.'))
.addChannelOption(option =>
option
.setName('suggestion')
@@ -45,7 +53,9 @@ export default {
if (interaction.options.getSubcommand() === 'clear') {
await guildSettings.update({
- logChannelID: null,
+ memberLogChannelID: null,
+ messageLogChannelID: null,
+ warnLogChannelID: null,
suggestionsChannelID: null,
qotdChannelID: null,
qotdToggle: null,
@@ -62,7 +72,9 @@ export default {
// Handle clearing settings
if (areAllSettingsEmpty(interaction)) {
guildEmbed.addFields(
- { name: 'Logging', value: guildSetting?.logChannelID ? `<#${guildSetting.logChannelID}>` : 'N/A', inline: true },
+ { name: 'Member Log', value: guildSetting?.memberLogChannelID ? `<#${guildSetting.memberLogChannelID}>` : 'N/A', inline: true },
+ { name: 'Message Log', value: guildSetting?.messageLogChannelID ? `<#${guildSetting.messageLogChannelID}>` : 'N/A', inline: true },
+ { name: 'Warn Log', value: guildSetting?.warnLogChannelID ? `<#${guildSetting.warnLogChannelID}>` : 'N/A', inline: true },
{ name: 'Suggestions', value: guildSetting?.suggestionsChannelID ? `<#${guildSetting.suggestionsChannelID}>` : 'N/A', inline: true },
{ name: 'QOTD Channel', value: guildSetting?.qotdChannelID ? `<#${guildSetting.qotdChannelID}>` : 'N/A', inline: true },
{ name: 'LLM Chatbot', value: guildSetting?.ollamaEnabled ? 'Enabled' : 'Disabled', inline: true },
@@ -73,7 +85,9 @@ export default {
// Process each setting type
guildEmbed.setDescription('Updated this setting.');
- await updateChannelSetting(interaction, guildEmbed, 'log', 'logChannelID', 'Logging');
+ await updateChannelSetting(interaction, guildEmbed, 'memberlog', 'memberLogChannelID', 'Member Log');
+ await updateChannelSetting(interaction, guildEmbed, 'messagelog', 'messageLogChannelID', 'Message Log');
+ await updateChannelSetting(interaction, guildEmbed, 'warnlog', 'warnLogChannelID', 'Warn Log');
await updateChannelSetting(interaction, guildEmbed, 'suggestion', 'suggestionsChannelID', 'Suggestions');
await updateChannelSetting(interaction, guildEmbed, 'qotd', 'qotdChannelID', 'QOTD Channel');
await updateBooleanSetting(interaction, guildEmbed, 'qotdtoggle', 'qotdToggle', 'Quote of the Day');
diff --git a/bot/src/commands/warn.js b/bot/src/commands/warn.js
new file mode 100644
index 0000000..a053c12
--- /dev/null
+++ b/bot/src/commands/warn.js
@@ -0,0 +1,12 @@
+import { PermissionFlagsBits, SlashCommandBuilder } from 'discord.js';
+
+export default {
+ data: new SlashCommandBuilder()
+ .setName('warn')
+ .setDescription('Warns a member of the server')
+ .setContexts(0)
+ .setDefaultMemberPermissions(PermissionFlagsBits.KickMembers),
+ async execute(interaction) {
+ return await interaction.reply('Hello world');
+ }
+};
diff --git a/bot/src/db/migrations/20250401223204-rename-logchannelid.js b/bot/src/db/migrations/20250401223204-rename-logchannelid.js
new file mode 100644
index 0000000..2313c4f
--- /dev/null
+++ b/bot/src/db/migrations/20250401223204-rename-logchannelid.js
@@ -0,0 +1,45 @@
+'use strict';
+
+/** @type {import('sequelize-cli').Migration} */
+export const up = async (queryInterface, Sequelize) => {
+// Assuming we have a table in SQLite created as follows:
+ await queryInterface.createTable('guild-settings', {
+ id: {
+ type: Sequelize.INTEGER,
+ primaryKey: true,
+ autoIncrement: true,
+ },
+ guildID: {
+ type: Sequelize.STRING,
+ allowNull: false
+ },
+ memberLogChannelID: {
+ type: Sequelize.STRING,
+ allowNull: true
+ },
+ messageLogChannelID: {
+ type: Sequelize.STRING,
+ allowNull: true
+ },
+ suggestionsChannelID: {
+ type: Sequelize.STRING,
+ allowNull: true
+ },
+ qotdChannelID: {
+ type: Sequelize.STRING,
+ allowNull: true
+ },
+ qotdToggle: {
+ type: Sequelize.BOOLEAN,
+ allowNull: true
+ },
+ ollamaEnabled: {
+ type: Sequelize.BOOLEAN,
+ allowNull: true
+ },
+ });
+};
+
+export const down = async (queryInterface) => {
+
+};
diff --git a/bot/src/db/models/guild-settings.js b/bot/src/db/models/guild-settings.js
index c6bcaa4..09cddd2 100644
--- a/bot/src/db/models/guild-settings.js
+++ b/bot/src/db/models/guild-settings.js
@@ -11,7 +11,15 @@ export const guildSettings = sequelize.define('guild-settings', {
type: STRING,
allowNull: false
},
- logChannelID: {
+ memberLogChannelID: {
+ type: STRING,
+ allowNull: true
+ },
+ messageLogChannelID: {
+ type: STRING,
+ allowNull: true
+ },
+ warnLogChannelID: {
type: STRING,
allowNull: true
},
diff --git a/bot/src/db/models/warn.js b/bot/src/db/models/warn.js
new file mode 100644
index 0000000..d766238
--- /dev/null
+++ b/bot/src/db/models/warn.js
@@ -0,0 +1,42 @@
+import { INTEGER, STRING } from 'sequelize';
+import { sequelize } from '../../utils/sequelize.js';
+
+export const warnSettings = sequelize.define('warn-settings', {
+ id: {
+ type: INTEGER,
+ primaryKey: true,
+ autoIncrement: true,
+ },
+ guildID: {
+ type: STRING,
+ allowNull: false
+ },
+ strikes: {
+ type: STRING,
+ allowNull: false
+ },
+ punishment: {
+ type: STRING,
+ allowNull: false
+ }
+});
+
+export const warnLog = sequelize.define('warn-log', {
+ id: {
+ type: INTEGER,
+ primaryKey: true,
+ autoIncrement: true,
+ },
+ guildID: {
+ type: STRING,
+ allowNull: false
+ },
+ userID: {
+ type: STRING,
+ allowNull: false
+ },
+ reason: {
+ type: STRING,
+ allowNull: false
+ }
+});
diff --git a/bot/src/events/GuildBanAdd.js b/bot/src/events/GuildBanAdd.js
index 1ea9df5..10a7c6e 100644
--- a/bot/src/events/GuildBanAdd.js
+++ b/bot/src/events/GuildBanAdd.js
@@ -6,7 +6,7 @@ export default {
async execute(ban) {
try {
const guildSetting = await guildSettings.findOne({ where: { guildID: ban.guild.id } });
- if (!guildSetting || !guildSetting.logChannelID) return;
+ if (!guildSetting || !guildSetting.memberLogChannelID) return;
const banLog = await ban.guild.fetchAuditLogs({
type: AuditLogEvent.MemberBanAdd,
@@ -26,7 +26,7 @@ export default {
.setColor('#ff021b')
.setTimestamp();
- let banMessage = ban.guild.client.channels.cache.get(guildSetting.logChannelID);
+ let banMessage = ban.guild.client.channels.cache.get(guildSetting.memberLogChannelID);
if (!banMessage) return;
await banMessage.send({ embeds: [logEmbed] });
diff --git a/bot/src/events/GuildBanRemove.js b/bot/src/events/GuildBanRemove.js
index 976145d..9b3524c 100644
--- a/bot/src/events/GuildBanRemove.js
+++ b/bot/src/events/GuildBanRemove.js
@@ -6,7 +6,7 @@ export default {
async execute(ban) {
try {
const guildSetting = await guildSettings.findOne({ where: { guildID: ban.guild.id } });
- if (!guildSetting || !guildSetting.logChannelID) return;
+ if (!guildSetting || !guildSetting.memberLogChannelID) return;
const logEmbed = new EmbedBuilder()
.setAuthor({ name: 'AleeBot Logging', iconURL: ban.guild.client.user.avatarURL() })
@@ -18,7 +18,7 @@ export default {
.setColor('#ff021b')
.setTimestamp();
- let banMessage = ban.guild.client.channels.cache.get(guildSetting.logChannelID);
+ let banMessage = ban.guild.client.channels.cache.get(guildSetting.memberLogChannelID);
if (!banMessage) return;
await banMessage.send({ embeds: [logEmbed] });
diff --git a/bot/src/events/GuildMemberAdd.js b/bot/src/events/GuildMemberAdd.js
index 9c3df76..312f195 100644
--- a/bot/src/events/GuildMemberAdd.js
+++ b/bot/src/events/GuildMemberAdd.js
@@ -7,7 +7,7 @@ export default {
async execute(member) {
try {
const guildSetting = await guildSettings.findOne({ where: { guildID: member.guild.id } });
- if (!guildSetting || !guildSetting.logChannelID) return;
+ if (!guildSetting || !guildSetting.memberLogChannelID) return;
const logEmbed = new EmbedBuilder()
.setAuthor({ name: 'AleeBot Logging', iconURL: member.client.user.avatarURL() })
@@ -20,7 +20,7 @@ export default {
.setColor('#4bff31')
.setTimestamp();
- let guildMember = member.client.channels.cache.get(guildSetting.logChannelID);
+ let guildMember = member.client.channels.cache.get(guildSetting.memberLogChannelID);
if (!guildMember) return;
await guildMember.send({ embeds: [logEmbed] });
diff --git a/bot/src/events/GuildMemberRemove.js b/bot/src/events/GuildMemberRemove.js
index e89c2c4..d330609 100644
--- a/bot/src/events/GuildMemberRemove.js
+++ b/bot/src/events/GuildMemberRemove.js
@@ -6,7 +6,7 @@ export default {
async execute(member) {
try {
const guildSetting = await guildSettings.findOne({ where: { guildID: member.guild.id } });
- if (!guildSetting || !guildSetting.logChannelID) return;
+ if (!guildSetting || !guildSetting.memberLogChannelID) return;
const logEmbed = new EmbedBuilder()
.setAuthor({ name: 'AleeBot Logging', iconURL: member.client.user.avatarURL() })
@@ -18,7 +18,7 @@ export default {
.setColor('#ec2727')
.setTimestamp();
- let guildMember = member.client.channels.cache.get(guildSetting.logChannelID);
+ let guildMember = member.client.channels.cache.get(guildSetting.memberLogChannelID);
if (!guildMember) return;
await guildMember.send({ embeds: [logEmbed] });
diff --git a/bot/src/events/GuildMemberUpdate.js b/bot/src/events/GuildMemberUpdate.js
index b9185cf..33d4c71 100644
--- a/bot/src/events/GuildMemberUpdate.js
+++ b/bot/src/events/GuildMemberUpdate.js
@@ -7,7 +7,7 @@ export default {
try {
if (member.nickname === newMember.nickname) return;
const guildSetting = await guildSettings.findOne({ where: { guildID: member.guild.id } });
- if (!guildSetting || !guildSetting.logChannelID) return;
+ if (!guildSetting || !guildSetting.memberLogChannelID) return;
const logEmbed = new EmbedBuilder()
.setAuthor({ name: 'AleeBot Logging', iconURL: member.client.user.avatarURL() })
@@ -19,7 +19,7 @@ export default {
.setColor('#ffff1a')
.setTimestamp();
- let guildMember = member.client.channels.cache.get(guildSetting.logChannelID);
+ let guildMember = member.client.channels.cache.get(guildSetting.memberLogChannelID);
if (!guildMember) return;
await guildMember.send({ embeds: [logEmbed] });
diff --git a/bot/src/events/MessageBulkDelete.js b/bot/src/events/MessageBulkDelete.js
index 583c6d2..a31638f 100644
--- a/bot/src/events/MessageBulkDelete.js
+++ b/bot/src/events/MessageBulkDelete.js
@@ -6,7 +6,7 @@ export default {
async execute(msg, channel) {
try {
const guildSetting = await guildSettings.findOne({ where: { guildID: channel.guild.id } });
- if (!guildSetting || !guildSetting.logChannelID) return;
+ if (!guildSetting || !guildSetting.messageLogChannelID) return;
const logEmbed = new EmbedBuilder()
.setAuthor({ name: 'AleeBot Logging', iconURL: channel.client.user.avatarURL() })
@@ -26,7 +26,7 @@ export default {
const messageContent = messages.join('\n');
const attachment = new AttachmentBuilder(Buffer.from(messageContent, 'utf-8'), { name: 'messages.txt' });
- let deleteMessage = channel.client.channels.cache.get(guildSetting.logChannelID);
+ let deleteMessage = channel.client.channels.cache.get(guildSetting.messageLogChannelID);
if (!deleteMessage) return;
await deleteMessage.send({ embeds: [logEmbed], files: [attachment] });
diff --git a/bot/src/events/MessageDelete.js b/bot/src/events/MessageDelete.js
index d318105..4620071 100644
--- a/bot/src/events/MessageDelete.js
+++ b/bot/src/events/MessageDelete.js
@@ -8,7 +8,7 @@ export default {
if (!msg.content) return;
const guildSetting = await guildSettings.findOne({ where: { guildID: msg.guild.id } });
- if (!guildSetting || !guildSetting.logChannelID) return;
+ if (!guildSetting || !guildSetting.messageLogChannelID) return;
const useEmbedFields = msg.content.length <= 1024;
@@ -23,7 +23,7 @@ export default {
logEmbed.addFields({ name: 'Deleted Message: ', value: `\`\`\`\n${msg.content}\n\`\`\`` });
}
- let deleteMessage = msg.client.channels.cache.get(guildSetting.logChannelID);
+ let deleteMessage = msg.client.channels.cache.get(guildSetting.messageLogChannelID);
if (!deleteMessage) return;
if (useEmbedFields) {
diff --git a/bot/src/events/MessageUpdate.js b/bot/src/events/MessageUpdate.js
index 00c605a..f960166 100644
--- a/bot/src/events/MessageUpdate.js
+++ b/bot/src/events/MessageUpdate.js
@@ -6,7 +6,7 @@ export default {
async execute(msg, newmsg) {
try {
const guildSetting = await guildSettings.findOne({ where: { guildID: msg.guild.id } });
- if (!msg.guild || !guildSetting || !guildSetting.logChannelID) return;
+ if (!msg.guild || !guildSetting || !guildSetting.messageLogChannelID) return;
if (msg.content === newmsg.content) return;
const useEmbedFields = msg.content.length <= 1024 &&
@@ -26,7 +26,7 @@ export default {
);
}
- let editMessage = msg.client.channels.cache.get(guildSetting.logChannelID);
+ let editMessage = msg.client.channels.cache.get(guildSetting.messageLogChannelID);
if (!editMessage) return;
if (useEmbedFields) {