commit
This commit is contained in:
parent
94ec4debeb
commit
c4f0c65098
3 changed files with 346 additions and 327 deletions
328
app.js
328
app.js
|
@ -9,6 +9,7 @@ const { rtag, r34 } = require('./libs/rule34');
|
||||||
const { addToLogs, isTrue, getHelp } = require('./libs/botTools');
|
const { addToLogs, isTrue, getHelp } = require('./libs/botTools');
|
||||||
const { generateImage, answerQuestion, sendConv } = require('./libs/openAi');
|
const { generateImage, answerQuestion, sendConv } = require('./libs/openAi');
|
||||||
const { addUserToDb, incrementQuota, usersInDb, getQuota, addConv, delConv, getConvs, addMessage, getMessages, isNewUser } = require('./libs/mysql');
|
const { addUserToDb, incrementQuota, usersInDb, getQuota, addConv, delConv, getConvs, addMessage, getMessages, isNewUser } = require('./libs/mysql');
|
||||||
|
const discordEvents = require('./events/discordEvents');
|
||||||
|
|
||||||
//bot initialization
|
//bot initialization
|
||||||
const bot = new Telegraf(process.env.TELEGRAM);
|
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.user.setPresence({ activities: [{ name: 'la belle chaise', type : 3}] });
|
||||||
});
|
});
|
||||||
|
|
||||||
client.on('messageCreate', async msg => {
|
discordEvents.newMessage(client);
|
||||||
if (msg.content.startsWith('/github')) {
|
discordEvents.newInteraction(client);
|
||||||
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);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
//bot launch
|
//bot launch
|
||||||
bot.launch()
|
bot.launch()
|
||||||
|
|
341
events/discordEvents.js
Normal file
341
events/discordEvents.js
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -23,7 +23,7 @@ async function generateImage(query, ctx, bot) {
|
||||||
|
|
||||||
async function answerQuestion(query) {
|
async function answerQuestion(query) {
|
||||||
response = await openai.createChatCompletion({
|
response = await openai.createChatCompletion({
|
||||||
model: "gpt-3.5-turbo",
|
model: "gpt-4",
|
||||||
messages: [{ "role" : "user", "content" : query}],
|
messages: [{ "role" : "user", "content" : query}],
|
||||||
temperature: 0.9,
|
temperature: 0.9,
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
|
@ -36,7 +36,7 @@ async function answerQuestion(query) {
|
||||||
|
|
||||||
async function sendConv (messages) {
|
async function sendConv (messages) {
|
||||||
response = await openai.createChatCompletion({
|
response = await openai.createChatCompletion({
|
||||||
model: "gpt-3.5-turbo",
|
model: "gpt-4",
|
||||||
messages: messages,
|
messages: messages,
|
||||||
temperature: 0.9,
|
temperature: 0.9,
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue