Compare commits
6 commits
Author | SHA1 | Date | |
---|---|---|---|
3d453a06bd | |||
99769e156d | |||
6eeddd24ba | |||
cd27615147 | |||
c27399cebe | |||
7e00849768 |
116
.gitignore
vendored
116
.gitignore
vendored
|
@ -1,116 +0,0 @@
|
||||||
# Logs
|
|
||||||
logs
|
|
||||||
*.log
|
|
||||||
npm-debug.log*
|
|
||||||
yarn-debug.log*
|
|
||||||
yarn-error.log*
|
|
||||||
lerna-debug.log*
|
|
||||||
|
|
||||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
|
||||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
|
||||||
|
|
||||||
# Runtime data
|
|
||||||
pids
|
|
||||||
*.pid
|
|
||||||
*.seed
|
|
||||||
*.pid.lock
|
|
||||||
|
|
||||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
|
||||||
lib-cov
|
|
||||||
|
|
||||||
# Coverage directory used by tools like istanbul
|
|
||||||
coverage
|
|
||||||
*.lcov
|
|
||||||
|
|
||||||
# nyc test coverage
|
|
||||||
.nyc_output
|
|
||||||
|
|
||||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
|
||||||
.grunt
|
|
||||||
|
|
||||||
# Bower dependency directory (https://bower.io/)
|
|
||||||
bower_components
|
|
||||||
|
|
||||||
# node-waf configuration
|
|
||||||
.lock-wscript
|
|
||||||
|
|
||||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
|
||||||
build/Release
|
|
||||||
|
|
||||||
# Dependency directories
|
|
||||||
node_modules/
|
|
||||||
jspm_packages/
|
|
||||||
|
|
||||||
# Snowpack dependency directory (https://snowpack.dev/)
|
|
||||||
web_modules/
|
|
||||||
|
|
||||||
# TypeScript v1 declaration files
|
|
||||||
typings/
|
|
||||||
|
|
||||||
# TypeScript cache
|
|
||||||
*.tsbuildinfo
|
|
||||||
|
|
||||||
# Optional npm cache directory
|
|
||||||
.npm
|
|
||||||
|
|
||||||
# Optional eslint cache
|
|
||||||
.eslintcache
|
|
||||||
|
|
||||||
# Microbundle cache
|
|
||||||
.rpt2_cache/
|
|
||||||
.rts2_cache_cjs/
|
|
||||||
.rts2_cache_es/
|
|
||||||
.rts2_cache_umd/
|
|
||||||
|
|
||||||
# Optional REPL history
|
|
||||||
.node_repl_history
|
|
||||||
|
|
||||||
# Output of 'npm pack'
|
|
||||||
*.tgz
|
|
||||||
|
|
||||||
# Yarn Integrity file
|
|
||||||
.yarn-integrity
|
|
||||||
|
|
||||||
# dotenv environment variables file
|
|
||||||
.env
|
|
||||||
.env.test
|
|
||||||
|
|
||||||
# parcel-bundler cache (https://parceljs.org/)
|
|
||||||
.cache
|
|
||||||
|
|
||||||
# Next.js build output
|
|
||||||
.next
|
|
||||||
|
|
||||||
# Nuxt.js build / generate output
|
|
||||||
.nuxt
|
|
||||||
dist
|
|
||||||
|
|
||||||
# Gatsby files
|
|
||||||
.cache/
|
|
||||||
# Comment in the public line in if your project uses Gatsby and not Next.js
|
|
||||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
|
||||||
# public
|
|
||||||
|
|
||||||
# vuepress build output
|
|
||||||
.vuepress/dist
|
|
||||||
|
|
||||||
# Serverless directories
|
|
||||||
.serverless/
|
|
||||||
|
|
||||||
# FuseBox cache
|
|
||||||
.fusebox/
|
|
||||||
|
|
||||||
# DynamoDB Local files
|
|
||||||
.dynamodb/
|
|
||||||
|
|
||||||
# TernJS port file
|
|
||||||
.tern-port
|
|
||||||
|
|
||||||
# Stores VSCode versions used for testing VSCode extensions
|
|
||||||
.vscode-test
|
|
||||||
|
|
||||||
# The config file that contains the bot token
|
|
||||||
config.json
|
|
||||||
|
|
||||||
# The database that stores karma and coins
|
|
||||||
data
|
|
2
LICENSE
2
LICENSE
|
@ -1,5 +1,5 @@
|
||||||
The Giant Penis License (GPL)
|
The Giant Penis License (GPL)
|
||||||
Copyright (c) 2020 jan
|
Copyright (c) 2020 Im_Verum
|
||||||
|
|
||||||
▄▄██▄██▄▄
|
▄▄██▄██▄▄
|
||||||
▄█ █ █▄
|
▄█ █ █▄
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
# Obama Bot
|
# Obama Bot
|
||||||
A small Discord bot with crappy code that I made for the r/Obamium Discord server. pls dont judge my code
|
A small Discord bot with crappy code that I made for the r/Obamium Discord server. pls dont judge my code
|
||||||
|
|
||||||
# Hosting the bot
|
|
||||||
If you, for whatever reason, want to host this bot yourself, good luck getting it to work.
|
|
||||||
|
|
||||||
# Copyright
|
# Copyright
|
||||||
This project is licensed under the [Giant Penis License](http://giant-penis-license.org/) which is basically a deformed MIT license.
|
This project is licensed under the [Giant Penis License](http://giant-penis-license.org/) which is basically a deformed MIT license.
|
||||||
|
|
|
@ -1,61 +0,0 @@
|
||||||
const Discord = require('discord.js');
|
|
||||||
const fs = require('fs').promises;
|
|
||||||
|
|
||||||
const events = require('events');
|
|
||||||
const shutEmitter = new events.EventEmitter();
|
|
||||||
|
|
||||||
module.exports.meta = {
|
|
||||||
name: 'copypasta',
|
|
||||||
aliases: ['pasta'],
|
|
||||||
staffOnly: false,
|
|
||||||
epicOnly: true
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {Discord.Message} message
|
|
||||||
* @param {Array<string>} args
|
|
||||||
*/
|
|
||||||
module.exports.run = async (message, args) => {
|
|
||||||
let copypastas = await fs.readdir(__dirname + '/copypastas');
|
|
||||||
let pasta = copypastas.find((p) => p.toLowerCase() == args[0]?.toLowerCase());
|
|
||||||
|
|
||||||
if (!pasta) {
|
|
||||||
message.channel.send(`Please choose one of: \`${copypastas.join('`, `')}\``);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let lines = (await fs.readFile(__dirname + '/copypastas/' + pasta))
|
|
||||||
.toString('utf-8')
|
|
||||||
.split('\n')
|
|
||||||
.filter(line => line.trim() != '');
|
|
||||||
|
|
||||||
this.copypastaing[message.channel.id] = true;
|
|
||||||
|
|
||||||
sendLine();
|
|
||||||
const interval = setInterval(sendLine, 1500);
|
|
||||||
const listener = shutEmitter.once('shut', cid => {
|
|
||||||
if (cid == message.channel.id) {
|
|
||||||
clearInterval(interval);
|
|
||||||
this.copypastaing[message.channel.id] = false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
async function sendLine() {
|
|
||||||
if (lines.length == 0) {
|
|
||||||
this.copypastaing[message.channel.id] = false;
|
|
||||||
clearTimeout(interval);
|
|
||||||
shutEmitter.removeListener('shut', listener);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const line = lines.shift();
|
|
||||||
await message.channel.send(line, { tts: true });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports.shut = (channelID) => {
|
|
||||||
shutEmitter.emit('shut', channelID);
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports.copypastaing = {}
|
|
|
@ -1,30 +0,0 @@
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
||||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,5 +0,0 @@
|
||||||
You know, let's just say, hypothetically speaking, that I were to have sex with your mom.
|
|
||||||
Now, hypothetically speaking, if this did happen, I mean, you must remember that all physical matter has a very thin layer of atoms surrounding it, so technically, you are never truly
|
|
||||||
touching anything or anyone, but instead, the atoms surrounding your body and this object or person are coming into contact with one another.
|
|
||||||
So, once again, hypothetically speaking, if I were to attempt to have sex with your mom, I would fail miserably, because, according to science, our bodies would never come into contact
|
|
||||||
with one another.
|
|
|
@ -1,28 +0,0 @@
|
||||||
**Infinite cum.**
|
|
||||||
You sit on the toilet to jack off, but you begin to cum uncontrollably.
|
|
||||||
After ten spurts you start to worry. Your hand is sticky and it reeks of semen.
|
|
||||||
You desperately shove your dick into a wad of toilet paper, but that only makes your balls hurt.
|
|
||||||
The cum accelerates. It’s been three minutes. You can’t stop cumming.
|
|
||||||
Your bathroom floor is covered in a thin layer of baby fluid. You try to cum into the shower drain but it builds up too fast.
|
|
||||||
You try the toilet. The cum is too thick to be flushed. You lock the bathroom door to prevent the cum from escaping.
|
|
||||||
The air grows hot and humid from the cum. The cum accelerates. You slip and fall in your own sperm.
|
|
||||||
The cum is now six inches deep, almost as long as your still-erect semen hose. Sprawled on your back, you begin to cum all over the ceiling.
|
|
||||||
Globs of the sticky white fluid begin to fall like raindrops, giving you a facial with your own cum. The cum accelerates.
|
|
||||||
You struggle to stand as the force of the cum begins to propel you backwards as if you were on a bukkake themed slip-and-slide.
|
|
||||||
Still on your knees, the cum is now at chin height. To avoid drowning you open the bathroom door.
|
|
||||||
The deluge of man juice reminds you of the Great Molasses Flood of 1919, only with cum instead of molasses.
|
|
||||||
The cum accelerates. It’s been two hours. Your children and wife scream in terror as their bodies are engulfed by the snow-white sludge.
|
|
||||||
Your youngest child goes under, with viscous bubbles and muffled cries rising from the goop. You plead to God to end your suffering. The cum accelerates.
|
|
||||||
You squeeze your dick to stop the cum, but it begins to leak out of your asshole instead. You let go.
|
|
||||||
The force of the cum tears your urethra open, leaving only a gaping hole in your crotch that spews semen.
|
|
||||||
Your body picks up speed as it slides backwards along the cum. You smash through the wall, hurtling into the sky at thirty miles an hour.
|
|
||||||
From a bird’s eye view you see your house is completely white. Your neighbor calls the cops. The cum accelerates.
|
|
||||||
As you continue to ascend, you spot police cars racing towards your house.
|
|
||||||
The cops pull out their guns and take aim, but stray loads of cum hit them in the eyes, blinding them. The cum accelerates.
|
|
||||||
You are now at an altitude of 1000 feet. The SWAT team arrives. Military helicopters circle you. Hundreds of bullets pierce your body at once, yet you stay conscious.
|
|
||||||
Your testicles have now grown into a substitute brain. The cum accelerates. It has been two days. With your body now destroyed, the cum begins to spray in all directions.
|
|
||||||
You break the sound barrier. The government deploys fighter jets to chase you down, but the impact of your cum sends one plane crashing to the ground.
|
|
||||||
The government decides to let you leave the earth. You feel your gonads start to burn up as you reach the edges of the atmosphere.
|
|
||||||
You narrowly miss the ISS, giving it a new white paint job as you fly past. Physicists struggle to calculate your erratic trajectory.
|
|
||||||
The cum accelerates. The cum begins to gravitate towards itself, forming a comet trail of semen. Astronomers begin calling you the “Cummet.”
|
|
||||||
You are stuck in space forever, stripped of your body and senses, forced to endure an eternity of cumshots. Eventually, you stop thinking.
|
|
|
@ -1,12 +0,0 @@
|
||||||
What the fuck did you just fucking say about me, you little bitch?
|
|
||||||
I’ll have you know I graduated top of my class in the Navy Seals, and I’ve been involved in numerous secret raids on Al-Quaeda, and I have over 300 confirmed kills.
|
|
||||||
I am trained in gorilla warfare and I’m the top sniper in the entire US armed forces. You are nothing to me but just another target.
|
|
||||||
I will wipe you the fuck out with precision the likes of which has never been seen before on this Earth, mark my fucking words.
|
|
||||||
You think you can get away with saying that shit to me over the Internet? Think again, fucker.
|
|
||||||
As we speak I am contacting my secret network of spies across the USA and your IP is being traced right now so you better prepare for the storm, maggot.
|
|
||||||
The storm that wipes out the pathetic little thing you call your life.
|
|
||||||
You’re fucking dead, kid. I can be anywhere, anytime, and I can kill you in over seven hundred ways, and that’s just with my bare hands.
|
|
||||||
Not only am I extensively trained in unarmed combat, but I have access to the entire arsenal of the United States Marine Corps
|
|
||||||
and I will use it to its full extent to wipe your miserable ass off the face of the continent, you little shit.
|
|
||||||
If only you could have known what unholy retribution your little “clever” comment was about to bring down upon you, maybe you would have held your fucking tongue.
|
|
||||||
But you couldn’t, you didn’t, and now you’re paying the price, you goddamn idiot. I will shit fury all over you and you will drown in it. You’re fucking dead, kiddo.
|
|
|
@ -1,10 +0,0 @@
|
||||||
**AITA For Dropkicking an Toddler off a cliff because he used my Dead Name**
|
|
||||||
The title speaks for itself. So me (20F transitioning) was going on a hike with my cousin and his parents.
|
|
||||||
There’s this really large cliff that looms over my house. I recently told my family I was trans.
|
|
||||||
I thought my toddler cousin had realize me new name is Jenny. Instead he said Max.
|
|
||||||
I instantly flew into a mentally unstable rage and my eyes turned red. I began to drool and have a mini-seizure.
|
|
||||||
I ran toward my cousin at the speed of light. I picked him up by the back of his shirt.
|
|
||||||
His parents ran toward him but with my tranny-powers I managed to use my telekineses and freeze them in mid-air.
|
|
||||||
I threw my toddler cousin up in the air and using my tranny in the 40% powers kicked him at the speed of light.
|
|
||||||
He went fucking flying and I heard his little screams which made my gaping hole which used to be my dick until I forcefully castrated myself began to drip with precum.
|
|
||||||
I saw him fall to the ground and splatter by then I was so horny I came all over the place.
|
|
|
@ -1,52 +0,0 @@
|
||||||
const Discord = require('discord.js');
|
|
||||||
const { inspect } = require('util');
|
|
||||||
const { logger, client } = require('../');
|
|
||||||
|
|
||||||
module.exports.meta = {
|
|
||||||
name: 'eval',
|
|
||||||
aliases: ['e']
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {Discord.Message} message
|
|
||||||
* @param {Array<string>} args
|
|
||||||
*/
|
|
||||||
module.exports.run = async (message, args) => {
|
|
||||||
const ownerID = process.env.OWNER_ID;
|
|
||||||
if (!ownerID) return message.channel.send('Error: Bot owner is not configured. Set `OWNER_ID` env var.');
|
|
||||||
if (ownerID != message.author.id) {
|
|
||||||
logger.warn(`${message.author.tag} ${message.author.id} => Not bot owner`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
const exec = args.join(' ');
|
|
||||||
if (!exec) return message.channel.send('What do you want me to do, dumbass');
|
|
||||||
|
|
||||||
eval(
|
|
||||||
`(async () => {` +
|
|
||||||
`${exec.replace(/(```\w*\n)|\n```$/g, '')}\n` +
|
|
||||||
`})()`
|
|
||||||
)
|
|
||||||
.then(res => {
|
|
||||||
if (res == undefined)
|
|
||||||
message.react('✅')
|
|
||||||
.catch(() => message.channel.send('```js\nundefined\n```'));
|
|
||||||
else
|
|
||||||
message.channel.send(
|
|
||||||
`\`\`\`js\n${
|
|
||||||
inspect(res)
|
|
||||||
.replace(new RegExp(client.token, 'g'), '[Token removed]')
|
|
||||||
.slice(0, 1989)
|
|
||||||
}\n\`\`\``
|
|
||||||
);
|
|
||||||
})
|
|
||||||
.catch(e => {
|
|
||||||
message.channel.send(`\`\`\`js\n${(e && e.name && e.message ? `${e.name}: ${e.message}` : `Error: ${e}`).slice(0, 1989)}\n\`\`\``)
|
|
||||||
.catch(a => message.channel.send(a));
|
|
||||||
});
|
|
||||||
} catch(e) {
|
|
||||||
message.channel.send(`\`\`\`js\n${(e && e.name && e.message ? `${e.name}: ${e.message}` : `Error: ${e}`).slice(0, 1989)}\n\`\`\``)
|
|
||||||
.catch(a => message.channel.send(a));
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
const { MessageEmbed } = require("discord.js");
|
|
||||||
const { client } = require("..");
|
|
||||||
const prefix = process.env.BOT_PREFIX || '-';
|
|
||||||
|
|
||||||
module.exports.meta = {
|
|
||||||
name: 'help',
|
|
||||||
aliases: ['info'],
|
|
||||||
staffOnly: false
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {Discord.Message} message
|
|
||||||
* @param {Array<string>} args
|
|
||||||
*/
|
|
||||||
module.exports.run = async (message, args) => {
|
|
||||||
let embed = new MessageEmbed()
|
|
||||||
.setTitle('Obama bot')
|
|
||||||
.setDescription(`Epic obama bot help`)
|
|
||||||
|
|
||||||
addCmd(embed, 'obamium', 'Spawn obamium');
|
|
||||||
addCmd(embed, 'vbucks', 'Get free vbucks');
|
|
||||||
addCmd(embed, 'ping', 'Show the bot\'s ping');
|
|
||||||
addCmd(embed, 'coins', 'See how much karma/coins you have');
|
|
||||||
addCmd(embed, 'top', 'Karma leaderboard');
|
|
||||||
addCmd(embed, 'setcoins', '[Staff command] Manage a user\'s coins')
|
|
||||||
|
|
||||||
embed.addField('\u200b', `This bot was made by \`${client.users.cache.get('284323826165350400')?.tag}\`.\nCheck out the source code [here](https://gitea.janderedev.xyz/Jan/obama-bot "Click me!").`, false);
|
|
||||||
|
|
||||||
message.channel.send(embed);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {MessageEmbed} embed
|
|
||||||
* @param {string} cmd
|
|
||||||
* @param {string} text
|
|
||||||
*/
|
|
||||||
function addCmd(embed, cmd, text) {
|
|
||||||
embed.addField(`${prefix}${cmd}`, text, true);
|
|
||||||
}
|
|
|
@ -1,38 +0,0 @@
|
||||||
const Discord = require('discord.js');
|
|
||||||
|
|
||||||
module.exports.meta = {
|
|
||||||
name: 'karma',
|
|
||||||
aliases: ['coins'],
|
|
||||||
staffOnly: false
|
|
||||||
}
|
|
||||||
|
|
||||||
const karma = require('../util/karma').karma;
|
|
||||||
const coins = require('../util/karma').coins;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {Discord.Message} message
|
|
||||||
* @param {Array<string>} args
|
|
||||||
*/
|
|
||||||
module.exports.run = async (message, args) => {
|
|
||||||
const karmaID = '733339045463064607';
|
|
||||||
const coinsID = '733339908273602662';
|
|
||||||
|
|
||||||
const karmaEmote = message.guild.emojis.cache.get(karmaID).toString();
|
|
||||||
const coinsEmote = message.guild.emojis.cache.get(coinsID).toString();
|
|
||||||
|
|
||||||
let targetID = message.mentions.members.first() || message.author;
|
|
||||||
targetID = targetID.id;
|
|
||||||
|
|
||||||
let karmaembed = new Discord.MessageEmbed()
|
|
||||||
.setTitle(message.mentions.members.first() ? 'Balance of ' + message.mentions.members.first().user.username : 'Your balance')
|
|
||||||
.setDescription(`${karmaEmote} Karma: \`${karma.get(targetID) || '0'}\`\n${coinsEmote} Coins: \`${coins.get(targetID) || '0'}\``);
|
|
||||||
|
|
||||||
let kCount = karma.get(targetID);
|
|
||||||
if (kCount) {
|
|
||||||
if (kCount > 0) karmaembed.setColor('f36916');
|
|
||||||
if (kCount < 0) karmaembed.setColor('9494ff');
|
|
||||||
}
|
|
||||||
|
|
||||||
message.channel.send(karmaembed);
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
const { Message } = require("discord.js");
|
|
||||||
const { client } = require("..");
|
|
||||||
|
|
||||||
module.exports.meta = {
|
|
||||||
name: 'obamium',
|
|
||||||
aliases: ['obab'],
|
|
||||||
staffOnly: false
|
|
||||||
}
|
|
||||||
|
|
||||||
const gID = '653568812578373643';
|
|
||||||
const IDs = [
|
|
||||||
['715931208135213087', '715931208281882666', '715931208936325141', '715931208332345366'],
|
|
||||||
['715931208269168812', '715931208432746537', '715931208491597924', '715931208357249044'],
|
|
||||||
['715931208361574421', '782261410876751943', '715931208290140172', '715931208374026332'],
|
|
||||||
['715931208378220666', '715931208319500310', '715931208898445402', '715931208550318170']
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {Message} message
|
|
||||||
* @param {Array<string>} args
|
|
||||||
*/
|
|
||||||
module.exports.run = async (message, args) => {
|
|
||||||
try {
|
|
||||||
const guild = client.guilds.cache.get(gID);
|
|
||||||
let msg = '';
|
|
||||||
IDs.forEach(row => {
|
|
||||||
row.forEach(eID => {
|
|
||||||
msg += guild.emojis.cache.get(eID).toString();
|
|
||||||
});
|
|
||||||
msg += '\n'
|
|
||||||
});
|
|
||||||
message.channel.send(msg);
|
|
||||||
} catch(e) {
|
|
||||||
console.error(e);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
const Discord = require('discord.js');
|
|
||||||
const { client } = require('..');
|
|
||||||
|
|
||||||
module.exports.meta = {
|
|
||||||
name: 'ping',
|
|
||||||
aliases: [],
|
|
||||||
staffOnly: false
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {Discord.Message} message
|
|
||||||
* @param {Array<string>} args
|
|
||||||
*/
|
|
||||||
module.exports.run = async (message, args) => {
|
|
||||||
try {
|
|
||||||
let embed = new Discord.MessageEmbed()
|
|
||||||
.setTitle('Pong?')
|
|
||||||
.setDescription('Measuring...')
|
|
||||||
.setColor('#2F62CA');
|
|
||||||
|
|
||||||
message.channel.send(embed).then(msg => {
|
|
||||||
embed.setTitle('Pong!');
|
|
||||||
embed.description = undefined;
|
|
||||||
embed.addField(':robot: Bot Ping', `\`${Date.now() - message.createdTimestamp}ms\``, true);
|
|
||||||
embed.addField(':robot: API Ping', `\`${client.ws.ping}ms\``, true);
|
|
||||||
embed.addField(':speech_balloon: Message delay', `\`${msg.createdTimestamp - message.createdTimestamp}ms\``, true);
|
|
||||||
msg.edit(embed);
|
|
||||||
});
|
|
||||||
} catch(e) {
|
|
||||||
console.error(e);
|
|
||||||
message.channel.send(e);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
const Discord = require('discord.js');
|
|
||||||
|
|
||||||
module.exports.meta = {
|
|
||||||
name: 'setcoins',
|
|
||||||
aliases: ['setcoin'],
|
|
||||||
staffOnly: true
|
|
||||||
}
|
|
||||||
|
|
||||||
const karma = require('../util/karma').karma;
|
|
||||||
const coins = require('../util/karma').coins;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {Discord.Message} message
|
|
||||||
* @param {Array<string>} args
|
|
||||||
*/
|
|
||||||
module.exports.run = async (message, args) => {
|
|
||||||
let member = message.mentions.members.first();
|
|
||||||
if (!member) return message.channel.send('You need to @mention a member!')
|
|
||||||
|
|
||||||
if (!coins.get(member.id)) coins.set(member.id, 0);
|
|
||||||
let old = coins.get(member.id);
|
|
||||||
|
|
||||||
if (isNaN(args[1])) return message.channel.send('Invalid number');
|
|
||||||
|
|
||||||
coins.set(member.id, Number(args[1]));
|
|
||||||
message.channel.send(
|
|
||||||
new Discord.MessageEmbed()
|
|
||||||
.setTitle('Coins updated')
|
|
||||||
.setDescription(`Coins for \`${member.user.tag}\` set to \`${coins.get(member.id)}\` (old: \`${old}\`)`)
|
|
||||||
.setColor('ddbd37')
|
|
||||||
)
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
const Discord = require('discord.js');
|
|
||||||
|
|
||||||
module.exports.meta = {
|
|
||||||
name: 'stop',
|
|
||||||
aliases: ['stfu', 'shut'],
|
|
||||||
staffOnly: false,
|
|
||||||
epicOnly: true
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Kills -copypasta
|
|
||||||
* @param {Discord.Message} message
|
|
||||||
* @param {Array<string>} args
|
|
||||||
*/
|
|
||||||
module.exports.run = async (message, args) => {
|
|
||||||
require('./copypasta').shut(message.channel.id);
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
module.exports.meta = {
|
|
||||||
name: 'test',
|
|
||||||
aliases: ['t'],
|
|
||||||
staffOnly: false
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {Discord.Message} message
|
|
||||||
* @param {Array<string>} args
|
|
||||||
*/
|
|
||||||
module.exports.run = async (message, args) => {
|
|
||||||
message.channel.send('cool, your test worked. i hope you\'re happy now');
|
|
||||||
}
|
|
|
@ -1,39 +0,0 @@
|
||||||
const Discord = require('discord.js');
|
|
||||||
|
|
||||||
module.exports.meta = {
|
|
||||||
name: 'top',
|
|
||||||
aliases: ['leaderboard'],
|
|
||||||
staffOnly: false
|
|
||||||
}
|
|
||||||
|
|
||||||
const karma = require('../util/karma').karma;
|
|
||||||
const coins = require('../util/karma').coins;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {Discord.Message} message
|
|
||||||
* @param {Array<string>} args
|
|
||||||
*/
|
|
||||||
module.exports.run = async (message, args) => {
|
|
||||||
const karmaID = '733339045463064607';
|
|
||||||
const karmaEmote = message.guild.emojis.cache.get(karmaID).toString();
|
|
||||||
let karmaboard = [];
|
|
||||||
karma.keyArray().forEach(uid => {
|
|
||||||
karmaboard.push({id: uid, karma: karma.get(uid)});
|
|
||||||
});
|
|
||||||
|
|
||||||
karmaboard.sort((a, b) => a.karma - b.karma);
|
|
||||||
karmaboard.reverse();
|
|
||||||
|
|
||||||
let embed = new Discord.MessageEmbed()
|
|
||||||
.setTitle('Karma Leaderboard')
|
|
||||||
.setDescription(karmaEmote + ' Karma leaderboard - Top 12 for ' + message.guild.name);
|
|
||||||
|
|
||||||
for (let x=0; x < 12; x += 1) {
|
|
||||||
if (!karmaboard[x]) break;
|
|
||||||
let u = message.guild.members.cache.get(karmaboard[x].id);
|
|
||||||
if (!u) embed.addField(`${x+1}. [Unknown user]`, `${karmaEmote} ${karmaboard[x].karma} Karma`, true); else embed.addField(`${x+1}. ${u.user.username}#${u.user.discriminator} ${u.user.bot ? '(Bot)' : ''}`, `${karmaEmote} ${karmaboard[x].karma} Karma`, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
message.channel.send(embed);
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
const Discord = require('discord.js');
|
|
||||||
|
|
||||||
module.exports.meta = {
|
|
||||||
name: 'truefan',
|
|
||||||
aliases: [],
|
|
||||||
staffOnly: true
|
|
||||||
}
|
|
||||||
|
|
||||||
const roleID = '718862546395988078';
|
|
||||||
const channelID = '718908301555007518';
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {Discord.Message} message
|
|
||||||
* @param {Array<string>} args
|
|
||||||
*/
|
|
||||||
module.exports.run = async (message, args) => {
|
|
||||||
let target = message.mentions.members.first();
|
|
||||||
let role = message.guild.roles.cache.get(roleID);
|
|
||||||
let channel = message.guild.channels.cache.get(channelID);
|
|
||||||
if (!role) return message.channel.send('Error: Could not find role');
|
|
||||||
if (!channel) return message.channel.send('Error: Could not find channel');
|
|
||||||
if (!target) return message.channel.send('You need to @mention someone for this to work!');
|
|
||||||
if (target.user.bot) return message.channel.send('You can\'t do this with bots.');
|
|
||||||
if (!target.roles.cache.has(roleID)) {
|
|
||||||
// Give the role
|
|
||||||
target.roles.add(role);
|
|
||||||
channel.send(`${target.user} is now able to access this channel.`);
|
|
||||||
let msg = new Discord.MessageEmbed()
|
|
||||||
.setTitle('Congratulations!')
|
|
||||||
.setDescription(`The r/Obamium Discord Staff has decided to give you access to a secret text channel: <#${channelID}>`)
|
|
||||||
.setThumbnail('https://discordemoji.com/assets/emoji/ClapClap.gif');
|
|
||||||
target.send(msg);
|
|
||||||
message.channel.send(`${target.user.username} is now a true obama fan.`);
|
|
||||||
} else {
|
|
||||||
// Take the role
|
|
||||||
target.roles.remove(role);
|
|
||||||
channel.send(`${target.user} is no longer able to access this channel.`);
|
|
||||||
message.channel.send(`${target.user.username} is no longer a true obama fan.`);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
const Discord = require('discord.js');
|
|
||||||
|
|
||||||
module.exports.meta = {
|
|
||||||
name: 'vbucks',
|
|
||||||
aliases: ['vbuck'],
|
|
||||||
staffOnly: false
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {Discord.Message} message
|
|
||||||
* @param {Array<string>} args
|
|
||||||
*/
|
|
||||||
module.exports.run = async (message, args) => {
|
|
||||||
let embed = new Discord.MessageEmbed()
|
|
||||||
.setAuthor('Free Vbucks 100% legit no virus', 'https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fdiscordemoji.com%2Fassets%2Femoji%2FVBuck.png&f=1&nofb=1')
|
|
||||||
.setDescription('Click here to download free Vbucks: [https://vbuck-free-generator.com](https://bit.ly/freevbucks2020legitworking)')
|
|
||||||
.setColor('88ccdb');
|
|
||||||
message.channel.send(embed);
|
|
||||||
}
|
|
6
config.json.example
Normal file
6
config.json.example
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"token": "Put the bot token here",
|
||||||
|
"prefix": "-",
|
||||||
|
|
||||||
|
"wit-token": "Put the token you get from Wit.ai here"
|
||||||
|
}
|
44
index.js
44
index.js
|
@ -1,44 +0,0 @@
|
||||||
require('dotenv').config(); // Require and run dotenv
|
|
||||||
|
|
||||||
// Import modules
|
|
||||||
const Discord = require('discord.js');
|
|
||||||
const Enmap = require('enmap');
|
|
||||||
|
|
||||||
const client = new Discord.Client({partials: ["REACTION", "MESSAGE"]});
|
|
||||||
|
|
||||||
// Use log75 for logging
|
|
||||||
const { default: Log75, LogLevel } = require('log75')
|
|
||||||
const logger = new Log75(process.env.NODE_ENV == 'production' ? LogLevel.Standard : LogLevel.Debug, true);
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
client: client,
|
|
||||||
logger: logger
|
|
||||||
}
|
|
||||||
|
|
||||||
// Execute modules in util folder in order
|
|
||||||
async function runModules() {
|
|
||||||
for (const file of ['commandLoader', 'login', 'eventHandler', 'karma', 'carloscounter']) {
|
|
||||||
logger.debug(`Running module ${file}`);
|
|
||||||
await require(`./util/${file}`).run();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
runModules();
|
|
||||||
|
|
||||||
|
|
||||||
// Destroy client when SIGINT
|
|
||||||
process.on('SIGINT', async () => {
|
|
||||||
process.stdin.resume(); // Don't exit immediately
|
|
||||||
|
|
||||||
console.log('');
|
|
||||||
logger.info('SIGINT received.');
|
|
||||||
|
|
||||||
try {
|
|
||||||
await client.destroy();
|
|
||||||
} catch(e) {
|
|
||||||
logger.warn('Failed to destroy client');
|
|
||||||
process.exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.done('Logged out client, exiting.');
|
|
||||||
process.exit();
|
|
||||||
});
|
|
1701
package-lock.json
generated
1701
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -11,9 +11,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"better-sqlite3": "^7.1.0",
|
"better-sqlite3": "^7.1.0",
|
||||||
"discord.js": "^12.2.0",
|
"discord.js": "^12.2.0",
|
||||||
"dotenv": "^8.2.0",
|
|
||||||
"enmap": "^5.3.2",
|
"enmap": "^5.3.2",
|
||||||
"log75": "^1.0.2",
|
|
||||||
"node-wit": "^6.0.0"
|
"node-wit": "^6.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,54 +0,0 @@
|
||||||
const Discord = require('discord.js');
|
|
||||||
|
|
||||||
function random(low, high) {
|
|
||||||
low = Math.ceil(low);
|
|
||||||
high = Math.floor(high);
|
|
||||||
high = high + 1;
|
|
||||||
rndm = Math.random();
|
|
||||||
return Math.floor(rndm * (high - low) + low);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {Discord.Message} message
|
|
||||||
*/
|
|
||||||
module.exports.execute = (message) => {
|
|
||||||
// 69 nice haha le funny number
|
|
||||||
if (message.content.toLowerCase().indexOf('69') > -1) {
|
|
||||||
let replies = [
|
|
||||||
'You said the funny number nice',
|
|
||||||
'Haha funny 69',
|
|
||||||
'You did a funny right here:\n> 69',
|
|
||||||
'lmao funny number',
|
|
||||||
'https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fi.kym-cdn.com%2Fentries%2Ficons%2Foriginal%2F000%2F016%2F588%2Fsixtynine.jpg&f=1&nofb=1',
|
|
||||||
'youre\'r funny lmao',
|
|
||||||
'haha funny sex number',
|
|
||||||
'sex',
|
|
||||||
'69 nice'
|
|
||||||
];
|
|
||||||
|
|
||||||
let curIndex = 0;
|
|
||||||
let continueSearch = true;
|
|
||||||
let found = [];
|
|
||||||
while (continueSearch) {
|
|
||||||
if (message.content.toLowerCase().indexOf('69', curIndex) == -1) {
|
|
||||||
continueSearch = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
let f = message.content.toLowerCase().indexOf('69', curIndex);
|
|
||||||
curIndex = f + 1;
|
|
||||||
found.push(f);
|
|
||||||
}
|
|
||||||
delete continueSearch;
|
|
||||||
delete curIndex;
|
|
||||||
|
|
||||||
let send = false;
|
|
||||||
found.forEach(index => {
|
|
||||||
let charL = message.content.charAt(index - 1);
|
|
||||||
let charR = message.content.charAt(index + 2);
|
|
||||||
if ((isNaN(charL) || charL == '' || charL == ' ') && (isNaN(charR) || charR == '' || charR == ' ')) send = true;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (send) message.channel.send(replies[random(0, replies.length - 1)]);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,59 +0,0 @@
|
||||||
const Discord = require('discord.js');
|
|
||||||
const { client, logger } = require('../index');
|
|
||||||
const Enmap = require('enmap');
|
|
||||||
const { updateRoles } = require('./karma');
|
|
||||||
const stats = new Enmap({name: 'carlos_stats'});
|
|
||||||
let uID = '566239971309256704';
|
|
||||||
let guildID = '653568812578373643';
|
|
||||||
let muteRoleID = '751522580300693608';
|
|
||||||
let statusRoleID = '795371115513249862';
|
|
||||||
|
|
||||||
module.exports.run = () => {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This counts how often a specific user got banned/muted.
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (stats.get('bans') == undefined) stats.set('bans', 0);
|
|
||||||
if (stats.get('mutes') == undefined) stats.set('mutes', 0);
|
|
||||||
|
|
||||||
try {
|
|
||||||
let role = client.guilds.cache.get(guildID).roles.cache.get(statusRoleID), roleName = role.name;
|
|
||||||
let [bans, mutes] = roleName.split(' bans, ');
|
|
||||||
mutes = Number(mutes.split(' mutes')[0]);
|
|
||||||
bans = Number(bans);
|
|
||||||
if (mutes != undefined && bans != undefined) {
|
|
||||||
stats.set('bans', bans);
|
|
||||||
stats.set('mutes', mutes);
|
|
||||||
}
|
|
||||||
} catch(e) {
|
|
||||||
logger.warn('Failed to parse role name: ' + e);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
client.on('guildBanAdd', (guild, user) => {
|
|
||||||
if (user.id != uID) return;
|
|
||||||
stats.set('bans', Number(stats.get('bans')) + 1);
|
|
||||||
updateRole();
|
|
||||||
});
|
|
||||||
|
|
||||||
client.on('guildMemberUpdate', (oldMember, newMember) => {
|
|
||||||
if (newMember.id != uID) return;
|
|
||||||
if (!oldMember.roles.cache.get(muteRoleID) && newMember.roles.cache.get(muteRoleID)) {
|
|
||||||
stats.set('mutes', Number(stats.get('mutes')) + 1);
|
|
||||||
updateRole();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
client.on('guildMemberAdd', (member) => {
|
|
||||||
if (member.id == uID) member.roles.add(statusRoleID).catch(e => logger.warn(`Failed to assign role ${muteRoleID}: ${e}`));
|
|
||||||
});
|
|
||||||
|
|
||||||
let updateRole = () => {
|
|
||||||
let role = client.guilds.cache.get(guildID).roles.cache.get(statusRoleID);
|
|
||||||
if (!role) return;
|
|
||||||
if (role.editable) role.setName(`${stats.get('bans')} bans, ${stats.get('mutes')} mutes`, 'Carlos is a dipfuck');
|
|
||||||
else logger.warn('Can\'t manage role ' + statusRoleID);
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
const { client, logger } = require('../index');
|
|
||||||
const fs = require('fs');
|
|
||||||
const Discord = require('discord.js');
|
|
||||||
|
|
||||||
module.exports.commands = new Discord.Collection();
|
|
||||||
|
|
||||||
module.exports.run = () => {
|
|
||||||
|
|
||||||
for (const file of fs.readdirSync('commands/')) {
|
|
||||||
if (file.endsWith('.js')) {
|
|
||||||
try {
|
|
||||||
const command = require(`../commands/${file}`);
|
|
||||||
if (!command.meta?.name)
|
|
||||||
logger.warn(`Command ${file} does not have a 'name' attribute; skipping.`);
|
|
||||||
else
|
|
||||||
this.commands.set(command.meta.name, command);
|
|
||||||
} catch(e) {
|
|
||||||
logger.error(`Failed to load command '${file}'`);
|
|
||||||
console.error(e);
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
logger.info(`${this.commands.size} command${this.commands.size != 1 ? 's' : ''} loaded`);
|
|
||||||
}
|
|
|
@ -1,88 +0,0 @@
|
||||||
const Discord = require('discord.js');
|
|
||||||
const { client, logger } = require('../index');
|
|
||||||
const prefix = process.env.BOT_PREFIX || '-';
|
|
||||||
|
|
||||||
module.exports.run = () => {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
const { commands } = require('./commandLoader');
|
|
||||||
|
|
||||||
client.on('message', message => {
|
|
||||||
if (message.author?.bot) return;
|
|
||||||
addToDatabase(message.author.id);
|
|
||||||
|
|
||||||
require('./wit').execute(message);
|
|
||||||
try {
|
|
||||||
logger.debug(`${message.author.tag} => ${message.content}`);
|
|
||||||
|
|
||||||
let msgContent = message.content;
|
|
||||||
let usedPrefix;
|
|
||||||
if (msgContent.startsWith(prefix)) usedPrefix = prefix;
|
|
||||||
else if (msgContent.startsWith(`<@${client.user.id}>`)) usedPrefix = `<@${client.user.id}>`;
|
|
||||||
else if (msgContent.startsWith(`<@!${client.user.id}>`)) usedPrefix = `<@!${client.user.id}>`;
|
|
||||||
|
|
||||||
if (!usedPrefix) return require('./69Reply').execute(message);
|
|
||||||
msgContent = msgContent.substr(msgContent.indexOf(usedPrefix) + 1, msgContent.length);
|
|
||||||
if (msgContent.startsWith(' ') && usedPrefix != prefix) msgContent = msgContent.substr(1, msgContent.length);
|
|
||||||
const args = msgContent.split(' ');
|
|
||||||
const cmdName = args.shift()?.toLowerCase();
|
|
||||||
|
|
||||||
const cmd = commands.find(cmd => cmd.meta?.name == cmdName || cmd.meta?.aliases?.indexOf(cmdName) > -1);
|
|
||||||
if (!cmd) return require('./69Reply').execute(message);
|
|
||||||
|
|
||||||
logger.info(`[CMD] ${message.author.id} ${message.author.tag} => ${cmdName} ${args.join(' ')}`);
|
|
||||||
|
|
||||||
if (cmd.meta?.name != 'stop' && require('../commands/copypasta').copypastaing[message.channel?.id])
|
|
||||||
return message.react('810153990733561876').catch(console.warn);
|
|
||||||
|
|
||||||
if (cmd.meta?.staffOnly && !message.member.permissions.has('ADMINISTRATOR')) {
|
|
||||||
logger.warn(`${message.author.tag} => Refusing to run staff command`);
|
|
||||||
message.channel.send(
|
|
||||||
new Discord.MessageEmbed()
|
|
||||||
.setTitle('You are unworthy')
|
|
||||||
.setDescription('This command can only be used by this server\'s staff.')
|
|
||||||
.setImage('https://media1.tenor.com/images/1056e92668594b262d3338c897ce9bd3/tenor.gif?itemid=7706023')
|
|
||||||
.setColor('ff0000')
|
|
||||||
)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else if (cmd.meta?.epicOnly && !message.member?.roles.cache.get('718862546395988078')) {
|
|
||||||
logger.warn(`${message.author.tag} => Refusing to run epic only command`);
|
|
||||||
message.channel.send(
|
|
||||||
new Discord.MessageEmbed()
|
|
||||||
.setTitle('You are unworthy')
|
|
||||||
.setDescription('Only epic people can use this command. You are not epic.')
|
|
||||||
.setImage('https://media1.tenor.com/images/1056e92668594b262d3338c897ce9bd3/tenor.gif?itemid=7706023')
|
|
||||||
.setColor('ff0000')
|
|
||||||
)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
cmd.run(message, args);
|
|
||||||
} catch(e) {
|
|
||||||
console.error(e);
|
|
||||||
message.channel.send(
|
|
||||||
new Discord.MessageEmbed()
|
|
||||||
.setTitle('You broke Obama')
|
|
||||||
.setDescription(`Good job, you broke Obama. Debug info: \`\`\`js\n${e}\`\`\``)
|
|
||||||
.setColor('ff0000')
|
|
||||||
)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} catch(e) {
|
|
||||||
console.error(e);
|
|
||||||
message.channel.send('An error has occurred. fuck');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const karma = require('./karma').karma;
|
|
||||||
const coins = require('./karma').coins;
|
|
||||||
function addToDatabase(id) {
|
|
||||||
if (!id) return;
|
|
||||||
if (typeof karma.get(id) != 'number') karma.set(id, 0);
|
|
||||||
if (typeof coins.get(id) != 'number') coins.set(id, 0);
|
|
||||||
return;
|
|
||||||
}
|
|
153
util/karma.js
153
util/karma.js
|
@ -1,153 +0,0 @@
|
||||||
const { client, logger } = require('../index');
|
|
||||||
const Enmap = require('enmap');
|
|
||||||
|
|
||||||
// Stores the karma and coins of users
|
|
||||||
const karma = new Enmap({name: "karma"});
|
|
||||||
const coins = new Enmap({name: "coins"});
|
|
||||||
|
|
||||||
module.exports.karma = karma;
|
|
||||||
module.exports.coins = coins;
|
|
||||||
|
|
||||||
const upvoteID = '719181283393142786';
|
|
||||||
const downvoteID = '719181283774955540';
|
|
||||||
|
|
||||||
// Awards
|
|
||||||
const awards = {
|
|
||||||
"731192828415443116": {
|
|
||||||
name: "Silver",
|
|
||||||
cost: 100,
|
|
||||||
give: 0,
|
|
||||||
role: "733407208536277113"
|
|
||||||
},
|
|
||||||
"731192829262692372": {
|
|
||||||
name: "Gold",
|
|
||||||
cost: 500,
|
|
||||||
give: 100,
|
|
||||||
role: "733407216199008416"
|
|
||||||
},
|
|
||||||
"731192942080950333":{
|
|
||||||
name: "Platinum",
|
|
||||||
cost: 1800,
|
|
||||||
give: 700,
|
|
||||||
role: "733407213900660807"
|
|
||||||
},
|
|
||||||
"731508866273247252": {
|
|
||||||
name: "Argentium",
|
|
||||||
cost: 20000,
|
|
||||||
give: 2500,
|
|
||||||
role: "733407211178557583"
|
|
||||||
},
|
|
||||||
"739266335128944683": {
|
|
||||||
name: "Argentobamium",
|
|
||||||
cost: 100000,
|
|
||||||
give: 69420,
|
|
||||||
role: "739266563038904421"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let timeouts = {}
|
|
||||||
|
|
||||||
module.exports.run = () => {
|
|
||||||
client.on('messageReactionAdd', async function(reaction, user) {
|
|
||||||
// Fetch reaction and user if they are partial
|
|
||||||
if (reaction.partial) reaction = await reaction.fetch();
|
|
||||||
if (user.partial) reaction = await user.fetch();
|
|
||||||
|
|
||||||
if (reaction.message.author.bot) return; // Dont give karma to bots
|
|
||||||
|
|
||||||
await addToDatabase(reaction.message.author.id); // Add the user to the database
|
|
||||||
|
|
||||||
if (!reaction.emoji.id) return; // Return when emoji has no ID (is a "default" emoji)
|
|
||||||
if (user.bot) return; // Don't accept reactions from bots.
|
|
||||||
if (!reaction.message.guild) return; // Don't accept reactions from DMs
|
|
||||||
|
|
||||||
const message = reaction.message; // The message object the reaction was added to
|
|
||||||
|
|
||||||
if (reaction.emoji.id == upvoteID) {
|
|
||||||
karma.inc(message.author.id);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else if (reaction.emoji.id == downvoteID) {
|
|
||||||
karma.dec(message.author.id);
|
|
||||||
return;
|
|
||||||
} else if (awards[reaction.emoji.id]) {
|
|
||||||
let award = awards[reaction.emoji.id];
|
|
||||||
|
|
||||||
let noTimeout = (!timeouts[user.id] || timeouts[user.id] < Date.now());
|
|
||||||
let perms = message.channel.permissionsFor(user.id);
|
|
||||||
if (!perms.has('SEND_MESSAGES') || !perms.has('ADD_REACTIONS')) {
|
|
||||||
logger.warn(`${user.tag} => Ignoring reaction in #${message.channel.name}: User is missing permission`);
|
|
||||||
reaction.users.remove(user.id);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (coins.get(user.id) < award.cost) {
|
|
||||||
if (noTimeout) message.channel.send(`${user}, you don't have sufficient coins to use this award.`);
|
|
||||||
reaction.users.remove(user.id);
|
|
||||||
timeouts[user.id] = Date.now() + 5000;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (message.author.id == user.id) {
|
|
||||||
reaction.users.remove(user.id);
|
|
||||||
if (noTimeout) message.channel.send(`${user}, why would you give an award to yourself? smh my head`);
|
|
||||||
timeouts[user.id] = Date.now() + 5000;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
coins.set(user.id, (coins.get(user.id) - award.cost));
|
|
||||||
coins.set(message.author.id, (coins.get(message.author.id) + award.give));
|
|
||||||
message.channel.send(`${user} just gave the ${client.emojis.cache.get(reaction.emoji.id).toString()} ${award.name} award (Price: ${award.cost} coins) to ${message.author}${award.give > 0 ? `. ${message.author.username} has received ${award.give} coins` : ''}!`);
|
|
||||||
require('./karma').updateRoles(user.id);
|
|
||||||
require('./karma').updateRoles(message.author.id);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
client.on('messageReactionRemove', async function(reaction, user) {
|
|
||||||
// Fetch reaction and user if they are partial
|
|
||||||
if (reaction.partial) reaction = await reaction.fetch();
|
|
||||||
if (user.partial) reaction = await user.fetch();
|
|
||||||
|
|
||||||
await addToDatabase(reaction.message.author.id); // Add the user to the database
|
|
||||||
|
|
||||||
if (!reaction.emoji.id) return; // Return when emoji has no ID (is a "default" emoji)
|
|
||||||
if (user.bot) return; // Don't accept reactions from bots.
|
|
||||||
if (!reaction.message.guild) return; // Don't accept reactions from DMs
|
|
||||||
|
|
||||||
const message = reaction.message; // The message object the reaction was added to
|
|
||||||
|
|
||||||
if (reaction.emoji.id == upvoteID) {
|
|
||||||
karma.dec(message.author.id);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else if (reaction.emoji.id == downvoteID) {
|
|
||||||
karma.dec(message.author.id);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Milestones for reaching certain karma values
|
|
||||||
function milestone(id) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reset a user's coin/karma count when its not of type number
|
|
||||||
async function addToDatabase(id) {
|
|
||||||
if (!id) return;
|
|
||||||
if (typeof karma.get(id) != 'number') karma.set(id, 0);
|
|
||||||
if (typeof coins.get(id) != 'number') coins.set(id, 100);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports.updateRoles = function(id) {
|
|
||||||
let member = client.guilds.cache.get('653568812578373643').members.cache.get(id);
|
|
||||||
let membercoins = coins.get(member.id);
|
|
||||||
Object.keys(awards).forEach(awardid => {
|
|
||||||
let award = awards[awardid];
|
|
||||||
|
|
||||||
if (member.roles.cache.has(award.role)) {
|
|
||||||
if (membercoins < award.cost) member.roles.remove(award.role);
|
|
||||||
} else {
|
|
||||||
if (membercoins >= award.cost) member.roles.add(award.role);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
|
@ -1,45 +0,0 @@
|
||||||
const { client, logger } = require('../index');
|
|
||||||
|
|
||||||
module.exports.run = () => {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
const token = process.env.BOT_TOKEN;
|
|
||||||
if (!token) {
|
|
||||||
logger.error('No bot token provided. Please provide the bot token as environment variable \'BOT_TOKEN\'.');
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.info('Logging in');
|
|
||||||
const loginStartTime = Date.now();
|
|
||||||
client.login(token)
|
|
||||||
.catch(error => {
|
|
||||||
logger.error(`Failed to log in\n${error}`);
|
|
||||||
process.exit(1);
|
|
||||||
});
|
|
||||||
|
|
||||||
client.on('ready', () => {
|
|
||||||
logger.done(
|
|
||||||
`Logged in as ${client.user.tag}\n` +
|
|
||||||
logger.createBox([
|
|
||||||
`Login took ${Date.now() - loginStartTime}ms`,
|
|
||||||
`${client.guilds.cache.size} cached guilds`,
|
|
||||||
`${client.users.cache.size} cached users`
|
|
||||||
])
|
|
||||||
);
|
|
||||||
resolve();
|
|
||||||
|
|
||||||
// Set the bot's activity and update it every 60 seconds in case it gets reset
|
|
||||||
let setActivity = () => {
|
|
||||||
try {
|
|
||||||
// Activity type 5 corresponds to 'Competing in': https://discord.com/developers/docs/game-sdk/activities#data-models-activitytype-enum
|
|
||||||
client.user.setPresence({ activity: { type: 5, name: 'being Obama' }, status: 'dnd' })
|
|
||||||
.then(() => logger.debug('Updated activity'));
|
|
||||||
} catch(e) {
|
|
||||||
console.error(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
setActivity();
|
|
||||||
setInterval(setActivity, (1000 * 60));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
77
util/wit.js
77
util/wit.js
|
@ -1,77 +0,0 @@
|
||||||
const { Wit } = require('node-wit');
|
|
||||||
const { Message } = require('discord.js');
|
|
||||||
const { logger } = require('..');
|
|
||||||
if (!process.env.WIT_TOKEN) return logger.warn(`No wit.ai token found, disabling AI features`);
|
|
||||||
const client = new Wit({accessToken: process.env.WIT_TOKEN});
|
|
||||||
|
|
||||||
function random(low, high) {
|
|
||||||
low = Math.ceil(low);
|
|
||||||
high = Math.floor(high);
|
|
||||||
high = high + 1;
|
|
||||||
rndm = Math.random();
|
|
||||||
return Math.floor(rndm * (high - low) + low);
|
|
||||||
}
|
|
||||||
|
|
||||||
// The database karma is stored in
|
|
||||||
const karmaDB = require('./karma').karma;
|
|
||||||
const coinsDB = require('./karma').coins;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {Message} message
|
|
||||||
*/
|
|
||||||
module.exports.execute = async (message) => {
|
|
||||||
if (!message.content) return;
|
|
||||||
if (message.content.length > 280) return randomAward();
|
|
||||||
|
|
||||||
// Send the message to wit.ai
|
|
||||||
client.message(message.content)
|
|
||||||
.then(response => {
|
|
||||||
if (message.deleted) return;
|
|
||||||
let action = response.intents[0];
|
|
||||||
|
|
||||||
// "Execute" the intent.
|
|
||||||
if (!action) return randomAward();
|
|
||||||
switch(action.name) {
|
|
||||||
case 'awardspam':
|
|
||||||
// Disabled for "karma balancing reasons"
|
|
||||||
randomAward(1.1);
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Spam a fuckton of awards
|
|
||||||
['731564182079799306', '719181283393142786', '731192828415443116', '731192829262692372', '731192942080950333', '731508866273247252', '716021350883393566']
|
|
||||||
.forEach(async id => await message.react(id));
|
|
||||||
break;
|
|
||||||
case 'upvote':
|
|
||||||
message.react('719181283393142786');
|
|
||||||
karmaDB.inc(message.author.id);
|
|
||||||
break;
|
|
||||||
case 'downvote':
|
|
||||||
message.react('719181283774955540');
|
|
||||||
karmaDB.dec(message.author.id);
|
|
||||||
break;
|
|
||||||
case 'bruh':
|
|
||||||
message.react('730882526259707997');
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
randomAward(1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(error => {
|
|
||||||
console.error(error);
|
|
||||||
message.channel.send(`Wit.ai error:\n\`\`\`js\n${error}\`\`\``);
|
|
||||||
});
|
|
||||||
function randomAward(multiplier) {
|
|
||||||
if (!multiplier) multiplier = 1;
|
|
||||||
// Randomly decide if the message should get a random "award" or yeet an obamium on it
|
|
||||||
if (message.content.toLowerCase().indexOf('obamium') > -1 || message.content.toLowerCase().indexOf('obama') > -1) {
|
|
||||||
return message.react('716021350883393566').catch();
|
|
||||||
}
|
|
||||||
const randomNum = (random(0, 10000) / 100) * multiplier;
|
|
||||||
if (randomNum > 99.9) {message.react('731508866273247252').catch(); coinsDB.set(message.author.id, (coinsDB.get(message.author.id) + 2500))} // Argentinum
|
|
||||||
else if (randomNum > 99.5) {message.react('731192942080950333').catch(); coinsDB.set(message.author.id, (coinsDB.get(message.author.id) + 700)) } // Platinum
|
|
||||||
else if (randomNum > 99) {message.react('731192829262692372').catch(); coinsDB.set(message.author.id, (coinsDB.get(message.author.id) + 100)) } // Gold
|
|
||||||
else if (randomNum > 98) {message.react('731192828415443116').catch(); coinsDB.set(message.author.id, (coinsDB.get(message.author.id) + 0)) } // Silver
|
|
||||||
require('./karma').updateRoles(message.author.id);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue