Advertisement
Guest User

Untitled

a guest
Nov 17th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.63 KB | None | 0 0
  1. var Discord = require("discord.js");
  2. var bot = new Discord.Client();
  3.  
  4. const low = require('lowdb');
  5. const FileSync = require('lowdb/adapters/FileSync');
  6. const adapter = new FileSync('db.json');
  7. const db = low(adapter);
  8.  
  9. var lastMessage = "";
  10. var lMChannelName = "";
  11. var lMCounter = 0;
  12. var lMMessaged = false;
  13.  
  14. var dictionary = {};
  15.  
  16. bot.on("ready", () => {
  17.  
  18. console.log('Connected');
  19.  
  20. if(db.get('reminders').size().value() == 0){
  21. db.defaults({reminders: []}).write();
  22. console.log("New reminder loaded!");
  23. }
  24. else{
  25. let reminderCollection = db.get('reminders').value();
  26.  
  27. for(var key in reminderCollection){
  28.  
  29. console.log("Reminder loaded");
  30.  
  31. setReminder({
  32. setTime: reminderCollection[key].id,
  33. message: reminderCollection[key].message
  34. }, "bot-spam");
  35. }
  36. }
  37.  
  38. let d = new Date();
  39. let n = d.getHours();
  40. /*
  41. if(n > 12) {
  42. bot.channels.get("432339546718470154").send("<:feelsHappyHug:432620065129627661>");
  43. }
  44. else {
  45. bot.channels.get("432339546718470154").send("<:sleepyHug:502973440274464769>");
  46. }
  47. */
  48. });
  49.  
  50. bot.on('message', message => {
  51.  
  52. console.log(message.content);
  53.  
  54. // commands
  55. if(message.content.substring(0,1) === '!') {
  56. const args = message.content.slice(1).trim().split(/ +/g);
  57. const cmd = args.shift().toLowerCase();
  58.  
  59.  
  60. if(checkExclamations(message.content)) {
  61. if(!(message.channel.name == "bot-spam" || message.channel.name == "bot-test-aaaaa") && !(cmd == 'gag' || cmd == 'ungag' || cmd == 'reminder')) {
  62. message.channel.send("<:rage:486979432683274240><:point_right:486979399879753739><#486648046437007400>");
  63. }
  64. else {
  65. switch(cmd) {
  66.  
  67. //actually gag
  68. case 'gag':
  69.  
  70. if(message.member.hasPermission("ADMINISTRATOR")) {
  71. let user = message.mentions.members.first();
  72. let gagRole = message.guild.roles.get('486589877127741440');
  73.  
  74. if(user == null) {
  75. message.channel.send("Specify a user!");
  76. }
  77. else if(gagRole == null) {
  78. message.channel.send("Role not found");
  79. }
  80. else {
  81. if(!user.roles.has(gagRole.id)) {
  82. user.addRole(gagRole).catch(console.error);
  83. console.log(message.author.username + ' gagged: ' + user.username);
  84. }
  85. }
  86. }
  87. break;
  88.  
  89. case 'ungag':
  90.  
  91. if(message.member.hasPermission("ADMINISTRATOR")) {
  92. let user2 = message.mentions.members.first();
  93. let gagRole2 = message.guild.roles.get('486589877127741440');
  94.  
  95. if(user2 == null) {
  96. message.channel.send("Specify a user!");
  97. }
  98. else if(gagRole2 == null) {
  99. message.channel.send("Role not found");
  100. }
  101. else {
  102. if(user2.roles.has(gagRole2.id)) {
  103. user2.removeRole(gagRole2).catch(console.error);
  104. console.log(message.author.username + ' ungagged: ' + user2.username);
  105. }
  106. }
  107. }
  108. break;
  109.  
  110.  
  111. case 'love':
  112. var name = message.author.username;
  113. var target = message.content.substring(6, message.content.length);
  114.  
  115. if(target != "") {
  116. if(target == "@everyone" || target == "@here") {
  117. message.channel.send("Fuck you stop trying to trick the bot");
  118. }
  119. else {
  120. message.channel.send(name + " is " + Math.round(Math.random() * 10000) / 100 + "% in love with " + target + "!");
  121. }
  122. }
  123. break;
  124.  
  125. case 'roll':
  126.  
  127. message.channel.send(message.author.username + " rolls a " + Math.round(Math.random() * 100) + "!");
  128.  
  129. break;
  130.  
  131. case 'flip':
  132.  
  133. var test = Math.floor(Math.random() * 2);
  134.  
  135. var truth = (test % 2) == 0;
  136.  
  137. if((test % 2) == 0)
  138. message.channel.send("Heads");
  139. else {
  140. message.channel.send("Tails");
  141. }
  142. break;
  143.  
  144. case 'iq':
  145.  
  146. var target = message.content.substring(3, message.content.length);
  147.  
  148. if(target != "") {
  149. if(target == "@everyone" || target == "@here") {
  150. message.channel.send("Fuck you stop trying to trick the bot");
  151. }
  152. else {
  153. message.channel.send(target + " has an iq of " + Math.round(Math.random() * 200));
  154. }
  155. }
  156. else {
  157. message.channel.send(message.author.username + " has an iq of " + Math.round(Math.random() * 200));
  158. }
  159. break;
  160.  
  161. case 'help':
  162.  
  163. message.channel.send("Commands are:\n" +
  164. "!love [thing] - <user> loves <thing> by <percent>!\n" +
  165. "!roll - <user> rolls a <number>\n" +
  166. "!flip - coin flip\n" +
  167. "!ball - 8Ball\n" +
  168. "!looks\n" +
  169. "!iq\n" +
  170. "!table <argument>");
  171. break;
  172.  
  173. case 'ball':
  174.  
  175. var test = Math.floor(Math.random() * 11);
  176. if(test != 10) {
  177. var answers = ["Fuck yeah", "Yeee", "Sure, why not", "I guess",
  178. "mmmmm idk", "not right now", "ask me again later",
  179. "Nah", "No fuck off", "I swear to God shUT THE FUCK UP"
  180. ];
  181.  
  182.  
  183. message.channel.send(answers[test]);
  184. }
  185.  
  186. // CapItAliZaTiON
  187. else {
  188. var target = message.content.substring(5, message.content.length);
  189.  
  190. var result = "";
  191.  
  192. let capCounter = Math.floor(Math.random() * 4);
  193. console.log(capCounter);
  194. target.split("").forEach(function(c) {
  195.  
  196.  
  197. if(c.match(/[a-z]/i))
  198. if(capCounter >= 3) {
  199. result += c.toUpperCase();
  200. capCounter = 0;
  201. }
  202. else {
  203. result += c.toLowerCase();
  204. capCounter++;
  205. }
  206.  
  207. //result += (Math.random() > 0.6 ? c.toUpperCase() : c.toLowerCase());
  208. else
  209. result += c;
  210. });
  211.  
  212. message.channel.send(result);
  213.  
  214. }
  215. break;
  216.  
  217. case 'kneecaps':
  218.  
  219. message.channel.send("I'll break your fokin kneecaps kid :cricket:");
  220. break;
  221.  
  222. case 'looks':
  223.  
  224. var value = Math.floor(Math.random() * 11);
  225. var aaaa = "a ";
  226.  
  227. if(value == 8) aaaa = "an ";
  228. message.channel.send(message.author.username + " is " + aaaa + value + " out of 10");
  229. break;
  230.  
  231. case 'table':
  232.  
  233. if(args[0] != null) {
  234. var msg = message.content.substring(6,message.content.length).trim().toUpperCase().split('');
  235.  
  236. if(msg.length < 44) {
  237. var endstr = "```";
  238.  
  239. //first row
  240. for(var i = 0; i < msg.length; i++) {
  241. endstr += msg[i] + " ";
  242. }
  243.  
  244. endstr += "\n";
  245.  
  246. //all following rows
  247. for(var i = 1; i < msg.length; i++) {
  248.  
  249. //first add letter to first column
  250. endstr += msg[i];
  251.  
  252. //add whitespaces
  253. for(var j = 0; j < (1 + 2 * (i-1)); j++) {
  254. endstr += " ";
  255. }
  256.  
  257.  
  258. endstr += msg[i] + "\n";
  259. }
  260.  
  261. message.channel.send(endstr + "```");
  262. }
  263. else {
  264. message.channel.send("String too long");
  265. }
  266. }
  267. else {
  268. message.channel.send("Specify argument");
  269. }
  270. break;
  271.  
  272. case 'bob':
  273.  
  274. message.channel.send("Best butt in the game");
  275. break;
  276.  
  277. case 'reminder':
  278. command = args.shift().toLowerCase();
  279. let timeUnit = command.substr(command.length - 1, 1);
  280.  
  281. let timeNumber = parseFloat(command.substr(0, command.length - 1));
  282.  
  283. if(isNaN(timeNumber)){
  284. message.channel.send("Not a number my dude");
  285. }
  286.  
  287. else{
  288. if(timeUnit == 'h'){
  289. console.log("Hours");
  290. timeNumber = timeNumber * 3600000;
  291. }
  292. else if(timeUnit == 'm'){
  293. console.log("Minutes");
  294. timeNumber = timeNumber * 60000;
  295. }
  296. else if(timeUnit == 's'){
  297. console.log("Seconds");
  298. timeNumber = timeNumber * 1000;
  299. }
  300.  
  301. var targetTime = new Date().getTime();
  302.  
  303. let temp = "";
  304. while(args.length > 0){
  305.  
  306. let check = args.shift();
  307. if(check != "@everyone" && check != "@here") {
  308. temp += " " + check;
  309. }
  310. else {
  311. message.channel.send("Fuck you stop trying to trick the bot");
  312. break;
  313. }
  314. }
  315.  
  316. //Save to DB
  317. db.get('reminders').push({ id: targetTime, message: temp}).write();
  318.  
  319. setReminder({
  320. setTime: targetTime,
  321. message: temp
  322. }, message.channel.name);
  323.  
  324. message.channel.send("Reminder set!");
  325. }
  326. break;
  327.  
  328. default:
  329. message.channel.send("Unknown command, type !help for a list of commands.");
  330. break;
  331. }
  332. }
  333. }
  334. }
  335.  
  336.  
  337.  
  338. // prevent null pointer
  339. if(message.content != null) {
  340.  
  341. var name = '<@!486589316110221313>';
  342.  
  343. // @
  344. if(message.content.substring(0,name.length) === name) {
  345.  
  346. if(message.content.includes('<:feelsHappyHug:432620065129627661>')) {
  347. message.channel.send("<@" + message.author.id + "> <:feelsHappyHug:432620065129627661>");
  348. }
  349. else if(message.content == name + ' <:peepo:443194006348890114>') {
  350. message.channel.send("<@" + message.author.id + "> <:peepo:443194006348890114>");
  351. }
  352. else {
  353. message.channel.send("<@" + message.author.id + "> <:plz:432620547902275584>");
  354. }
  355. }
  356.  
  357. // reactions
  358. else if(message.content.includes("<:haHAA:452922257245732875>")) {
  359. message.react("452922257245732875");
  360. }
  361. else if(message.content.includes("<:fuckcysts:445026273748844559>")) {
  362. message.react("445026273748844559");
  363. }
  364.  
  365. // thanks
  366. else if(message.content.toLowerCase() === "me too") {
  367. message.channel.send("thanks");
  368. }
  369.  
  370. // peepo
  371. else if(message.content === "<:peepo:443194006348890114>") {
  372. message.channel.send("<:opeep:455159551180668938>");
  373. }
  374.  
  375. // Good bot
  376. else if(message.content.toLowerCase() === "good bot") {
  377. message.channel.send("<@" + message.author.id + "> <:peepoWew:460204110361264148>");
  378. }
  379.  
  380. // Bad bot
  381. else if(message.content.toLowerCase() === "bad bot") {
  382. message.channel.send("<@" + message.author.id + "> <:killmepls:432619991427186708>");
  383. }
  384.  
  385. // Multi channel chain monkaS
  386. else {
  387. let messageChannel = message.channel;
  388. let messageContent = message.content;
  389.  
  390. if(dictionary[messageChannel] == undefined) {
  391. dictionary[messageChannel] = {lastMessage: messageContent, count: 0, messaged: false };
  392. }
  393. else if(messageContent == dictionary[messageChannel].lastMessage) {
  394.  
  395. let messageCount = dictionary[messageChannel].count;
  396. let messageMessaged = dictionary[messageChannel].messaged;
  397.  
  398. if(messageCount >= 2 && !messageMessaged) {
  399.  
  400. if(!(messageContent.includes("@everyone") || messageContent.includes("@here"))) {
  401.  
  402. message.channel.send(messageContent);
  403. dictionary[messageChannel].messaged = true;
  404. }
  405. }
  406. else
  407. dictionary[messageChannel].count++;
  408. }
  409. else {
  410. dictionary[messageChannel].lastMessage = messageContent;
  411. dictionary[messageChannel].count = 0;
  412. dictionary[messageChannel].messaged = false;
  413. }
  414.  
  415. /*
  416. console.log(dictionary);
  417.  
  418. if(message.content === lastMessage && message.channel.name === lMChannelName) {
  419.  
  420. if(lMCounter >= 2 && !lMMessaged) {
  421.  
  422. if(!(message.content.includes("@everyone") || message.content.includes("@here"))) {
  423.  
  424. message.channel.send(message.content);
  425. lMMessaged = true;
  426. }
  427. }
  428. else
  429. lMCounter++;
  430. }
  431. else {
  432. lastMessage = message.content;
  433. lMChannelName = message.channel.name;
  434. lMCounter = 0;
  435. lMMessaged = false;
  436. }
  437. */
  438. }
  439.  
  440. }
  441. });
  442.  
  443.  
  444. function checkExclamations(args) {
  445. // ------------------------- protect the !!! -------------------------
  446. var temp = args;
  447. while(temp.includes('!'))
  448. temp = temp.replace('!', '');
  449. // -------------------------------------------------------------------
  450.  
  451. return !(temp == '');
  452. }
  453.  
  454. function setReminder(reminder, channelName){
  455.  
  456. let channel = bot.channels.find("name", channelName);
  457.  
  458. let currTime = new Date().getTime();
  459.  
  460. let dTime = reminder.setTime - currTime;
  461.  
  462. if(dTime < 0){
  463. channel.send("I overslept:\n"+reminder.message);
  464. db.get('reminders').remove({ id: reminder.setTime}).write();
  465. }
  466. else{
  467. var interval = setTimeout(() => {
  468. channel.send(reminder.message);
  469. db.get('reminders').remove({ id: reminder.setTime}).write();
  470. }, dTime);
  471. }
  472. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement