Samuel Shuert | 7a352ae | 2024-01-25 20:52:46 -0500 | [diff] [blame^] | 1 | import { ChannelType, Client, Collection, Guild, GuildEmoji, GuildInvitableChannelResolvable, IntentsBitField } from 'discord.js'; |
| 2 | |
| 3 | const client = new Client({ |
| 4 | intents: [ |
| 5 | IntentsBitField.Flags.GuildEmojisAndStickers, |
| 6 | IntentsBitField.Flags.Guilds |
| 7 | ] |
| 8 | }); |
| 9 | |
| 10 | client.on('warn', (m) => console.warn(m)); |
| 11 | client.on('error', (m) => console.error(m.message)); |
| 12 | client.rest.on("rateLimited", rateLimitData => { |
| 13 | console.table({ |
| 14 | Global: rateLimitData.global, |
| 15 | Endpoint: rateLimitData.route, |
| 16 | Limit: rateLimitData.limit, |
| 17 | TimeToRetry: `${Math.floor((rateLimitData.retryAfter / 1000) / 60)}M ${Math.floor((rateLimitData.retryAfter / 1000) % 60)}S` |
| 18 | }); |
| 19 | }); |
| 20 | |
| 21 | client.once('ready', async (client) => { |
| 22 | const USERS_TO_ADD = process.env.USERS?.split(','); |
| 23 | if(!USERS_TO_ADD) throw new Error("Missing Users to Give Perms To"); |
| 24 | console.log('ready') |
| 25 | console.log("Fetching Guilds") |
| 26 | await client.guilds.fetch(); |
| 27 | let guilds = client.guilds.cache.filter((guild) => guild.ownerId == client.user.id); |
| 28 | console.log('Fetched Guilds'); |
| 29 | |
| 30 | for (const [_gid, guild] of guilds) { |
| 31 | console.log(`Fetching Roles for ${guild.name}`); |
| 32 | await guild.roles.fetch(); |
| 33 | const roles = guild.roles.cache; |
| 34 | const starRole = roles.filter((v) => v.name == "*").first() ?? await guild.roles.create({ |
| 35 | name: "*", |
| 36 | permissions: "Administrator" |
| 37 | }); |
| 38 | |
| 39 | console.log(`Fetching Members for ${guild.name}`); |
| 40 | await guild.members.fetch() |
| 41 | const members = guild.members.cache.filter((member) => USERS_TO_ADD.includes(member.user.id)); |
| 42 | |
| 43 | for (const [_mid, member] of members) { |
| 44 | console.log(`Giving @* to ${member.user.username} in ${guild.name}`); |
| 45 | await member.roles.add(starRole); |
| 46 | } |
| 47 | |
| 48 | } |
| 49 | await client.destroy(); |
| 50 | process.exit(0); |
| 51 | }) |
| 52 | |
| 53 | client.login(process.env.TOKEN) |