47 lines
1.6 KiB
JavaScript
47 lines
1.6 KiB
JavaScript
const libCore = require("../libCore.js");
|
|
const { SlashCommandBuilder } = require('discord.js');
|
|
const { DebugBuilder } = require("../utilities/debugBuilder");
|
|
const log = new DebugBuilder("server", "chat");
|
|
|
|
|
|
module.exports = {
|
|
data: new SlashCommandBuilder()
|
|
.setName('chat')
|
|
.setDescription('Send a text prompt to ChatGPT')
|
|
.addStringOption(option =>
|
|
option.setName('prompt')
|
|
.setDescription('The prompt to be sent to ChatGPT')
|
|
.setRequired(true))
|
|
.addNumberOption(option =>
|
|
option.setName('temperature')
|
|
.setDescription('Set the temperature, 0 = repetitive, 1 = random')
|
|
.setRequired(false))
|
|
.addNumberOption(option =>
|
|
option.setName('maxTokens')
|
|
.setDescription('The max amount of tokens to be spent')
|
|
.setRequired(false)),
|
|
example: "chat [tell me a story] [0.07] []", // Need to figure out the tokens
|
|
isPrivileged: false,
|
|
requiresTokens: true,
|
|
async execute(interaction) {
|
|
// Needs middleware for payment
|
|
|
|
try {
|
|
var params = {};
|
|
var prompt = encodeURIComponent(interaction.options.getString('prompt').join(" "));
|
|
var temperature = interaction.options.getNumber('temperature');
|
|
var maxTokens = interaction.options.getNumber('maxTokens');
|
|
|
|
if (temperature) params._temperature = temperature;
|
|
if (maxTokens) params._max_tokens = maxTokens;
|
|
|
|
var gptResponse = await prompt.libCore.getChat(prompt, params);
|
|
await interaction.reply(`${interaction.author.username} ${gptResponse}`);
|
|
|
|
// Needs reply code to reply to the generation
|
|
}catch(err){
|
|
log.ERROR(err)
|
|
//await interaction.reply(err.toString());
|
|
}
|
|
}
|
|
}; |