This commit is contained in:
Lukian LEIZOUR 2023-03-04 11:19:15 +01:00
parent 51e6f97c5f
commit e2f51ddee9

152
app.js
View file

@ -25,24 +25,54 @@ const connection = mysql.createConnection({
//mysql functions //mysql functions
function addUserToDb(id, user) { function addUserToDb(id, user) {
connection.query('INSERT INTO users(userid, username) VALUES("' + id + '","' + user + '")' , (error, results, fields) => { return new Promise((resolve, reject) => {
if (error) { connection.query('INSERT INTO users(userid, username) VALUES("' + id + '","' + user + '")' , (error, results, fields) => {
console.error('Erreur dans la requête : ', error); if (error) {
} else { reject(error);
console.log('Les résultats de la requête : ', results); } else {
return true; resolve();
} }
});
}); });
} }
function incrementQuota(id) { function incrementQuota(id) {
connection.query('UPDATE users SET quota = quota + 1 WHERE userid = ' + id, (error, results, fields) => { return new Promise((resolve, reject) => {
if (error) { connection.query('UPDATE users SET quota = quota + 1 WHERE userid = ' + id, (error, results, fields) => {
console.error('Erreur dans la requête : ', error); if (error) {
} else { reject(error);
console.log('Les résultats de la requête : ', results); } else {
} resolve();
}
});
});
}
function usersInDb() {
return new Promise((resolve, reject) => {
connection.query('SELECT userid FROM users', (error, results, fields) => {
if (error) {
reject(error);
} else {
users = [];
results.forEach(element => {
users.push(element.userid);
});
resolve(users);
}
});
});
}
function getQuota(id) {
return new Promise((resolve, reject) => {
connection.query('SELECT quota FROM users WHERE userid = ' + id, (error, results, fields) => {
if (error) {
reject(error);
} else {
resolve(results[0].quota);
}
});
}); });
} }
@ -188,65 +218,49 @@ client.on('interactionCreate', async interaction => {
if (interaction.commandName === 'gptrequest') { if (interaction.commandName === 'gptrequest') {
await interaction.deferReply(); await interaction.deferReply();
connection.query('SELECT userid FROM users', (error, results, fields) => { users = await usersInDb();
if (error) {
console.error('Erreur dans la requête : ', error);
} else {
var users = [];
results.forEach(element => { if (!(users.includes(interaction.member.user.id))) {
users.push(element.userid); addUserToDb(interaction.member.user.id, interaction.member.user.username);
}); addToLogs('[Discord] Added user to the database : ' + interaction.member.user.username);
console.log('[Discord] Added user to the database : ' + interaction.member.user.username);
}
if (!(users.includes(interaction.member.user.id))) { quota = await getQuota(interaction.member.user.id);
addUserToDb(interaction.member.user.id, interaction.member.user.username);
addToLogs('[Discord] Added user to the database : ' + interaction.member.user.username);
console.log('[Discord] Added user to the database : ' + interaction.member.user.username);
}
}
});
setTimeout(() => {
connection.query('SELECT quota FROM users WHERE userid = '+ interaction.member.user.id, (error, results, fields) => {
if (error) {
console.error('Erreur dans la requête : ', error);
} else {
if (results[0].quota >= 999) {
interaction.editReply('Quota exceeded, please wait');
}
else {
incrementQuota(interaction.member.user.id);
answerQuestion(interaction.options.get('question').value).then((res) => {
if (res.data.choices[0].message.content.length > 4096) {
interaction.editReply(res.data.choices[0].message.content.lenght);
addToLogs('[Discord] Sent answer to : ' +interaction.options.get('question').value);
console.log('[Discord] Sent answer to : ' + interaction.options.get('question').value);
}
else{
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(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); if (quota >= 999) {
addToLogs('[Discord] Sent answer to : ' +interaction.options.get('question').value); interaction.editReply('Quota exceeded, please wait');
interaction.editReply({ embeds : [embed] }); }
} else {
}).catch((err) => { incrementQuota(interaction.member.user.id);
console.log(err);
addToLogs(err); answerQuestion(interaction.options.get('question').value).then((res) => {
interaction.editReply("Something went wrong"); if (res.data.choices[0].message.content.length > 4096) {
}) interaction.editReply(res.data.choices[0].message.content.lenght);
addToLogs('[Discord] Sent answer to : ' +interaction.options.get('question').value);
console.log('[Discord] Generating answer to : ' + interaction.options.get('question').value); console.log('[Discord] Sent answer to : ' + interaction.options.get('question').value);
addToLogs('[Discord] Generating answer to : ' + interaction.options.get('question').value);
}
} }
}); else{
}, 100); 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(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') { else if (interaction.commandName === 'info') {