|
// Package things needed for the bot & commands.
|
|
//const Discord = require('discord.js');
|
|
//const client = new Discord.Client({partials: ['MESSAGE', 'CHANNEL', 'REACTION'], intents: [ Discord.Intents.FLAGS.GUILDS, Discord.Intents.FLAGS.GUILD_MESSAGES, Discord.Intents.FLAGS.GUILD_MESSAGE_REACTIONS, Discord.Intents.FLAGS.GUILD_MEMBERS ]});
|
|
const {
|
|
Client,
|
|
GatewayIntentBits,
|
|
Partials,
|
|
ActivityType,
|
|
} = require('discord.js');
|
|
const client = new Client({
|
|
partials: [Partials.Message, Partials.Channel, Partials.Reaction],
|
|
intents: [
|
|
GatewayIntentBits.Guilds,
|
|
GatewayIntentBits.GuildMessages,
|
|
GatewayIntentBits.MessageContent,
|
|
GatewayIntentBits.GuildMessageReactions,
|
|
GatewayIntentBits.GuildMembers,
|
|
GatewayIntentBits.GuildPresences,
|
|
],
|
|
});
|
|
const ud = require('urban-dictionary');
|
|
const mysql = require('mysql');
|
|
const request = require('request');
|
|
const fs = require('fs');
|
|
const http = require('http');
|
|
const https = require('https');
|
|
const math = require('mathjs');
|
|
const unixTime = Math.floor(Date.now() / 1000);
|
|
// Create a connection to the mysql database
|
|
function mysqlConnect() {
|
|
var mysqlParams = mysql.createConnection({
|
|
host: '127.0.0.1',
|
|
user: 'ur user here',
|
|
password: 'ur password here',
|
|
database: 'ur db here',
|
|
});
|
|
return mysqlParams;
|
|
}
|
|
const objMysq = mysqlConnect();
|
|
// Functions needed for commands.
|
|
// Removes first word.
|
|
function rmF(str) {
|
|
const indexOfSpace = str.indexOf(' ');
|
|
if (indexOfSpace === -1) {
|
|
return '';
|
|
}
|
|
return str.substring(indexOfSpace + 1);
|
|
}
|
|
// Sleep function, when you want the command to pause for a bit.
|
|
function sleep(time, callback) {
|
|
var stop = new Date().getTime();
|
|
while (new Date().getTime() < stop + time) {}
|
|
callback();
|
|
}
|
|
|
|
const { SlashCommandBuilder, Routes } = require('discord.js');
|
|
const { REST } = require('@discordjs/rest');
|
|
|
|
const commands = [
|
|
new SlashCommandBuilder()
|
|
.setName('i')
|
|
.setDescription('Searches Google Images')
|
|
.addStringOption((option) =>
|
|
option
|
|
.setName('search')
|
|
.setDescription('enter search term')
|
|
.setRequired(true)
|
|
),
|
|
new SlashCommandBuilder()
|
|
.setName('r')
|
|
.setDescription('Performs your last /i search again'),
|
|
].map((command) => command.toJSON());
|
|
|
|
const rest = new REST({ version: '10' }).setToken('ur token here');
|
|
|
|
rest
|
|
.put(
|
|
Routes.applicationGuildCommands(
|
|
'ur server shit here ig',
|
|
'ur server shit here ig'
|
|
),
|
|
{ body: commands }
|
|
)
|
|
.then(() => console.log('Successfully registered application commands.'))
|
|
.catch(console.error);
|
|
|
|
client.on('interactionCreate', async (interaction) => {
|
|
if (!interaction.isChatInputCommand()) return;
|
|
|
|
const { commandName } = interaction;
|
|
var senderID = interaction.user.id;
|
|
(async () => {
|
|
//await needs async
|
|
const member = await interaction.guild.members.fetch(senderID); //remember you still need async
|
|
var membersStatus = member.presence?.status;
|
|
if (membersStatus === null || membersStatus === undefined) {
|
|
var membersStatus = 'offline';
|
|
}
|
|
// Determine if this chat is allowed to use the bot.
|
|
var sql = 'SELECT * FROM discord WHERE discord_id = ?';
|
|
objMysq.query(sql, [senderID], function (err, rows, fields) {
|
|
if (err) throw err;
|
|
var preventError = rows.length;
|
|
var errorCheck = preventError.toString();
|
|
if (errorCheck > '0') {
|
|
// Grab information about sender from the database.
|
|
const myTeleID = rows[0].discord_id;
|
|
const myBanned = rows[0].banned;
|
|
const aiEnabled = rows[0].ai_enabled;
|
|
const aaDmin = rows[0].ai_admin;
|
|
const myLastI = rows[0].last_search;
|
|
// Check whether or not the sender is banned from using JustaBot.
|
|
|
|
if (commandName === 'i') {
|
|
if (myBanned === 'yes') {
|
|
//interaction.reply("im confused. it seems ur offline <:pepesmile:961516075135160330>");
|
|
} else {
|
|
var searchQuery = interaction.options.getString('search');
|
|
//await interaction.reply('use -i for now <:pepeGrin:1001962955820245152>');
|
|
let query =
|
|
"UPDATE discord SET last_search='" +
|
|
searchQuery +
|
|
"' WHERE discord_id='" +
|
|
senderID +
|
|
"'";
|
|
objMysq.query(query, (err, rows) => {});
|
|
var r = request.get(
|
|
'seledity inc secret url delete this if u cant figure out how to make your own web server with google custom search api' +
|
|
searchQuery,
|
|
function (err, res, body) {
|
|
interaction.reply(body);
|
|
}
|
|
);
|
|
}
|
|
}
|
|
if (commandName === 'r') {
|
|
if (myBanned === 'yes') {
|
|
//interaction.reply("im confused. it seems ur offline <:pepesmile:961516075135160330>");
|
|
} else {
|
|
var searchQuery = interaction.options.getString('search');
|
|
//await interaction.reply('use -i for now <:pepeGrin:1001962955820245152>');
|
|
var sql = 'SELECT * FROM discord WHERE discord_id = ?';
|
|
objMysq.query(sql, [senderID], function (err, rows, fields) {
|
|
if (err) throw err;
|
|
var preventError = rows.length;
|
|
var errorCheck = preventError.toString();
|
|
if (errorCheck > '0') {
|
|
const myLastI = rows[0].last_search;
|
|
var r = request.get(
|
|
'seledity inc secret url delete this if u cant figure out how to make your own web server with google custom search api' +
|
|
myLastI,
|
|
function (err, res, body) {
|
|
interaction.reply(body);
|
|
}
|
|
);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|
|
});
|
|
})();
|
|
});
|
|
|
|
client.on('ready', () => {
|
|
console.log(`Logged in as ${client.user.tag}!`);
|
|
client.user.setPresence({
|
|
activities: [{ name: `you. GET OFF INVIS`, type: ActivityType.Watching }],
|
|
status: 'online',
|
|
});
|
|
});
|
|
// Add role if reaction is added.
|
|
client.on('messageReactionAdd', async (reaction, user) => {
|
|
if (reaction.message.partial) await reaction.message.fetch();
|
|
// Verify member if they react to the message in #rules.
|
|
if (reaction.message.id === '1007001408958103562') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.add('961462248281362453');
|
|
}
|
|
// 18+ Role.
|
|
if (reaction.message.id === '1027217198445502494') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.add('975932941291114547');
|
|
}
|
|
// #95a9df Role.
|
|
if (reaction.message.id === '1022701182071885904') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.add('1007010851003322379');
|
|
}
|
|
// #518efa Role.
|
|
if (reaction.message.id === '1022702263858376754') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.add('1017995357734584392');
|
|
}
|
|
// #0da2a2 Role.
|
|
if (reaction.message.id === '1022702315922276382') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.add('1018714201218367559');
|
|
}
|
|
// #deb887 Role.
|
|
if (reaction.message.id === '1022702368518852638') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.add('1020092393288110153');
|
|
}
|
|
// #078b00 Role.
|
|
if (reaction.message.id === '1022703032074518649') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.add('1022696313453809674');
|
|
}
|
|
// #00e1ff Role.
|
|
if (reaction.message.id === '1022703064114802728') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.add('1022696509344579615');
|
|
}
|
|
// #a725ff Role.
|
|
if (reaction.message.id === '1022703421993791619') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.add('1022696608481157120');
|
|
}
|
|
// #ff6f6f Role.
|
|
if (reaction.message.id === '1022703953466622062') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.add('1022703622515064923');
|
|
}
|
|
// #ee15c3 Role.
|
|
if (reaction.message.id === '1027215978867736646') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.add('1023316979064508610');
|
|
}
|
|
// #ccc105 Role.
|
|
if (reaction.message.id === '1027216081988878436') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.add('1023317213287043204');
|
|
}
|
|
// #ffc128 Role.
|
|
if (reaction.message.id === '1027216165229039668') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.add('1023317358128930887');
|
|
}
|
|
// #6ceb00 Role.
|
|
if (reaction.message.id === '1027216226495234099') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.add('1023317500512968834');
|
|
}
|
|
// #25ffc1 Role.
|
|
if (reaction.message.id === '1027216287899857077') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.add('1027215369468915712');
|
|
}
|
|
});
|
|
|
|
// Remove role if reaction is removed.
|
|
client.on('messageReactionRemove', async (reaction, user) => {
|
|
if (reaction.message.partial) await reaction.message.fetch();
|
|
// 18+ Role.
|
|
if (reaction.message.id === '1027217198445502494') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.remove('975932941291114547');
|
|
}
|
|
// #95a9df Role.
|
|
if (reaction.message.id === '1022701182071885904') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.remove('1007010851003322379');
|
|
}
|
|
// #518efa Role.
|
|
if (reaction.message.id === '1022702263858376754') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.remove('1017995357734584392');
|
|
}
|
|
// #0da2a2 Role.
|
|
if (reaction.message.id === '1022702315922276382') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.remove('1018714201218367559');
|
|
}
|
|
// #deb887 Role.
|
|
if (reaction.message.id === '1022702368518852638') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.remove('1020092393288110153');
|
|
}
|
|
// #078b00 Role.
|
|
if (reaction.message.id === '1022703032074518649') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.remove('1022696313453809674');
|
|
}
|
|
// #00e1ff Role.
|
|
if (reaction.message.id === '1022703064114802728') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.remove('1022696509344579615');
|
|
}
|
|
// #a725ff Role.
|
|
if (reaction.message.id === '1022703421993791619') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.remove('1022696608481157120');
|
|
}
|
|
// #ff6f6f Role.
|
|
if (reaction.message.id === '1022703953466622062') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.remove('1022703622515064923');
|
|
}
|
|
// #ee15c3 Role.
|
|
if (reaction.message.id === '1027215978867736646') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.remove('1023316979064508610');
|
|
}
|
|
// #ccc105 Role.
|
|
if (reaction.message.id === '1027216081988878436') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.remove('1023317213287043204');
|
|
}
|
|
// #ffc128 Role.
|
|
if (reaction.message.id === '1027216165229039668') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.remove('1023317358128930887');
|
|
}
|
|
// #6ceb00 Role.
|
|
if (reaction.message.id === '1027216226495234099') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.remove('1023317500512968834');
|
|
}
|
|
// #25ffc1 Role.
|
|
if (reaction.message.id === '1027216287899857077') {
|
|
const member = await reaction.message.guild.members.fetch(user.id);
|
|
member.roles.remove('1027215369468915712');
|
|
}
|
|
});
|
|
client.on('messageCreate', (msg) => {
|
|
//console.log(msg);
|
|
const chatmsg = msg.content;
|
|
var senderID = msg.author.id;
|
|
(async () => {
|
|
//await needs async
|
|
const member = await msg.guild.members.fetch(senderID); //remember you still need async
|
|
var membersStatus = member.presence?.status;
|
|
if (membersStatus === null || membersStatus === undefined) {
|
|
var membersStatus = 'offline';
|
|
}
|
|
//console.log(membersStatus);
|
|
//if(membersStatus === 'offline') {
|
|
// console.log(membersStatus);
|
|
// msg.react('<:getoffinvis:1011041876096323714>');
|
|
// msg.react('❌');
|
|
// msg.react('💩');
|
|
// member.timeout(1 * 60 * 1000, 'chatting while invis')
|
|
// .then()
|
|
// .catch();
|
|
// }
|
|
|
|
//console.log(membersStatus);
|
|
const senderName = '<@' + senderID + '>';
|
|
const senderUsername = msg.author.username;
|
|
const senderQuery = rmF(chatmsg);
|
|
// tiktok 'command' (detects a tiktok url and uploads the video from it)
|
|
if (
|
|
chatmsg.startsWith('https://vm.tiktok.com/') === true ||
|
|
chatmsg.startsWith('https://www.tiktok.com/') === true
|
|
) {
|
|
msg.delete();
|
|
request(
|
|
{
|
|
uri:
|
|
'seledity inc secret url delete this if u cant figure out how to make your own web server with tiktok video grabbing sht' +
|
|
chatmsg,
|
|
},
|
|
function (error, response, body) {
|
|
(async function () {
|
|
await new Promise((resolve) =>
|
|
request(body)
|
|
.pipe(fs.createWriteStream('tiktok.mp4'))
|
|
.on('finish', function () {
|
|
msg.channel.send({
|
|
content: senderName + ' sent a tiktok :)',
|
|
files: ['./tiktok.mp4'],
|
|
});
|
|
})
|
|
);
|
|
})();
|
|
}
|
|
);
|
|
}
|
|
// ifunny 'command' (detects a ifunny url and uploads the video from it)
|
|
// if(chatmsg.startsWith('https://ifunny.co/video/') === true) {
|
|
// msg.delete();
|
|
// request({uri: "http://192.168.8.141/ifunny/?u=" + chatmsg},
|
|
// function(error, response, body) {
|
|
// (async function(){
|
|
// await new Promise(resolve =>
|
|
// request(body)
|
|
// .pipe(fs.createWriteStream('ifunny.h264'))
|
|
// .on('finish', async function () {
|
|
// console.log('ok now next');
|
|
// console.log('....');
|
|
// const ffmpegPath = require('@ffmpeg-installer/ffmpeg').path;
|
|
// const ffmpeg = require('fluent-ffmpeg');
|
|
// ffmpeg.setFfmpegPath(ffmpegPath);
|
|
// var inFilename = "ifunny.h264";
|
|
// var outFilename = "ifunny.mp4";
|
|
// await new Promise(resolve =>
|
|
// ffmpeg(inFilename)
|
|
// .outputOptions('-r 24') // this will copy the data instead or reencode it
|
|
// .save(outFilename)
|
|
// .on('end', function () {
|
|
// console.log('ok');
|
|
// msg.channel.send({
|
|
// content: senderName + " sent an ifunny video :)",
|
|
/// files: [
|
|
// "./ifunny.mp4"
|
|
// ]
|
|
// });
|
|
// }));
|
|
// }));
|
|
// })()
|
|
// });
|
|
/// }
|
|
// if a command was detected, by a message starting with "-", this is called
|
|
const commandCheck = chatmsg.startsWith('-');
|
|
if (commandCheck === true) {
|
|
console.log('cmd');
|
|
// Determine if this chat is allowed to use the bot.
|
|
var sql = 'SELECT * FROM discord WHERE discord_id = ?';
|
|
objMysq.query(sql, [senderID], function (err, rows, fields) {
|
|
if (err) throw err;
|
|
var preventError = rows.length;
|
|
var errorCheck = preventError.toString();
|
|
if (errorCheck > '0') {
|
|
// Grab information about sender from the database.
|
|
const myTeleID = rows[0].discord_id;
|
|
const myBanned = rows[0].banned;
|
|
const aiEnabled = rows[0].ai_enabled;
|
|
const aaDmin = rows[0].ai_admin;
|
|
const myLastI = rows[0].last_search;
|
|
const invis_crackdown = rows[0].invis_crackdown;
|
|
// Check whether or not the sender is banned from using JustaBot.
|
|
if (myBanned === 'yes') {
|
|
msg.react('❌');
|
|
}
|
|
// If they aren't banned, listen to and respond to 'dash' commands.
|
|
else {
|
|
// Listen for command: -purge (deletes X msgs)
|
|
if (chatmsg.startsWith('-purge') === true && aaDmin === 'true') {
|
|
if (senderQuery === '') {
|
|
msg.react('🤨');
|
|
} else {
|
|
if (Number.isInteger(+senderQuery)) {
|
|
if (senderQuery >= 100 || senderQuery <= 0) {
|
|
msg.react('🤨');
|
|
} else {
|
|
var senderQueer = +senderQuery + 1;
|
|
var senderQueer = senderQueer.toString();
|
|
async function clear() {
|
|
const fetched = await msg.channel.messages.fetch({
|
|
limit: senderQueer,
|
|
});
|
|
msg.channel.bulkDelete(fetched);
|
|
}
|
|
clear();
|
|
}
|
|
} else {
|
|
//not a num
|
|
msg.react('🤨');
|
|
}
|
|
}
|
|
}
|
|
// joey cmd
|
|
if (chatmsg.startsWith('-joey') === true) {
|
|
msg.channel.send({
|
|
content: senderName + ', fuuuuuUTTTUREE',
|
|
files: ['./joey.mp4'],
|
|
});
|
|
}
|
|
// Listen for command: -ud (searches Urban Dictionary)
|
|
if (chatmsg.startsWith('-ud') === true) {
|
|
// If sender forgot to include a search query, let them know.
|
|
if (senderQuery === '') {
|
|
var botResponse =
|
|
senderName +
|
|
", you also have to include what you'd like to search for on Urban Dictionary.";
|
|
msg.reply(botResponse);
|
|
} else {
|
|
// Search the query on UD.
|
|
ud.define(senderQuery)
|
|
.then((results) => {
|
|
var word = results[0].word;
|
|
var def = results[0].definition;
|
|
var botResponse = '**' + word + '**' + ': ' + def;
|
|
msg.reply(botResponse);
|
|
// If there was an error, describe it below.
|
|
})
|
|
.catch((error) => {
|
|
var botResponse =
|
|
senderName +
|
|
', I could not find anything for "' +
|
|
senderQuery +
|
|
'" on Urban Dictionary.';
|
|
msg.reply(botResponse);
|
|
});
|
|
}
|
|
}
|
|
// Listen for command: -calc (does math n sht)
|
|
if (chatmsg.startsWith('-calc') === true) {
|
|
if (senderQuery !== '') {
|
|
const re = /\d+(\+|\-|\*|\/)\d+/;
|
|
if (re.test(senderQuery) === true) {
|
|
var doMath = math.evaluate(senderQuery);
|
|
var doMath = senderQuery + ' = ' + doMath;
|
|
msg.reply(doMath + '\n' + senderName);
|
|
} else {
|
|
msg.react('🤨');
|
|
msg.react('👎');
|
|
}
|
|
} else {
|
|
msg.react('🤨');
|
|
}
|
|
}
|
|
// Listen for command: -i, -R34, -gif, -r (searches Google Images through Google Custom Search API)
|
|
if (
|
|
chatmsg.startsWith('-i') === true ||
|
|
chatmsg.startsWith('-R34') === true ||
|
|
chatmsg.startsWith('-gif') === true ||
|
|
chatmsg.startsWith('-r') === true
|
|
) {
|
|
if (senderQuery === '' && chatmsg.startsWith('-r') === false) {
|
|
var botResponse =
|
|
senderName +
|
|
", you also have to include what you'd like to search for on Google Images.";
|
|
msg.reply(botResponse);
|
|
} else {
|
|
var searchQuery = senderQuery;
|
|
if (chatmsg.startsWith('-R34') === true) {
|
|
var searchQuery = senderQuery + ' rule 34';
|
|
}
|
|
if (chatmsg.startsWith('-gif') === true) {
|
|
var searchQuery = senderQuery + ' gif';
|
|
}
|
|
if (chatmsg.startsWith('-r') === true) {
|
|
var searchQuery = myLastI;
|
|
}
|
|
let query =
|
|
"UPDATE discord SET last_search='" +
|
|
searchQuery +
|
|
"' WHERE discord_id='" +
|
|
senderID +
|
|
"'";
|
|
objMysq.query(query, (err, rows) => {});
|
|
var r = request.get(
|
|
'seledity inc secret url delete this if u cant figure out how to make your own web server with google custom search api' +
|
|
searchQuery,
|
|
function (err, res, body) {
|
|
if (err !== null || body === 'failed' || body === 'quota') {
|
|
if (body === 'quota') {
|
|
var botResponse =
|
|
senderName +
|
|
', the daily quota for Google Images was exceeded. I saved "' +
|
|
searchQuery +
|
|
'" as your last search. Type "-r" later to try again.';
|
|
} else {
|
|
var botResponse =
|
|
senderName +
|
|
', an error occured while searching for "' +
|
|
searchQuery +
|
|
'" on Google Images. I will make one more search attempt for you.';
|
|
// vv Attempt to search for the image again, if it failed. vv
|
|
var retryI = request.get(
|
|
'seledity inc secret url delete this if u cant figure out how to make your own web server with google custom search api' +
|
|
searchQuery,
|
|
function (err, res, body) {
|
|
if (
|
|
err !== null ||
|
|
body === 'failed' ||
|
|
body === 'quota'
|
|
) {
|
|
if (body === 'quota') {
|
|
var botResponse =
|
|
senderName +
|
|
', the daily quota for Google Images was exceeded. I saved "' +
|
|
searchQuery +
|
|
'" as your last search. Type "-r" later to try again.';
|
|
} else {
|
|
var botResponse =
|
|
senderName +
|
|
', searching for "' +
|
|
searchQuery +
|
|
'" on Google Images failed again. Type "-r" to retry your search.';
|
|
}
|
|
msg.reply(botResponse);
|
|
} else {
|
|
var optionalPhotoRetry = {
|
|
caption: '"' + searchQuery + '" ' + senderName,
|
|
};
|
|
var embed = {
|
|
image: {
|
|
url: body.toString(),
|
|
},
|
|
};
|
|
msg.reply(body);
|
|
}
|
|
}
|
|
);
|
|
// ^^ Attempt to search for the image again, if it failed. ^^
|
|
}
|
|
msg.reply(botResponse);
|
|
} else {
|
|
var embed = {
|
|
image: {
|
|
url: body.toString(),
|
|
},
|
|
};
|
|
msg.reply(body);
|
|
}
|
|
}
|
|
);
|
|
}
|
|
}
|
|
// ai
|
|
if (chatmsg.startsWith('-ai') === true) {
|
|
if (aiEnabled === 'no') {
|
|
msg.react('❌');
|
|
} else {
|
|
const got = require('got');
|
|
const question = senderQuery;
|
|
(async () => {
|
|
const url =
|
|
'https://api.openai.com/v1/engines/davinci/completions';
|
|
const prompt = `${question}`;
|
|
const params = {
|
|
prompt: prompt,
|
|
max_tokens: 150,
|
|
temperature: 0.7,
|
|
frequency_penalty: 1,
|
|
presence_penalty: 0.4,
|
|
stop: '\nHuman',
|
|
};
|
|
const headers = {
|
|
Authorization: `Bearer ${process.env.OPENAI_SECRET_KEY}`,
|
|
};
|
|
|
|
try {
|
|
const response = await got
|
|
.post(url, { json: params, headers: headers })
|
|
.json();
|
|
output = `${prompt}${response.choices[0].text}`;
|
|
msg.reply(senderName + '\n\n' + output + '...');
|
|
} catch (err) {
|
|
console.log(err);
|
|
}
|
|
})();
|
|
}
|
|
}
|
|
// ai
|
|
}
|
|
} else {
|
|
var insdata = {
|
|
discord_id: senderID,
|
|
username: senderUsername,
|
|
last_search: 'undefined',
|
|
};
|
|
objMysq.query(
|
|
'INSERT INTO discord SET ?',
|
|
insdata,
|
|
function (err, result) {}
|
|
);
|
|
msg.react('🤨');
|
|
}
|
|
});
|
|
}
|
|
})(); // erase this
|
|
});
|
|
client.login('ur discord key sht');
|