Files
firefrost-services/services/arbiter-3.0/scripts/fix-wolds-vaults.js
Claude f5a75d204f Fix Wold's Vaults - curly apostrophe
Role uses ' (curly) not ' (straight)

Chronicler: #71
2026-04-08 16:52:36 +00:00

167 lines
5.6 KiB
JavaScript

#!/usr/bin/env node
/**
* Quick Fix: Wold's Vaults
* The role uses a curly apostrophe ('), not straight (')
*/
require('dotenv').config({ path: '/opt/arbiter-3.0/.env' });
const { Client, GatewayIntentBits, ChannelType, PermissionFlagsBits } = require('discord.js');
const STANDARD_FORUM_TAGS = [
{ name: 'Builds', emoji: '🏗️' },
{ name: 'Help', emoji: '❓' },
{ name: 'Suggestion', emoji: '💡' },
{ name: 'Bug Report', emoji: '🐛' },
{ name: 'Achievement', emoji: '🎉' },
{ name: 'Guide', emoji: '📖' }
];
const SERVER = {
name: "Wold's Vaults",
roleName: "Wold's Vaults", // Curly apostrophe!
welcomeTitle: "Welcome to Wold's Vaults!",
welcomeBody: `🗄️ **Crack the vaults. Claim the treasure.**
A progression-focused pack centered around vault hunting. Gear up, dive in, and see what riches await those brave enough to face the challenges within.
**This forum is your space to:**
- 🏗️ Share your vault hauls
- ❓ Ask about vault strategies
- 💡 Suggest improvements
- 🎉 Celebrate legendary finds
---
**🎮 First Challenge: Your Best Vault Haul!**
What's the best thing you've pulled from a vault? Show us!`
};
const ADMIN_ROLES = ['Staff', '🛡️ Moderator', '👑 The Wizard', '💎 The Emissary', '✨ The Catalyst'];
function slugify(name) {
return name.toLowerCase().replace(/[^a-z0-9\s-]/g, '').replace(/\s+/g, '-').substring(0, 100);
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function main() {
console.log("🔧 Quick Fix: Wold's Vaults");
console.log('============================');
const client = new Client({
intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers]
});
try {
await client.login(process.env.DISCORD_BOT_TOKEN);
await new Promise(resolve => {
if (client.isReady()) resolve();
else client.once('ready', resolve);
});
console.log(`✅ Logged in as ${client.user.tag}`);
const guild = client.guilds.cache.get(process.env.GUILD_ID);
await guild.channels.fetch();
await guild.roles.fetch();
// Find role with curly apostrophe
const serverRole = guild.roles.cache.find(r => r.name === SERVER.roleName);
if (!serverRole) {
console.log(`❌ Role still not found: ${SERVER.roleName}`);
console.log('Available roles with "Wold":');
guild.roles.cache.filter(r => r.name.toLowerCase().includes('wold')).forEach(r => {
console.log(` "${r.name}" (${r.id})`);
});
return;
}
console.log(`✅ Found role: ${serverRole.name} (${serverRole.id})`);
const everyoneRole = guild.roles.everyone;
const wandererRole = guild.roles.cache.find(r => r.name === 'Wanderer');
const adminRoleIds = ADMIN_ROLES.map(name => guild.roles.cache.find(r => r.name === name)?.id).filter(Boolean);
const permissionOverwrites = [
{ id: everyoneRole.id, deny: [PermissionFlagsBits.ViewChannel, PermissionFlagsBits.SendMessages, PermissionFlagsBits.Connect] },
{ id: wandererRole.id, allow: [PermissionFlagsBits.ViewChannel], deny: [PermissionFlagsBits.SendMessages, PermissionFlagsBits.Connect] },
{ id: serverRole.id, allow: [PermissionFlagsBits.ViewChannel, PermissionFlagsBits.SendMessages, PermissionFlagsBits.Connect, PermissionFlagsBits.ReadMessageHistory] },
...adminRoleIds.map(roleId => ({
id: roleId,
allow: [PermissionFlagsBits.ViewChannel, PermissionFlagsBits.SendMessages, PermissionFlagsBits.Connect, PermissionFlagsBits.ReadMessageHistory]
}))
];
// Create category
console.log(`Creating category: 🎮 ${SERVER.name}`);
const category = await guild.channels.create({
name: `🎮 ${SERVER.name}`,
type: ChannelType.GuildCategory,
permissionOverwrites,
reason: 'Task #98 Fix - Chronicler #71'
});
console.log(`✅ Created category: ${category.id}`);
await sleep(500);
// Create chat
const chat = await guild.channels.create({
name: `${slugify(SERVER.name)}-chat`,
type: ChannelType.GuildText,
parent: category.id,
reason: 'Task #98 Fix - Chronicler #71'
});
console.log(`✅ Created: ${chat.name}`);
await sleep(500);
// Create in-game
const ingame = await guild.channels.create({
name: `${slugify(SERVER.name)}-in-game`,
type: ChannelType.GuildText,
parent: category.id,
reason: 'Task #98 Fix - Chronicler #71'
});
console.log(`✅ Created: ${ingame.name}`);
await sleep(500);
// Create forum
const forum = await guild.channels.create({
name: `${slugify(SERVER.name)}-forum`,
type: ChannelType.GuildForum,
parent: category.id,
availableTags: STANDARD_FORUM_TAGS.map(tag => ({ name: tag.name, emoji: { name: tag.emoji } })),
reason: 'Task #98 Fix - Chronicler #71'
});
console.log(`✅ Created forum: ${forum.name}`);
await sleep(500);
// Welcome post
const welcomeThread = await forum.threads.create({
name: SERVER.welcomeTitle,
message: { content: SERVER.welcomeBody },
reason: 'Task #98 Fix - Chronicler #71'
});
console.log(`✅ Posted welcome: ${welcomeThread.name}`);
await sleep(500);
// Create voice
const voice = await guild.channels.create({
name: SERVER.name,
type: ChannelType.GuildVoice,
parent: category.id,
reason: 'Task #98 Fix - Chronicler #71'
});
console.log(`✅ Created voice: ${voice.name}`);
console.log('');
console.log("🎉 Wold's Vaults — COMPLETE!");
} catch (error) {
console.error('❌ ERROR:', error.message);
} finally {
client.destroy();
}
}
main();