working discord bot
This commit is contained in:
commit
e85d40cedc
|
|
@ -0,0 +1,10 @@
|
||||||
|
|
||||||
|
module.exports.matches = [ { "!8ball" } ];
|
||||||
|
|
||||||
|
function basicRoute(str)
|
||||||
|
{
|
||||||
|
if(str.startsWith("!8ball"))
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,225 @@
|
||||||
|
const Discord = require("discord.js");
|
||||||
|
const Gamedig = require('gamedig');
|
||||||
|
const client = new Discord.Client();
|
||||||
|
const fs = require('fs');
|
||||||
|
const request = require('request');
|
||||||
|
const rp = require('request-promise-native');
|
||||||
|
const striptags = require('striptags');
|
||||||
|
const glob = require('glob');
|
||||||
|
const path = require('path');
|
||||||
|
const twitter = require('twitter');
|
||||||
|
|
||||||
|
var pepesList = [];
|
||||||
|
var markov = require('markov');
|
||||||
|
var m = markov(2);
|
||||||
|
|
||||||
|
const twitterClient = new twitter({
|
||||||
|
consumer_key: 'd1QtB67GohqcCKSD0GdYF1nkh',
|
||||||
|
consumer_secret: 'tYkCxEKIahoykUSS71DgWjK7O1IX5BgGLxOSFE7v0uXLGGviCS',
|
||||||
|
access_token_key: '384120881-IETrcVQHmwWec3jtifY7FhyODRY944ufeEh2pwcT',
|
||||||
|
access_token_secret: 'EtnE7bggaKOrk0pfxkAkQEb7iLe8yyqYm8M7GulAbbwTt'
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
async function generateTwitterEmbed(tweetData)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getLatestPost(user)
|
||||||
|
{
|
||||||
|
//GET https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=twitterapi&count=2
|
||||||
|
try {
|
||||||
|
let post = await twitterClient.get('statuses/user_timeline', { count: 1, screen_name: user });
|
||||||
|
console.log(post[0].id_str);
|
||||||
|
return post[0].id_str;
|
||||||
|
|
||||||
|
|
||||||
|
} catch(e) {
|
||||||
|
return 'reee';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//returns a word definition from urban dictionary
|
||||||
|
async function ud(word)
|
||||||
|
{
|
||||||
|
let page = await rp('http://api.urbandictionary.com/v0/define?term=' + word, { json: true });
|
||||||
|
|
||||||
|
if ( page.result_type === 'exact' )
|
||||||
|
{
|
||||||
|
let defStr = "";
|
||||||
|
defStr += page.list[0].word + "\n\n" + page.list[0].definition + "\n\n" + "Example: " + page.list[0].example;
|
||||||
|
console.log("defStr: " + defStr);
|
||||||
|
return defStr;
|
||||||
|
} else {
|
||||||
|
return "No results.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function initMarkov()
|
||||||
|
{
|
||||||
|
//get stuff from pol
|
||||||
|
request('https://a.4cdn.org/pol/catalog.json', { json: true },
|
||||||
|
(err, res, body) => {
|
||||||
|
if (err) { return console.log(err); }
|
||||||
|
for(let i = 0; i < body.length; i++)
|
||||||
|
{
|
||||||
|
for(let j = 0; j < body[i].threads.length; j++)
|
||||||
|
{
|
||||||
|
var post = striptags(body[i].threads[j].com);
|
||||||
|
post = post.toLowerCase();
|
||||||
|
m.seed(post);
|
||||||
|
|
||||||
|
if(body[i].threads[j].last_replies == undefined) { continue; }
|
||||||
|
for(let k = 0; k < body[i].threads[j].last_replies.length; k++)
|
||||||
|
{
|
||||||
|
var post2 = striptags(body[i].threads[j].last_replies[k].com);
|
||||||
|
post2 = post2.toLowerCase();
|
||||||
|
m.seed(post2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadPepes()
|
||||||
|
{
|
||||||
|
|
||||||
|
fs.readFile('pepes.txt', 'utf8', function (err, data) {
|
||||||
|
if (err) {
|
||||||
|
return console.log(err);
|
||||||
|
}
|
||||||
|
pepesList = data.split("\n");
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//returns a dank pepe
|
||||||
|
function pepe()
|
||||||
|
{
|
||||||
|
let dankPepe = new Discord.RichEmbed();
|
||||||
|
|
||||||
|
let selection = Math.floor(Math.random() * (pepesList.length));
|
||||||
|
|
||||||
|
dankPepe.setImage(pepesList[selection]);
|
||||||
|
return dankPepe;
|
||||||
|
}
|
||||||
|
|
||||||
|
function magic8ball()
|
||||||
|
{
|
||||||
|
const answers = [
|
||||||
|
'It is certain',
|
||||||
|
'It is decidedly so',
|
||||||
|
'Without a doubt',
|
||||||
|
'Yes definitely',
|
||||||
|
'You may rely on it',
|
||||||
|
'As I see it, yes',
|
||||||
|
'Most likely',
|
||||||
|
'Outlook good',
|
||||||
|
'Yes',
|
||||||
|
'Signs point to yes',
|
||||||
|
'Reply hazy try again',
|
||||||
|
'Ask again later',
|
||||||
|
'Better not tell you now',
|
||||||
|
'Cannot predict now',
|
||||||
|
'Concentrate and ask again',
|
||||||
|
"Don't count on it",
|
||||||
|
'My reply is no',
|
||||||
|
'My sources say no',
|
||||||
|
'Outlook not so good',
|
||||||
|
'Very doubtful' ];
|
||||||
|
|
||||||
|
let selection = Math.floor(Math.random() * (answers.length));
|
||||||
|
return answers[selection];
|
||||||
|
}
|
||||||
|
|
||||||
|
client.on('ready', () => {
|
||||||
|
console.log(`Logged in as ${client.user.tag}!`);
|
||||||
|
loadPepes();
|
||||||
|
});
|
||||||
|
|
||||||
|
client.on('message', async (msg) => {
|
||||||
|
|
||||||
|
if (msg.content === '!ping') {
|
||||||
|
msg.reply('Pong!');
|
||||||
|
} else if (msg.content === '!8ball') {
|
||||||
|
msg.reply(magic8ball());
|
||||||
|
} else if (msg.content.startsWith('<@' + client.user.id)) {
|
||||||
|
if (msg.content.trim().endsWith('?')) {
|
||||||
|
msg.reply(magic8ball());
|
||||||
|
}
|
||||||
|
} else if (msg.content === '!mc') {
|
||||||
|
Gamedig.query({
|
||||||
|
type: 'minecraftping',
|
||||||
|
host: 'americastrong.jumpingcrab.com'
|
||||||
|
}).then((state) => {
|
||||||
|
let str = "MINECRAFT SERVER INFO\n";
|
||||||
|
console.log(state);
|
||||||
|
|
||||||
|
str += "Server Name: " + state.raw.description + "\n";
|
||||||
|
str += "Players: " + state.players.length + "/" + state.maxplayers + "\n";
|
||||||
|
str += "Currently Online: "
|
||||||
|
for (let i = 0; i < state.players.length; i++) {
|
||||||
|
str += state.players[i].name + ", ";
|
||||||
|
}
|
||||||
|
str = str.slice(0, -2);
|
||||||
|
str += "\n";
|
||||||
|
|
||||||
|
msg.reply(str);
|
||||||
|
}).catch((error) => {
|
||||||
|
msg.reply("Server is offline!");
|
||||||
|
});
|
||||||
|
} else if (msg.content === '!gm') {
|
||||||
|
try {
|
||||||
|
let gameinfo = await Gamedig.query({type: 'garrysmod',
|
||||||
|
host: 'construct420.game.nfoservers.com'});
|
||||||
|
let str = "GARRY'S MOD SERVER INFO\n";
|
||||||
|
|
||||||
|
str += "Server name: " + gameinfo.name + "\n";
|
||||||
|
str += "Current Map: " + gameinfo.map + "\n";
|
||||||
|
str += "Players: " + gameinfo.players.length + "/" + gameinfo.maxplayers + "\n";
|
||||||
|
str += "Currently Online: "
|
||||||
|
for (let i = 0; i < gameinfo.players.length; i++) {
|
||||||
|
str += gameinfo.players[i].name + ", ";
|
||||||
|
}
|
||||||
|
str = str.slice(0, -2);
|
||||||
|
str += "\n";
|
||||||
|
str += "Server IP: 192.223.30.22\n"
|
||||||
|
|
||||||
|
msg.reply(str);
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err);
|
||||||
|
msg.reply("Server is offline!");
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (msg.content === '!pepe') {
|
||||||
|
let chan = msg.channel;
|
||||||
|
let pepeImg = pepe();
|
||||||
|
chan.send(pepeImg);
|
||||||
|
} else if (msg.content.startsWith('!ud')) {
|
||||||
|
let chan = msg.channel;
|
||||||
|
let words = msg.content.substring(msg.content.indexOf(" ") + 1);
|
||||||
|
let def = await ud(words);
|
||||||
|
console.log(def);
|
||||||
|
chan.send("```\n" + def + "```");
|
||||||
|
} else if (msg.content.startsWith('!markov')) {
|
||||||
|
let msgArray = msg.content.split(" ");
|
||||||
|
console.log(msgArray);
|
||||||
|
let chan = msg.channel;
|
||||||
|
if(msgArray[1] && msgArray[2] != null) {
|
||||||
|
let msg2 = m.forward([msgArray[1] + '_' + msgArray[2]], 20).join(' ');
|
||||||
|
chan.send(msgArray[1] + ' ' + msgArray[2] + ' ' + msg2);
|
||||||
|
} else {
|
||||||
|
msg.reply("Usage: !markov <word1> <word2>");
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (msg.content.startsWith('!bsp')) {
|
||||||
|
let chan = msg.channel;
|
||||||
|
let postId = await getLatestPost('dot_bsp');
|
||||||
|
chan.send("https://www.twitter.com/dot_bsp/status/" + postId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
client.login('MzYyNzU1MzE3MTczNTgzODcy.DK3R1A.8M22ZkNaaoHy-ifBQwVivSU7svY');
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
"name": "dank-bot",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "main.js",
|
||||||
|
"dependencies": {
|
||||||
|
"discord.js": "^11.2.1",
|
||||||
|
"gamedig": "^1.0.37",
|
||||||
|
"glob": "^7.1.2",
|
||||||
|
"markov": "0.0.7",
|
||||||
|
"nodemon": "^1.12.1",
|
||||||
|
"npm-init": "^1.3.1",
|
||||||
|
"request": "^2.83.0",
|
||||||
|
"request-promise-native": "^1.0.5",
|
||||||
|
"striptags": "^3.1.0",
|
||||||
|
"twitter": "^1.7.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {},
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC"
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue