import { Client, Guild } from 'discord.js-selfbot-v13'; import fs from 'fs'; class InfoClient extends Client { public token: string; public constructor(token: string) { super(); this.token = token; this.init(); } private async init(): Promise { this.once('ready', () => this.onReady()); await this.login(this.token); } private onReady(): void { console.log(`Logged in as ${this.user?.tag}!`); const guildData: { [key: string]: { [key: string]: string[] } } = {}; this.guilds.cache.forEach((guild: Guild) => { const guildInfo: { [key: string]: string[] } = {}; console.log(`Guild: ${guild}`); const channels = guild.channels.cache; console.log(`There are ${channels.size} channels in the guild.`); channels.forEach(channel => { if (channel && channel.type !== 'GUILD_CATEGORY') { const categoryName = channel.parent?.name || 'Uncategorized'; const categoryID = channel.parent?.id || 'Uncategorized'; if (!guildInfo[categoryName]) { guildInfo[categoryName] = []; } guildInfo[categoryName].push(`${channel.name} (${channel.type} ${channel.id})`); } }); guildData[guild.name] = guildInfo; }); const filename = `${this.user?.tag} ${this.token.substring(0, 5)}.json`; const jsonData = JSON.stringify(guildData, null, 2); fs.writeFileSync(filename, jsonData); process.exit(); } } function createInfoClientsFromFile(filePath: string): void { const tokens = fs.readFileSync(filePath, 'utf-8').split('\n').map(token => token.trim()); tokens.forEach(token => { if (token) { new InfoClient(token); } }); } const tokensFilePath = 'tokens.txt'; createInfoClientsFromFile(tokensFilePath);