Advertisement
Guest User

Untitled

a guest
Jan 24th, 2020
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.07 KB | None | 0 0
  1. const { Client, RichEmbed } = require('discord.js');
  2. const client = new Client({ disableEveryone: true });
  3. const Enmap = require('enmap');
  4. const cd = require('countdown');
  5. const moment = require('moment');
  6. const ms = require('ms');
  7. const totime = require('to-time');
  8. const dbg = new Enmap({ name: 'Giveaway' });
  9. const prefix = '.';
  10. console.log("[ Giveaways is Lunched. ]");
  11. //gstart
  12. client.on("ready", async () => {
  13. await dbg.defer;
  14. await console.log(`Logged in as [ ${client.user.username} ]!`);
  15. client.guilds.forEach(async g => {
  16. g.channels
  17. .filter(
  18. c =>
  19. c.type == "text" &&
  20. c.permissionsFor(client.user.id).has("VIEW_CHANNEL")
  21. )
  22. .forEach(async c => {
  23. let fetched = await c.fetchMessages();
  24. if (fetched.size == 0) return;
  25. let mess = await fetched.filter(
  26. r =>
  27. r.author.id === client.user.id &&
  28. r.content ==
  29. `**πŸŽ‰ GIVEAWAY πŸŽ‰**`
  30. );
  31. if (mess.size == 0) return;
  32. mess.forEach(m => {
  33. if (!m) return;
  34. if (!dbg.get(`giveaway.${g.id}.${c.id}.${m.id}.time`)) return;
  35. let time2 = dbg.get(`giveaway.${g.id}.${c.id}.${m.id}.time`).gtime;
  36. let text2 = dbg.get(`giveaway.${g.id}.${c.id}.${m.id}.time`).gtext;
  37. let win2 = dbg.get(`giveaway.${g.id}.${c.id}.${m.id}.time`).gwin;
  38. if (time2 === null || time2 === undefined) return;
  39. let embed = new RichEmbed()
  40. .setColor("BLUE")
  41. .setAuthor(`${text2}`, g.iconURL)
  42. .setDescription(
  43. `React with πŸŽ‰ to enter!\nTime remaining: ${cd(
  44. new Date().getTime(),
  45. time2
  46. )}`
  47. )
  48. .setFooter(`Ends at`, client.user.avatarURL)
  49. .setTimestamp(time2);
  50. let embed2 = new RichEmbed()
  51. .setColor("RED")
  52. .setAuthor(text2, g.iconURL)
  53. .setFooter(`Ended at`);
  54. let ttimer = setInterval(async () => {
  55. if (
  56. !m ||
  57. m.content ==
  58. `πŸŽ‰ **GIVEAWAY ENDED** πŸŽ‰`
  59. )
  60. return;
  61. let ttt = [-1, -2, -3, -4, -5, -6, -7, -8, -9, -10];
  62. if (ttt.includes(moment().diff(time2, "seconds")))
  63. return m.edit(
  64. `πŸŽ‰ **GIVEAWAY** πŸŽ‰`,
  65. embed
  66. .setColor("#ffb800")
  67. .setDescription(
  68. `**Last chance to enter!!!**\nReact with πŸŽ‰\nTime remaining: ${cd(
  69. new Date().getTime(),
  70. time2
  71. )}`
  72. )
  73. );
  74. m.edit(
  75. `πŸŽ‰ **GIVEAWAY** πŸŽ‰`,
  76. embed.setDescription(
  77. `React with πŸŽ‰ to enter!\nTime remaining: ${cd(
  78. new Date().getTime(),
  79. time2
  80. )}`
  81. )
  82. );
  83. if (moment().isAfter(time2)) {
  84. m.reactions
  85. .filter(a => a.emoji.name == "πŸŽ‰")
  86. .map(r =>
  87. r.fetchUsers().then(u => {
  88. let rusers = u
  89. .filter(user => !user.bot)
  90. .random(parseInt(win2));
  91. m.edit(
  92. `${g} GIVEAWAY ENDED ${g}`,
  93. embed2
  94. .setTimestamp()
  95. .setDescription(`Winners:\n${rusers || "No winners"}`)
  96. );
  97. if (
  98. m.reactions
  99. .filter(a => a.emoji.name == "πŸŽ‰")
  100. .map(reaction => reaction.count)[0] <= 1
  101. ) {
  102. return m.channel.send(`No winners :rolling_eyes:`);
  103. } else {
  104. m.channel.send(
  105. `Congratulations ${rusers}! You won the **${text2}**`
  106. );
  107. }
  108. dbg.delete(`giveaway.${g.id}.${c.id}.${m.id}.time`);
  109. clearInterval(ttimer);
  110. return;
  111. })
  112. );
  113. }
  114. }, 5000);
  115. });
  116. });
  117. });
  118. });
  119. //client.on('error', console.error);
  120. //client.on('warn', warn => console.warn(`[WARN] - ${warn}`));
  121. process.on("unhandledRejection", (reason, promise) => {
  122. console.log("Unhandled Rejection at:", reason.stack || reason);
  123. });
  124. client.on("message", async message => {
  125. //let g = client.guilds
  126. // .get("606910399811420175")
  127. // .emojis.find(r => r.name === "start");
  128. if (message.author.bot || message.channel.type == "dm") return undefined;
  129. let args = message.content.split(" ");
  130. let timer;
  131. if (args[0] == `${prefix}start`) {
  132. if (
  133. message.member.hasPermission("MANAGE_GUILD") ||
  134. message.member.roles.find(r => r.name == "GIVEAWAYS")
  135. ) {
  136. if (!args[1] || !args[2] || !args[3])
  137. return message.channel.send(
  138. `**Usage:** **\`${prefix}start [Time] [Winners] [Giveaway Prize]\n\`** **Example:** **\`${prefix}start 4h 1 Nitro\`**`
  139. );
  140. if (!message.guild.member(client.user).hasPermission("EMBED_LINKS"))
  141. return message.channel.send(`I don't have **Embed Links** permission.`);
  142. if (ms(args[1]) === undefined)
  143. return message.channel.send(`Please use a proper time format.`);
  144. if (isNaN(args[2]))
  145. return message.channel.send(`Winners must be number!`);
  146. if (args[2] < 1 || args[2] > 10)
  147. return message.channel.send(`Winners must be bettwen 1 and 10.`);
  148. let timega = ms(args[1]) / 1000;
  149. let time = Date.now() + totime.fromSeconds(timega).ms();
  150. if (timega < 5)
  151. return message.channel.send(
  152. `Giveaway time can't be less than 5 seconds.`
  153. );
  154. let timespan = cd(new Date().getTime(), time);
  155. let rusers;
  156. let embed = new RichEmbed()
  157. .setColor("BLUE")
  158. .setAuthor(`${args.slice(3).join(" ")}`)
  159. .setDescription(
  160. `React with πŸŽ‰ to enter!\nTime remaining: ${timespan}`
  161. )
  162. .setFooter(`Ends at`, client.user.avatarURL)
  163. .setTimestamp(time);
  164. let embed2 = new RichEmbed()
  165. .setColor("RED")
  166. .setAuthor(args.slice(3).join(" "))
  167. .setFooter(`Ended at`);
  168. let msg = await message.channel
  169. .send(
  170. `**πŸŽ‰ GIVEAWAY πŸŽ‰**`,
  171. embed
  172. )
  173. .catch(err => message.channel.send(`Error: \`${err}\``));
  174. dbg.set(
  175. `giveaway.${message.guild.id}.${message.channel.id}.${msg.id}.time`,
  176. {
  177. gtime: time,
  178. gid: msg.id,
  179. gtext: args.slice(3).join(" "),
  180. gwin: args[2]
  181. }
  182. );
  183. await msg.react("πŸŽ‰");
  184. timer = setInterval(() => {
  185. if (
  186. !msg ||
  187. msg.content ==
  188. `**πŸŽ‰ GIVEAWAY ENDED πŸŽ‰**`
  189. )
  190. return;
  191. let ttt = [-2, -3, -4, -5, -6, -7, -8, -9, -10];
  192. if (ttt.includes(moment().diff(time, "seconds")))
  193. return msg.edit(
  194. `**πŸŽ‰ GIVEAWAY πŸŽ‰**`,
  195. embed
  196. .setColor("#ffb800")
  197. .setDescription(
  198. `**Last chance to enter!!!**\nReact with πŸŽ‰\nTime remaining: ${cd(
  199. new Date().getTime(),
  200. time
  201. )}`
  202. )
  203. );
  204. msg.edit(
  205. `**πŸŽ‰ GIVEAWAY πŸŽ‰**`,
  206. embed.setDescription(
  207. `React with πŸŽ‰ to enter!\nTime remaining: ${cd(
  208. new Date().getTime(),
  209. time
  210. )}`
  211. )
  212. );
  213. rusers = msg.reactions
  214. .filter(a => a.emoji.name == "πŸŽ‰")
  215. .map(reaction =>
  216. reaction.users.filter(u => !u.bot).random(parseInt(args[2]))
  217. )[0];
  218. if (moment().isAfter(time)) {
  219. msg.edit(
  220. `** GIVEAWAY ENDED πŸŽ‰**`,
  221. embed2
  222. .setTimestamp()
  223. .setDescription(`Winners:\n${rusers || "No winners"}`)
  224. );
  225. if (
  226. msg.reactions
  227. .filter(a => a.emoji.name == "πŸŽ‰")
  228. .map(reaction => reaction.count)[0] <= 1
  229. ) {
  230. return message.channel.send(``);
  231. } else {
  232. msg.channel.send(
  233. `> Congratulations ${rusers}! You won the **${args
  234. .slice(3)
  235. .join(" ")}**`
  236. );
  237. }
  238. clearInterval(timer);
  239. return;
  240. }
  241. }, 5000);
  242. } else return undefined;
  243. } else if (args[0] == `${prefix}groll`) {
  244. if (
  245. message.member.hasPermission("MANAGE_GUILD") ||
  246. message.member.roles.find(r => r.name == "GIVEAWAYS")
  247. ) {
  248. if (!args[1])
  249. return message.channel.send(
  250. `**Usage:** **\`${prefix}reroll [giveaway message id]\`**`
  251. );
  252. if (isNaN(args[1])) return message.channel.send(`Thats not a message ID`);
  253. message.channel
  254. .fetchMessage(args[1])
  255. .then(async m => {
  256. if (m.author.id != client.user.id)
  257. return message.channel.send(`This is not a giveaway message.`);
  258. if (!m.content.startsWith(`**πŸŽ‰ GIVEAWAY**`))
  259. return message.channel.send(`This is not a giveaway message.`);
  260. if (
  261. m.content !=
  262. `**πŸŽ‰ GIVEAWAY ENDED πŸŽ‰**`
  263. )
  264. return message.channel.send(`The giveaway is not ended.`);
  265. if (m.reactions.size < 1)
  266. return message.channel.send(
  267. `I can't find reactions in this message.`
  268. );
  269. if (
  270. m.reactions
  271. .filter(a => a.emoji.name == "πŸŽ‰")
  272. .map(reaction => reaction.count)[0] <= 1
  273. )
  274. return message.channel.send(``);
  275. m.reactions
  276. .filter(a => a.emoji.name == "πŸŽ‰")
  277. .map(r =>
  278. r.fetchUsers().then(async u => {
  279. let rusers = u.filter(user => !user.bot).random();
  280. await message.channel.send(`The new winner is: ${rusers}`);
  281. })
  282. );
  283. })
  284. .catch(err =>
  285. message.channel.send(`I can't find this message in the channel.`)
  286. );
  287. } else return undefined;
  288. } else if (args[0] == `${prefix}gend`) {
  289. if (
  290. message.member.hasPermission("MANAGE_GUILD") ||
  291. message.member.roles.find(r => r.name == "GIVEAWAYS")
  292. ) {
  293. if (!args[1])
  294. return message.channel.send(
  295. `**Usage:** **\`${prefix}reroll [giveaway message id]\`**`
  296. );
  297. if (isNaN(args[1])) return message.channel.send(`Thats not a message ID`);
  298. message.channel
  299. .fetchMessage(args[1])
  300. .then(async m => {
  301. if (m.author.id != client.user.id)
  302. return message.channel.send(`This is not a giveaway message.`);
  303. if (!m.content.startsWith(`**πŸŽ‰ GIVEAWAY**`))
  304. return message.channel.send(`This is not a giveaway message.`);
  305. if (
  306. m.content ==
  307. `**πŸŽ‰ GIVEAWAY ENDED πŸŽ‰**`
  308. )
  309. return message.channel.send(`The giveaway is ended.`);
  310. if (m.reactions.size < 1)
  311. return message.channel.send(
  312. `I can't find reactions in this message.`
  313. );
  314. let gv = dbg.get(
  315. `giveaway.${message.guild.id}.${message.channel.id}.${m.id}.time`
  316. );
  317. let rusers = m.reactions.map(r =>
  318. r.users.filter(u => !u.bot).random(parseInt(gv.gwin))
  319. );
  320. let embed2 = new RichEmbed()
  321. .setColor("RED")
  322. .setAuthor(gv.gtext)
  323. .setFooter(`Ended at`);
  324. m.reactions
  325. .filter(a => a.emoji.name == "πŸŽ‰")
  326. .map(r =>
  327. r.fetchUsers().then(async u => {
  328. let rusers = u
  329. .filter(user => !user.bot)
  330. .random(parseInt(gv.gwin));
  331. m.edit(
  332. `**πŸŽ‰ GIVEAWAY ENDED πŸŽ‰**`,
  333. embed2
  334. .setTimestamp()
  335. .setDescription(`Winners:\n${rusers || "No winners"}`)
  336. );
  337. if (
  338. m.reactions
  339. .filter(a => a.emoji.name == "πŸŽ‰")
  340. .map(reaction => reaction.count)[0] <= 1
  341. ) {
  342. return message.channel.send(`No winners :rolling_eyes:`);
  343. } else {
  344. message.channel.send(
  345. `> Congratulations ${rusers}! You won the **${gv.gtext}**`
  346. );
  347. }
  348. await dbg.delete(
  349. `giveaway.${message.guild.id}.${message.channel.id}.${m.id}.time`
  350. );
  351. return;
  352. })
  353. );
  354. })
  355. .catch(err =>
  356. message.channel.send(`I can't find this message in the channel.`)
  357. );
  358. } else return undefined;
  359. }
  360. })
  361.  
  362.  
  363. client.login("Token Your Bot")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement