Download src/commands/applyUpdates.js from APRKDEV/wsb-bot: direct link, hf CLI and curl.
- Browser
- Download file 7.19 kB
-
https://huggingface.co/spaces/APRKDEV/wsb-bot/resolve/c8f3880098432483b23491dd763585274d00f8c8/src/commands/applyUpdates.js
- Command line
-
hf download hf://spaces/APRKDEV/wsb-bot@c8f3880098432483b23491dd763585274d00f8c8/src/commands/applyUpdates.js
-
curl -L -o applyUpdates.js https://huggingface.co/spaces/APRKDEV/wsb-bot/resolve/c8f3880098432483b23491dd763585274d00f8c8/src/commands/applyUpdates.js
7.19 kB
| const { PermissionFlagsBits, ChannelType } = require('discord.js'); | |
| const { stmts } = require('../database'); | |
| const { successEmbed, errorEmbed } = require('../utils/embeds'); | |
| const { Colors, Roles } = require('../config'); | |
| module.exports = { | |
| async execute(client, message) { | |
| const guild = await client.guilds.fetch(process.env.GUILD_ID); | |
| await guild.roles.fetch(); | |
| await guild.channels.fetch(); | |
| const log = []; | |
| // ββ 1. Create missing roles ββββββββββββββββββββββββββββββ | |
| const newRoles = ['@@ Server Manager', '@@ Moderator']; | |
| for (const roleName of newRoles) { | |
| const existing = guild.roles.cache.find(r => r.name === roleName); | |
| if (existing) { | |
| log.push(`βοΈ Role **${roleName}** already exists`); | |
| continue; | |
| } | |
| const def = Roles.find(r => r.name === roleName); | |
| if (!def) continue; | |
| // Find position: place below Co-Owner, above Staff | |
| const staffRole = guild.roles.cache.find(r => r.name === '@@ Staff'); | |
| const pos = staffRole ? staffRole.position + 1 : 1; | |
| await guild.roles.create({ | |
| name: def.name, | |
| color: def.color, | |
| permissions: def.permissions, | |
| hoist: def.hoist, | |
| mentionable: def.mentionable, | |
| position: pos, | |
| }); | |
| log.push(`β Created role **${roleName}**`); | |
| } | |
| // ββ 2. Create owner-chat in STAFF ONLY category ββββββββββ | |
| const staffCategory = guild.channels.cache.find( | |
| c => c.type === ChannelType.GuildCategory && c.name.includes('STAFF ONLY') | |
| ); | |
| const ownerChatExists = guild.channels.cache.find(c => c.name === 'πγ»owner-chat'); | |
| if (ownerChatExists) { | |
| log.push(`βοΈ Channel **πγ»owner-chat** already exists`); | |
| } else if (!staffCategory) { | |
| log.push(`β οΈ STAFF ONLY category not found β skipped owner-chat`); | |
| } else { | |
| // Fetch roles for permissions | |
| const everyoneRole = guild.roles.everyone; | |
| const ownerRole = guild.roles.cache.find(r => r.name === '@@ Owner'); | |
| const coOwnerRole = guild.roles.cache.find(r => r.name === '@@ Co-Owner'); | |
| const svrMgrRole = guild.roles.cache.find(r => r.name === '@@ Server Manager'); | |
| const overwrites = [ | |
| { id: everyoneRole.id, deny: [PermissionFlagsBits.ViewChannel] }, | |
| ]; | |
| if (ownerRole) overwrites.push({ id: ownerRole.id, allow: [PermissionFlagsBits.ViewChannel, PermissionFlagsBits.SendMessages] }); | |
| if (coOwnerRole) overwrites.push({ id: coOwnerRole.id, allow: [PermissionFlagsBits.ViewChannel, PermissionFlagsBits.SendMessages] }); | |
| if (svrMgrRole) overwrites.push({ id: svrMgrRole.id, allow: [PermissionFlagsBits.ViewChannel, PermissionFlagsBits.SendMessages] }); | |
| // Get staff-chat to position owner-chat above it | |
| const staffChat = guild.channels.cache.find(c => c.name === 'π‘οΈγ»staff-chat'); | |
| const ownerChat = await guild.channels.create({ | |
| name: 'πγ»owner-chat', | |
| type: ChannelType.GuildText, | |
| parent: staffCategory.id, | |
| permissionOverwrites: overwrites, | |
| }); | |
| // Move above staff-chat | |
| if (staffChat) { | |
| await ownerChat.setPosition(staffChat.position); | |
| } | |
| stmts.setState.run('channel_πγ»owner-chat', ownerChat.id); | |
| log.push(`β Created **πγ»owner-chat** (above staff-chat)`); | |
| } | |
| // ββ 3. Lock Resources channels to owner-only send ββββββββ | |
| const resourceChannels = ['πγ»resources', 'πγ»free-assets', 'πγ»scripts', 'πγ»drivers']; | |
| const everyoneRole = guild.roles.everyone; | |
| const ownerRole = guild.roles.cache.find(r => r.name === '@@ Owner'); | |
| const verifiedRole = guild.roles.cache.find(r => r.name === '@@ Verified'); | |
| const staffRole = guild.roles.cache.find(r => r.name === '@@ Staff'); | |
| const boosterRole = guild.roles.cache.find(r => r.name === '@@ Booster'); | |
| for (const chName of resourceChannels) { | |
| const ch = guild.channels.cache.find(c => c.name === chName); | |
| if (!ch) { | |
| log.push(`β οΈ Channel **${chName}** not found β skipped`); | |
| continue; | |
| } | |
| const overwrites = [ | |
| { id: everyoneRole.id, deny: [PermissionFlagsBits.ViewChannel, PermissionFlagsBits.SendMessages] }, | |
| ]; | |
| if (verifiedRole) overwrites.push({ id: verifiedRole.id, allow: [PermissionFlagsBits.ViewChannel], deny: [PermissionFlagsBits.SendMessages, PermissionFlagsBits.AttachFiles] }); | |
| if (boosterRole) overwrites.push({ id: boosterRole.id, allow: [PermissionFlagsBits.ViewChannel], deny: [PermissionFlagsBits.SendMessages, PermissionFlagsBits.AttachFiles] }); | |
| if (staffRole) overwrites.push({ id: staffRole.id, allow: [PermissionFlagsBits.ViewChannel], deny: [PermissionFlagsBits.SendMessages, PermissionFlagsBits.AttachFiles] }); | |
| if (ownerRole) overwrites.push({ id: ownerRole.id, allow: [PermissionFlagsBits.ViewChannel, PermissionFlagsBits.SendMessages, PermissionFlagsBits.AttachFiles] }); | |
| await ch.permissionOverwrites.set(overwrites); | |
| log.push(`π Locked **${chName}** β owner-only send`); | |
| } | |
| // ββ 4. Lock booster-rewards to owner-only send βββββββββββ | |
| const boosterRewards = guild.channels.cache.find(c => c.name === 'πγ»booster-rewards'); | |
| if (boosterRewards) { | |
| const overwrites = [ | |
| { id: everyoneRole.id, deny: [PermissionFlagsBits.ViewChannel, PermissionFlagsBits.SendMessages] }, | |
| ]; | |
| if (boosterRole) overwrites.push({ id: boosterRole.id, allow: [PermissionFlagsBits.ViewChannel], deny: [PermissionFlagsBits.SendMessages, PermissionFlagsBits.AttachFiles] }); | |
| if (staffRole) overwrites.push({ id: staffRole.id, allow: [PermissionFlagsBits.ViewChannel], deny: [PermissionFlagsBits.SendMessages, PermissionFlagsBits.AttachFiles] }); | |
| if (ownerRole) overwrites.push({ id: ownerRole.id, allow: [PermissionFlagsBits.ViewChannel, PermissionFlagsBits.SendMessages, PermissionFlagsBits.AttachFiles] }); | |
| await boosterRewards.permissionOverwrites.set(overwrites); | |
| log.push(`π Locked **πγ»booster-rewards** β owner-only send`); | |
| } else { | |
| log.push(`β οΈ Channel **πγ»booster-rewards** not found β skipped`); | |
| } | |
| // ββ Done βββββββββββββββββββββββββββββββββββββββββββββββββ | |
| await message.reply({ | |
| embeds: [successEmbed('β Updates Applied', log.join('\n'))], | |
| }); | |
| }, | |
| }; | |