forked from Lea/obama-bot
		
	Compare commits
	
		
			31 commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
							
							
								 | 
						be37e998e5 | ||
| 
							
							
								 | 
						216960f3e2 | ||
| 
							
							
								 | 
						09bda53ece | ||
| 
							
							
								 | 
						befc5dc8e6 | ||
| 
							
							
								 | 
						a4e568dec6 | ||
| 
							
							
								 | 
						6720bee0e5 | ||
| 
							
							
								 | 
						35bbe61979 | ||
| 
							
							
								 | 
						8f463087ed | ||
| 
							
							
								 | 
						c9d19e77ff | ||
| 
							
							
								 | 
						0af48d3f0b | ||
| 
							
							
								 | 
						6cb0156106 | ||
| 
							
							
								 | 
						bace97c0f0 | ||
| 
							
							
								 | 
						955fe8c462 | ||
| 
							
							
								 | 
						e3c471e390 | ||
| 
							
							
								 | 
						01c647d675 | ||
| 
							
							
								 | 
						f39c4a7ee1 | ||
| 
							
							
								 | 
						5149dab7c6 | ||
| 
							
							
								 | 
						41fbaa84ce | ||
| 
							
							
								 | 
						c6a7ea023c | ||
| 
							
							
								 | 
						2e077cfe1a | ||
| 
							
							
								 | 
						ee908585ae | ||
| 
							
							
								 | 
						19b4583d2c | ||
| 
							
							
								 | 
						6b03ce8f7d | ||
| 
							
							
								 | 
						a9e18d9750 | ||
| 
							
							
								 | 
						c953f74e30 | ||
| 
							
							
								 | 
						91693ce2ae | ||
| 
							
							
								 | 
						1e1b78e24f | ||
| 
							
							
								 | 
						a96e3cbd96 | ||
| 
							
							
								 | 
						f50de3e481 | ||
| 
							
							
								 | 
						c15e5b4d01 | ||
| 
							
							
								 | 
						810b2b9236 | 
							
								
								
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
The Giant Penis License (GPL)
 | 
					The Giant Penis License (GPL)
 | 
				
			||||||
Copyright (c) 2020 Im_Verum
 | 
					Copyright (c) 2020 jan
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                ▄▄██▄██▄▄
 | 
					                ▄▄██▄██▄▄
 | 
				
			||||||
              ▄█    █    █▄
 | 
					              ▄█    █    █▄
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,8 @@
 | 
				
			||||||
# 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.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										61
									
								
								commands/copypasta.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								commands/copypasta.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,61 @@
 | 
				
			||||||
 | 
					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 = {}
 | 
				
			||||||
							
								
								
									
										30
									
								
								commands/copypastas/aaa
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								commands/copypastas/aaa
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,30 @@
 | 
				
			||||||
 | 
					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
 | 
				
			||||||
							
								
								
									
										4565
									
								
								commands/copypastas/beemovie
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4565
									
								
								commands/copypastas/beemovie
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										5
									
								
								commands/copypastas/ben-shapiro
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								commands/copypastas/ben-shapiro
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,5 @@
 | 
				
			||||||
 | 
					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.
 | 
				
			||||||
							
								
								
									
										28
									
								
								commands/copypastas/cum
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								commands/copypastas/cum
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,28 @@
 | 
				
			||||||
 | 
					**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.
 | 
				
			||||||
							
								
								
									
										12
									
								
								commands/copypastas/navyseal
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								commands/copypastas/navyseal
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,12 @@
 | 
				
			||||||
 | 
					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.
 | 
				
			||||||
							
								
								
									
										10
									
								
								commands/copypastas/toddler
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								commands/copypastas/toddler
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,10 @@
 | 
				
			||||||
 | 
					**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.
 | 
				
			||||||
							
								
								
									
										52
									
								
								commands/eval.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								commands/eval.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,52 @@
 | 
				
			||||||
 | 
					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));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										41
									
								
								commands/help.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								commands/help.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,41 @@
 | 
				
			||||||
 | 
					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);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										38
									
								
								commands/karma.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								commands/karma.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,38 @@
 | 
				
			||||||
 | 
					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);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										37
									
								
								commands/obamium.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								commands/obamium.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,37 @@
 | 
				
			||||||
 | 
					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);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										34
									
								
								commands/ping.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								commands/ping.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					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);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										33
									
								
								commands/setcoins.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								commands/setcoins.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					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')
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										17
									
								
								commands/stop.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								commands/stop.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,17 @@
 | 
				
			||||||
 | 
					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);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										14
									
								
								commands/test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								commands/test.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,14 @@
 | 
				
			||||||
 | 
					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');
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										39
									
								
								commands/top.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								commands/top.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,39 @@
 | 
				
			||||||
 | 
					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);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										41
									
								
								commands/truefan.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								commands/truefan.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,41 @@
 | 
				
			||||||
 | 
					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.`);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										20
									
								
								commands/vbucks.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								commands/vbucks.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					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);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1,6 +0,0 @@
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    "token": "Put the bot token here",
 | 
					 | 
				
			||||||
    "prefix": "-",
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    "wit-token": "Put the token you get from Wit.ai here"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										498
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										498
									
								
								index.js
									
									
									
									
									
								
							| 
						 | 
					@ -1,484 +1,44 @@
 | 
				
			||||||
 | 
					require('dotenv').config(); // Require and run dotenv
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Import modules
 | 
				
			||||||
const Discord = require('discord.js');
 | 
					const Discord = require('discord.js');
 | 
				
			||||||
const client = new Discord.Client({partials: ["REACTION", "MESSAGE"]});
 | 
					 | 
				
			||||||
const config = require('./config.json');
 | 
					 | 
				
			||||||
const Enmap = require('enmap');
 | 
					const Enmap = require('enmap');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
client.login(config.token);
 | 
					const client = new Discord.Client({partials: ["REACTION", "MESSAGE"]});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const karma = new Enmap({name: "karma"}); 
 | 
					// Use log75 for logging
 | 
				
			||||||
const coins = new Enmap({name: "coins"});
 | 
					const { default: Log75, LogLevel } = require('log75')
 | 
				
			||||||
 | 
					const logger = new Log75(process.env.NODE_ENV == 'production' ? LogLevel.Standard : LogLevel.Debug, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports.karma = karma;
 | 
					module.exports = {
 | 
				
			||||||
module.exports.coins = coins;
 | 
					    client: client,
 | 
				
			||||||
 | 
					    logger: logger
 | 
				
			||||||
module.exports.client = client;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const witmodule = require('./wit');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Execute modules in util folder in order
 | 
				
			||||||
client.once('ready', () => {
 | 
					async function runModules() {
 | 
				
			||||||
    console.log('Logged in as ' + client.user.username);
 | 
					    for (const file of ['commandLoader', 'login', 'eventHandler', 'karma', 'carloscounter']) {
 | 
				
			||||||
    client.user.setActivity(`hamborger`, {type: "STREAMING", url: "https://www.youtube.com/watch?v=sHwvUFjaNdU"});
 | 
					        logger.debug(`Running module ${file}`);
 | 
				
			||||||
 | 
					        await require(`./util/${file}`).run();
 | 
				
			||||||
    // Start the module thingys
 | 
					 | 
				
			||||||
    require('./karma');
 | 
					 | 
				
			||||||
    require('./vibechat');
 | 
					 | 
				
			||||||
    require('./shitposts');
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
client.on('guildCreate', g => {
 | 
					 | 
				
			||||||
    if (g.id != '653568812578373643') {
 | 
					 | 
				
			||||||
        g.leave();
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
let allowEval = false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
client.on('message', message => {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    addToDatabase(message.author.id);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    function checkMod(silent) {
 | 
					 | 
				
			||||||
        if (!message.member.permissions.has('ADMINISTRATOR')) {
 | 
					 | 
				
			||||||
            let erEmbed = new Discord.MessageEmbed()
 | 
					 | 
				
			||||||
            .setTitle('You are not allowed to use this.')
 | 
					 | 
				
			||||||
            .setDescription('Only the mod team can use this command.')
 | 
					 | 
				
			||||||
            .setImage('https://media1.tenor.com/images/1056e92668594b262d3338c897ce9bd3/tenor.gif?itemid=7706023');
 | 
					 | 
				
			||||||
            if (silent !== true) message.channel.send(erEmbed);
 | 
					 | 
				
			||||||
            return true;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return false;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					runModules();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function checkPremium(silent) {
 | 
					
 | 
				
			||||||
        if (!message.member.permissions.has('ADMINISTRATOR') && !message.member.roles.cache.has('718862546395988078' /* True ObamaFan */) && !message.member.roles.cache.has('653569849888473145' /* Obama sphere */) && !message.member.roles.cache.has('733394201957498901' /* Obama circle */)) {
 | 
					// Destroy client when SIGINT
 | 
				
			||||||
            let erEmbed = new Discord.MessageEmbed()
 | 
					process.on('SIGINT', async () => {
 | 
				
			||||||
            .setTitle('You are not allowed to use this.')
 | 
					    process.stdin.resume(); // Don't exit immediately
 | 
				
			||||||
            .setDescription('Only approved users can use this command.');
 | 
					    
 | 
				
			||||||
            if (silent !== true) message.channel.send(erEmbed);
 | 
					    console.log('');
 | 
				
			||||||
            return true;
 | 
					    logger.info('SIGINT received.');
 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return false;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
        if (message.author.bot) return;
 | 
					        await client.destroy();
 | 
				
			||||||
        if (!message.guild) return message.channel.send('You can only use me on the r/Obamium Discord right now.');
 | 
					 | 
				
			||||||
        if (message.guild.id != '653568812578373643') message.guild.leave();
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        console.log(`Message by ${message.author.username}: ${message.content}`);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        witmodule.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',
 | 
					 | 
				
			||||||
                '69 is funny haha',
 | 
					 | 
				
			||||||
                'you have achieved comedy by saying 69',
 | 
					 | 
				
			||||||
                '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',
 | 
					 | 
				
			||||||
                'Obama signed that your 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)]);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Actual command stuff
 | 
					 | 
				
			||||||
        if (message.content.startsWith(`<@!${client.user.id}> help`) || message.content.startsWith(`<@!${client.user.id}>help`)) return message.channel.send(`My prefix is \`${config.prefix}\`, type ${config.prefix}help for help.`);
 | 
					 | 
				
			||||||
        if (!message.content.startsWith(config.prefix)) return;
 | 
					 | 
				
			||||||
        const args = message.content.slice(config.prefix.length).split(' ');
 | 
					 | 
				
			||||||
        const command = args.shift().toLowerCase();
 | 
					 | 
				
			||||||
        switch(command) {
 | 
					 | 
				
			||||||
            case 'help':
 | 
					 | 
				
			||||||
                let owner = client.users.cache.get('284323826165350400');
 | 
					 | 
				
			||||||
                let embed = new Discord.MessageEmbed()
 | 
					 | 
				
			||||||
                .setTitle('Commands')
 | 
					 | 
				
			||||||
                .addField('', '**----- Public commands -----**')
 | 
					 | 
				
			||||||
                .setDescription(`Kneel down, mortals, for the command list, signed by Obama himself.\nEvery command starts with the prefix '**${config.prefix}**', for example ${config.prefix}help.`)
 | 
					 | 
				
			||||||
                .addField('-obamium', 'Send a Obamid in all its beauty')
 | 
					 | 
				
			||||||
                .addField('-vbucks', 'Totally working V-Bucks generator')
 | 
					 | 
				
			||||||
                .addField('-copypasta', 'oh shit oh fuck')
 | 
					 | 
				
			||||||
                .addField('-karma', 'Shows your karma and coins on this server')
 | 
					 | 
				
			||||||
                .addField('-top', 'Shows the users with the highest karma!')
 | 
					 | 
				
			||||||
                .addField('-ping', 'Shows the bot\'s latency')
 | 
					 | 
				
			||||||
                .addField('-brother', 'RGBRoachGang brothers, use this command to get access to a special channel!')
 | 
					 | 
				
			||||||
                .addField('', '**----- Admin commands -----**')
 | 
					 | 
				
			||||||
                .addField('-truefan @Member', 'Give someone access to the top secret text channel™️')
 | 
					 | 
				
			||||||
                .addField('-coins @Member [give/set] [value]', 'Manage the coins of an user')
 | 
					 | 
				
			||||||
                .setFooter(`© Obamium Research | Developed by ${owner.username}#${owner.discriminator}`, 'https://cdn.discordapp.com/emojis/716021350883393566.gif')
 | 
					 | 
				
			||||||
                .setColor('9c6341');
 | 
					 | 
				
			||||||
                message.channel.send(embed);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
            case 'obama':
 | 
					 | 
				
			||||||
            case 'obamid':
 | 
					 | 
				
			||||||
            case 'obamium':
 | 
					 | 
				
			||||||
                let msg = '';
 | 
					 | 
				
			||||||
                msg += message.guild.emojis.cache.get('715931208135213087').toString();
 | 
					 | 
				
			||||||
                msg += message.guild.emojis.cache.get('715931208281882666').toString();
 | 
					 | 
				
			||||||
                msg += message.guild.emojis.cache.get('715931208936325141').toString();
 | 
					 | 
				
			||||||
                msg += message.guild.emojis.cache.get('715931208332345366').toString();
 | 
					 | 
				
			||||||
                msg += '\n';
 | 
					 | 
				
			||||||
                msg += message.guild.emojis.cache.get('715931208269168812').toString();
 | 
					 | 
				
			||||||
                msg += message.guild.emojis.cache.get('715931208432746537').toString();
 | 
					 | 
				
			||||||
                msg += message.guild.emojis.cache.get('715931208491597924').toString();
 | 
					 | 
				
			||||||
                msg += message.guild.emojis.cache.get('715931208357249044').toString();
 | 
					 | 
				
			||||||
                msg += '\n';
 | 
					 | 
				
			||||||
                msg += message.guild.emojis.cache.get('715931208361574421').toString();
 | 
					 | 
				
			||||||
                msg += message.guild.emojis.cache.get('715931208134950963').toString();
 | 
					 | 
				
			||||||
                msg += message.guild.emojis.cache.get('715931208290140172').toString();
 | 
					 | 
				
			||||||
                msg += message.guild.emojis.cache.get('715931208374026332').toString();
 | 
					 | 
				
			||||||
                msg += '\n';
 | 
					 | 
				
			||||||
                msg += message.guild.emojis.cache.get('715931208378220666').toString();
 | 
					 | 
				
			||||||
                msg += message.guild.emojis.cache.get('715931208319500310').toString();
 | 
					 | 
				
			||||||
                msg += message.guild.emojis.cache.get('715931208898445402').toString();
 | 
					 | 
				
			||||||
                msg += message.guild.emojis.cache.get('715931208550318170').toString();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                message.channel.send(msg);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
            case 'vbuck':
 | 
					 | 
				
			||||||
            case 'vbucks':
 | 
					 | 
				
			||||||
                message.delete();
 | 
					 | 
				
			||||||
                let embed2 = 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(embed2);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
            case 'amitheowner':
 | 
					 | 
				
			||||||
                if (message.author.id == '284323826165350400') {
 | 
					 | 
				
			||||||
                    message.channel.send(`Yes, ${message.author}, you definitely are my owner.`)
 | 
					 | 
				
			||||||
                } else {
 | 
					 | 
				
			||||||
                    message.channel.send(`No, ${message.author}, you are not my owner.`)
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
            case 'ping':
 | 
					 | 
				
			||||||
                let pingEmbed = new Discord.MessageEmbed()
 | 
					 | 
				
			||||||
                .setTitle('Pong?')
 | 
					 | 
				
			||||||
                .setDescription('Measuring...')
 | 
					 | 
				
			||||||
                .setColor('#2F62CA');
 | 
					 | 
				
			||||||
                message.channel.send(pingEmbed).then(msg => {
 | 
					 | 
				
			||||||
                    pingEmbed.setTitle('Pong!');
 | 
					 | 
				
			||||||
                    pingEmbed.description = undefined;
 | 
					 | 
				
			||||||
                    pingEmbed.addField(':speech_balloon: Message delay', `\`${msg.createdTimestamp - message.createdTimestamp}ms\``, true);
 | 
					 | 
				
			||||||
                    pingEmbed.addField(':robot: Bot Ping', `\`${Date.now() - message.createdTimestamp}ms\``, true);
 | 
					 | 
				
			||||||
                    msg.edit(pingEmbed);
 | 
					 | 
				
			||||||
                });
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
            case 'brother':
 | 
					 | 
				
			||||||
                let vibecheckembed = new Discord.MessageEmbed()
 | 
					 | 
				
			||||||
                .setTitle('Are you a brother?')
 | 
					 | 
				
			||||||
                .setDescription('If you are a r/rgbroachgang member, you can get acces to a secret rgbroachgang channel! I need to vibe check your reddit and Discord account first. You need to link a reddit account to your Discord account, and then [click here](https://obamium-subreddit.herokuapp.com/) to start the vibe check.');
 | 
					 | 
				
			||||||
                message.channel.send(vibecheckembed);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
            case 'truefan':
 | 
					 | 
				
			||||||
                if (checkMod()) return;
 | 
					 | 
				
			||||||
                let target = message.mentions.members.first();
 | 
					 | 
				
			||||||
                let roleid = '718862546395988078';
 | 
					 | 
				
			||||||
                let role = message.guild.roles.cache.get(roleid);
 | 
					 | 
				
			||||||
                let cid = '718908301555007518';
 | 
					 | 
				
			||||||
                let channel = message.guild.channels.cache.get(cid);
 | 
					 | 
				
			||||||
                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: <#${cid}>`)
 | 
					 | 
				
			||||||
                    .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.`);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
            case 'toggleeval':
 | 
					 | 
				
			||||||
                if (message.author.id != '284323826165350400') return console.log('Toggle Eval attemped by unauthorized user: ' + message.author.id);
 | 
					 | 
				
			||||||
                if (allowEval == true) allowEval = false; else allowEval = true;
 | 
					 | 
				
			||||||
                message.channel.send('Toggled ' + (allowEval ? 'on' : 'off'));
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
            case 'eval':
 | 
					 | 
				
			||||||
                if (message.author.id != '284323826165350400') return console.log('Eval attemped by unauthorized user: ' + message.author.id);
 | 
					 | 
				
			||||||
                if (!allowEval) return message.channel.send('Eval is disabled.');
 | 
					 | 
				
			||||||
                message.suppressEmbeds(true);
 | 
					 | 
				
			||||||
                var res = eval(args.join(' '));
 | 
					 | 
				
			||||||
                if (typeof res == 'object') res = JSON.stringify(res);
 | 
					 | 
				
			||||||
                else if (typeof res == 'function') res = '`(Function)`';
 | 
					 | 
				
			||||||
                else if (typeof res == 'undefined') res = '`undefined`';
 | 
					 | 
				
			||||||
                if (res == "{}") return;
 | 
					 | 
				
			||||||
                message.channel.send(res);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
            case 'copypasta':
 | 
					 | 
				
			||||||
                if (checkPremium()) return;
 | 
					 | 
				
			||||||
                if (!args[0]) args[0] = '';
 | 
					 | 
				
			||||||
                switch(args[0].toLowerCase()) {
 | 
					 | 
				
			||||||
                    case 'toddler':
 | 
					 | 
				
			||||||
                        message.channel.send('**AITA For Dropkicking an Toddler off a cliff because he used my Dead Name**', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('The title speaks for itself. So me (20F transitioning) was going on a hike with my cousin and his parents.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('There’s this really large cliff that looms over my house. I recently told my family I was trans.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('I thought my toddler cousin had realize me new name is Jenny. Instead he said Max.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('I instantly flew into a mentally unstable rage and my eyes turned red. I began to drool and have a mini-seizure.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('I ran toward my cousin at the speed of light. I picked him up by the back of his shirt.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('His parents ran toward him but with my tranny-powers I managed to use my telekineses and freeze them in mid-air.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('I threw my toddler cousin up in the air and using my tranny in the 40% powers kicked him at the speed of light.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('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.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('I saw him fall to the ground and splatter by then I was so horny I came all over the place.', {tts: true});
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                    case 'cum':
 | 
					 | 
				
			||||||
                        message.channel.send('**Infinite cum.**', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('You sit on the toilet to jack off, but you begin to cum uncontrollably.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('After ten spurts you start to worry. Your hand is sticky and it reeks of semen.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('You desperately shove your dick into a wad of toilet paper, but that only makes your balls hurt.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('The cum accelerates. It’s been three minutes. You can’t stop cumming.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('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.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('You try the toilet. The cum is too thick to be flushed. You lock the bathroom door to prevent the cum from escaping.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('The air grows hot and humid from the cum. The cum accelerates. You slip and fall in your own sperm.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('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.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('Globs of the sticky white fluid begin to fall like raindrops, giving you a facial with your own cum. The cum accelerates.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('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.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('Still on your knees, the cum is now at chin height. To avoid drowning you open the bathroom door.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('The deluge of man juice reminds you of the Great Molasses Flood of 1919, only with cum instead of molasses.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('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.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('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.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('You squeeze your dick to stop the cum, but it begins to leak out of your asshole instead. You let go.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('The force of the cum tears your urethra open, leaving only a gaping hole in your crotch that spews semen.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('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.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('From a bird’s eye view you see your house is completely white. Your neighbor calls the cops. The cum accelerates.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('As you continue to ascend, you spot police cars racing towards your house.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('The cops pull out their guns and take aim, but stray loads of cum hit them in the eyes, blinding them. The cum accelerates.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('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.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('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.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('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.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('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.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('You narrowly miss the ISS, giving it a new white paint job as you fly past. Physicists struggle to calculate your erratic trajectory.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('The cum accelerates. The cum begins to gravitate towards itself, forming a comet trail of semen. Astronomers begin calling you the “Cummet.”', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('You are stuck in space forever, stripped of your body and senses, forced to endure an eternity of cumshots. Eventually, you stop thinking.', {tts: true});
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                    case 'navyseal':
 | 
					 | 
				
			||||||
                    case 'navy':
 | 
					 | 
				
			||||||
                        message.channel.send('What the fuck did you just fucking say about me, you little bitch?', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('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.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('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.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('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.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('You think you can get away with saying that shit to me over the Internet? Think again, fucker.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('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.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('The storm that wipes out the pathetic little thing you call your life.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('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.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('Not only am I extensively trained in unarmed combat, but I have access to the entire arsenal of the United States Marine Corps', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('and I will use it to its full extent to wipe your miserable ass off the face of the continent, you little shit.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('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.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('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.', {tts: true});
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                    case 'ben-shapiro':
 | 
					 | 
				
			||||||
                        message.channel.send('You know, let\'s just say, hypothetically speaking, that I were to have sex with your mom.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('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', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('touching anything or anyone, but instead, the atoms surrounding your body and this object or person are coming into contact with one another.', {tts: true});
 | 
					 | 
				
			||||||
                        message.channel.send('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', {tts: true});   
 | 
					 | 
				
			||||||
                        message.channel.send(' with one another.', {tts: true}); 
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                    case 'a':
 | 
					 | 
				
			||||||
                    case 'aa':
 | 
					 | 
				
			||||||
                    case 'aaa':
 | 
					 | 
				
			||||||
                    case 'aaaa':
 | 
					 | 
				
			||||||
                    case 'aaaaa':
 | 
					 | 
				
			||||||
                    case 'aaaaaa':
 | 
					 | 
				
			||||||
                    case 'aaaaaaa':
 | 
					 | 
				
			||||||
                    case 'aaaaaaaa':
 | 
					 | 
				
			||||||
                    case 'aaaaaaaaa':
 | 
					 | 
				
			||||||
                    case 'aaaaaaaaaa':
 | 
					 | 
				
			||||||
                    case 'aaaaaaaaaaa':
 | 
					 | 
				
			||||||
                    case 'aaaaaaaaaaaa':
 | 
					 | 
				
			||||||
                    case 'aaaaaaaaaaaaa':
 | 
					 | 
				
			||||||
                    case 'aaaaaaaaaaaaaa':
 | 
					 | 
				
			||||||
                    case 'aaaaaaaaaaaaaaa':
 | 
					 | 
				
			||||||
                    case 'aaaaaaaaaaaaaaaa':
 | 
					 | 
				
			||||||
                    // i want to die
 | 
					 | 
				
			||||||
                        const oldName = message.guild.members.cache.get(client.user.id).nickname;
 | 
					 | 
				
			||||||
                        message.guild.members.cache.get(client.user.id).setNickname('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA').then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true}).then(() => {
 | 
					 | 
				
			||||||
                            message.channel.send('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', {tts: true})
 | 
					 | 
				
			||||||
                            .then(() => message.guild.members.cache.get(client.user.id).setNickname(oldName));
 | 
					 | 
				
			||||||
                            })})})})})})})})})})})})})})})})})})})})})})})})})})})})});
 | 
					 | 
				
			||||||
                        });
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                    default:
 | 
					 | 
				
			||||||
                        message.channel.send('cum', {tts: true}).then(m => m.edit('Choose a copypasta:\n- toddler (10 lines, 1:15 minutes)\n- cum (28 lines, 4:10 minutes)\n- navyseal (12 lines, 1:45 minutes)\n- aaaaaaaaaa (30 lines, *forever*)\n- ben-shapiro (5 lines, 50.59 seconds)'));
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
            case 'karma':
 | 
					 | 
				
			||||||
            case 'coins':
 | 
					 | 
				
			||||||
            case 'coin':
 | 
					 | 
				
			||||||
            case 'gold':
 | 
					 | 
				
			||||||
                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);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
            case 'top':
 | 
					 | 
				
			||||||
                const karmaID1 = '733339045463064607';
 | 
					 | 
				
			||||||
                const karmaEmote1 = message.guild.emojis.cache.get(karmaID1).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 karmaboardembed = new Discord.MessageEmbed()
 | 
					 | 
				
			||||||
                .setTitle('Karma Leaderboard')
 | 
					 | 
				
			||||||
                .setDescription(karmaEmote1 + ' 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) karmaboardembed.addField(`${x+1}. [Unknown user]`,  `${karmaEmote1} ${karmaboard[x].karma} Karma`, true); else karmaboardembed.addField(`${x+1}. ${u.user.username}#${u.user.discriminator} ${u.user.bot ? '(Bot)' : ''}`, `${karmaEmote1} ${karmaboard[x].karma} Karma`, true);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                message.channel.send(karmaboardembed);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
            case 'managecoins':
 | 
					 | 
				
			||||||
            case 'setcoins':
 | 
					 | 
				
			||||||
            case 'usercoins':
 | 
					 | 
				
			||||||
                if (checkMod()) return;
 | 
					 | 
				
			||||||
                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 pass = false;
 | 
					 | 
				
			||||||
                let amount = 0;
 | 
					 | 
				
			||||||
                if (args[1] == 'set') {
 | 
					 | 
				
			||||||
                    if (isNaN(args[2])) return message.channel.send('You gotta put in a number!');
 | 
					 | 
				
			||||||
                    pass = true;
 | 
					 | 
				
			||||||
                    amount = args[2];
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                else if (args[1] == 'give' ||args[1] == 'add') {
 | 
					 | 
				
			||||||
                    if (isNaN(args[2])) return message.channel.send('You gotta put in a number!');
 | 
					 | 
				
			||||||
                    pass = true;
 | 
					 | 
				
			||||||
                    amount = coins.get(member.id) + Number(args[2]);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                else if (isNaN(args[1])) return message.channel.send('You gotta put in a number!');
 | 
					 | 
				
			||||||
                else {
 | 
					 | 
				
			||||||
                    pass = true;
 | 
					 | 
				
			||||||
                    amount = coins.get(member.id) + Number(args[1]);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                if (!pass) return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                let old = coins.get(member.id);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                let coinsSetEmbed = new Discord.MessageEmbed()
 | 
					 | 
				
			||||||
                .setTitle('Coins updated for '+ member.user.username)
 | 
					 | 
				
			||||||
                .setDescription(`Coins set to ${amount} (Old amount: ${old})`)
 | 
					 | 
				
			||||||
                .setColor('ddbd37');
 | 
					 | 
				
			||||||
                message.channel.send(coinsSetEmbed)
 | 
					 | 
				
			||||||
                .then(() => {
 | 
					 | 
				
			||||||
                    coins.set(member.id, amount);
 | 
					 | 
				
			||||||
                });
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    } catch(e) {
 | 
					    } catch(e) {
 | 
				
			||||||
        message.channel.send(new Discord.MessageEmbed()
 | 
					        logger.warn('Failed to destroy client');
 | 
				
			||||||
        .setTitle('An error has occurred.')
 | 
					        process.exit();
 | 
				
			||||||
        .setDescription(`\`\`\`js\n${e}\`\`\``)
 | 
					 | 
				
			||||||
        .setColor('ff0000'));
 | 
					 | 
				
			||||||
        console.error(e);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
});
 | 
					 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
function addToDatabase(id) {
 | 
					    logger.done('Logged out client, exiting.');
 | 
				
			||||||
    if (!id) return;
 | 
					    process.exit();
 | 
				
			||||||
    if (typeof karma.get(id) != 'number') karma.set(id, 0);
 | 
					});
 | 
				
			||||||
    if (typeof coins.get(id) != 'number') coins.set(id, 0);
 | 
					 | 
				
			||||||
    return;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										137
									
								
								karma.js
									
									
									
									
									
								
							
							
						
						
									
										137
									
								
								karma.js
									
									
									
									
									
								
							| 
						 | 
					@ -1,137 +0,0 @@
 | 
				
			||||||
const Enmap = require('enmap');
 | 
					 | 
				
			||||||
const { ReactionUserManager } = require('discord.js');
 | 
					 | 
				
			||||||
const client = require('./index').client;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Stores the karma and coins of users
 | 
					 | 
				
			||||||
const karma = require('./index').karma;
 | 
					 | 
				
			||||||
const coins = require('./index').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"
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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];
 | 
					 | 
				
			||||||
        if (coins.get(user.id) < award.cost) {
 | 
					 | 
				
			||||||
            message.channel.send(`${user}, you don't have sufficient coins to use this award.`);
 | 
					 | 
				
			||||||
            reaction.users.remove(user.id);
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (message.author.id == user.id) {
 | 
					 | 
				
			||||||
            //reaction.remove();
 | 
					 | 
				
			||||||
            reaction.users.remove(user.id);
 | 
					 | 
				
			||||||
            return message.channel.send(`${user}, why would you give an award to yourself? smh my head`);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        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);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										1701
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1701
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
					@ -11,7 +11,9 @@
 | 
				
			||||||
  "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"
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										37
									
								
								shitposts.js
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								shitposts.js
									
									
									
									
									
								
							| 
						 | 
					@ -1,37 +0,0 @@
 | 
				
			||||||
const Discord = require('discord.js');
 | 
					 | 
				
			||||||
const client = require('./index').client;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const tChannelID = '740207856288268289';
 | 
					 | 
				
			||||||
const emoji = '719181283393142786';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
client.on('messageReactionAdd', async function(reaction, user) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Some people abused this "feature", to it is temporarily disabled. 
 | 
					 | 
				
			||||||
    return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    let publish = false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Fetch partials
 | 
					 | 
				
			||||||
    if (reaction.partial) reaction = await reaction.fetch();
 | 
					 | 
				
			||||||
    if (user.partial) user = await user.fetch();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (user.bot && user.id != client.user.id) return;
 | 
					 | 
				
			||||||
    if (reaction.message.channel.id != tChannelID) return;
 | 
					 | 
				
			||||||
    if (reaction.message.channel.type != 'news') return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (reaction.emoji.id != emoji) return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    const count = reaction.message.reactions.cache.filter(e => e.emoji.id == emoji).array()[0].count;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    if (count == 3) publish = true; // When the message has an attachment, publish it at 3 upvotes, else at 5
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // This publishes the message using a direct API call. (Copied from https://github.com/Forcellrus/Discord-Auto-Publisher/blob/master/bot.js)
 | 
					 | 
				
			||||||
    if (!publish) return;
 | 
					 | 
				
			||||||
    reaction.message.react(client.emojis.cache.get('730053273561727063')).catch();
 | 
					 | 
				
			||||||
    await fetch(`https://discord.com/api/v6/channels/${reaction.message.channel.id}/messages/${reaction.message.id}/crosspost`, {
 | 
					 | 
				
			||||||
        method: 'POST',
 | 
					 | 
				
			||||||
        headers: {
 | 
					 | 
				
			||||||
            Authorization: `Bot ${require('./config.json').token}`,
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
							
								
								
									
										54
									
								
								util/69Reply.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								util/69Reply.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,54 @@
 | 
				
			||||||
 | 
					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)]);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										59
									
								
								util/carloscounter.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								util/carloscounter.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,59 @@
 | 
				
			||||||
 | 
					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);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										25
									
								
								util/commandLoader.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								util/commandLoader.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,25 @@
 | 
				
			||||||
 | 
					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`);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										88
									
								
								util/eventHandler.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								util/eventHandler.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,88 @@
 | 
				
			||||||
 | 
					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
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										153
									
								
								util/karma.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,153 @@
 | 
				
			||||||
 | 
					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);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										45
									
								
								util/login.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								util/login.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,45 @@
 | 
				
			||||||
 | 
					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));
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,8 @@
 | 
				
			||||||
const config = require('./config.json');
 | 
					 | 
				
			||||||
const { Wit } = require('node-wit');
 | 
					const { Wit } = require('node-wit');
 | 
				
			||||||
const { Message } = require('discord.js');
 | 
					const { Message } = require('discord.js');
 | 
				
			||||||
const client = new Wit({accessToken: config["wit-token"]});
 | 
					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) {
 | 
					function random(low, high) {
 | 
				
			||||||
    low = Math.ceil(low);
 | 
					    low = Math.ceil(low);
 | 
				
			||||||
| 
						 | 
					@ -11,21 +12,21 @@ function random(low, high) {
 | 
				
			||||||
    return Math.floor(rndm * (high - low) + low);
 | 
					    return Math.floor(rndm * (high - low) + low);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// The database karma sets stored in
 | 
					// The database karma is stored in
 | 
				
			||||||
const karmaDB = require('./index').karma;
 | 
					const karmaDB = require('./karma').karma;
 | 
				
			||||||
const coinsDB = require('./index').coins;
 | 
					const coinsDB = require('./karma').coins;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @param {Message} message 
 | 
					 * @param {Message} message 
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports.execute = function(message) {
 | 
					module.exports.execute = async (message) => {
 | 
				
			||||||
    if (!message.content) return;
 | 
					    if (!message.content) return;
 | 
				
			||||||
    if (message.content.length > 280) return randomAward();
 | 
					    if (message.content.length > 280) return randomAward();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Send the message to wit.ai
 | 
					    // Send the message to wit.ai
 | 
				
			||||||
    client.message(message.content)
 | 
					    client.message(message.content)
 | 
				
			||||||
    .then(response => {
 | 
					    .then(response => {
 | 
				
			||||||
 | 
					        if (message.deleted) return;
 | 
				
			||||||
        let action = response.intents[0];
 | 
					        let action = response.intents[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // "Execute" the intent.
 | 
					        // "Execute" the intent.
 | 
				
			||||||
| 
						 | 
					@ -33,18 +34,12 @@ module.exports.execute = function(message) {
 | 
				
			||||||
        switch(action.name) {
 | 
					        switch(action.name) {
 | 
				
			||||||
            case 'awardspam':
 | 
					            case 'awardspam':
 | 
				
			||||||
                // Disabled for "karma balancing reasons"
 | 
					                // Disabled for "karma balancing reasons"
 | 
				
			||||||
                randomAward();
 | 
					                randomAward(1.1);
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                // Spam a fuckton of awards
 | 
					                // Spam a fuckton of awards
 | 
				
			||||||
                message.react('731564182079799306').then(() => {
 | 
					                ['731564182079799306', '719181283393142786', '731192828415443116', '731192829262692372', '731192942080950333', '731508866273247252', '716021350883393566']
 | 
				
			||||||
                    message.react('719181283393142786').catch().then(() => {
 | 
					                .forEach(async id => await message.react(id));
 | 
				
			||||||
                    message.react('731192828415443116').catch().then(() => {
 | 
					 | 
				
			||||||
                    message.react('731192829262692372').catch().then(() => {
 | 
					 | 
				
			||||||
                    message.react('731192942080950333').catch().then(() => {
 | 
					 | 
				
			||||||
                    message.react('731508866273247252').catch().then(() => {
 | 
					 | 
				
			||||||
                    message.react('716021350883393566').catch();
 | 
					 | 
				
			||||||
                    })})})})})});
 | 
					 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
            case 'upvote':
 | 
					            case 'upvote':
 | 
				
			||||||
                message.react('719181283393142786');
 | 
					                message.react('719181283393142786');
 | 
				
			||||||
| 
						 | 
					@ -54,21 +49,25 @@ module.exports.execute = function(message) {
 | 
				
			||||||
                message.react('719181283774955540');
 | 
					                message.react('719181283774955540');
 | 
				
			||||||
                karmaDB.dec(message.author.id);
 | 
					                karmaDB.dec(message.author.id);
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
 | 
					            case 'bruh':
 | 
				
			||||||
 | 
					                message.react('730882526259707997');
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
            default:
 | 
					            default:
 | 
				
			||||||
                randomAward();
 | 
					                randomAward(1);
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    .catch(error => {
 | 
					    .catch(error => {
 | 
				
			||||||
        console.error(error);
 | 
					        console.error(error);
 | 
				
			||||||
        message.channel.send('Wit.ai error:\n' + error);
 | 
					        message.channel.send(`Wit.ai error:\n\`\`\`js\n${error}\`\`\``);
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    function randomAward() {
 | 
					    function randomAward(multiplier) {
 | 
				
			||||||
 | 
					        if (!multiplier) multiplier = 1;
 | 
				
			||||||
        // Randomly decide if the message should get a random "award" or yeet an obamium on it
 | 
					        // 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) {
 | 
					        if (message.content.toLowerCase().indexOf('obamium') > -1 || message.content.toLowerCase().indexOf('obama') > -1) {
 | 
				
			||||||
            return message.react('716021350883393566').catch();
 | 
					            return message.react('716021350883393566').catch();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        const randomNum = random(0, 10000) / 100;
 | 
					        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
 | 
					        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.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 > 99)    {message.react('731192829262692372').catch(); coinsDB.set(message.author.id, (coinsDB.get(message.author.id) + 100)) } // Gold
 | 
				
			||||||
							
								
								
									
										21
									
								
								vibechat.js
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								vibechat.js
									
									
									
									
									
								
							| 
						 | 
					@ -1,21 +0,0 @@
 | 
				
			||||||
const Discord = require('discord.js');
 | 
					 | 
				
			||||||
const client = require('./index').client;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const TCID = '737698514209079377';
 | 
					 | 
				
			||||||
const VCID = '700734003174703265';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const TC = client.channels.cache.get(TCID);
 | 
					 | 
				
			||||||
const VC = client.channels.cache.get(VCID);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
client.on('voiceStateUpdate', (oldMember, newMember) => {
 | 
					 | 
				
			||||||
   if (oldMember.channelID == newMember.channelID) return;
 | 
					 | 
				
			||||||
   if (newMember.member.hasPermission('ADMINISTRATOR')) return;
 | 
					 | 
				
			||||||
   if (newMember.channelID == VCID) {
 | 
					 | 
				
			||||||
        TC.createOverwrite(newMember.member, {
 | 
					 | 
				
			||||||
                VIEW_CHANNEL: true
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        , 'Does anyone even read this?');
 | 
					 | 
				
			||||||
    } else if (newMember.channelID != VCID && oldMember.channelID == VCID) {
 | 
					 | 
				
			||||||
        TC.permissionOverwrites.get(oldMember.id).delete('Does anyone even read this?').catch();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
		Loading…
	
		Reference in a new issue