From c4f9cd1ced6d303bf2bb1bac6410cff252373e62 Mon Sep 17 00:00:00 2001 From: John Facey Date: Thu, 23 Dec 2021 19:28:54 -0600 Subject: [PATCH] added !answer command --- commands/add.js | 2 +- commands/answer.js | 19 +++++++++++++++++++ libFlayer.js | 34 +++++++++++++++++++++++++++++++++- package-lock.json | 41 +++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 5 files changed, 95 insertions(+), 2 deletions(-) create mode 100644 commands/answer.js diff --git a/commands/add.js b/commands/add.js index 9bf10d5..1b7f477 100644 --- a/commands/add.js +++ b/commands/add.js @@ -18,5 +18,5 @@ module.exports = { libFlayer.writeFeed(sources); libFlayer.loadFeeds(); - }, + } }; \ No newline at end of file diff --git a/commands/answer.js b/commands/answer.js new file mode 100644 index 0000000..9dd61ce --- /dev/null +++ b/commands/answer.js @@ -0,0 +1,19 @@ +var libFlayer = require("../libFlayer.js"); + +module.exports = { + name: 'answer', + description: 'Answer', + async execute(message,args) { + + if (args.length < 1) { + message.reply(`Please use in !answer [question] format`); + return; + } + var question = encodeURIComponent(args.join(" ")); + + var answerData = await libFlayer.getAnswer(question); + message.reply(`${answerData.text}`); + + + } +}; \ No newline at end of file diff --git a/libFlayer.js b/libFlayer.js index d2399d9..d874518 100644 --- a/libFlayer.js +++ b/libFlayer.js @@ -1,11 +1,15 @@ let Parser = require('rss-parser'); +const axios = require('axios'); let parser = new Parser(); let feeds = require('./feeds.json'); var jsonfile = require('jsonfile'); var fs = require('fs'); var file = ('./feeds.json'); let linkFlayerMap = []; - +let answerData = { + text: ``, + source: `` +} const { quotes } = require('./quotes.json'); exports.addSource = function(title,source){ @@ -80,4 +84,32 @@ exports.getSources = function () { exports.getQuotes = function () { return quotes; +} + +exports.getAnswer = async function (question) { + + var answerURL = `https://api.duckduckgo.com/?q=${question}&format=json&pretty=1`; + console.log(answerURL); + await axios.get(answerURL) + .then(response => { + console.log(response.data.RelatedTopics[0].Text); + console.log(response.data.RelatedTopics[0].FirstURL); + + if (response.data.Entity == "company") { + answerData = { + text: `${unescape(response.data.Abstract)}`, + source: `${unescape(response.data.AbstractSource)}` + } + } else { + answerData = { + text: `${unescape(response.data.RelatedTopics[0].Text)}`, + source: `${unescape(response.data.RelatedTopics[0].FirstURL)}` + } + } + + }) + .catch(error => { + console.log(error); + }); + return answerData; } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 25531cc..c5e2d8d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "axios": "^0.24.0", "discord.js": "^12.5.1", "dotenv": "^10.0.0", "express": "^4.17.1", @@ -68,6 +69,14 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, + "node_modules/axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "dependencies": { + "follow-redirects": "^1.14.4" + } + }, "node_modules/body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", @@ -294,6 +303,25 @@ "node": ">= 0.8" } }, + "node_modules/follow-redirects": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz", + "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -759,6 +787,14 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, + "axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "requires": { + "follow-redirects": "^1.14.4" + } + }, "body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", @@ -936,6 +972,11 @@ "unpipe": "~1.0.0" } }, + "follow-redirects": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz", + "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==" + }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", diff --git a/package.json b/package.json index f8ddc59..8e8b948 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "description": "Discord RSS News Bot", "main": "index.js", "dependencies": { + "axios": "^0.24.0", "discord.js": "^12.5.1", "dotenv": "^10.0.0", "express": "^4.17.1",