mirror of
https://github.com/ION606/selmerBot.git
synced 2026-05-15 05:36:54 +00:00
Added more moderation commands and upgraded the 'audio' command
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
const { MongoClient, ServerApiVersion, ConnectionClosedEvent } = require('mongodb');
|
||||
const { exit } = require('process');
|
||||
const { checkResponses } = require('./wordlist.js');
|
||||
|
||||
|
||||
//Error checking function (message deleted error fix, workaround already applied but...)
|
||||
//message.channel.send("Oops, there's been an error, please contact support!");
|
||||
async function messageExists(message) {
|
||||
return new Promise((resolve, reject) => {
|
||||
try {
|
||||
message.channel.messages.fetch(message.id)
|
||||
.then((fetchedMessage) => {
|
||||
resolve(true);
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err);
|
||||
resolve(false);
|
||||
})
|
||||
} catch (err) { resolve(false); }
|
||||
|
||||
resolve(true);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
async function getResponse(convo, bot) {
|
||||
const response = await bot.openai.createCompletion({
|
||||
model: "text-davinci-002",
|
||||
prompt: convo,
|
||||
temperature: 0.9,
|
||||
max_tokens: 150,
|
||||
top_p: 1,
|
||||
frequency_penalty: 0,
|
||||
presence_penalty: 0.6,
|
||||
stop: [" Human:", " AI:"],
|
||||
});
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
async function convoManager(clientinp, bot, message) {
|
||||
|
||||
//Just in case, make sure it can't be changed
|
||||
const client = clientinp;
|
||||
const dbo = client.db("DM").collection(message.author.id);
|
||||
|
||||
if (message.content.startsWith('!')) {
|
||||
if (message.content.split(' ')[0] == '!startconvo') {
|
||||
//Check if a conversation already exists
|
||||
dbo.find({'_id': {$exists: true}}).toArray((err, docs) => {
|
||||
if (docs[0] != undefined) {
|
||||
return message.channel.send("You're already in a conversation");
|
||||
} else {
|
||||
dbo.insertOne({convo: 'Human: Hello\nAI: Hello'});
|
||||
return message.channel.send('-----Started Conversation-----\nuse _!endconvo_ to end the conversation!\n\n_Disclaimer: Your conversation data is stored for the duration of the conversation to help Selmer Bot better understand what you are saying *then deleted*_\n\n');
|
||||
}
|
||||
});
|
||||
|
||||
} else if (message.content.split(' ')[0] == '!endconvo') {
|
||||
dbo.drop();
|
||||
return message.channel.send('-----Ended Conversation-----\nSee you next time!');
|
||||
} else {
|
||||
return message.channel.send('UNUSABLE DM COMMAND DETECTED');
|
||||
}
|
||||
} else {
|
||||
dbo.find({convo: {$exists: true}}).toArray(async function (err, docs) {
|
||||
const doc = docs[0];
|
||||
if (!doc) { return message.reply('You aren\'t currently in a conversation\nUse _!startconvo_ to start one!'); }
|
||||
|
||||
//Checking Section
|
||||
const check = checkResponses(message.content, "I'm sorry, I can't do that");
|
||||
if (check != null) { return message.reply(check); }
|
||||
|
||||
|
||||
let convo = doc.convo;
|
||||
convo += `\nHuman: ${message.content}\n`;;
|
||||
|
||||
//Get the response
|
||||
const r = await getResponse(convo, bot);
|
||||
|
||||
let response = r.data.choices[0].text;
|
||||
|
||||
convo += (response + '\n');
|
||||
|
||||
dbo.updateOne(doc, {$set: {convo: convo}});
|
||||
response = response.replaceAll('AI: ', '').replaceAll('AI:\n', '');
|
||||
|
||||
//Very buggy so I'm adding this for now
|
||||
message.channel.send(response);
|
||||
|
||||
//Note: Work with the following later
|
||||
/* messageExists(message).then((e) => {
|
||||
console.log(e);
|
||||
if (e) { return message.reply(response); }
|
||||
message.channel.send(response);
|
||||
}) */
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
//"Hello! discord_user:"
|
||||
module.exports = {
|
||||
name: 'chat',
|
||||
description: 'chat',
|
||||
convoManager,
|
||||
execute(message, args, Discord, Client, bot) {
|
||||
message.reply("Please DM Selmer bot to use this command!");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user