김연준

Sucessed to manage slackbot to respond user input ' random'

// Tell a Chuck Norris Joke
function chuckJoke(){
axios.get('http://api.icndb.com/jokes/random/')
.then(res =>{
const joke = res.data.value.joke;
const MongoClient = require('mongodb').MongoClient;
const dboperation = require('../operations');
const dbname = 'jokeapi';
const collec = 'jokes';
const url = 'mongodb://localhost:27017/';
exports.randomJoke= ()=>{
MongoClient.connect('mongodb://localhost:27017', function (err, client){
if (err) throw err;
var db = client.db('jokeapi');
json_max = 376;
function getRandomInt() {
min = Math.ceil(1);
max = Math.floor(376);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
random = getRandomInt();
result = db.collection('jokes').findOne({id: random});
user = result;
user.then(function(total){
question = total.setup;
joke = total.punchline;
const face = {
icon_emoji: ':laughing:'
};
bot.postMessageToChannel('everyone', `Chuck Norris: ${joke}`,face);
bot.postMessageToChannel('full-stack-web', `Yo mama: ${joke}`,face);
bot.postMessageToChannel('bot_test', `Yo mama: ${joke}`,face);
});
bot.postMessageToChannel('everyone', question, joke, face);
bot.postMessageToChannel('full-stack-web', question, joke, face);
bot.postMessageToChannel('bot_test', question, joke, face);
})
client.close();
})
}
// Tell a yomama Joke
function yoMamaJoke(){
function generalJoke(){
dboperation.getdata(dbname, collec, "general")
.then((data) =>{
var query = { state: 'OK' };
var n = data.count(query);
var r = Math.floor(Math.random() * n);
var randomElement = data.find(query).limit(1).skip(r);
var question = randomElement.setup;
var joke = randomElement.punchline;
const face = {
icon_emoji: ':laughing:'
};
bot.postMessageToChannel('everyone', question, joke, face);
bot.postMessageToChannel('full-stack-web', question, joke, face);
bot.postMessageToChannel('bot_test', question, joke, face);
});
};
// Tell a yomama Joke
function yomamaJoke(){
axios.get('http://api.yomomma.info/')
.then(res =>{
const joke = res.data.joke;
......@@ -29,24 +69,13 @@ function yoMamaJoke(){
bot.postMessageToChannel('bot_test', `Yo mama: ${joke}`,face);
});
}
//Tell random joke
function randomJoke(){
const rand = Math.floor(Math.random() * 2) +1;
if(rand ===1){
chuckJoke();
}
else if(rand === 2){
yoMamaJoke();
}
}
function runHelp(){
};
//Tell random joke
function runhelp(){
const face = {
icon_emoji: ':question:'
};
bot.postMessageToChannel('everyone', "Type @joker and write a joke that you would like\n ex- @joker random",face);
bot.postMessageToChannel('full-stack-web', "Type @joker and write a joke that you would like\n ex- @joker random",face);
}
module.exports = route;
\ No newline at end of file
};
......
......@@ -2,8 +2,12 @@ const SlackBot = require('slackbots');
const axios = require('axios');
const route = require('./Routers/route');
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017/';
const bot = new SlackBot({
token : "xoxb-582582124755-587875604934-rRhFVlXlB0StEMnlrmsQlcac",
token : "xoxb-582582124755-587875604934-EWnGacmzNvfVQk2XvhteoIzw",
name : "Joker"
});
......@@ -34,33 +38,56 @@ bot.on('message', (data) => {
// Responding to Data
function handleMessage(message){
if(message.includes('chucknorris')){
route.chuckJoke()
.then((err, data)=>{
if(err)throw err;
console.log("ChuckJoke function activated");
});
if(message.includes(' yomama')){
route.startdb.yomamaJoke();
}
else if(message.includes(' yomama')){
route.yoMamaJoke()
.then((err, data)=>{
if(err)throw err;
console.log("yoMamaJoke function activated");
});
else if(message.includes(' general')){
route.randomJoke();
}
else if(message.includes(' random')){
route.randomJoke()
.then((err, data)=>{
if(err)throw err;
console.log("randomJoke function activated");
});
}
randomJoke();
}
else if(message.includes(' programming')){
route.startdb()
}
else if(message.includes(' help')){
route.runHelp()
.then((err, data)=>{
if(err)throw err;
console.log(" function activated");
});
route.startdb.runHelp();
}
}
randomJoke= ()=>{
MongoClient.connect('mongodb://localhost:27017', function (err, client){
if (err) throw err;
var db = client.db('jokeapi');
json_max = 376;
function getRandomInt() {
min = Math.ceil(1);
max = Math.floor(376);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
random = getRandomInt();
result = db.collection('jokes').findOne({id: random});
user = result;
user.then(function(total){
question = total.setup;
joke = total.punchline;
const face = {
icon_emoji: ':laughing:'
};
bot.postMessageToChannel('everyone', joke, face);
bot.postMessageToChannel('full-stack-web', joke, face);
bot.postMessageToChannel('bot_test', joke, face);
bot.postMessageToChannel('everyone', question, face);
bot.postMessageToChannel('full-stack-web', question, joke, face);
bot.postMessageToChannel('bot_test', question, face);
})
client.close();
})
}
......
const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
const dboperation = require('./operations');
const jokedoc = require('./jokes/jokes.json');
const url = 'mongodb://localhost:27017/';
const dbname = 'jokeapi';
const collec = 'jokes';
var url = "mongodb://localhost:27017/jokeapi";
// Code for Creating database
// Create database
// MongoClient.connect(url, function(err, db) {
// if (err) throw err;
// console.log("Database created!");
// db.close();
// });
// Code for Creating a Collection
// MongoClient.connect(url, function(err, db) {
// if (err) throw err;
// var dbo = db.db("jokeapi");
......@@ -26,21 +23,50 @@ var url = "mongodb://localhost:27017/jokeapi";
// });
// });
//
MongoClient.connect(url).then((client) => {
console.log('Connected correctly to server');
}).catch((err)=> console.log(err));
/*
const db = client.db(dbname);
// Storing data jokes.json data into mongodb
// MongoClient.connect(url).then((client) => {
dboperation.insertDocument(db, jokedoc, collec)
.then((result) => {
console.log("Inserted Document:\n", result.ops);
// console.log('Connected correctly to server');
return dboperation.findDocuments(db, collec);
})
.catch((err) => console.log(err));
})
*/
\ No newline at end of file
// const db = client.db(dbname);
// dboperation.insertDocument(db, jokedoc, collec)
// .then((result) => {
// console.log("Inserted Document:\n", result.ops);
// return dboperation.findDocuments(db, collec);
// })
// .catch((err) => console.log(err));
// })
// .catch((err) => console.log(err));
// //will encapsulate all that database operations
// const assert = require('assert');
// exports.insertDocument = (db, document, collection, callback) =>{
// const coll = db.collection(collection);
// return coll.insert(document);
// };
// exports.findDocuments = (db, collection, input,callback)=>{
// const coll = db.collection(collection);
// return coll.find({"type": input}).toArray();
// }
// exports.removeDocuments = (db, document , collection, callback)=>{
// const coll = db.collection(collection);
// return coll.deleteone(document);
// }
// exports.updateDocuments = (db, document , update ,collection, callback)=>{
// const coll = db.collection(collection);
// return coll.updateOne(document, {$set: update}, null);
// }
// exports.getdata = (db, document, collection, input, callback =>{
// result = findDocuments(db,collection);
// return result;
// })
\ No newline at end of file
......
......@@ -6,9 +6,9 @@ exports.insertDocument = (db, document, collection, callback) =>{
return coll.insert(document);
};
exports.findDocuments = (db, collection, callback)=>{
exports.findDocuments = (db, collection, input)=>{
const coll = db.collection(collection);
return coll.find({}).toArray();
return coll.find({"type": input}).toArray();
}
exports.removeDocuments = (db, document , collection, callback)=>{
......@@ -20,3 +20,10 @@ exports.updateDocuments = (db, document , update ,collection, callback)=>{
const coll = db.collection(collection);
return coll.updateOne(document, {$set: update}, null);
}
exports.getdata = (db, collection, input, callback) =>{
const coll = db.collection(collection);
result= coll.find({"type": input});
console.log(result);
return result;
}
\ No newline at end of file
......
......@@ -60,10 +60,10 @@
"tweetnacl": "^0.14.3"
}
},
"capture-stack-trace": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
"integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw=="
"bson": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/bson/-/bson-1.1.1.tgz",
"integrity": "sha512-jCGVYLoYMHDkOsbwJZBCqwMHyH4c+wzgI9hG7Z6SZJRXWr+x58pdIbm2i9a/jFGCkRJqRUr8eoI7lDWa0hTkxg=="
},
"caseless": {
"version": "0.12.0",
......@@ -83,14 +83,6 @@
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"create-error-class": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
"integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
"requires": {
"capture-stack-trace": "^1.0.0"
}
},
"dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
......@@ -112,11 +104,6 @@
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
"duplexer3": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
"integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI="
},
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
......@@ -169,16 +156,6 @@
"mime-types": "^2.1.12"
}
},
"free-google-image-search": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/free-google-image-search/-/free-google-image-search-1.0.0.tgz",
"integrity": "sha1-emJ4vo7cZG7ZanEiUdsyZxckyBU="
},
"get-stream": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
},
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
......@@ -187,32 +164,6 @@
"assert-plus": "^1.0.0"
}
},
"google-images": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/google-images/-/google-images-2.1.0.tgz",
"integrity": "sha1-EnSuQEgll4Jk06T48tUmuI0L8Cw=",
"requires": {
"got": "^6.7.1"
}
},
"got": {
"version": "6.7.1",
"resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
"integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
"requires": {
"create-error-class": "^3.0.0",
"duplexer3": "^0.1.4",
"get-stream": "^3.0.0",
"is-redirect": "^1.0.0",
"is-retry-allowed": "^1.0.0",
"is-stream": "^1.0.0",
"lowercase-keys": "^1.0.0",
"safe-buffer": "^5.0.1",
"timed-out": "^4.0.0",
"unzip-response": "^2.0.1",
"url-parse-lax": "^1.0.0"
}
},
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
......@@ -242,21 +193,6 @@
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
"is-redirect": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
"integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ="
},
"is-retry-allowed": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz",
"integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ="
},
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
},
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
......@@ -303,10 +239,11 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
},
"lowercase-keys": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA=="
"memory-pager": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
"integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
"optional": true
},
"mime-db": {
"version": "1.38.0",
......@@ -321,6 +258,26 @@
"mime-db": "~1.38.0"
}
},
"mongodb": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.2.6.tgz",
"integrity": "sha512-qnHc4tjEkHKemuzBq9R7ycYnhFE0Dlpt6+n6suoZp2DcDdqviQ+teloJU24fsOw/PLmr75yGk4mRx/YabjDQEQ==",
"requires": {
"mongodb-core": "3.2.6",
"safe-buffer": "^5.1.2"
}
},
"mongodb-core": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.2.6.tgz",
"integrity": "sha512-i+XRVjur9D0ywGF7cFebOUnALnbvMHajdNhhl3TQuopW6QDE655G8CpPeERbqSqfa3rOKEUo08lENDIiBIuAvQ==",
"requires": {
"bson": "^1.1.1",
"require_optional": "^1.0.1",
"safe-buffer": "^5.1.2",
"saslprep": "^1.0.0"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
......@@ -341,11 +298,6 @@
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
"prepend-http": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
"integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw="
},
"psl": {
"version": "1.1.31",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz",
......@@ -395,6 +347,20 @@
}
}
},
"require_optional": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz",
"integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==",
"requires": {
"resolve-from": "^2.0.0",
"semver": "^5.1.0"
}
},
"resolve-from": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
"integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
......@@ -405,6 +371,20 @@
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"saslprep": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
"integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
"optional": true,
"requires": {
"sparse-bitfield": "^3.0.3"
}
},
"semver": {
"version": "5.7.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
"integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA=="
},
"slackbots": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/slackbots/-/slackbots-1.2.0.tgz",
......@@ -418,6 +398,15 @@
"ws-heartbeat": "^1.0.4"
}
},
"sparse-bitfield": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
"integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
"optional": true,
"requires": {
"memory-pager": "^1.0.2"
}
},
"sshpk": {
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
......@@ -434,11 +423,6 @@
"tweetnacl": "~0.14.0"
}
},
"timed-out": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
"integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8="
},
"tough-cookie": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
......@@ -473,11 +457,6 @@
"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
"integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po="
},
"unzip-response": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
"integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c="
},
"uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
......@@ -486,14 +465,6 @@
"punycode": "^2.1.0"
}
},
"url-parse-lax": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
"integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
"requires": {
"prepend-http": "^1.0.1"
}
},
"uuid": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
......
......@@ -10,6 +10,7 @@
"license": "MIT",
"dependencies": {
"axios": "^0.18.0",
"mongodb": "^3.2.6",
"slackbots": "^1.2.0"
}
}
......
//
const joke = require('./jokes/jokes.json');
const MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017', function (err, client){
if (err) throw err;
var db = client.db('jokeapi');
question = [];
punchline = [];
count = 0;
json_max = 376;
random = function getRandomArbitrary() {
return Math.random() * (376 - 1) + 1;
}
for(var i=1; i< json_max+1; i++){
result = db.collection('jokes').findOne({id: i,type:"programming"});
if(result === null)
return;
else if(result)
{
++count;
question.push(result.setup);
punchline.push(result.punchline);
// var n = result.count(result);
// var r = Math.floor(Math.random() * n);
// var randomElement = result.find().limit(1).skip(r);
// var question = randomElement.setup;
// var joke = randomElement.punchline;
// console.log(question);
// console.log(joke);
// console.log(question);
// console.log(punchline);
//console.log(question);
}
}
client.close();
console.log(question);
});
const MongoClient = require('mongodb').MongoClient;
//Get Random Joke
MongoClient.connect('mongodb://localhost:27017', function (err, client){
if (err) throw err;
var db = client.db('jokeapi');
json_max = 376;
function getRandomInt() {
min = Math.ceil(1);
max = Math.floor(376);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
random = getRandomInt();
console.log(random);
result = db.collection('jokes').findOne({id: random});
user = result;
user.then(function(total){
console.log(total.setup);
console.log(total.setup);
})
client.close();
})