diff --git a/index.js b/index.js index e1c4cdaf..65204c17 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,5 @@ -const { TOKEN, OWNER, PREFIX, INVITE } = process.env; +const { TOKEN, OWNER, PREFIX, INVITE, CLEVS_KEY, CLEVS_USER } = process.env; + const { CommandoClient } = require('discord.js-commando'); const client = new CommandoClient({ commandPrefix: PREFIX, @@ -8,12 +9,20 @@ const client = new CommandoClient({ unknownCommandResponse: false }); const path = require('path'); + const { carbon, discordBots } = require('./structures/Stats'); + const SequelizeProvider = require('./providers/Sequelize'); const Database = require('./structures/PostgreSQL'); - Database.start(); +const Cleverbot = require('./structures/Cleverbot'); +const clevs = new Cleverbot({ + key: CLEVS_KEY, + user: CLEVS_USER, + nick: 'XiaoBot' +}); + client.setProvider(new SequelizeProvider(Database.db)); client.registry @@ -36,6 +45,19 @@ client.registry .registerDefaultCommands({ help: false }) .registerCommandsIn(path.join(__dirname, 'commands')); +const mention = new RegExp(`()`, 'g'); +client.on('message', async (msg) => { + if (msg.isMentioned(client.user)) { + const message = msg.content.replace(mention, ''); + try { + const { body } = await clevs.ask(message); + return msg.reply(body.response); + } catch (err) { + return msg.reply(err); + } + } else return; +}); + client.dispatcher.addInhibitor(msg => { if (msg.channel.type === 'dm') return false; const role = msg.guild.settings.get('singleRole'); diff --git a/package.json b/package.json index d7c68cd4..6b9719cb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xiaobot", - "version": "18.8.3", + "version": "18.8.4", "description": "A Discord Bot", "main": "shardingmanager.js", "scripts": { diff --git a/structures/Cleverbot.js b/structures/Cleverbot.js new file mode 100644 index 00000000..e76d1ab8 --- /dev/null +++ b/structures/Cleverbot.js @@ -0,0 +1,32 @@ +const request = require('superagent'); + +class Cleverbot { + constructor(options) { + this.key = options.key; + this.user = options.user; + this.nick = options.nick; + } + + create() { + return request + .post('https://cleverbot.io/1.0/create') + .send({ + user: this.user, + key: this.key, + nick: this.nick + }); + } + + ask(text) { + return request + .post('https://cleverbot.io/1.0/ask') + .send({ + user: this.user, + key: this.key, + nick: this.nick, + text + }); + } +} + +module.exports = Cleverbot;