Advertisement
Guest User

Untitled

a guest
Oct 1st, 2016
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.29 KB | None | 0 0
  1. 'use strict';
  2. const Discord = require("discord.js");
  3. const bot = new Discord.Client({fetch_all_members: true});
  4. const log = (msg) => {
  5. // Very basic login function. Change the ID below to a channel for logging, or change to console.log!
  6. //bot.channels.get("231852063833718784").sendMessage(msg);
  7. };
  8.  
  9.  
  10. bot.on('ready', () => {
  11. log(`Selfbot Rewrite: Ready to spy on ${bot.users.size} users, in ${bot.channels.size} channels of ${bot.guilds.size} servers.`);
  12. console.log("=> Ready");
  13. });
  14.  
  15.  
  16.  
  17. bot.on('message', msg => {
  18. // Stop everything if the message is from someone else
  19. if(msg.author.id !== bot.user.id) return;
  20.  
  21. // Stop everything if the message doesn't start with the prefix (in config.json)
  22. if(!msg.content.startsWith(config.prefix)) return;
  23.  
  24. // check if the message is just "/something", check database for "slash" command.
  25. if(msg.content.split(" ").length === 1) {
  26. db.get(`SELECT * FROM shortcuts WHERE name = ?`, [msg.content.slice(1)], (err, row) => {
  27. if(err) console.error(err);
  28. if(!row) return;
  29. msg.edit(row.contents);
  30. db.run(`UPDATE shortcuts SET used = used+1 WHERE name = '${msg.content.slice(1)}'`);
  31. });
  32. }
  33.  
  34. // get command name
  35. var command = msg.content.split(" ")[0].slice(config.prefix.length);
  36. // get command parameters for all the other commands.
  37. var params = msg.content.split(" ").slice(1);
  38.  
  39. if(command === "tag") {
  40. db.serialize(function() {
  41. db.get(`SELECT * FROM tags WHERE name = '${params[0]}'`, (err, row) => {
  42. if(err) {log(err)}
  43. if(row) {
  44. let message_content = msg.mentions.users.array().length === 1 ? `${msg.mentions.users.array()[0]} ${row.contents}` : row.contents;
  45. setTimeout( () => {
  46. msg.edit(message_content);
  47. }, 20);
  48. db.run(`UPDATE tags SET used = used+1 WHERE name = '${params[0]}'`);
  49. }
  50. else msg.edit(`You dumbass, that tag doesn't exist. Go back to school!`).then(setTimeout(msg.delete.bind(msg), 1000));
  51. });
  52. });
  53. } else
  54.  
  55. if(command === "findemote") {
  56. let emoji_name = params[0];
  57. let emoji = bot.emojis.find("name", "emoji_name");
  58. if(emoji && emoji.id) {
  59. msg.edit(`The emoji **${emoji_name}** is apparently in: \`${emoji.guild.name}\``);
  60. } else {
  61. msg.edit(`Emoji named **${emoji_name}** wasn't found in my list.`);
  62. }
  63. } else
  64.  
  65. if(command === "addtag") {
  66. let name = params[0];
  67. let contents = params.slice(1).join(" ");
  68. db.serialize(function() {
  69.  
  70. db.get(`SELECT * FROM tags WHERE name = '${params[0]}'`, (err, row) => {
  71. if(err) {log(err)}
  72. if(!row) {
  73. var stmt = db.prepare(`INSERT INTO "tags" (name, contents) VALUES (?, ?)`);
  74. stmt.run(name, contents);
  75. stmt.finalize();
  76. msg.edit(`Tag was added: ${name}`).then(setTimeout(msg.delete.bind(msg), 1000));
  77. }
  78. else msg.edit(`Bitch that tag already exists`).then(setTimeout(msg.delete.bind(msg), 1000));
  79.  
  80. });
  81.  
  82. });
  83.  
  84. } else
  85.  
  86. if(command === "addslash") {
  87. let name = params[0];
  88. let contents = params.slice(1).join(" ");
  89. db.serialize(() => {
  90.  
  91. db.get(`SELECT * FROM shortcuts WHERE name = '${params[0]}'`, (err, row) => {
  92. if(err) {log(err)}
  93. if(!row) {
  94. var stmt = db.prepare(`INSERT INTO "shortcuts" (name, contents) VALUES (?, ?)`);
  95. stmt.run(name, contents);
  96. stmt.finalize();
  97. msg.edit("Shortcut was added: "+name).then(setTimeout(msg.delete.bind(msg), 1000));
  98.  
  99. } else {
  100. msg.edit(msg.author, "Bitch that shortcut already exists. Srsly?").then(setTimeout(msg.delete.bind(msg), 1000));
  101. }
  102. });
  103.  
  104. });
  105.  
  106. } else
  107.  
  108. if(command === "slashes") {
  109. db.serialize(function() {
  110. db.all(`SELECT * FROM shortcuts`, (err, rows) => {
  111. if(err) {log(err)};
  112. let message = [];
  113. message.push("```xl");
  114. var longest = rows.reduce(function (a, b) { return a.name.length > b.name.length ? a : b; });
  115. rows.map(row=>{
  116. let padded = (row.name + " ".repeat(longest.name.length+1-row.name.length));
  117. let count = (row.used + " ".repeat(3-row.used.toString().length));
  118. //console.log(`${padded}: `);
  119. message.push(`${config.prefix}${padded} : ${count} : ${row.contents}`);
  120. });
  121. message.push("```");
  122. msg.edit(message.join("\n"));
  123. });
  124. });
  125. } else
  126.  
  127. if(command === "tags") {
  128. db.serialize(function() {
  129. db.all("SELECT * FROM tags", (err, rows) => {
  130. if(err) {log(err)}
  131. msg.edit(`List of tags: ${rows.map(r => `${r.name} (${r.used})`).join(" ; ")}`);
  132. });
  133. });
  134. } else
  135.  
  136. if(command === "deltag") {
  137. db.serialize(function() {
  138. db.run(`DELETE FROM tags WHERE name = '${params[0]}'`, (err) => {
  139. if(err) {log(err)}
  140. msg.edit(`The tag ${params[0]} has been deleted`).then(setTimeout(msg.delete.bind(msg), 1000));
  141. });
  142. });
  143. } else
  144.  
  145. if(command === "prune") {
  146. let messagecount = parseInt(params[0]) ? parseInt(params[0]) : 1;
  147. msg.channel.fetchMessages({limit: 100})
  148. .then(messages => {
  149. let msg_array = messages.array();
  150. msg_array = msg_array.filter(m => m.author.id === bot.user.id);
  151. msg_array.length = messagecount + 1;
  152. msg_array.map(m => m.delete().catch(console.error));
  153. });
  154. } else
  155.  
  156. if(command === "purge") {
  157. let messagecount = parseInt(params[0]);
  158. msg.channel.fetchMessages({limit: messagecount})
  159. .then(messages => {
  160. messages.map(m => m.delete().catch(console.error) );
  161. }).catch(console.error);
  162. } else
  163.  
  164. // manually ban user by ip in the current server. testing/emergency purposes!
  165. if(command === "idban") {
  166. let ban_id = params[0];
  167. let days = params[1];
  168. msg.guild.ban(ban_id, days)
  169. .then( () => console.log(`Banned ${ban_id} and removed ${days} days of messages`))
  170. .catch(console.error);
  171. //199591377032445953 (logandark)
  172. }
  173.  
  174. if(command === "ping") {
  175. var startTime = now();
  176. msg.delete();
  177. msg.channel.sendMessage("Let's see if this works")
  178. .then( message => {
  179. var endTime = now();
  180. message.edit(`Ping took ${(endTime - startTime).toFixed(3)} ms. I think.`).catch(console.error);
  181. }).catch(console.error);
  182. } else
  183.  
  184. if(command === "playing") {
  185. var game = msg.content.split(" ").slice(1).join(" ");
  186. bot.user.setStatus(null, game);
  187. msg.delete().catch(console.error);
  188. } else
  189.  
  190. if(command === "rename") {
  191. var username = msg.content.split(" ").slice(1).join("_");
  192. bot.user.setUsername(username);
  193. msg.channel.sendMessage(`Renamed myself to **${username}** because I can.`).catch(console.error);
  194. msg.delete().catch(console.error);
  195. } else
  196.  
  197. if(command === "eval") {
  198. var code = msg.content.split(" ").slice(1).join(" ");
  199.  
  200. try {
  201. var evaled = eval(code);
  202. if (typeof evaled !== 'string')
  203. evaled = require('util').inspect(evaled);
  204. msg.channel.sendMessage("```xl\n" +
  205. clean(evaled) +
  206. "\n```"
  207. );
  208. }
  209. catch(err) {
  210. msg.channel.sendMessage("`ERROR` ```xl\n" +
  211. clean(err) +
  212. "\n```");
  213. }
  214. }
  215. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement