123 lines
4.8 KiB
JavaScript
123 lines
4.8 KiB
JavaScript
// SupportBot | Emerald Services
|
|
// AI Command (Consolidated)
|
|
|
|
const fs = require("fs");
|
|
const { ApplicationCommandOptionType, ApplicationCommandType, EmbedBuilder, MessageFlags } = require("discord.js");
|
|
const yaml = require("js-yaml");
|
|
|
|
const supportbot = require("../../Structures/ConfigStore").supportbot;
|
|
const cmdconfig = require("../../Structures/ConfigStore").commands;
|
|
const supportbotai = require("../../Structures/ConfigStore").supportbotAi;
|
|
|
|
const Command = require("../../Structures/Command.js");
|
|
const AIDatabase = require("../../Structures/AIDatabase.js");
|
|
|
|
module.exports = new Command({
|
|
name: cmdconfig.AI?.Command || "ai",
|
|
description: cmdconfig.AI?.Description || "Manage SupportBot AI settings and memory.",
|
|
type: ApplicationCommandType.ChatInput,
|
|
options: [
|
|
{
|
|
name: cmdconfig.AI?.Train?.Command || "train",
|
|
description: cmdconfig.AI?.Train?.Description || "Train the AI by adding knowledge to its database.",
|
|
type: ApplicationCommandOptionType.Subcommand,
|
|
options: [
|
|
{
|
|
name: "content",
|
|
description: "The text/knowledge you want the bot to learn",
|
|
type: ApplicationCommandOptionType.String,
|
|
required: true,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
name: cmdconfig.AI?.Knowledge?.Command || "knowledge",
|
|
description: cmdconfig.AI?.Knowledge?.Description || "Manage the AI knowledge base.",
|
|
type: ApplicationCommandOptionType.SubcommandGroup,
|
|
options: [
|
|
{
|
|
name: cmdconfig.AI?.Knowledge?.Clear?.Command || "clear",
|
|
description: cmdconfig.AI?.Knowledge?.Clear?.Description || "Clear all trained knowledge from the AI.",
|
|
type: ApplicationCommandOptionType.Subcommand,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
name: cmdconfig.AI?.Memory?.Command || "memory",
|
|
description: cmdconfig.AI?.Memory?.Description || "Manage the AI conversational memory.",
|
|
type: ApplicationCommandOptionType.SubcommandGroup,
|
|
options: [
|
|
{
|
|
name: cmdconfig.AI?.Memory?.Clear?.Command || "clear",
|
|
description: cmdconfig.AI?.Memory?.Clear?.Description || "Clear recent conversation memory for this channel.",
|
|
type: ApplicationCommandOptionType.Subcommand,
|
|
},
|
|
],
|
|
},
|
|
],
|
|
permissions: cmdconfig.AI?.Permission || ["Administrator"],
|
|
|
|
async run(interaction) {
|
|
if (!supportbotai.Enabled) {
|
|
return interaction.reply({
|
|
content: "SupportBot AI is currently disabled.",
|
|
flags: MessageFlags.Ephemeral,
|
|
});
|
|
}
|
|
|
|
const subcommandGroup = interaction.options.getSubcommandGroup(false);
|
|
const subcommand = interaction.options.getSubcommand(false);
|
|
|
|
try {
|
|
if (subcommand === "train" || subcommand === cmdconfig.AI?.Train?.Command) {
|
|
const content = interaction.options.getString("content");
|
|
|
|
AIDatabase.addKnowledge({
|
|
sourceType: "user_command",
|
|
sourceName: interaction.user.tag,
|
|
title: "Trained Knowledge",
|
|
content: content,
|
|
});
|
|
|
|
const SuccessEmbed = new EmbedBuilder()
|
|
.setDescription(`✅ **Knowledge Added!**\n\nThe AI has learned the following information:\n\`\`\`${content}\`\`\``)
|
|
.setColor(supportbot.Embed.Colours.Success);
|
|
|
|
return interaction.reply({ embeds: [SuccessEmbed], flags: MessageFlags.Ephemeral });
|
|
}
|
|
|
|
if (subcommandGroup === (cmdconfig.AI?.Knowledge?.Command || "knowledge")) {
|
|
if (subcommand === (cmdconfig.AI?.Knowledge?.Clear?.Command || "clear")) {
|
|
AIDatabase.clearKnowledge();
|
|
|
|
const SuccessEmbed = new EmbedBuilder()
|
|
.setDescription(`✅ **Knowledge Cleared!**\n\nAll manually trained knowledge has been wiped from the database.`)
|
|
.setColor(supportbot.Embed.Colours.Success);
|
|
|
|
return interaction.reply({ embeds: [SuccessEmbed], flags: MessageFlags.Ephemeral });
|
|
}
|
|
}
|
|
|
|
if (subcommandGroup === (cmdconfig.AI?.Memory?.Command || "memory")) {
|
|
if (subcommand === (cmdconfig.AI?.Memory?.Clear?.Command || "clear")) {
|
|
AIDatabase.clearConversations(interaction.channel.id);
|
|
|
|
const SuccessEmbed = new EmbedBuilder()
|
|
.setDescription(`✅ **Memory Cleared!**\n\nThe AI's recent conversation memory in this channel has been wiped. It will no longer remember previous messages sent here.`)
|
|
.setColor(supportbot.Embed.Colours.Success);
|
|
|
|
return interaction.reply({ embeds: [SuccessEmbed], flags: MessageFlags.Ephemeral });
|
|
}
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error("AI Command Error:", error);
|
|
const ErrorEmbed = new EmbedBuilder()
|
|
.setDescription(`❌ **Error:** Failed to process the AI command.`)
|
|
.setColor(supportbot.Embed.Colours.Error);
|
|
|
|
return interaction.reply({ embeds: [ErrorEmbed], flags: MessageFlags.Ephemeral });
|
|
}
|
|
},
|
|
});
|