From bdeef58376711e9a49c3b6f26aaf3fc65fa6200b Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Sat, 8 Mar 2025 23:11:48 -0500 Subject: Added file attachment fallback for delete and update (over 1024 characters); LLM response --- bot/src/events/MessageCreate.js | 6 ++++-- bot/src/events/MessageDelete.js | 23 +++++++++++++++++++---- bot/src/events/MessageUpdate.js | 39 ++++++++++++++++++++++++++++++--------- 3 files changed, 53 insertions(+), 15 deletions(-) (limited to 'bot/src') diff --git a/bot/src/events/MessageCreate.js b/bot/src/events/MessageCreate.js index 8753587..8234c5b 100644 --- a/bot/src/events/MessageCreate.js +++ b/bot/src/events/MessageCreate.js @@ -20,6 +20,8 @@ export default { if (!args) return msg.reply('Sorry? What was that?'); try { + const loadingMessage = await msg.reply('Thinking...'); + const response = await ollama.chat({ model: ollamaModel, messages: [{ role: 'user', content: args }], @@ -29,9 +31,9 @@ export default { if (content.length > 2000) { const attachment = new AttachmentBuilder(Buffer.from(content, 'utf-8'), { name: 'output.txt' }); - return await msg.reply({ files: [attachment] }); + return await loadingMessage.edit({ files: [attachment] }); } else { - return await msg.reply({ content }); + return await loadingMessage.edit({ content }); } } catch (err) { diff --git a/bot/src/events/MessageDelete.js b/bot/src/events/MessageDelete.js index 154940b..dc9b53f 100644 --- a/bot/src/events/MessageDelete.js +++ b/bot/src/events/MessageDelete.js @@ -1,4 +1,4 @@ -import { EmbedBuilder, Events } from 'discord.js'; +import {AttachmentBuilder, EmbedBuilder, Events} from 'discord.js'; import { guildSettings } from '../models/guild-settings.js'; export default { @@ -9,17 +9,32 @@ export default { const guildSetting = await guildSettings.findOne({ where: { guildID: msg.guild.id } }); if (!guildSetting || !guildSetting.logChannelID) return; + const useEmbedFields = msg.content.length <= 1023; + const logEmbed = new EmbedBuilder() .setAuthor({ name: 'AleeBot Logging', iconURL: msg.client.user.avatarURL() }) .setDescription(`A message from ${msg.author.username} was deleted in ${msg.channel}`) - .addFields({ name: 'Deleted Message: ', value: `\`\`\`${msg.content}\`\`\`` }) .setColor('#ff021b') .setTimestamp() - .setFooter({ text: `Author ID: ${msg.author.id}` }); + .setFooter({ text: `Author ID: ${msg.author.id}\nMessage ID: ${msg.id}` }); + + if (useEmbedFields) { + logEmbed.addFields({ name: 'Deleted Message: ', value: `\`\`\`\n${msg.content}\n\`\`\`` }); + } let deleteMessage = msg.client.channels.cache.get(guildSetting.logChannelID); if (!deleteMessage) return; - await deleteMessage.send({ embeds: [logEmbed] }); + if (useEmbedFields) { + await deleteMessage.send({ embeds: [logEmbed] }); + } else { + const attachment = new AttachmentBuilder(Buffer.from(msg.content, 'utf-8'), { name: 'message.txt' }); + + await deleteMessage.send({ + embeds: [logEmbed], + files: [attachment], + content: 'Message content was too long to display in an embed.' + }); + } } }; diff --git a/bot/src/events/MessageUpdate.js b/bot/src/events/MessageUpdate.js index 7fc5e1b..b73d6ac 100644 --- a/bot/src/events/MessageUpdate.js +++ b/bot/src/events/MessageUpdate.js @@ -1,8 +1,6 @@ -import { EmbedBuilder, Events } from 'discord.js'; +import { EmbedBuilder, Events, AttachmentBuilder } from 'discord.js'; import { guildSettings } from '../models/guild-settings.js'; -// bug: whenever a long message is edited, the bot crashes; also make sure that the log has newline - export default { name: Events.MessageUpdate, async execute(msg, newmsg) { @@ -10,20 +8,43 @@ export default { if (!msg.guild || !guildSetting || !guildSetting.logChannelID) return; if (msg.content === newmsg.content) return; + const useEmbedFields = msg.content.length <= 1023 && + newmsg.content.length <= 1023; + const logEmbed = new EmbedBuilder() .setAuthor({ name: 'AleeBot Logging', iconURL: msg.client.user.avatarURL() }) .setDescription(`A message from ${msg.author.username} was edited in ${msg.channel}`) - .addFields( - { name: 'Before: ', value: `\`\`\`${msg.content}\`\`\`` }, - { name: 'After: ', value: `\`\`\`${newmsg.content}\`\`\`` } - ) .setColor('#ffff1a') .setTimestamp() - .setFooter({ text: `Author ID: ${msg.author.id}` }); + .setFooter({ text: `Author ID: ${msg.author.id}\nMessage ID: ${msg.id}` }); + + if (useEmbedFields) { + logEmbed.addFields( + { name: 'Before: ', value: `\`\`\`\n${msg.content}\n\`\`\`` }, + { name: 'After: ', value: `\`\`\`\n${newmsg.content}\n\`\`\`` } + ); + } let editMessage = msg.client.channels.cache.get(guildSetting.logChannelID); if (!editMessage) return; - await editMessage.send({ embeds: [logEmbed] }); + if (useEmbedFields) { + await editMessage.send({ embeds: [logEmbed] }); + } else { + let messageContent = []; + messageContent.push(`Before:\n${msg.content}`); + messageContent.push(`After:\n${newmsg.content}`); + + messageContent = messageContent.join('\n'); + + const attachment = new AttachmentBuilder(Buffer.from(messageContent, 'utf-8'), { name: 'message.txt' }); + + await editMessage.send({ + embeds: [logEmbed], + files: [attachment], + content: 'Message content was too long to display in an embed.' + }); + } + } }; -- cgit v1.2.3