ported code over from discord.io to discord.js
This commit is contained in:
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
auth.json
|
||||
node_modules
|
||||
package-lock.json
|
261
bot.js
Normal file
261
bot.js
Normal file
@@ -0,0 +1,261 @@
|
||||
// requirements
|
||||
const Discord = require('discord.js');
|
||||
const auth = require('./auth.json');
|
||||
const XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
|
||||
|
||||
// coin flip
|
||||
function coinFlip() {
|
||||
return (Math.floor(Math.random() * 2) == 0) ? 'heads' : 'tails';
|
||||
}
|
||||
|
||||
// 8 ball
|
||||
function eightBall() {
|
||||
var answers = [
|
||||
'Maybe.', 'Certainly not.', 'I hope so.', 'Not in your wildest dreams.',
|
||||
'There is a good chance.', 'Quite likely.', 'I think so.', 'I hope not.',
|
||||
'I hope so.', 'Never!', 'Fuhgeddaboudit.', 'Ahaha! Really?!?', 'Pfft.',
|
||||
'Sorry, bucko.', 'Hell, yes.', 'Hell to the no.', 'The future is bleak.',
|
||||
'The future is uncertain.', 'I would rather not say.', 'Who cares?',
|
||||
'Possibly.', 'Never, ever, ever.', 'There is a small chance.', 'Yes!'];
|
||||
|
||||
return answers[(Math.floor(Math.random() * answers.length))];
|
||||
}
|
||||
|
||||
// stupid question response
|
||||
function stupidQuestion() {
|
||||
var answers = [
|
||||
'What kind of dumb question is that?', 'A real question please.',
|
||||
'Is that supposed to be a question?', 'Who asked such a dumb question?',
|
||||
'How about a good question instead?', 'Only good questions please',
|
||||
'Oh god, is that a question?', 'Are you dumb because that\'s a dumb question.'];
|
||||
|
||||
return answers[(Math.floor(Math.random() * answers.length))];
|
||||
}
|
||||
|
||||
function noQuestion() {
|
||||
var answers = ['it helps to ask a question...', 'question plz.', 'where is the question?'];
|
||||
|
||||
return answers[(Math.floor(Math.random() * answers.length))];
|
||||
}
|
||||
|
||||
// imgur request
|
||||
function imgurRequest(subreddit, page_max)
|
||||
{
|
||||
var multiSubreddit = subreddit.split(',');
|
||||
|
||||
var request_url = 'https://api.imgur.com/3/gallery/r/' + multiSubreddit[getRandomInt(0, multiSubreddit.length-1)] + '/time/' + getRandomInt(1,page_max);
|
||||
|
||||
var req = new XMLHttpRequest();
|
||||
var returnText = "";
|
||||
|
||||
req.onreadystatechange = function()
|
||||
{
|
||||
if (req.readyState == 4 && req.status == 200)
|
||||
{
|
||||
if(req.responseText != "Not found")
|
||||
{
|
||||
var json = JSON.parse(req.responseText);
|
||||
returnText = json.data[getRandomInt(0,json.data.length-1)].link;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
req.open("GET", request_url, false);
|
||||
req.setRequestHeader('Authorization', 'Client-ID ' + auth.imgur);
|
||||
req.send();
|
||||
|
||||
return returnText;
|
||||
}
|
||||
|
||||
// subreddit request
|
||||
function subredditRequest(subreddit)
|
||||
{
|
||||
var multiSubreddit = subreddit.split(',');
|
||||
|
||||
var redditURL = "https://www.reddit.com/r/" + multiSubreddit[getRandomInt(0, multiSubreddit.length-1)] + "/.json?show=all&count=25&limit=100";
|
||||
var req = new XMLHttpRequest();
|
||||
var returnText = "";
|
||||
|
||||
req.onreadystatechange = function()
|
||||
{
|
||||
if(req.readyState == 4 && req.status == 200)
|
||||
{
|
||||
var json = JSON.parse(req.responseText);
|
||||
returnText = json.data.children[getRandomInt(0,json.data.children.length-1)].data.url;
|
||||
}
|
||||
}
|
||||
|
||||
req.open("GET", redditURL, false);
|
||||
req.send();
|
||||
|
||||
return returnText;
|
||||
}
|
||||
|
||||
// redditbooru request
|
||||
function redditbooruRequest(subreddit)
|
||||
{
|
||||
var multiSubreddit = subreddit.split(',');
|
||||
|
||||
var url = "https://" + multiSubreddit[getRandomInt(0, multiSubreddit.length-1)] + ".redditbooru.com/images/?limit=1000";
|
||||
var req = new XMLHttpRequest();
|
||||
var returnText = "";
|
||||
|
||||
req.onreadystatechange = function()
|
||||
{
|
||||
if(req.readyState == 4 && req.status == 200)
|
||||
{
|
||||
var json = JSON.parse(req.responseText);
|
||||
var imageID = getRandomInt(0, json.length);
|
||||
returnText = json[imageID].cdnUrl;
|
||||
}
|
||||
}
|
||||
|
||||
req.open("GET", url, false);
|
||||
req.send();
|
||||
|
||||
return returnText;
|
||||
}
|
||||
|
||||
// wolframalpha computation
|
||||
function calculate(message)
|
||||
{
|
||||
var url = "http://api.wolframalpha.com/v1/result?appid=" + auth.wolframalpha + "&i=" + encodeURIComponent(message);
|
||||
var req = new XMLHttpRequest();
|
||||
var returnText = "";
|
||||
|
||||
req.onreadystatechange = function()
|
||||
{
|
||||
if(req.readyState == 4 && req.status == 200)
|
||||
{
|
||||
returnText = req.responseText;
|
||||
}
|
||||
}
|
||||
|
||||
req.open("GET", url, false);
|
||||
req.send();
|
||||
|
||||
return returnText;
|
||||
}
|
||||
|
||||
// get random number with starting and ending number
|
||||
function getRandomInt(min, max)
|
||||
{
|
||||
return Math.floor(Math.random() * (max - min + 1)) + min;
|
||||
}
|
||||
|
||||
// setup
|
||||
const client = new Discord.Client();
|
||||
|
||||
client.on('ready', () => {
|
||||
console.log('Bot is ready');
|
||||
});
|
||||
|
||||
// commands
|
||||
client.on('message', message => {
|
||||
if (message.content.substring(0, 2) == 'b.' || message.content.substring(0, 2) == 'B.') {
|
||||
var args = message.content.substring(2).split(' ');
|
||||
var cmd = args[0];
|
||||
|
||||
switch(cmd)
|
||||
{
|
||||
// Reply commands
|
||||
case 'coinflip':
|
||||
case 'coin':
|
||||
message.channel.send(message.author + ' flipped a coin, it landed on **' + coinFlip() + '!**');
|
||||
break;
|
||||
case '8ball':
|
||||
if(message.content.substring(8).length > 0)
|
||||
{
|
||||
message.channel.send(message.author + ' asked: *' + message.content.substring(8) + '*\n' +
|
||||
'The magic 8 ball says: **' + eightBall() + '**');
|
||||
}
|
||||
else
|
||||
{
|
||||
message.reply(noQuestion());
|
||||
}
|
||||
break;
|
||||
case 'compute':
|
||||
case 'convert':
|
||||
if(message.content.substring(10).length > 0)
|
||||
{
|
||||
var response = calculate(message.content.substring(10));
|
||||
if(response == "")
|
||||
{
|
||||
response = stupidQuestion();
|
||||
}
|
||||
message.channel.send(message.author + ' wants to compute: *' + message.content.substring(10) + '*\n' +
|
||||
'The result is: **' + response + '**')
|
||||
}
|
||||
else
|
||||
{
|
||||
message.reply(noQuestion());
|
||||
}
|
||||
break;
|
||||
case 'calculate':
|
||||
if(message.content.substring(12).length > 0)
|
||||
{
|
||||
var response = calculate(message.content.substring(12));
|
||||
if(response == "")
|
||||
{
|
||||
response = stupidQuestion();
|
||||
}
|
||||
message.channel.send(message.author + ' wants to compute: *' + message.content.substring(12) + '*\n' +
|
||||
'The result is: **' + response + '**')
|
||||
}
|
||||
else
|
||||
{
|
||||
message.reply(noQuestion());
|
||||
}
|
||||
break;
|
||||
|
||||
// SFW Generic Image commands
|
||||
case 'bun':
|
||||
case 'bunny':
|
||||
case 'bunnies':
|
||||
message.channel.send(imgurRequest('rabbits',5));
|
||||
break;
|
||||
case 'dankmeme':
|
||||
case 'dankmemes':
|
||||
message.channel.send((Math.floor(Math.random() * 2) == 0) ? subredditRequest('dankmemes') : imgurRequest('dankmemes', 5));
|
||||
break;
|
||||
|
||||
// SFW Anime Image commands
|
||||
case 'meirl':
|
||||
message.channel.send((Math.floor(Math.random() * 2) == 0) ? subredditRequest('anime_irl') : imgurRequest('anime_irl', 5));
|
||||
break;
|
||||
case 'moe':
|
||||
message.channel.send((Math.floor(Math.random() * 2) == 0) ? redditbooruRequest('awwnime') : imgurRequest('awwnime', 5));
|
||||
break;
|
||||
case 'moe-boys':
|
||||
message.channel.send((Math.floor(Math.random() * 2) == 0) ? subredditRequest('cuteanimeboys') : imgurRequest('cuteanimeboys', 1));
|
||||
break;
|
||||
case 'hotguys':
|
||||
message.channel.send(redditbooruRequest('bishounen'));
|
||||
break;
|
||||
case 'kgirls':
|
||||
message.channel.send((Math.floor(Math.random() * 2) == 0) ? redditbooruRequest('kpics') : imgurRequest('kpics', 5));
|
||||
break;
|
||||
case 'kboys':
|
||||
message.channel.send((Math.floor(Math.random() * 2) == 0) ? imgurRequest('kfanservice',1) : ((Math.floor(Math.random() * 2) == 0) ? imgurRequest('kpecs',1) : imgurRequest('cutekboys', 1)));
|
||||
break;
|
||||
|
||||
// NSFW
|
||||
case 'lewd':
|
||||
message.channel.send(redditbooruRequest('pantsu'));
|
||||
break;
|
||||
case 'ecchi':
|
||||
message.channel.send((Math.floor(Math.random() * 2) == 0) ? subredditRequest('ecchi') : imgurRequest('ecchi', 5));
|
||||
break;
|
||||
case 'hentai':
|
||||
message.channel.send(imgurRequest('hentai', 5));
|
||||
break;
|
||||
case 'yaoi':
|
||||
message.channel.send(imgurRequest('yaoi', 5));
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
// login
|
||||
client.login(auth.token);
|
Reference in New Issue
Block a user