mirror of
https://github.com/Expand-sys/expandchatbotv2
synced 2026-03-22 12:27:11 +11:00
68 lines
No EOL
2.5 KiB
JavaScript
68 lines
No EOL
2.5 KiB
JavaScript
const { CommandInteraction, ApplicationCommandType, ApplicationCommandOptionType, EmbedBuilder } = require('discord.js');
|
|
const { sendResponse } = require('../../../utils/utils');
|
|
const path = require('path');
|
|
const { Ollama } = require('ollama')
|
|
const ollama = new Ollama({host: 'http://localhost:11434'})
|
|
const axios = require("axios")
|
|
|
|
|
|
module.exports = {
|
|
name: `prompt`,
|
|
description: `prompt the bot for for a snarky response`,
|
|
cooldown: 30,
|
|
type: ApplicationCommandType.ChatInput,
|
|
options: [{
|
|
name: `prompt`,
|
|
description: `The question you want to ask the ai`,
|
|
type: ApplicationCommandOptionType.String,
|
|
required: true,
|
|
},
|
|
{
|
|
name: `attachment`,
|
|
description: `attach an image to describe`,
|
|
type: ApplicationCommandOptionType.Attachment ,
|
|
required: false,
|
|
}],
|
|
/**
|
|
* @param {CommandInteraction} interaction
|
|
*/
|
|
async execute(interaction) {
|
|
const { member, options } = interaction;
|
|
let b64 = ""
|
|
|
|
await interaction.deferReply({ ephemeral: false }).catch(err => console.error(`${path.basename(__filename)} There was a problem deferring an interaction: `, err));
|
|
console.log(options.get("attachment"))
|
|
let response = await ollama.generate({
|
|
model: 'llava',
|
|
prompt: options.get("prompt").value,
|
|
stream: false,
|
|
options: {
|
|
num_predict: -1,
|
|
}
|
|
})
|
|
const responseout = new EmbedBuilder()
|
|
.setColor('#32BEA6')
|
|
.setAuthor({ name: `${member.user.displayName }`, iconURL: member.user.displayAvatarURL({ dynamic: true }) })
|
|
.setTitle("Prompt: " + options.get("prompt").value.slice(0,240))
|
|
.setDescription(response.response)
|
|
console.log(response)
|
|
if(options.get("attachment")){
|
|
let image = await axios.get(options.get("attachment").attachment.url, {responseType: 'arraybuffer'});
|
|
let returnedB64 = Buffer.from(image.data);
|
|
b64 = returnedB64
|
|
response = await ollama.generate({
|
|
model: 'llava',
|
|
prompt: options.get("prompt").value,
|
|
images: [b64],
|
|
stream: false,
|
|
options: {
|
|
num_predict: -1,
|
|
}
|
|
})
|
|
responseout.setThumbnail(options.get("attachment").attachment.url)
|
|
}
|
|
|
|
|
|
sendResponse(interaction, ``, [responseout]);
|
|
}
|
|
} |