aboutsummaryrefslogtreecommitdiff
path: root/bot/src/events
diff options
context:
space:
mode:
authorAndrew Lee <andrew@alee14.me>2025-03-04 10:05:14 -0500
committerAndrew Lee <andrew@alee14.me>2025-03-04 10:05:14 -0500
commitcc06b8ed4e4e0aef02dfd8ab15df22a57a177a0a (patch)
treedeffb57bee9fe24a8d1b8143fba603774544ee00 /bot/src/events
parent11bb9ab6b30314d91209bc9888d95783cc247e98 (diff)
downloadAleeBot-cc06b8ed4e4e0aef02dfd8ab15df22a57a177a0a.tar.gz
AleeBot-cc06b8ed4e4e0aef02dfd8ab15df22a57a177a0a.tar.bz2
AleeBot-cc06b8ed4e4e0aef02dfd8ab15df22a57a177a0a.zip
Readme change; Docker; Logging
Diffstat (limited to 'bot/src/events')
-rw-r--r--bot/src/events/ClientReady.js4
-rw-r--r--bot/src/events/GuildBanAdd.js25
-rw-r--r--bot/src/events/GuildBanRemove.js25
-rw-r--r--bot/src/events/GuildCreate.js3
-rw-r--r--bot/src/events/GuildDelete.js14
-rw-r--r--bot/src/events/GuildMemberAdd.js26
-rw-r--r--bot/src/events/GuildMemberRemove.js25
-rw-r--r--bot/src/events/MessageCreate.js48
-rw-r--r--bot/src/events/MessageDelete.js25
-rw-r--r--bot/src/events/MessageUpdate.js27
10 files changed, 190 insertions, 32 deletions
diff --git a/bot/src/events/ClientReady.js b/bot/src/events/ClientReady.js
index def2c88..af03e25 100644
--- a/bot/src/events/ClientReady.js
+++ b/bot/src/events/ClientReady.js
@@ -22,7 +22,7 @@ function botActivity(client) {
export default {
name: Events.ClientReady,
once: true,
- execute(client) {
+ async execute(client) {
console.log('[>] AleeBot is now ready!');
console.log(`[i] Logged in as ${client.user.tag}`);
console.log(`[i] Bot ID: ${client.user.id}`);
@@ -44,7 +44,7 @@ export default {
let statusChannel = client.channels.cache.get(process.env.statusChannelID);
if (!statusChannel) return console.error('The status channel does not exist! Skipping.');
- statusChannel.send({ embeds: [readyEmbed]});
+ await statusChannel.send({ embeds: [readyEmbed]});
}
setInterval(function() {
diff --git a/bot/src/events/GuildBanAdd.js b/bot/src/events/GuildBanAdd.js
new file mode 100644
index 0000000..1e52040
--- /dev/null
+++ b/bot/src/events/GuildBanAdd.js
@@ -0,0 +1,25 @@
+import { EmbedBuilder, Events } from 'discord.js';
+import { guildSettings } from '../models/guild-settings.js';
+
+export default {
+ name: Events.GuildBanAdd,
+ async execute(guild, user) {
+ const guildSetting = await guildSettings.findOne({ where: { guildID: guild.id } });
+ if (!guildSetting || !guildSetting.logChannelID) return;
+
+ const logEmbed = new EmbedBuilder()
+ .setAuthor({ name: 'AleeBot Logging', iconURL: guild.client.user.avatarURL() })
+ .setDescription(`This user got banned from ${guild.name}`)
+ .addFields(
+ { name: 'User:', value: `${user.tag}` },
+ { name: 'User ID:', value: `${user.id}`}
+ )
+ .setColor('#ff021b')
+ .setTimestamp();
+
+ let banMessage = guild.client.channels.cache.get(guildSetting.logChannelID);
+ if (!banMessage) return;
+
+ await banMessage.send({ embeds: [logEmbed]});
+ }
+};
diff --git a/bot/src/events/GuildBanRemove.js b/bot/src/events/GuildBanRemove.js
new file mode 100644
index 0000000..5b2e22c
--- /dev/null
+++ b/bot/src/events/GuildBanRemove.js
@@ -0,0 +1,25 @@
+import { EmbedBuilder, Events } from 'discord.js';
+import { guildSettings } from '../models/guild-settings.js';
+
+export default {
+ name: Events.GuildBanRemove,
+ async execute(guild, user) {
+ const guildSetting = await guildSettings.findOne({ where: { guildID: guild.id } });
+ if (!guildSetting || !guildSetting.logChannelID) return;
+
+ const logEmbed = new EmbedBuilder()
+ .setAuthor({ name: 'AleeBot Logging', iconURL: guild.client.user.avatarURL() })
+ .setDescription(`This user got unbanned from ${guild.name}`)
+ .addFields(
+ { name: 'User:', value: `${user.tag}` },
+ { name: 'User ID:', value: `${user.id}`}
+ )
+ .setColor('#ff021b')
+ .setTimestamp();
+
+ let banMessage = guild.client.channels.cache.get(guildSetting.logChannelID);
+ if (!banMessage) return;
+
+ await banMessage.send({ embeds: [logEmbed]});
+ }
+};
diff --git a/bot/src/events/GuildCreate.js b/bot/src/events/GuildCreate.js
index 565d8f2..7bcd0d1 100644
--- a/bot/src/events/GuildCreate.js
+++ b/bot/src/events/GuildCreate.js
@@ -13,12 +13,11 @@ export default {
{ name: 'Server ID:', value: `${guild.id}`, inline: true },
{ name: 'Members', value: `${guild.memberCount}`, inline: true }
)
-
.setColor(abEmbedColour)
.setFooter({ text: `We now run on ${guild.client.guilds.cache.size} guilds.` });
let statusChannel = guild.client.channels.cache.get(process.env.statusChannelID);
if (!statusChannel) return;
- statusChannel.send({ embeds: [logEmbed]});
+ await statusChannel.send({ embeds: [logEmbed]});
}
};
diff --git a/bot/src/events/GuildDelete.js b/bot/src/events/GuildDelete.js
index 50c4412..2dcba22 100644
--- a/bot/src/events/GuildDelete.js
+++ b/bot/src/events/GuildDelete.js
@@ -1,10 +1,21 @@
import { EmbedBuilder, Events } from 'discord.js';
import { abEmbedColour } from '../storage/consts.js';
+import { guildSettings } from '../models/guild-settings.js';
export default {
name: Events.GuildDelete,
async execute(guild) {
console.log(`[i] I have been removed from: ${guild.name} (${guild.id})`);
+
+ try {
+ const guildSetting = await guildSettings.findOne({ where: { guildID: guild.id } });
+ if (guildSetting) {
+ await guildSettings.destroy({ where: { guildID: guild.id } });
+ }
+ } catch (error) {
+ console.error(`Failed to remove guild settings for ${guild.id}:`, error);
+ }
+
const logEmbed = new EmbedBuilder()
.setAuthor({ name: 'AleeBot', iconURL: guild.client.user.avatarURL() })
.setDescription('I got removed from a server...')
@@ -12,12 +23,11 @@ export default {
{ name: 'Server Name:', value: `${guild.name}`, inline: true },
{ name: 'Server ID:', value: `${guild.id}`, inline: true },
)
-
.setColor(abEmbedColour)
.setFooter({ text: `We now run on ${guild.client.guilds.cache.size} guilds.` });
let statusChannel = guild.client.channels.cache.get(process.env.statusChannelID);
if (!statusChannel) return;
- statusChannel.send({ embeds: [logEmbed]});
+ await statusChannel.send({ embeds: [logEmbed]});
}
};
diff --git a/bot/src/events/GuildMemberAdd.js b/bot/src/events/GuildMemberAdd.js
new file mode 100644
index 0000000..4b39d6d
--- /dev/null
+++ b/bot/src/events/GuildMemberAdd.js
@@ -0,0 +1,26 @@
+import { EmbedBuilder, Events } from 'discord.js';
+import { guildSettings } from '../models/guild-settings.js';
+
+export default {
+ name: Events.GuildMemberAdd,
+ async execute(member) {
+ const guildSetting = await guildSettings.findOne({ where: { guildID: member.guild.id } });
+ if (!guildSetting || !guildSetting.logChannelID) return;
+
+ const logEmbed = new EmbedBuilder()
+ .setAuthor({ name: 'AleeBot Logging', iconURL: member.client.user.avatarURL() })
+ .setDescription('A user has joined this server!')
+ .addFields(
+ { name: 'Username: ', value: `${member.user.tag}`, inline: true },
+ { name: 'User ID: ', value: `${member.id}`, inline: true },
+ { name: 'Created At: ', value: `${member.user.createdAt.toUTCString()}`}
+ )
+ .setColor('#4bff31')
+ .setTimestamp();
+
+ let guildMember = member.client.channels.cache.get(guildSetting.logChannelID);
+ if (!guildMember) return;
+
+ await guildMember.send({ embeds: [logEmbed]});
+ }
+};
diff --git a/bot/src/events/GuildMemberRemove.js b/bot/src/events/GuildMemberRemove.js
new file mode 100644
index 0000000..9bf5e9d
--- /dev/null
+++ b/bot/src/events/GuildMemberRemove.js
@@ -0,0 +1,25 @@
+import { EmbedBuilder, Events } from 'discord.js';
+import { guildSettings } from '../models/guild-settings.js';
+
+export default {
+ name: Events.GuildMemberRemove,
+ async execute(member) {
+ const guildSetting = await guildSettings.findOne({ where: { guildID: member.guild.id } });
+ if (!guildSetting || !guildSetting.logChannelID) return;
+
+ const logEmbed = new EmbedBuilder()
+ .setAuthor({ name: 'AleeBot Logging', iconURL: member.client.user.avatarURL() })
+ .setDescription('A user has joined this server!')
+ .addFields(
+ { name: 'Username: ', value: `${member.user.tag}`, inline: true },
+ { name: 'User ID: ', value: `${member.id}`, inline: true },
+ )
+ .setColor('#ec2727')
+ .setTimestamp();
+
+ let guildMember = member.client.channels.cache.get(guildSetting.logChannelID);
+ if (!guildMember) return;
+
+ await guildMember.send({ embeds: [logEmbed]});
+ }
+};
diff --git a/bot/src/events/MessageCreate.js b/bot/src/events/MessageCreate.js
index 9394a20..90b517d 100644
--- a/bot/src/events/MessageCreate.js
+++ b/bot/src/events/MessageCreate.js
@@ -12,35 +12,31 @@ export default {
const args = msg.content.slice(`<@${msg.client.user.id}>`.length).trim();
if (msg.mentions.has(msg.client.user)) {
- if (ollamaEnabled) {
- if (!args) return msg.reply('Sorry? What was that?');
-
- try {
- const response = await ollama.chat({
- model: ollamaModel,
- messages: [{ role: 'user', content: args }],
- });
-
- let content = response.message.content;
- content = content.replace(/<think>.*?<\/think>/g, '');
-
- if (content.length > 2000) {
- const chunks = content.match(/[\s\S]{1,2000}/g) || [];
- for (const chunk of chunks) {
- await msg.reply({ content: chunk });
- }
- } else {
- msg.reply({ content });
+ if (!ollamaEnabled) return msg.reply('Sorry, this feature has been turned off.');
+ if (!args) return msg.reply('Sorry? What was that?');
+
+ try {
+ const response = await ollama.chat({
+ model: ollamaModel,
+ messages: [{ role: 'user', content: args }],
+ });
+
+ let content = response.message.content;
+ content = content.replace(/<think>.*?<\/think>/g, '');
+
+ if (content.length > 2000) {
+ const chunks = content.match(/[\s\S]{1,2000}/g) || [];
+ for (const chunk of chunks) {
+ await msg.reply({ content: chunk });
}
-
- } catch (err) {
- console.error(err);
- msg.reply('Something went wrong.');
+ } else {
+ await msg.reply({ content });
}
- } else {
- return msg.reply('Sorry, this feature has been turned off.');
- }
+ } catch (err) {
+ console.error(err);
+ await msg.reply('Something went wrong.');
+ }
}
}
};
diff --git a/bot/src/events/MessageDelete.js b/bot/src/events/MessageDelete.js
new file mode 100644
index 0000000..2259d2f
--- /dev/null
+++ b/bot/src/events/MessageDelete.js
@@ -0,0 +1,25 @@
+import { EmbedBuilder, Events } from 'discord.js';
+import { guildSettings } from '../models/guild-settings.js';
+
+export default {
+ name: Events.MessageDelete,
+ async execute(msg) {
+ if (!msg.content) return;
+
+ const guildSetting = await guildSettings.findOne({ where: { guildID: msg.guild.id } });
+ if (!guildSetting || !guildSetting.logChannelID) return;
+
+ const logEmbed = new EmbedBuilder()
+ .setAuthor('AleeBot Logging', msg.client.user.avatarURL())
+ .setDescription(`A message from ${msg.author.username} was deleted in <#${msg.channel.id}>`)
+ .addFields({ name: 'Deleted Message: ', value: `\`\`\`${msg.content}\`\`\`` })
+ .setColor('#ff021b')
+ .setTimestamp()
+ .setFooter(`Author ID: ${msg.author.id}`);
+
+ let deleteMessage = msg.client.channels.cache.get(guildSetting.logChannelID);
+ if (!deleteMessage) return;
+
+ await deleteMessage.send({ embeds: [logEmbed]});
+ }
+};
diff --git a/bot/src/events/MessageUpdate.js b/bot/src/events/MessageUpdate.js
new file mode 100644
index 0000000..26f6ab3
--- /dev/null
+++ b/bot/src/events/MessageUpdate.js
@@ -0,0 +1,27 @@
+import { EmbedBuilder, Events } from 'discord.js';
+import { guildSettings } from '../models/guild-settings.js';
+
+export default {
+ name: Events.MessageUpdate,
+ async execute(oldmsg, newmsg) {
+ const guildSetting = await guildSettings.findOne({ where: { guildID: oldmsg.guild.id } });
+ if (!oldmsg.guild || !guildSetting || !guildSetting.logChannelID) return;
+ if (oldmsg.content === newmsg.content) return;
+
+ const logEmbed = new EmbedBuilder()
+ .setAuthor({ name: 'AleeBot Logging', iconURL: oldmsg.client.user.avatarURL() })
+ .setDescription(`A message from ${oldmsg.author.username} was edited in <#${oldmsg.channel.id}>`)
+ .addFields(
+ { name: 'Before: ', value: `\`\`\`${oldmsg.content}\`\`\`` },
+ { name: 'After: ', value: `\`\`\`${newmsg.content}\`\`\`` }
+ )
+ .setColor('#ffff1a')
+ .setTimestamp()
+ .setFooter(`Author ID: ${oldmsg.author.id}`);
+
+ let editMessage = oldmsg.client.channels.cache.get(guildSetting.logChannelID);
+ if (!editMessage) return;
+
+ await editMessage.send({ embeds: [logEmbed]});
+ }
+};