From c4f0c6509825d0e0463203f90a05c72703786926 Mon Sep 17 00:00:00 2001 From: Lukian LEIZOUR Date: Tue, 28 Mar 2023 11:18:06 +0200 Subject: [PATCH] commit --- app.js | 328 +------------------------------------- events/discordEvents.js | 341 ++++++++++++++++++++++++++++++++++++++++ libs/openAi.js | 4 +- 3 files changed, 346 insertions(+), 327 deletions(-) create mode 100644 events/discordEvents.js diff --git a/app.js b/app.js index c23102e..7de991e 100644 --- a/app.js +++ b/app.js @@ -9,6 +9,7 @@ const { rtag, r34 } = require('./libs/rule34'); const { addToLogs, isTrue, getHelp } = require('./libs/botTools'); const { generateImage, answerQuestion, sendConv } = require('./libs/openAi'); const { addUserToDb, incrementQuota, usersInDb, getQuota, addConv, delConv, getConvs, addMessage, getMessages, isNewUser } = require('./libs/mysql'); +const discordEvents = require('./events/discordEvents'); //bot initialization const bot = new Telegraf(process.env.TELEGRAM); @@ -223,331 +224,8 @@ client.on('ready', () => { client.user.setPresence({ activities: [{ name: 'la belle chaise', type : 3}] }); }); -client.on('messageCreate', async msg => { - if (msg.content.startsWith('/github')) { - console.log('[Discord] Sent github link') - addToLogs('[Discord] Sent github link') - msg.reply('Link of the Gihhub repository :\n -https://github.com/Ninja-Jambon/chaise_bot') - } - - else if (msg.content.startsWith('/g')) { - generateImage(msg.content.slice(+3)).then((res) => { - console.log('[Discord] Sent image to : ' + msg.content.slice(+3)); - addToLogs('[Discord] Sent image to : ' + msg.content.slice(+3)); - msg.channel.send(res.data.data[0].url); - }).catch((err) => { - console.log(err); - addToLogs(err); - msg.reply("Something went wrong"); - }) - - console.log('[Discord] Generating image to : ' + msg.content.slice(+3)); - addToLogs('[Discord] Generating image to : ' + msg.content.slice(+3)); - msg.reply('Generating the image...'); - } -}); - - -client.on('interactionCreate', async interaction => { - if (!interaction.isCommand()) return; - - if (interaction.commandName === 'gptrequest') { - await interaction.deferReply(); - - quota = isNewUser(interaction.member.user.id, interaction.member.user.username).catch((err) => { - console.log(err); - addToLogs(err); - }); - - if (quota >= 200000) { - const embed = new discord.EmbedBuilder() - .setColor(0xFABBDE) - .setAuthor({ name : "Quota exceeded", iconURL : client.user.displayAvatarURL()}) - .setDescription("You have a quota of " + quota + " tokens, please wait until reset (every months)") - .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); - - interaction.editReply({ embeds : [embed] }); - } - else { - answerQuestion(interaction.options.get('question').value).then((res) => { - incrementQuota(interaction.member.user.id, res.data.usage.total_tokens).catch((err) => { - console.log(err); - addToLogs(err); - }); - - if (res.data.choices[0].message.content.length > 4096) { - const embed = new discord.EmbedBuilder() - .setColor(0xFABBDE) - .setAuthor({ name : "Reply to : " + interaction.member.user.username, iconURL : "https://cdn.discordapp.com/avatars/"+interaction.member.user.id+"/"+interaction.member.user.avatar+".jpeg"}) - .setTitle("Question : " + interaction.options.get('question').value) - .setDescription("The answer is too long to be displayed, please try again with a shorter question.") - .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); - - console.log('[Discord] Sent answer to : ' + interaction.options.get('question').value); - addToLogs('[Discord] Sent answer to : ' +interaction.options.get('question').value); - interaction.editReply({ embeds : [embed] }); - } - else{ - title = "Question : " + interaction.options.get('question').value; - - if (title.length > 256) { - title = title.slice(0, 253) + "..."; - } - - const embed = new discord.EmbedBuilder() - .setColor(0xFABBDE) - .setAuthor({ name : "Reply to : " + interaction.member.user.username, iconURL : "https://cdn.discordapp.com/avatars/"+interaction.member.user.id+"/"+interaction.member.user.avatar+".jpeg"}) - .setTitle(title) - .setDescription(res.data.choices[0].message.content) - .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); - - console.log('[Discord] Sent answer to : ' + interaction.options.get('question').value); - addToLogs('[Discord] Sent answer to : ' +interaction.options.get('question').value); - interaction.editReply({ embeds : [embed] }); - } - }).catch((err) => { - console.log(err); - addToLogs(err); - interaction.editReply("Something went wrong"); - }) - - console.log('[Discord] Generating answer to : ' + interaction.options.get('question').value); - addToLogs('[Discord] Generating answer to : ' + interaction.options.get('question').value); - } - } - - else if (interaction.commandName === 'info') { - console.log(interaction) - } - - else if (interaction.commandName === 'addconv') { - await interaction.deferReply(); - convs = await getConvs().catch((err) => { - console.log(err); - addToLogs(err); - }); - if (!interaction.options.get('name').value.includes(" ") && !convs.includes(interaction.options.get('name').value)) { - await addConv(interaction.options.get('name').value); - const embed = new discord.EmbedBuilder() - .setColor(0xFABBDE) - .setAuthor({ name : "Conversation added", iconURL : client.user.displayAvatarURL()}) - .setDescription("Conversation " + interaction.options.get('name').value + " added to db") - .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); - - interaction.editReply({ embeds : [embed] }); - - addToLogs('[Discord] Added conversation : ' + interaction.options.get('name').value); - console.log('[Discord] Added conversation : ' + interaction.options.get('name').value); - } else { - const embed = new discord.EmbedBuilder() - .setColor(0xFABBDE) - .setAuthor({ name : "Error", iconURL : client.user.displayAvatarURL()}) - .setDescription("Verify the name of the conversation (it must not contain spaces and must be unique).") - .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); - - interaction.editReply({ embeds : [embed] }); - - addToLogs('[Discord] Error adding conversation : ' + interaction.options.get('name').value); - console.log('[Discord] Error adding conversation : ' + interaction.options.get('name').value); - } - } - - else if (interaction.commandName === 'delconv') { - await interaction.deferReply(); - - convs = await getConvs().catch((err) => { - console.log(err); - addToLogs(err); - }); - if (!convs.includes(interaction.options.get('name').value)) { - const embed = new discord.EmbedBuilder() - .setColor(0xFABBDE) - .setAuthor({ name : "Error", iconURL : client.user.displayAvatarURL()}) - .setDescription("Conversation not found in the database") - .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); - - interaction.editReply({ embeds : [embed] }); - - addToLogs('[Discord] Conversation not found in the database : ' + interaction.options.get('name').value); - console.log('[Discord] Conversation not found in the database : ' + interaction.options.get('name').value); - } else { - await delConv(interaction.options.get('name').value); - const embed = new discord.EmbedBuilder() - .setColor(0xFABBDE) - .setAuthor({ name : "Conversation deleted", iconURL : client.user.displayAvatarURL()}) - .setDescription("Conversation " + interaction.options.get('name').value + " deleted from the database") - .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); - - interaction.editReply({ embeds : [embed] }); - - addToLogs('[Discord] Conversation deleted from the database : ' + interaction.options.get('name').value); - console.log('[Discord] Conversation deleted from the database : ' + interaction.options.get('name').value); - } - } - - else if (interaction.commandName === 'listconvs') { - convs = await getConvs().catch((err) => { - console.log(err); - addToLogs(err); - }); - message = ""; - if (convs.length == 0) { - message = "No conversations in the database"; - } else { - convs.forEach(element => { - message += "- **" + element + "**\n\n"; - }); - } - - const embed = new discord.EmbedBuilder() - .setColor(0xFABBDE) - .setAuthor({ name : "Conversations list", iconURL : client.user.displayAvatarURL()}) - .setDescription(message) - .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); - - interaction.reply({ embeds : [embed] }); - - addToLogs('[Discord] Sent conversations list'); - console.log('[Discord] Sent conversations list'); - } - - else if (interaction.commandName === 'addmsg') { - await interaction.deferReply(); - - quota = isNewUser(interaction.member.user.id, interaction.member.user.username).catch((err) => { - console.log(err); - addToLogs(err); - }); - - if (quota >= 200000) { - const embed = new discord.EmbedBuilder() - .setColor(0xFABBDE) - .setAuthor({ name : "Quota exceeded", iconURL : client.user.displayAvatarURL()}) - .setDescription("Quota exceeded, please wait untill reset (every month)") - .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); - - interaction.editReply({ embeds : [embed] }); - - addToLogs('[Discord] Quota exceeded for user : ' + interaction.member.user.username); - console.log('[Discord] Quota exceeded for user : ' + interaction.member.user.username); - } else { - await addMessage(interaction.options.get('name').value,"user" ,interaction.options.get('message').value, interaction.member.user.username).catch((err) => { - console.log(err); - addToLogs(err); - }); - - messages = await getMessages(interaction.options.get('name').value, "role").catch((err) => { - console.log(err); - addToLogs(err); - }); - - sendConv(messages).then((res) => { - addMessage(interaction.options.get('name').value,"assistant",res.data.choices[0].message.content , "Chaise bot").catch((err) => { - console.log(err); - addToLogs(err); - }); - - const embed_user = new discord.EmbedBuilder() - .setColor(0xBBFAF4) - .setAuthor({ name : interaction.member.user.username, iconURL : "https://cdn.discordapp.com/avatars/"+interaction.member.user.id+"/"+interaction.member.user.avatar+".jpeg"}) - .setDescription(interaction.options.get('message').value); - - const embed_bot = new discord.EmbedBuilder() - .setColor(0xFABBDE) - .setAuthor({ name : "Chaise bot", iconURL : client.user.displayAvatarURL()}) - .setDescription(res.data.choices[0].message.content) - .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); - - interaction.editReply({ embeds : [embed_user, embed_bot] }); - - addToLogs('[Discord] Added message to conversation : ' + interaction.options.get('name').value); - console.log('[Discord] Added message to conversation : ' + interaction.options.get('name').value); - }).catch((err) => { - console.log(err); - }); - } - } - - else if (interaction.commandName === 'displayconv') { - await interaction.deferReply(); - - if (interaction.options.get('name').value.includes(" ")) { - const embed = new discord.EmbedBuilder() - .setColor(0xFABBDE) - .setAuthor({ name : "Error", iconURL : client.user.displayAvatarURL()}) - .setDescription("Conversation name can't contain spaces") - .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); - - interaction.editReply({ embeds : [embed] }); - - addToLogs('[Discord] Conversation name can\'t contain spaces'); - console.log('[Discord] Conversation name can\'t contain spaces'); - }else { - convs = await getConvs().catch((err) => { - console.log(err); - addToLogs(err); - }); - - if (!convs.includes(interaction.options.get('name').value)) { - const embed = new discord.EmbedBuilder() - .setColor(0xFABBDE) - .setAuthor({ name : "Error", iconURL : client.user.displayAvatarURL()}) - .setDescription("Conversation not found in the database") - .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); - - interaction.editReply({ embeds : [embed] }); - - addToLogs('[Discord] Conversation not found in the database'); - console.log('[Discord] Conversation not found in the database'); - } - - messages = await getMessages(interaction.options.get('name').value, "user").catch((err) => { - console.log(err); - addToLogs(err); - }); - - embed_text = ""; - - messages.forEach(element => { - if (element.user == "System") {} - else { - embed_text += "**" + element.user + "** : " + element.content + "\n\n"; - } - }); - - const embed = new discord.EmbedBuilder() - .setColor(0xFABBDE) - .setAuthor({ name : "Conversation : " + interaction.options.get('name').value, iconURL : client.user.displayAvatarURL()}) - .setDescription(embed_text) - .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); - - interaction.editReply({ embeds : [embed] }); - - addToLogs('[Discord] Displayed conversation : ' + interaction.options.get('name').value); - console.log('[Discord] Displayed conversation : ' + interaction.options.get('name').value); - } - } - - else if (interaction.commandName === 'getmyguota') { - await interaction.deferReply(); - - quota = (await isNewUser(interaction.member.user.id, interaction.member.user.username).catch((error) => { - console.log(error); - addToLogs(error); - })).quota; - - const embed = new discord.EmbedBuilder() - .setColor(0xFABBDE) - .setAuthor({ name : "Quota : " + interaction.member.user.username, iconURL : "https://cdn.discordapp.com/avatars/"+interaction.member.user.id+"/"+interaction.member.user.avatar+".jpeg"}) - .setDescription("You have " + (200000 - quota) + " tokens left this month") - .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); - - interaction.editReply({ embeds : [embed] }); - - addToLogs('[Discord] Quota requested by ' + interaction.member.user.username); - console.log('[Discord] Quota requested by ' + interaction.member.user.username); - } -}); +discordEvents.newMessage(client); +discordEvents.newInteraction(client); //bot launch bot.launch() diff --git a/events/discordEvents.js b/events/discordEvents.js new file mode 100644 index 0000000..1cb2dc2 --- /dev/null +++ b/events/discordEvents.js @@ -0,0 +1,341 @@ +const discord = require('discord.js'); + +const { addToLogs } = require('../libs/botTools'); +const { generateImage, answerQuestion, sendConv } = require('../libs/openAi'); +const { incrementQuota, addConv, delConv, getConvs, addMessage, getMessages, isNewUser } = require('../libs/mysql'); + +module.exports = { + newMessage : (client) => { + client.on('messageCreate', async msg => { + if (msg.content.startsWith('/github')) { + console.log('[Discord] Sent github link') + addToLogs('[Discord] Sent github link') + msg.reply('Link of the Gihhub repository :\n -https://github.com/Ninja-Jambon/chaise_bot') + } + + else if (msg.content.startsWith('/g')) { + generateImage(msg.content.slice(+3)).then((res) => { + console.log('[Discord] Sent image to : ' + msg.content.slice(+3)); + addToLogs('[Discord] Sent image to : ' + msg.content.slice(+3)); + msg.channel.send(res.data.data[0].url); + }).catch((err) => { + console.log(err); + addToLogs(err); + msg.reply("Something went wrong"); + }) + + console.log('[Discord] Generating image to : ' + msg.content.slice(+3)); + addToLogs('[Discord] Generating image to : ' + msg.content.slice(+3)); + msg.reply('Generating the image...'); + } + }); + }, + + + newInteraction : (client) => { + client.on('interactionCreate', async interaction => { + if (!interaction.isCommand()) return; + + if (interaction.commandName === 'gptrequest') { + await interaction.deferReply(); + + quota = isNewUser(interaction.member.user.id, interaction.member.user.username).catch((err) => { + console.log(err); + addToLogs(err); + }); + + if (quota >= 200000) { + const embed = new discord.EmbedBuilder() + .setColor(0xFABBDE) + .setAuthor({ name : "Quota exceeded", iconURL : client.user.displayAvatarURL()}) + .setDescription("You have a quota of " + quota + " tokens, please wait until reset (every months)") + .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); + + interaction.editReply({ embeds : [embed] }); + } + else { + answerQuestion(interaction.options.get('question').value).then((res) => { + incrementQuota(interaction.member.user.id, res.data.usage.total_tokens).catch((err) => { + console.log(err); + addToLogs(err); + }); + + if (res.data.choices[0].message.content.length > 4096) { + const embed = new discord.EmbedBuilder() + .setColor(0xFABBDE) + .setAuthor({ name : "Reply to : " + interaction.member.user.username, iconURL : "https://cdn.discordapp.com/avatars/"+interaction.member.user.id+"/"+interaction.member.user.avatar+".jpeg"}) + .setTitle("Question : " + interaction.options.get('question').value) + .setDescription("The answer is too long to be displayed, please try again with a shorter question.") + .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); + + console.log('[Discord] Sent answer to : ' + interaction.options.get('question').value); + addToLogs('[Discord] Sent answer to : ' +interaction.options.get('question').value); + interaction.editReply({ embeds : [embed] }); + } + else{ + title = "Question : " + interaction.options.get('question').value; + + if (title.length > 256) { + title = title.slice(0, 253) + "..."; + } + + const embed = new discord.EmbedBuilder() + .setColor(0xFABBDE) + .setAuthor({ name : "Reply to : " + interaction.member.user.username, iconURL : "https://cdn.discordapp.com/avatars/"+interaction.member.user.id+"/"+interaction.member.user.avatar+".jpeg"}) + .setTitle(title) + .setDescription(res.data.choices[0].message.content) + .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); + + console.log('[Discord] Sent answer to : ' + interaction.options.get('question').value); + addToLogs('[Discord] Sent answer to : ' +interaction.options.get('question').value); + interaction.editReply({ embeds : [embed] }); + } + }).catch((err) => { + console.log(err); + addToLogs(err); + interaction.editReply("Something went wrong"); + }) + + console.log('[Discord] Generating answer to : ' + interaction.options.get('question').value); + addToLogs('[Discord] Generating answer to : ' + interaction.options.get('question').value); + } + } + + else if (interaction.commandName === 'info') { + console.log(interaction) + } + + else if (interaction.commandName === 'addconv') { + await interaction.deferReply(); + convs = await getConvs().catch((err) => { + console.log(err); + addToLogs(err); + }); + if (!interaction.options.get('name').value.includes(" ") && !convs.includes(interaction.options.get('name').value)) { + await addConv(interaction.options.get('name').value); + const embed = new discord.EmbedBuilder() + .setColor(0xFABBDE) + .setAuthor({ name : "Conversation added", iconURL : client.user.displayAvatarURL()}) + .setDescription("Conversation " + interaction.options.get('name').value + " added to db") + .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); + + interaction.editReply({ embeds : [embed] }); + + addToLogs('[Discord] Added conversation : ' + interaction.options.get('name').value); + console.log('[Discord] Added conversation : ' + interaction.options.get('name').value); + } else { + const embed = new discord.EmbedBuilder() + .setColor(0xFABBDE) + .setAuthor({ name : "Error", iconURL : client.user.displayAvatarURL()}) + .setDescription("Verify the name of the conversation (it must not contain spaces and must be unique).") + .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); + + interaction.editReply({ embeds : [embed] }); + + addToLogs('[Discord] Error adding conversation : ' + interaction.options.get('name').value); + console.log('[Discord] Error adding conversation : ' + interaction.options.get('name').value); + } + } + + else if (interaction.commandName === 'delconv') { + await interaction.deferReply(); + + convs = await getConvs().catch((err) => { + console.log(err); + addToLogs(err); + }); + if (!convs.includes(interaction.options.get('name').value)) { + const embed = new discord.EmbedBuilder() + .setColor(0xFABBDE) + .setAuthor({ name : "Error", iconURL : client.user.displayAvatarURL()}) + .setDescription("Conversation not found in the database") + .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); + + interaction.editReply({ embeds : [embed] }); + + addToLogs('[Discord] Conversation not found in the database : ' + interaction.options.get('name').value); + console.log('[Discord] Conversation not found in the database : ' + interaction.options.get('name').value); + } else { + await delConv(interaction.options.get('name').value); + const embed = new discord.EmbedBuilder() + .setColor(0xFABBDE) + .setAuthor({ name : "Conversation deleted", iconURL : client.user.displayAvatarURL()}) + .setDescription("Conversation " + interaction.options.get('name').value + " deleted from the database") + .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); + + interaction.editReply({ embeds : [embed] }); + + addToLogs('[Discord] Conversation deleted from the database : ' + interaction.options.get('name').value); + console.log('[Discord] Conversation deleted from the database : ' + interaction.options.get('name').value); + } + } + + else if (interaction.commandName === 'listconvs') { + convs = await getConvs().catch((err) => { + console.log(err); + addToLogs(err); + }); + message = ""; + if (convs.length == 0) { + message = "No conversations in the database"; + } else { + convs.forEach(element => { + message += "- **" + element + "**\n\n"; + }); + } + + const embed = new discord.EmbedBuilder() + .setColor(0xFABBDE) + .setAuthor({ name : "Conversations list", iconURL : client.user.displayAvatarURL()}) + .setDescription(message) + .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); + + interaction.reply({ embeds : [embed] }); + + addToLogs('[Discord] Sent conversations list'); + console.log('[Discord] Sent conversations list'); + } + + else if (interaction.commandName === 'addmsg') { + await interaction.deferReply(); + + quota = isNewUser(interaction.member.user.id, interaction.member.user.username).catch((err) => { + console.log(err); + addToLogs(err); + }); + + if (quota >= 200000) { + const embed = new discord.EmbedBuilder() + .setColor(0xFABBDE) + .setAuthor({ name : "Quota exceeded", iconURL : client.user.displayAvatarURL()}) + .setDescription("Quota exceeded, please wait untill reset (every month)") + .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); + + interaction.editReply({ embeds : [embed] }); + + addToLogs('[Discord] Quota exceeded for user : ' + interaction.member.user.username); + console.log('[Discord] Quota exceeded for user : ' + interaction.member.user.username); + } else { + await addMessage(interaction.options.get('name').value,"user" ,interaction.options.get('message').value.replace(/"/g, "\'").replace("\""), interaction.member.user.username).catch((err) => { + console.log(err); + addToLogs(err); + }); + + messages = await getMessages(interaction.options.get('name').value, "role").catch((err) => { + console.log(err); + addToLogs(err); + }); + + sendConv(messages).then((res) => { + addMessage(interaction.options.get('name').value,"assistant",res.data.choices[0].message.content , "Chaise bot").catch((err) => { + console.log(err); + addToLogs(err); + }); + + const embed_user = new discord.EmbedBuilder() + .setColor(0xBBFAF4) + .setAuthor({ name : interaction.member.user.username, iconURL : "https://cdn.discordapp.com/avatars/"+interaction.member.user.id+"/"+interaction.member.user.avatar+".jpeg"}) + .setDescription(interaction.options.get('message').value); + + const embed_bot = new discord.EmbedBuilder() + .setColor(0xFABBDE) + .setAuthor({ name : "Chaise bot", iconURL : client.user.displayAvatarURL()}) + .setDescription(res.data.choices[0].message.content) + .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); + + interaction.editReply({ embeds : [embed_user, embed_bot] }); + + addToLogs('[Discord] Added message to conversation : ' + interaction.options.get('name').value); + console.log('[Discord] Added message to conversation : ' + interaction.options.get('name').value); + }).catch((err) => { + console.log(err); + }); + } + } + + else if (interaction.commandName === 'displayconv') { + await interaction.deferReply(); + + if (interaction.options.get('name').value.includes(" ")) { + const embed = new discord.EmbedBuilder() + .setColor(0xFABBDE) + .setAuthor({ name : "Error", iconURL : client.user.displayAvatarURL()}) + .setDescription("Conversation name can't contain spaces") + .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); + + interaction.editReply({ embeds : [embed] }); + + addToLogs('[Discord] Conversation name can\'t contain spaces'); + console.log('[Discord] Conversation name can\'t contain spaces'); + }else { + convs = await getConvs().catch((err) => { + console.log(err); + addToLogs(err); + }); + + if (!convs.includes(interaction.options.get('name').value)) { + const embed = new discord.EmbedBuilder() + .setColor(0xFABBDE) + .setAuthor({ name : "Error", iconURL : client.user.displayAvatarURL()}) + .setDescription("Conversation not found in the database") + .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); + + interaction.editReply({ embeds : [embed] }); + + addToLogs('[Discord] Conversation not found in the database'); + console.log('[Discord] Conversation not found in the database'); + } + + messages = await getMessages(interaction.options.get('name').value, "user").catch((err) => { + console.log(err); + addToLogs(err); + }); + + embed_text = ""; + + messages.forEach(element => { + if (element.user == "System") {} + else { + embed_text += "**" + element.user + "** : " + element.content + "\n\n"; + } + }); + + if (embed_text.length > 4096) { + embed_text = "Conversation too long to display"; + } + + const embed = new discord.EmbedBuilder() + .setColor(0xFABBDE) + .setAuthor({ name : "Conversation : " + interaction.options.get('name').value, iconURL : client.user.displayAvatarURL()}) + .setDescription(embed_text) + .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); + + interaction.editReply({ embeds : [embed] }); + + addToLogs('[Discord] Displayed conversation : ' + interaction.options.get('name').value); + console.log('[Discord] Displayed conversation : ' + interaction.options.get('name').value); + } + } + + else if (interaction.commandName === 'getmyguota') { + await interaction.deferReply(); + + quota = (await isNewUser(interaction.member.user.id, interaction.member.user.username).catch((error) => { + console.log(error); + addToLogs(error); + })).quota; + + const embed = new discord.EmbedBuilder() + .setColor(0xFABBDE) + .setAuthor({ name : "Quota : " + interaction.member.user.username, iconURL : "https://cdn.discordapp.com/avatars/"+interaction.member.user.id+"/"+interaction.member.user.avatar+".jpeg"}) + .setDescription("You have " + (200000 - quota) + " tokens left this month") + .setFooter({ text : "Powered by OpenAI https://www.openai.com/", iconURL : "https://seeklogo.com/images/O/open-ai-logo-8B9BFEDC26-seeklogo.com.png" }); + + interaction.editReply({ embeds : [embed] }); + + addToLogs('[Discord] Quota requested by ' + interaction.member.user.username); + console.log('[Discord] Quota requested by ' + interaction.member.user.username); + } + }); + } +} \ No newline at end of file diff --git a/libs/openAi.js b/libs/openAi.js index 4aabfa4..dc37da0 100644 --- a/libs/openAi.js +++ b/libs/openAi.js @@ -23,7 +23,7 @@ async function generateImage(query, ctx, bot) { async function answerQuestion(query) { response = await openai.createChatCompletion({ - model: "gpt-3.5-turbo", + model: "gpt-4", messages: [{ "role" : "user", "content" : query}], temperature: 0.9, }).catch((err) => { @@ -36,7 +36,7 @@ async function answerQuestion(query) { async function sendConv (messages) { response = await openai.createChatCompletion({ - model: "gpt-3.5-turbo", + model: "gpt-4", messages: messages, temperature: 0.9, }).catch((err) => {