#Errors
1 messages · Page 1 of 1 (latest)
Show files
index.js:
const { Poru } = require('poru');
const { Spotify } = require('poru-spotify');
const fs = require('fs');
const path = require('path');
const config = require('./config');
const { setupMusicEvents } = require('./music/events');
// Console colors
const colors = {
CYAN: '\x1b[96m',
PURPLE: '\x1b[95m',
BLUE: '\x1b[94m',
GREEN: '\x1b[92m',
YELLOW: '\x1b[93m',
RED: '\x1b[91m',
WHITE: '\x1b[97m',
RESET: '\x1b[0m'
};
function print(msg, color = colors.WHITE) {
console.log(`${color}${msg}${colors.RESET}`);
}
// Discord client
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
GatewayIntentBits.GuildVoiceStates,
]
});
client.prefixCommands = new Collection();
// Load commands from commands folder
const commandsPath = path.join(__dirname, 'commands');
if (!fs.existsSync(commandsPath)) fs.mkdirSync(commandsPath);
const commandFiles = fs.readdirSync(commandsPath).filter(f => f.endsWith('.js'));
let loadedCommands = 0;
for (const file of commandFiles) {
const command = require(path.join(commandsPath, file));
if (command.name && command.run) {
client.prefixCommands.set(command.name.toLowerCase(), command);
if (command.aliases && Array.isArray(command.aliases))
command.aliases.forEach(a => client.prefixCommands.set(a.toLowerCase(), command));
loadedCommands++;
}
}
print(`✅ ${loadedCommands} commands loaded!`, colors.WHITE);
// Setup Poru nodes
const nodes = [{
name: 'Lavalink-1',
host: config.LAVALINK.HOST,
port: config.LAVALINK.PORT,
password: config.LAVALINK.PASSWORD,
secure: config.LAVALINK.SECURE
}];
client.poru = new Poru(client, nodes, {
library: 'discord.js',
defaultPlatform: 'youtube',
plugins: config.SPOTIFY.CLIENT_ID && config.SPOTIFY.CLIENT_SECRET
? [new Spotify({ clientID: config.SPOTIFY.CLIENT_ID, clientSecret: config.SPOTIFY.CLIENT_SECRET })]
: []
});
client.poru.on('nodeConnect', node => print(`Poru node connected: ${node.name}`, colors.GREEN));
client.poru.on('nodeError', (node, error) => print(`Poru node error (${node.name}): ${error.message}`, colors.RED));
client.poru.on('nodeDisconnect', node => print(`Poru node disconnected: ${node.name}`, colors.RED));
// Music events
setupMusicEvents(client);
// Bot ready
client.once('clientReady', () => {
print(`✅ Logged in as ${client.user.tag}`, colors.PURPLE);
client.user.setActivity('VRS Waveâ„¢', { type: 2 });
client.user.setStatus('dnd');
print('🌟 Status set to DND', colors.BLUE);
});
// Prefix command handler
client.on('messageCreate', async message => {
if (message.author.bot) return;
let content = null;
if (message.content.startsWith(config.PREFIX))
content = message.content.slice(config.PREFIX.length).trim();
else if (message.content.startsWith(config.MENTION_PREFIX))
content = message.content.slice(config.MENTION_PREFIX.length).trim();
else return;
const args = content.split(/ +/);
const cmdName = args.shift().toLowerCase();
const command = client.prefixCommands.get(cmdName);
if (!command) return;
try { await command.run(client, message, args); }
catch (err) {
console.error(`Error running command ${cmdName}:`, err);
message.reply('There was an error running this command!');
}
});
// Login
client.login(config.TOKEN).catch(err => print(`Failed to login: ${err.message}`, colors.RED));```
clients.js:
const { hexToDecimal } = require('../helpers/colourHelper');
const { MusicCard } = require('../helpers/MusicCard');
const { formatDuration, createProgressBar, hasControlPermission } = require('../helpers/musicHelper');
const config = require('../config');
const musicCard = new MusicCard();
function setupMusicEvents(client) {
client.poru.on('trackStart', async (player, track) => {
const channel = client.channels.cache.get(player.textChannel);
if (!channel) return;
player._lastPlayedTrack = track;
if (!player._autoplayHistory) player._autoplayHistory = new Set();
if (track.info?.identifier) player._autoplayHistory.add(track.info.identifier);
if (player.nowPlayingMessage && player.nowPlayingMessage.deletable) {
try { await player.nowPlayingMessage.delete().catch(() => {}); } catch {}
player.nowPlayingMessage = null;
}
if (player.updateInterval) clearInterval(player.updateInterval);
if (player.buttonCollector) {
try { player.buttonCollector.stop('newTrack'); } catch {}
player.buttonCollector = null;
}
const nowPlayingText = `## Now Playing...\n[${track.info.title}](${track.info.uri})\n\n`;
const firstRow = new ActionRowBuilder().addComponents(
new ButtonBuilder().setCustomId('music_pause_resume').setStyle(ButtonStyle.Secondary),
new ButtonBuilder().setCustomId('music_skip').setStyle(ButtonStyle.Secondary),
new ButtonBuilder().setCustomId('music_stop').setStyle(ButtonStyle.Secondary),
new ButtonBuilder().setCustomId('music_loop').setStyle(ButtonStyle.Secondary),
new ButtonBuilder().setCustomId('music_autoplay').setStyle(player.autoplayEnabled ? ButtonStyle.Primary : ButtonStyle.Secondary)
);
const secondRow = new ActionRowBuilder().addComponents(
new ButtonBuilder().setCustomId('music_lyrics').setStyle(ButtonStyle.Secondary),
new ButtonBuilder().setCustomId('music_queue').setStyle(ButtonStyle.Secondary),
new ButtonBuilder().setCustomId('music_shuffle').setStyle(ButtonStyle.Secondary),
new ButtonBuilder().setCustomId('music_filter').setStyle(ButtonStyle.Secondary),
new ButtonBuilder().setCustomId('music_favorite_add').setStyle(ButtonStyle.Secondary)
);
const container = new ContainerBuilder();
let musicCardAttachment = null;
if (config.MUSIC.ARTWORK_STYLE === 'MusicCard') {
try {
const buffer = await musicCard.generateNowPlayingCard({ track, position: player.position || 0 });
musicCardAttachment = new AttachmentBuilder(buffer, { name: 'nowplaying.png' });
container.addMediaGalleryComponents(
new MediaGalleryBuilder().addItems([new MediaGalleryItemBuilder().setURL('attachment://nowplaying.png')])
);
} catch (err) { console.error('Error generating MusicCard:', err); }
} else {
if (track.info.artworkUrl || track.info.image) {
container.addMediaGalleryComponents(
new MediaGalleryBuilder().addItems([new MediaGalleryItemBuilder().setURL(track.info.artworkUrl || track.info.image)])
);
}
}
container.addTextDisplayComponents(new TextDisplayBuilder().setContent(nowPlayingText));
container.addSeparatorComponents(new SeparatorBuilder().setSpacing(SeparatorSpacingSize.Small).setDivider(true));
container.addActionRowComponents(firstRow);
container.addActionRowComponents(secondRow);
container.addSeparatorComponents(new SeparatorBuilder().setSpacing(SeparatorSpacingSize.Small).setDivider(true));```
const msgOptions = { components: [container], flags: MessageFlags.IsPersistent | MessageFlags.IsComponentsV2 };
if (musicCardAttachment) msgOptions.files = [musicCardAttachment];
const msg = await channel.send(msgOptions);
player.nowPlayingMessage = msg;
const filter = i => i.isButton() && i.message.id === msg.id && i.guildId === player.guildId && i.customId.startsWith('music_');
player.buttonCollector = msg.createMessageComponentCollector({ componentType: ComponentType.Button, filter });
} catch (err) { console.error('Error sending now playing message:', err); }
});
}
module.exports = { setupMusicEvents };```
Alr
Show startup
@unkempt mesa bro once check ur startup setting and see that there is index.js or not
AeroX music bot
Yeh i try AeroX development music bot with dashboard but it didn't work
Aegis I inv u in server but u didn't come
See play command is not working
I'm using the same main files of aerox music bot, and changing the commands too ;-; could you help me fix this?
Bro once upload file again
Bec sometime
Some files got glitch and got deleted
Bruh, I'm changing the logic
Could you give me the correct path so I cannot face these errors
No I can't help
You've messed up all paths
Aegis can u see dm?
😭 alr