Advertisement
Guest User

Untitled

a guest
Apr 24th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.94 KB | None | 0 0
  1. const Fs = require('fs');
  2. const Discord = require('discord.js');
  3.  
  4. const Config = require('./config.js');
  5. const Functions = require('./functions.js');
  6.  
  7. const Client = new Discord.Client();
  8.  
  9. Client.on('message', Message => {
  10. if (Message.author.id === Client.user.id)
  11. return;
  12.  
  13. const serverId = Message.guild.id;
  14. const serverConfig = Config.getConfig(serverId);
  15.  
  16. if (serverConfig.activeChannels.length && !serverConfig.activeChannels.includes(Message.channel.id))
  17. return;
  18.  
  19. if (Message.content.toUpperCase().startsWith(Config.masterPrefix) && Functions.isMod(serverId, Message.member)) {
  20. const Command = Message.content.toUpperCase().replace(Config.masterPrefix, '');
  21. const Args = Command.split(' ');
  22.  
  23. if (Args[0] === 'SET-PREFIX') {
  24. if (Args.length === 2) {
  25. serverConfig.prefix = Args[1];
  26. Config.setMainConfig(serverId, serverConfig);
  27. Message.channel.send('Prefix set');
  28. } else {
  29. Message.channel.send('Command ``SET-PREFIX`` requires 1 argument');
  30. }
  31. }
  32.  
  33. if (Args[0] === 'MODROLE') {
  34. if (Args[1] === 'ADD') {
  35. const newModRoleName = Command.replace('MODROLE ADD ', '');
  36. const newModRole = Message.guild.roles.find(role => {
  37. return role.name.toUpperCase() === newModRoleName;
  38. });
  39.  
  40. if (newModRole) {
  41. if (serverConfig.modRoles.includes(newModRole.id)) {
  42. Message.channel.send(`Role \`\`${newModRole.Name}\`\` is already a mod role`);
  43. } else {
  44. serverConfig.modRoles.push(newModRole.id);
  45. Config.setMainConfig(serverId, serverConfig);
  46. Message.channel.send(`Added \`\`${newModRole.name}\`\` as mod role`)
  47. }
  48. } else {
  49. Message.channel.send(`Role \`\`${newModRoleName}\`\` could not be found`);
  50. }
  51. }
  52.  
  53. if (Args[1] === 'REMOVE') {
  54. const removeModRoleName = Command.replace('MODROLE REMOVE ', '');
  55. const removeModRole = Message.guild.roles.find(role => {
  56. return role.name.toUpperCase() === removeModRoleName;
  57. });
  58.  
  59. if (removeModRole) {
  60. if (serverConfig.modRoles.includes(removeModRole.id)) {
  61. serverConfig.modRoles.splice(serverConfig.modRoles.indexOf(removeModRole.id, 1));
  62. Config.setMainConfig(serverId, serverConfig);
  63. Message.channel.send(`Removed \`\`${removeModRole.name}\`\` as mod role`);
  64. } else {
  65. Message.channel.send(`Role \`\`${removeModRole.Name}\`\` is not a mod role`);
  66. }
  67. } else {
  68. Message.channel.send(`Role \`\`${removeModRoleName}\`\` could not be found`);
  69. }
  70. }
  71.  
  72. if (Args[1] === 'LIST') {
  73. if (!serverConfig.modRoles.length) {
  74. Message.channel.send('No mod roles set');
  75. return;
  76. }
  77.  
  78. const modRoles = [];
  79. serverConfig.modRoles.forEach(roleId => {
  80. let guildRole = Message.guild.roles.find(role => {
  81. return role.id === roleId;
  82. })
  83.  
  84. if (guildRole)
  85. modRoles.push(guildRole.name);
  86. });
  87. Message.channel.send(`Current mod roles: \`\`\`\n${modRoles.join('\n')}\`\`\``);
  88. }
  89. }
  90.  
  91. if (Args[0] === 'SELF-ASSIGN') {
  92. if (Args[1] === 'CATEGORY') {
  93. if (Args[2] === 'ADD') {
  94. const newCategoryName = Command.replace('SELF-ASSIGN CATEGORY ADD ', '');
  95. if (serverConfig.selfAssign[newCategoryName]) {
  96. Message.channel.send(`Self-Assign category \`\`${newCategoryName}\`\` already exists`);
  97. return;
  98. }
  99.  
  100. serverConfig.selfAssign[newCategoryName] = [];
  101. Config.setMainConfig(serverId, serverConfig);
  102.  
  103. Message.channel.send(`Self-Assign category \`\`${newCategoryName}\`\` has been added`)
  104. }
  105.  
  106. if (Args[2] === 'REMOVE') {
  107. const removeCategoryName = Command.replace('SELF-ASSIGN CATEGORY REMOVE ', '');
  108. if (!serverConfig.selfAssign[removeCategoryName]) {
  109. Message.channel.send(`Self-Assign category \`\`${removeCategoryName}\`\` doesn't exists`);
  110. return;
  111. }
  112.  
  113. delete serverConfig.selfAssign[removeCategoryName];
  114. Config.setMainConfig(serverId, serverConfig);
  115.  
  116. Message.channel.send(`Self-Assign category \`\`${removeCategoryName}\`\` has been removed`)
  117. }
  118. }
  119.  
  120. if (Args[1] === 'ROLE') {
  121. if (Args[2] === 'ADD') {
  122. let roleName = /ROLE:{(.*?)}/.exec(Command);
  123. let categoryName = /CATEGORY:{(.*?)}/.exec(Command)[1];
  124.  
  125. if(roleName && categoryName) {
  126. roleName = roleName[1];
  127. categoryName = categoryName[1];
  128.  
  129. Message.channel.send('This command requires ``role`` and ``category`` arguments');
  130. }
  131.  
  132. if (!serverConfig.selfAssign[categoryName]) {
  133. Message.channel.send(`Self-Assign category \`\`${categoryName}\`\` doesn't exists`);
  134. return;
  135. }
  136.  
  137. const role = Message.guild.roles.find(role => {
  138. return role.name.toUpperCase() === roleName;
  139. });
  140.  
  141. if (!role) {
  142. Message.channel.send(`Role \`\`${roleName}\`\` doesn't exist`);
  143. return;
  144. }
  145.  
  146. if (serverConfig.selfAssign[categoryName].includes(role.id)) {
  147. Message.channel.send(`Role \`\`${role.name}\`\` is already in category \`\`${categoryName}\`\``);
  148. return;
  149. }
  150.  
  151. serverConfig.selfAssign[categoryName].push(role.id);
  152. Config.setMainConfig(serverId, serverConfig);
  153.  
  154. Message.channel.send(`Role \`\`${role.name}\`\` added to category \`\`${categoryName}\`\``);
  155. }
  156.  
  157. if (Args[2] === 'REMOVE') {
  158. let roleName = /ROLE:{(.*?)}/.exec(Command);
  159. let categoryName = /CATEGORY:{(.*?)}/.exec(Command)[1];
  160.  
  161. if(roleName && categoryName) {
  162. roleName = roleName[1];
  163. categoryName = categoryName[1];
  164.  
  165. Message.channel.send('This command requires ``role`` and ``category`` arguments');
  166. }
  167.  
  168. if (!serverConfig.selfAssign[categoryName]) {
  169. Message.channel.send(`Self-Assign category \`\`${categoryName}\`\` doesn't exists`);
  170. return;
  171. }
  172.  
  173. const role = Message.guild.roles.find(role => {
  174. return role.name.toUpperCase() === roleName;
  175. });
  176.  
  177. if (!role) {
  178. Message.channel.send(`Role \`\`${roleName}\`\` doesn't exist`);
  179. return;
  180. }
  181.  
  182. if (!serverConfig.selfAssign[categoryName].includes(role.id)) {
  183. Message.channel.send(`Role \`\`${role.name}\`\` is not in category \`\`${categoryName}\`\``);
  184. return;
  185. }
  186.  
  187. serverConfig.selfAssign[categoryName].splice(serverConfig.selfAssign[categoryName].indexOf(role.id), 1);
  188. Config.setMainConfig(serverId, serverConfig);
  189.  
  190. Message.channel.send(`Role \`\`${role.name}\`\` removed from category \`\`${categoryName}\`\``);
  191. }
  192. }
  193. }
  194.  
  195. if (Args[0] === 'ACTIVE-CHANNELS') {
  196. if (Args[1] === 'ADD') {
  197. const channels = [];
  198. Message.mentions.channels.forEach(channel => {
  199. channels.push(channel);
  200. });
  201.  
  202. const channel = channels[0];
  203.  
  204. if (serverConfig.activeChannels.includes(channel.id)) {
  205. Message.channel.send(`Channel \`\`${channel.name}\`\` is already an active channel`);
  206. return;
  207. }
  208.  
  209. serverConfig.activeChannels.push(channel.id);
  210. Config.setMainConfig(serverId, serverConfig);
  211.  
  212. Message.channel.send(`Channel \`\`${channel.name}\`\` is now an active channel`);
  213. }
  214.  
  215. if (Args[1] === 'REMOVE') {
  216. const channels = [];
  217. Message.mentions.channels.forEach(channel => {
  218. channels.push(channel);
  219. });
  220.  
  221. const channel = channels[0];
  222.  
  223. if (!serverConfig.activeChannels.includes(channel.id)) {
  224. Message.channel.send(`Channel \`\`${channel.name}\`\` is not an active channel`);
  225. return;
  226. }
  227.  
  228. serverConfig.activeChannels.splice(serverConfig.activeChannels.indexOf(channel.id), 1);
  229. Config.setMainConfig(serverId, serverConfig);
  230.  
  231. Message.channel.send(`Channel \`\`${channel.name}\`\` is no longer an active channel`);
  232. }
  233.  
  234. if (Args[1] === 'LIST') {
  235.  
  236. if (!serverConfig.activeChannels.length) {
  237. Message.channel.send('Currently active in all channels');
  238. return;
  239. }
  240.  
  241. const channels = [];
  242. serverConfig.activeChannels.forEach(channelId => {
  243. let chan = Message.guild.channels.find(channel => {
  244. return channel.id === channelId;
  245. })
  246.  
  247. if (chan)
  248. channels.push(chan.name);
  249. });
  250.  
  251. Message.channel.send(`Currently active in \`\`\`\n${channels.join('\n')}\`\`\``);
  252. }
  253. }
  254. }
  255.  
  256. if (Message.content.toUpperCase().startsWith(serverConfig.prefix)) {
  257. const Command = Message.content.toUpperCase().replace(serverConfig.prefix, '');
  258. const Args = Command.split(' ');
  259.  
  260. if (Args[0] === 'GETROLE') {
  261. const roleName = Command.replace('GETROLE ', '');
  262.  
  263. const role = Message.guild.roles.find(role => {
  264. return role.name.toUpperCase() === roleName;
  265. });
  266.  
  267. if (!role) {
  268. Message.channel.send(`Role \`\`${roleName}\`\` doesn't exist`);
  269. return;
  270. }
  271.  
  272. let selfAssignable = false;
  273. for (category in serverConfig.selfAssign) {
  274. if (serverConfig.selfAssign[category].includes(role.id))
  275. selfAssignable = true;
  276. }
  277.  
  278. if (!selfAssignable) {
  279. Message.channel.send(`Role \`\`${role.name}\`\` is not self-assignable`);
  280. return;
  281. }
  282.  
  283. const currentUserRoles = [];
  284. Message.member.roles.forEach(role => {
  285. currentUserRoles.push(role);
  286. })
  287.  
  288. if (currentUserRoles.includes(role)) {
  289. Message.channel.send(`You already have role \`\`${role.name}\`\``);
  290. return;
  291. }
  292.  
  293. Message.member.addRole(role)
  294. .then(Message.react('👍'))
  295. ;
  296. }
  297.  
  298. if (Args[0] === 'REMOVEROLE') {
  299. const roleName = Command.replace('REMOVEROLE ', '');
  300.  
  301. const role = Message.guild.roles.find(role => {
  302. return role.name.toUpperCase() === roleName;
  303. });
  304.  
  305. if (!role) {
  306. Message.channel.send(`Role \`\`${roleName}\`\` doesn't exist`);
  307. return;
  308. }
  309.  
  310. let selfAssignable = false;
  311. for (category in serverConfig.selfAssign) {
  312. if (serverConfig.selfAssign[category].includes(role.id))
  313. selfAssignable = true;
  314. }
  315.  
  316. if (!selfAssignable) {
  317. Message.channel.send(`Role \`\`${role.name}\`\` is not self-assignable`);
  318. return;
  319. }
  320.  
  321. const currentUserRoles = [];
  322. Message.member.roles.forEach(role => {
  323. currentUserRoles.push(role);
  324. })
  325.  
  326. if (!currentUserRoles.includes(role)) {
  327. Message.channel.send(`You don't have role \`\`${role.name}\`\``);
  328. return;
  329. }
  330.  
  331. Message.member.removeRole(role)
  332. .then(Message.react('👍'))
  333. ;
  334. }
  335.  
  336. if(Args[0] === 'ROLES') {
  337. const guildRoles = [];
  338. Message.guild.roles.forEach(role => {
  339. guildRoles.push(role);
  340. });
  341.  
  342. const categoryMessages = [];
  343. for (category in serverConfig.selfAssign) {
  344. let message = `${category}: \n\n`;
  345. serverConfig.selfAssign[category].forEach(roleId => {
  346. let role = guildRoles.find(role => {
  347. return role.id === roleId;
  348. });
  349.  
  350. if(role)
  351. message += ` - ${role.name}\n`;
  352. });
  353.  
  354. categoryMessages.push(message);
  355. }
  356.  
  357. Message.channel.send(`Self-assignable roles for ${Message.guild.name}\n\n\`\`\`${categoryMessages.join('\n\n')}\`\`\``);
  358. }
  359. }
  360. });
  361.  
  362. Client.on('ready', () => {
  363. console.log(`Logged in as ${Client.user.tag}`);
  364. });
  365.  
  366. Client.on('error', console.error);
  367.  
  368. Client.login(Config.token);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement