From 69c0a8e75564736a56c9e74ba58589fc2742fc59 Mon Sep 17 00:00:00 2001 From: PatoGMTP <93350228+PatoGMTP@users.noreply.github.com> Date: Fri, 5 Nov 2021 11:33:56 -0500 Subject: [PATCH 01/17] Added .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file From e3d418d2bf0b6843da5a917cd98672f03eafd364 Mon Sep 17 00:00:00 2001 From: jacob Date: Fri, 5 Nov 2021 11:34:47 -0500 Subject: [PATCH 02/17] jacob's initial commit --- package-lock.json | 107 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 24 +++++++++++ src/index.js | 17 ++++++++ 3 files changed, 148 insertions(+) create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/index.js diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..de01ecc --- /dev/null +++ b/package-lock.json @@ -0,0 +1,107 @@ +{ + "name": "build-a-bot", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "build-a-bot", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "axios": "^0.24.0", + "prompt-sync": "^4.2.0" + } + }, + "node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "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/follow-redirects": { + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", + "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/prompt-sync": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/prompt-sync/-/prompt-sync-4.2.0.tgz", + "integrity": "sha512-BuEzzc5zptP5LsgV5MZETjDaKSWfchl5U9Luiu8SKp7iZWD5tZalOxvNcZRwv+d2phNFr8xlbxmFNcRKfJOzJw==", + "dependencies": { + "strip-ansi": "^5.0.0" + } + }, + "node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + } + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "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" + } + }, + "follow-redirects": { + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", + "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==" + }, + "prompt-sync": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/prompt-sync/-/prompt-sync-4.2.0.tgz", + "integrity": "sha512-BuEzzc5zptP5LsgV5MZETjDaKSWfchl5U9Luiu8SKp7iZWD5tZalOxvNcZRwv+d2phNFr8xlbxmFNcRKfJOzJw==", + "requires": { + "strip-ansi": "^5.0.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..827a1e1 --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "build-a-bot", + "version": "1.0.0", + "description": "Work with your team to build a bot (command line app)", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/PatoGMTP/build-a-bot.git" + }, + "keywords": [], + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/PatoGMTP/build-a-bot/issues" + }, + "homepage": "https://github.com/PatoGMTP/build-a-bot#readme", + "dependencies": { + "axios": "^0.24.0", + "prompt-sync": "^4.2.0" + } +} diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..f53b628 --- /dev/null +++ b/src/index.js @@ -0,0 +1,17 @@ +var axios = require("axios").default; + +var options = { + method: 'GET', + url: 'https://acobot-brainshop-ai-v1.p.rapidapi.com/get', + params: {bid: '178', key: 'sX5A2PcYZbsN5EY6', uid: 'mashape', msg: 'Well that sucks!'}, + headers: { + 'x-rapidapi-host': 'acobot-brainshop-ai-v1.p.rapidapi.com', + 'x-rapidapi-key': 'iWZLmUjilamshMIZ2BzSutl9KfyTp1GodFRjsn6q6oXIlZRVHD' + } +}; + +axios.request(options).then(function (response) { + console.log(response.data); +}).catch(function (error) { + console.error(error); +}); \ No newline at end of file From e168e7595f1e142d100005a9bbcf2317625f7b99 Mon Sep 17 00:00:00 2001 From: jacob Date: Fri, 5 Nov 2021 11:51:35 -0500 Subject: [PATCH 03/17] added talkToBot --- src/index.js | 21 ++++++--------------- src/talkToBot.js | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 15 deletions(-) create mode 100644 src/talkToBot.js diff --git a/src/index.js b/src/index.js index f53b628..733ded5 100644 --- a/src/index.js +++ b/src/index.js @@ -1,17 +1,8 @@ -var axios = require("axios").default; +const { talkToBot } = require('./talkToBot'); -var options = { - method: 'GET', - url: 'https://acobot-brainshop-ai-v1.p.rapidapi.com/get', - params: {bid: '178', key: 'sX5A2PcYZbsN5EY6', uid: 'mashape', msg: 'Well that sucks!'}, - headers: { - 'x-rapidapi-host': 'acobot-brainshop-ai-v1.p.rapidapi.com', - 'x-rapidapi-key': 'iWZLmUjilamshMIZ2BzSutl9KfyTp1GodFRjsn6q6oXIlZRVHD' - } -}; +const a = async() => { + let x = await talkToBot("Hey there!"); + console.log(x); +} -axios.request(options).then(function (response) { - console.log(response.data); -}).catch(function (error) { - console.error(error); -}); \ No newline at end of file +a(); \ No newline at end of file diff --git a/src/talkToBot.js b/src/talkToBot.js new file mode 100644 index 0000000..fc1e99d --- /dev/null +++ b/src/talkToBot.js @@ -0,0 +1,21 @@ +var axios = require("axios").default; + +const talkToBot = async(message) => { + var options = { + method: 'GET', + url: 'https://acobot-brainshop-ai-v1.p.rapidapi.com/get', + params: {bid: '178', + key: 'sX5A2PcYZbsN5EY6', + uid: 'mashape', + msg: message}, + headers: { + 'x-rapidapi-host': 'acobot-brainshop-ai-v1.p.rapidapi.com', + 'x-rapidapi-key': 'iWZLmUjilamshMIZ2BzSutl9KfyTp1GodFRjsn6q6oXIlZRVHD' + } + }; + + let response = await axios.request(options); + return response.data; +} + +module.exports = {talkToBot} From c6964fffe645fc663384c3a4b0769dde40495461 Mon Sep 17 00:00:00 2001 From: jacob Date: Fri, 5 Nov 2021 12:07:09 -0500 Subject: [PATCH 04/17] added prompt functionality --- src/index.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/index.js b/src/index.js index 733ded5..82697f7 100644 --- a/src/index.js +++ b/src/index.js @@ -1,8 +1,20 @@ +const prompt = require('prompt-sync')(); const { talkToBot } = require('./talkToBot'); +let input = ''; + const a = async() => { - let x = await talkToBot("Hey there!"); - console.log(x); + console.log(` + Hi, I'm your friendly chat-bot. Send me a message to get started. + Enter 'quit' to exit. :( + `); + + let resp = ''; + while(input.toLowerCase() != 'quit'){ + input = prompt(''); + resp = await talkToBot(input); + console.log(resp.cnt); + } } -a(); \ No newline at end of file +a(); From 877d060634801e3840c6ed652f7ea9da3819da3c Mon Sep 17 00:00:00 2001 From: jacob Date: Fri, 5 Nov 2021 13:43:29 -0500 Subject: [PATCH 05/17] added switch case --- src/getWeather.js | 0 src/index.js | 13 +++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100755 src/getWeather.js diff --git a/src/getWeather.js b/src/getWeather.js new file mode 100755 index 0000000..e69de29 diff --git a/src/index.js b/src/index.js index 82697f7..7d7eb9c 100644 --- a/src/index.js +++ b/src/index.js @@ -12,8 +12,17 @@ const a = async() => { let resp = ''; while(input.toLowerCase() != 'quit'){ input = prompt(''); - resp = await talkToBot(input); - console.log(resp.cnt); + + switch(input){ + case 'weather': + break; + default: + resp = await talkToBot(input); + console.log(` + Bot: ${resp.cnt} + `); + break; + } } } From f8551b0563b4d3ab85a4c09a869d8d89568beb59 Mon Sep 17 00:00:00 2001 From: PatoGMTP <93350228+PatoGMTP@users.noreply.github.com> Date: Fri, 5 Nov 2021 13:45:26 -0500 Subject: [PATCH 06/17] Added geocoding file --- geocoding.js | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 geocoding.js diff --git a/geocoding.js b/geocoding.js new file mode 100644 index 0000000..105c0fa --- /dev/null +++ b/geocoding.js @@ -0,0 +1,11 @@ +var axios = require("axios").default; + +const getCoords = async(message) => { + + options = "https://geocoding-api.open-meteo.com/v1/search?name=Berlin"; + + let response = await axios.request(options); + return response.data; +} + +module.exports = {getCoords} \ No newline at end of file From 84c119db256cfa8e04f4da7b59fbb1229bc76783 Mon Sep 17 00:00:00 2001 From: PatoGMTP <93350228+PatoGMTP@users.noreply.github.com> Date: Fri, 5 Nov 2021 13:59:54 -0500 Subject: [PATCH 07/17] Moved file and added functionality --- geocoding.js => src/geocoding.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) rename geocoding.js => src/geocoding.js (51%) diff --git a/geocoding.js b/src/geocoding.js similarity index 51% rename from geocoding.js rename to src/geocoding.js index 105c0fa..607fc1f 100644 --- a/geocoding.js +++ b/src/geocoding.js @@ -1,10 +1,11 @@ var axios = require("axios").default; -const getCoords = async(message) => { +const getCoords = async(location) => { - options = "https://geocoding-api.open-meteo.com/v1/search?name=Berlin"; + options = `https://geocoding-api.open-meteo.com/v1/search?name=${location}`; let response = await axios.request(options); + console.log(response.data); return response.data; } From b6af9a99bb6cff36458040f4da22dcfbe954f089 Mon Sep 17 00:00:00 2001 From: PatoGMTP <93350228+PatoGMTP@users.noreply.github.com> Date: Fri, 5 Nov 2021 14:00:13 -0500 Subject: [PATCH 08/17] minor tweak --- src/geocoding.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/geocoding.js b/src/geocoding.js index 607fc1f..10b8575 100644 --- a/src/geocoding.js +++ b/src/geocoding.js @@ -5,7 +5,6 @@ const getCoords = async(location) => { options = `https://geocoding-api.open-meteo.com/v1/search?name=${location}`; let response = await axios.request(options); - console.log(response.data); return response.data; } From 4ac52110643a142e5ddab844e9cac5898063cfbd Mon Sep 17 00:00:00 2001 From: PatoGMTP <93350228+PatoGMTP@users.noreply.github.com> Date: Fri, 5 Nov 2021 14:08:53 -0500 Subject: [PATCH 09/17] Added location keyword --- src/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/index.js b/src/index.js index 7d7eb9c..5ca4c7c 100644 --- a/src/index.js +++ b/src/index.js @@ -1,5 +1,6 @@ const prompt = require('prompt-sync')(); const { talkToBot } = require('./talkToBot'); +const { getCoords } = require('./geocoding'); let input = ''; @@ -16,6 +17,9 @@ const a = async() => { switch(input){ case 'weather': break; + case 'location': + getCoords(); + break; default: resp = await talkToBot(input); console.log(` From e21f90210912c5236a098e05916dd752b1f3838e Mon Sep 17 00:00:00 2001 From: PatoGMTP <93350228+PatoGMTP@users.noreply.github.com> Date: Fri, 5 Nov 2021 14:48:50 -0500 Subject: [PATCH 10/17] Added usweather.js file --- src/geocoding.js | 35 ++++++++++++++++++++++++++++------- src/usweather.js | 14 ++++++++++++++ 2 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 src/usweather.js diff --git a/src/geocoding.js b/src/geocoding.js index 10b8575..1c0feb6 100644 --- a/src/geocoding.js +++ b/src/geocoding.js @@ -1,11 +1,32 @@ -var axios = require("axios").default; +const axios = require("axios").default; +const prompt = require('prompt-sync')(); +const { getStation } = require("./usweather.js"); -const getCoords = async(location) => { +const getCoords = async() => { + + let location = ""; + + location = prompt("Please enter a location: "); + + apiAddr = `https://geocoding-api.open-meteo.com/v1/search?name=${location}`; + + let response = await axios.request(apiAddr).then(resp=> + { + console.log(resp.data.results.length); + resp.data.results.forEach(place => { + console.log(place.name, place.country, place.latitude, place.longitude); + }); + + + let latitude = resp.data.results[0].latitude; + let longitude = resp.data.results[0].longitude; + + getStation(latitude, longitude); + }); + - options = `https://geocoding-api.open-meteo.com/v1/search?name=${location}`; - - let response = await axios.request(options); - return response.data; } -module.exports = {getCoords} \ No newline at end of file +module.exports = {getCoords} + +getCoords(); \ No newline at end of file diff --git a/src/usweather.js b/src/usweather.js new file mode 100644 index 0000000..c23e847 --- /dev/null +++ b/src/usweather.js @@ -0,0 +1,14 @@ +const axios = require("axios").default; + +const getStation = async(latitude, longitude) => +{ + weatherStationAPI = `https://api.weather.gov/points/${latitude},${longitude}`; + + let response2 = await axios.request(weatherStationAPI).then(resp2=> + { + console.log(resp2.data.properties.forecastHourly); + } + ); +} + +module.exports = { getStation } \ No newline at end of file From 462d3dffacdb764aa9148470201e7ee850da6df8 Mon Sep 17 00:00:00 2001 From: PatoGMTP <93350228+PatoGMTP@users.noreply.github.com> Date: Fri, 5 Nov 2021 14:50:58 -0500 Subject: [PATCH 11/17] Removed some debugging things --- src/geocoding.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/geocoding.js b/src/geocoding.js index 1c0feb6..41ffc79 100644 --- a/src/geocoding.js +++ b/src/geocoding.js @@ -27,6 +27,4 @@ const getCoords = async() => { } -module.exports = {getCoords} - -getCoords(); \ No newline at end of file +module.exports = {getCoords} \ No newline at end of file From 0c70fb53c8ccab85931a850dddf7f92f33d442e4 Mon Sep 17 00:00:00 2001 From: PatoGMTP <93350228+PatoGMTP@users.noreply.github.com> Date: Fri, 5 Nov 2021 14:59:19 -0500 Subject: [PATCH 12/17] Fixed location functionality --- src/geocoding.js | 18 ++++++++---------- src/index.js | 2 +- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/geocoding.js b/src/geocoding.js index 41ffc79..7f73808 100644 --- a/src/geocoding.js +++ b/src/geocoding.js @@ -10,19 +10,17 @@ const getCoords = async() => { apiAddr = `https://geocoding-api.open-meteo.com/v1/search?name=${location}`; - let response = await axios.request(apiAddr).then(resp=> - { - console.log(resp.data.results.length); - resp.data.results.forEach(place => { - console.log(place.name, place.country, place.latitude, place.longitude); - }); + let response = await axios.request(apiAddr); + console.log(response.data.results.length); + response.data.results.forEach(place => { + console.log(place.name, place.country, place.latitude, place.longitude) + }); - let latitude = resp.data.results[0].latitude; - let longitude = resp.data.results[0].longitude; + let latitude = response.data.results[0].latitude; + let longitude = response.data.results[0].longitude; - getStation(latitude, longitude); - }); + let something = await getStation(latitude, longitude); } diff --git a/src/index.js b/src/index.js index 5ca4c7c..6a25d90 100644 --- a/src/index.js +++ b/src/index.js @@ -18,7 +18,7 @@ const a = async() => { case 'weather': break; case 'location': - getCoords(); + resp = await getCoords(); break; default: resp = await talkToBot(input); From 7fa9ec18c1f8bf03f0f5b7a11d679d9f213666e6 Mon Sep 17 00:00:00 2001 From: PatoGMTP <93350228+PatoGMTP@users.noreply.github.com> Date: Fri, 5 Nov 2021 15:13:39 -0500 Subject: [PATCH 13/17] Changed location code --- src/geocoding.js | 14 +++++++------- src/index.js | 1 + src/usweather.js | 26 ++++++++++++++++++++------ 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/geocoding.js b/src/geocoding.js index 7f73808..f841575 100644 --- a/src/geocoding.js +++ b/src/geocoding.js @@ -12,17 +12,17 @@ const getCoords = async() => { let response = await axios.request(apiAddr); - console.log(response.data.results.length); - response.data.results.forEach(place => { - console.log(place.name, place.country, place.latitude, place.longitude) - }); + // console.log(response.data.results.length); + // response.data.results.forEach(place => { + // console.log(place.name, place.country, place.latitude, place.longitude) + // }); let latitude = response.data.results[0].latitude; let longitude = response.data.results[0].longitude; - let something = await getStation(latitude, longitude); - - + let response2 = await getStation(latitude, longitude); + + return response2; } module.exports = {getCoords} \ No newline at end of file diff --git a/src/index.js b/src/index.js index 6a25d90..587b64d 100644 --- a/src/index.js +++ b/src/index.js @@ -19,6 +19,7 @@ const a = async() => { break; case 'location': resp = await getCoords(); + console.log(resp); break; default: resp = await talkToBot(input); diff --git a/src/usweather.js b/src/usweather.js index c23e847..f0bc87e 100644 --- a/src/usweather.js +++ b/src/usweather.js @@ -2,13 +2,27 @@ const axios = require("axios").default; const getStation = async(latitude, longitude) => { - weatherStationAPI = `https://api.weather.gov/points/${latitude},${longitude}`; + // weatherStationAPI = `https://api.weather.gov/points/${latitude},${longitude}`; - let response2 = await axios.request(weatherStationAPI).then(resp2=> - { - console.log(resp2.data.properties.forecastHourly); - } - ); + // let response2 = await axios.request(weatherStationAPI).then(resp2=> + // { + // console.log(resp2.data.properties.forecastHourly); + // } + // ); + + var options = { + method: 'GET', + url: 'https://yahoo-weather5.p.rapidapi.com/weather', + params: {lat: latitude, long: longitude, format: 'json', u: 'f'}, + headers: { + 'x-rapidapi-host': 'yahoo-weather5.p.rapidapi.com', + 'x-rapidapi-key': '83be9ccb27msheec8414b1075d1fp173447jsn0260598cb005' + } + }; + + let response = await axios.request(options); + + return response.data.current_observation.condition; } module.exports = { getStation } \ No newline at end of file From 4f685343e0969641a64675af874034a1b7a678df Mon Sep 17 00:00:00 2001 From: jacob Date: Fri, 5 Nov 2021 15:15:10 -0500 Subject: [PATCH 14/17] added natural language processing --- src/getTopic.js | 30 ++++++++++++++++++++++++++++++ src/index.js | 14 +++++++++++--- 2 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 src/getTopic.js diff --git a/src/getTopic.js b/src/getTopic.js new file mode 100644 index 0000000..6a259a2 --- /dev/null +++ b/src/getTopic.js @@ -0,0 +1,30 @@ +const axios = require("axios").default; + +const getTopic = async(message) => { + let resp = "error" + const options = { + method: 'POST', + url: 'https://textprobe.p.rapidapi.com/entities', + headers: { + 'content-type': 'application/json', + 'x-rapidapi-host': 'textprobe.p.rapidapi.com', + 'x-rapidapi-key': 'iWZLmUjilamshMIZ2BzSutl9KfyTp1GodFRjsn6q6oXIlZRVHD' + }, + data: {text: message , lang:"en"} + }; + + try{ + response = await axios.request(options); + let place = response.data.entities.filter((entity)=>entity.entity_type==='Place'); + if(place.length > 0){ + resp = place[0].wikidata_name; + //console.log(place[0].wikidata_name); + } + + } catch{ + return "error"; + } + return resp; +} + +module.exports = {getTopic}; \ No newline at end of file diff --git a/src/index.js b/src/index.js index 7d7eb9c..2bf9003 100644 --- a/src/index.js +++ b/src/index.js @@ -1,5 +1,6 @@ const prompt = require('prompt-sync')(); const { talkToBot } = require('./talkToBot'); +const { getTopic } = require('./getTopic'); let input = ''; @@ -9,12 +10,19 @@ const a = async() => { Enter 'quit' to exit. :( `); - let resp = ''; + let resp = '', topic = ''; while(input.toLowerCase() != 'quit'){ - input = prompt(''); + input = prompt('How can I help: '); - switch(input){ + //console.log(input.search("weather")); + if(input.search("weather") >= 0){ + topic = "weather"; + } + + switch(topic){ case 'weather': + resp = await getTopic(input); + console.log(resp) break; default: resp = await talkToBot(input); From a0b762b78c252577d28cdfc53a88ba90bb9c492c Mon Sep 17 00:00:00 2001 From: PatoGMTP <93350228+PatoGMTP@users.noreply.github.com> Date: Fri, 5 Nov 2021 15:59:06 -0500 Subject: [PATCH 15/17] Added SIB and new file --- package-lock.json | 568 +++++++++++++++++++++++++++++++++++++++++++++- package.json | 3 +- src/email.js | 65 ++++++ 3 files changed, 634 insertions(+), 2 deletions(-) create mode 100644 src/email.js diff --git a/package-lock.json b/package-lock.json index de01ecc..efc3176 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,8 @@ "license": "ISC", "dependencies": { "axios": "^0.24.0", - "prompt-sync": "^4.2.0" + "prompt-sync": "^4.2.0", + "sib-api-v3-sdk": "^8.2.1" } }, "node_modules/ansi-regex": { @@ -21,6 +22,11 @@ "node": ">=6" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "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", @@ -29,6 +35,65 @@ "follow-redirects": "^1.14.4" } }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "node_modules/cookiejar": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", + "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, "node_modules/follow-redirects": { "version": "1.14.5", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", @@ -48,6 +113,164 @@ } } }, + "node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/formidable": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", + "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==", + "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", + "dependencies": { + "mime-db": "1.50.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, "node_modules/prompt-sync": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/prompt-sync/-/prompt-sync-4.2.0.tgz", @@ -56,6 +279,70 @@ "strip-ansi": "^5.0.0" } }, + "node_modules/qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/sib-api-v3-sdk": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/sib-api-v3-sdk/-/sib-api-v3-sdk-8.2.1.tgz", + "integrity": "sha512-4TdaYZ8lRS9q+g1wSaobgv8gaTiCKDAJag1Mpdwqocwpw4yCvFlgbddS8VM8WgaPhBUsRLfUMfq3QOpugj7HLg==", + "dependencies": { + "glob-parent": "^5.1.2", + "superagent": "3.7.0", + "y18n": "^4.0.1" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -66,6 +353,36 @@ "engines": { "node": ">=6" } + }, + "node_modules/superagent": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.7.0.tgz", + "integrity": "sha512-/8trxO6NbLx4YXb7IeeFTSmsQ35pQBiTBsLNvobZx7qBzBeHYvKCyIIhW2gNcWbLzYxPAjdgFbiepd8ypwC0Gw==", + "dependencies": { + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.1.1", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" } }, "dependencies": { @@ -74,6 +391,11 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, + "asynckit": { + "version": "0.4.0", + "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", @@ -82,11 +404,173 @@ "follow-redirects": "^1.14.4" } }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "cookiejar": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", + "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==" + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, "follow-redirects": { "version": "1.14.5", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==" }, + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "formidable": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", + "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" + }, + "mime-types": { + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", + "requires": { + "mime-db": "1.50.0" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, "prompt-sync": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/prompt-sync/-/prompt-sync-4.2.0.tgz", @@ -95,6 +579,61 @@ "strip-ansi": "^5.0.0" } }, + "qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "sib-api-v3-sdk": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/sib-api-v3-sdk/-/sib-api-v3-sdk-8.2.1.tgz", + "integrity": "sha512-4TdaYZ8lRS9q+g1wSaobgv8gaTiCKDAJag1Mpdwqocwpw4yCvFlgbddS8VM8WgaPhBUsRLfUMfq3QOpugj7HLg==", + "requires": { + "glob-parent": "^5.1.2", + "superagent": "3.7.0", + "y18n": "^4.0.1" + } + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -102,6 +641,33 @@ "requires": { "ansi-regex": "^4.1.0" } + }, + "superagent": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.7.0.tgz", + "integrity": "sha512-/8trxO6NbLx4YXb7IeeFTSmsQ35pQBiTBsLNvobZx7qBzBeHYvKCyIIhW2gNcWbLzYxPAjdgFbiepd8ypwC0Gw==", + "requires": { + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.1.1", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.0.5" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" } } } diff --git a/package.json b/package.json index 827a1e1..7b0169e 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "homepage": "https://github.com/PatoGMTP/build-a-bot#readme", "dependencies": { "axios": "^0.24.0", - "prompt-sync": "^4.2.0" + "prompt-sync": "^4.2.0", + "sib-api-v3-sdk": "^8.2.1" } } diff --git a/src/email.js b/src/email.js new file mode 100644 index 0000000..9985df1 --- /dev/null +++ b/src/email.js @@ -0,0 +1,65 @@ +// // # ------------------ +// // # Create a campaign\ +// // # ------------------ +// // # Include the Sendinblue library\ +// var SibApiV3Sdk = require('sib-api-v3-sdk'); +// var defaultClient = SibApiV3Sdk.ApiClient.instance; +// // # Instantiate the client\ +// var apiKey = defaultClient.authentications['api-key']; +// apiKey.apiKey = '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'; +// var apiInstance = new SibApiV3Sdk.EmailCampaignsApi(); +// var emailCampaigns = new SibApiV3Sdk.CreateEmailCampaign(); +// // # Define the campaign settings\ +// emailCampaigns.name = "Campaign sent via the API"; +// emailCampaigns.subject = "My subject"; +// emailCampaigns.sender = {"name": "From name", "email":"patriciopato117@gmail.com"}; +// emailCampaigns.type = "classic"; + +// // # Content that will be sent\ +// content = { +// htmlContent: 'Congratulations! You successfully sent this example campaign via the Sendinblue API.', +// // # Select the recipients\ +// recipients: {listIds: [2, 7]}, +// // # Schedule the sending in one hour\ +// scheduledAt: '2018-01-01 00:00:01' +// } + + +// // # Make the call to the client\ +// apiInstance.createEmailCampaign(emailCampaigns).then(function(data) { +// console.log('API called successfully. Returned data: ' + data); +// }, function(error) { +// console.error(error); +// }); + + +const sendEmail = async(message) => +{ + const SibApiV3Sdk = require('sib-api-v3-sdk'); + let defaultClient = SibApiV3Sdk.ApiClient.instance; + + let apiKey = defaultClient.authentications['api-key']; + apiKey.apiKey = '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'; + + let apiInstance = new SibApiV3Sdk.TransactionalEmailsApi(); + + let sendSmtpEmail = new SibApiV3Sdk.SendSmtpEmail(); + + sendSmtpEmail.subject = "My {{params.subject}}"; + sendSmtpEmail.htmlContent = message; + sendSmtpEmail.sender = {"name":"John Doe","email":"example@example.com"}; + sendSmtpEmail.to = [{"email":"patriciogm@live.com","name":"PG"}]; + sendSmtpEmail.cc = [{"email":"example2@example2.com","name":"Janice Doe"}]; + sendSmtpEmail.bcc = [{"email":"John Doe","name":"example@example.com"}]; + sendSmtpEmail.replyTo = {"email":"replyto@domain.com","name":"John Doe"}; + sendSmtpEmail.headers = {"Some-Custom-Name":"unique-id-1234"}; + sendSmtpEmail.params = {"parameter":"My param value","subject":"New Subject"}; + + apiInstance.sendTransacEmail(sendSmtpEmail).then(function(data) { + console.log('API called successfully. Returned data: ' + JSON.stringify(data)); + }, function(error) { + console.error(error); + }); +} + +module.exports = { sendEmail} \ No newline at end of file From c40da82f342879b050145699ee66bfc99ff1a012 Mon Sep 17 00:00:00 2001 From: PatoGMTP <93350228+PatoGMTP@users.noreply.github.com> Date: Fri, 5 Nov 2021 16:15:19 -0500 Subject: [PATCH 16/17] Added email function --- .gitignore | 3 +- package-lock.json | 93 +++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + src/email.js | 63 +++++++++++++++++++++----------- 4 files changed, 138 insertions(+), 22 deletions(-) diff --git a/.gitignore b/.gitignore index b512c09..9cb4057 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -node_modules \ No newline at end of file +node_modules +sendgrid.env diff --git a/package-lock.json b/package-lock.json index efc3176..c88fdd9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,11 +9,55 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@sendgrid/mail": "^7.6.0", "axios": "^0.24.0", "prompt-sync": "^4.2.0", "sib-api-v3-sdk": "^8.2.1" } }, + "node_modules/@sendgrid/client": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-7.6.0.tgz", + "integrity": "sha512-cpBVZKLlMTO+vpE18krTixubYmZa98oTbLkqBDuTiA3zRkW+urrxg7pDR24TkI35Mid0Zru8jDHwnOiqrXu0TA==", + "dependencies": { + "@sendgrid/helpers": "^7.6.0", + "axios": "^0.21.4" + }, + "engines": { + "node": "6.* || 8.* || >=10.*" + } + }, + "node_modules/@sendgrid/client/node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/@sendgrid/helpers": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-7.6.0.tgz", + "integrity": "sha512-0uWD+HSXLl4Z/X3cN+UMQC20RE7xwAACgppnfjDyvKG0KvJcUgDGz7HDdQkiMUdcVWfmyk6zKSg7XKfKzBjTwA==", + "dependencies": { + "deepmerge": "^4.2.2" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@sendgrid/mail": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-7.6.0.tgz", + "integrity": "sha512-0KdaSZzflJD/vUAZjB3ALBIuaVGoLq22hrb2fvQXZHRepU/yhRNlEOqrr05MfKBnKskzq1blnD1J0fHxiwaolw==", + "dependencies": { + "@sendgrid/client": "^7.6.0", + "@sendgrid/helpers": "^7.6.0" + }, + "engines": { + "node": "6.* || 8.* || >=10.*" + } + }, "node_modules/ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", @@ -81,6 +125,14 @@ "ms": "^2.1.1" } }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -386,6 +438,42 @@ } }, "dependencies": { + "@sendgrid/client": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-7.6.0.tgz", + "integrity": "sha512-cpBVZKLlMTO+vpE18krTixubYmZa98oTbLkqBDuTiA3zRkW+urrxg7pDR24TkI35Mid0Zru8jDHwnOiqrXu0TA==", + "requires": { + "@sendgrid/helpers": "^7.6.0", + "axios": "^0.21.4" + }, + "dependencies": { + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + } + } + }, + "@sendgrid/helpers": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-7.6.0.tgz", + "integrity": "sha512-0uWD+HSXLl4Z/X3cN+UMQC20RE7xwAACgppnfjDyvKG0KvJcUgDGz7HDdQkiMUdcVWfmyk6zKSg7XKfKzBjTwA==", + "requires": { + "deepmerge": "^4.2.2" + } + }, + "@sendgrid/mail": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-7.6.0.tgz", + "integrity": "sha512-0KdaSZzflJD/vUAZjB3ALBIuaVGoLq22hrb2fvQXZHRepU/yhRNlEOqrr05MfKBnKskzq1blnD1J0fHxiwaolw==", + "requires": { + "@sendgrid/client": "^7.6.0", + "@sendgrid/helpers": "^7.6.0" + } + }, "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", @@ -444,6 +532,11 @@ "ms": "^2.1.1" } }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", diff --git a/package.json b/package.json index 7b0169e..d0174a6 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ }, "homepage": "https://github.com/PatoGMTP/build-a-bot#readme", "dependencies": { + "@sendgrid/mail": "^7.6.0", "axios": "^0.24.0", "prompt-sync": "^4.2.0", "sib-api-v3-sdk": "^8.2.1" diff --git a/src/email.js b/src/email.js index 9985df1..c342ab9 100644 --- a/src/email.js +++ b/src/email.js @@ -33,33 +33,54 @@ // }); -const sendEmail = async(message) => +const sendEmail = async(message, receiver) => { - const SibApiV3Sdk = require('sib-api-v3-sdk'); - let defaultClient = SibApiV3Sdk.ApiClient.instance; + // const SibApiV3Sdk = require('sib-api-v3-sdk'); + // let defaultClient = SibApiV3Sdk.ApiClient.instance; - let apiKey = defaultClient.authentications['api-key']; - apiKey.apiKey = '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'; + // let apiKey = defaultClient.authentications['api-key']; + // apiKey.apiKey = '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'; - let apiInstance = new SibApiV3Sdk.TransactionalEmailsApi(); + // let apiInstance = new SibApiV3Sdk.TransactionalEmailsApi(); - let sendSmtpEmail = new SibApiV3Sdk.SendSmtpEmail(); + // let sendSmtpEmail = new SibApiV3Sdk.SendSmtpEmail(); - sendSmtpEmail.subject = "My {{params.subject}}"; - sendSmtpEmail.htmlContent = message; - sendSmtpEmail.sender = {"name":"John Doe","email":"example@example.com"}; - sendSmtpEmail.to = [{"email":"patriciogm@live.com","name":"PG"}]; - sendSmtpEmail.cc = [{"email":"example2@example2.com","name":"Janice Doe"}]; - sendSmtpEmail.bcc = [{"email":"John Doe","name":"example@example.com"}]; - sendSmtpEmail.replyTo = {"email":"replyto@domain.com","name":"John Doe"}; - sendSmtpEmail.headers = {"Some-Custom-Name":"unique-id-1234"}; - sendSmtpEmail.params = {"parameter":"My param value","subject":"New Subject"}; + // sendSmtpEmail.subject = "My {{params.subject}}"; + // sendSmtpEmail.htmlContent = message; + // sendSmtpEmail.sender = {"name":"John Doe","email":"example@example.com"}; + // sendSmtpEmail.to = [{"email":"patriciogm@live.com","name":"PG"}]; + // sendSmtpEmail.cc = [{"email":"example2@example2.com","name":"Janice Doe"}]; + // sendSmtpEmail.bcc = [{"email":"John Doe","name":"example@example.com"}]; + // sendSmtpEmail.replyTo = {"email":"replyto@domain.com","name":"John Doe"}; + // sendSmtpEmail.headers = {"Some-Custom-Name":"unique-id-1234"}; + // sendSmtpEmail.params = {"parameter":"My param value","subject":"New Subject"}; - apiInstance.sendTransacEmail(sendSmtpEmail).then(function(data) { - console.log('API called successfully. Returned data: ' + JSON.stringify(data)); - }, function(error) { - console.error(error); - }); + // apiInstance.sendTransacEmail(sendSmtpEmail).then(function(data) { + // console.log('API called successfully. Returned data: ' + JSON.stringify(data)); + // }, function(error) { + // console.error(error); + // }); + + // using Twilio SendGrid's v3 Node.js Library +// https://github.com/sendgrid/sendgrid-nodejs +// javascript +const sgMail = require('@sendgrid/mail') +sgMail.setApiKey(process.env.SENDGRID_API_KEY) +const msg = { + to: receiver, // Change to your recipient + from: 'patriciopato117@gmail.com', // Change to your verified sender + subject: 'Bot Receipt', + text: message, + html: 'Goodbye!', +} +sgMail + .send(msg) + .then(() => { + console.log('Email sent') + }) + .catch((error) => { + console.error(error) + }) } module.exports = { sendEmail} \ No newline at end of file From a2a02d005db98b088e41d535cebf7eb31d2d1c23 Mon Sep 17 00:00:00 2001 From: PatoGMTP <93350228+PatoGMTP@users.noreply.github.com> Date: Fri, 5 Nov 2021 16:24:09 -0500 Subject: [PATCH 17/17] Email works --- src/email.js | 6 +++--- src/index.js | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/email.js b/src/email.js index c342ab9..804096a 100644 --- a/src/email.js +++ b/src/email.js @@ -33,7 +33,7 @@ // }); -const sendEmail = async(message, receiver) => +const sendEmail = async(message, receiver="pgarcia@talentpath.com") => { // const SibApiV3Sdk = require('sib-api-v3-sdk'); // let defaultClient = SibApiV3Sdk.ApiClient.instance; @@ -71,12 +71,12 @@ const msg = { from: 'patriciopato117@gmail.com', // Change to your verified sender subject: 'Bot Receipt', text: message, - html: 'Goodbye!', + html: message, } sgMail .send(msg) .then(() => { - console.log('Email sent') + console.log('Email sent!') }) .catch((error) => { console.error(error) diff --git a/src/index.js b/src/index.js index 8cbd60c..2590e67 100644 --- a/src/index.js +++ b/src/index.js @@ -2,6 +2,7 @@ const prompt = require('prompt-sync')(); const { talkToBot } = require('./talkToBot'); const { getTopic } = require('./getTopic'); const { getCoords } = require('./geocoding'); +const { sendEmail } = require('./email'); let input = '', record = ''; const GREETING = ` @@ -53,7 +54,9 @@ const start = async() => { break; } } - console.log(record) + // console.log(record) + let receiver = prompt("Please enter an email address: "); + let finalResponse = await sendEmail(record, receiver); } start();