# Discord.js Selfbot v13 - Install: ```npm i discord.js-selfbot-v13@latest``` ## Client Settings
Click to show ```js new Client({ checkUpdate: true, // Check Package Update (Bot Ready) [Enable Default] readyStatus: false, // Set Custom Status sync from Account (Bot Ready) [Disable Default] }) ```
## User Settings
Click to show ```js client.setting // Return Data Setting User; client.setting.setDisplayCompactMode(true | false); // Message Compact Mode client.setting.setTheme('dark' | 'light'); // Discord App theme client.setting.setLocale(value); // Set Language /** * * Locale Setting, must be one of: * * `DANISH` * * `GERMAN` * * `ENGLISH_UK` * * `ENGLISH_US` * * `SPANISH` * * `FRENCH` * * `CROATIAN` * * `ITALIAN` * * `LITHUANIAN` * * `HUNGARIAN` * * `DUTCH` * * `NORWEGIAN` * * `POLISH` * * `BRAZILIAN_PORTUGUESE` * * `ROMANIA_ROMANIAN` * * `FINNISH` * * `SWEDISH` * * `VIETNAMESE` * * `TURKISH` * * `CZECH` * * `GREEK` * * `BULGARIAN` * * `RUSSIAN` * * `UKRAINIAN` * * `HINDI` * * `THAI` * * `CHINA_CHINESE` * * `JAPANESE` * * `TAIWAN_CHINESE` * * `KOREAN` * @param {string} value * @returns {locale} */ ```
## Discord User Info
Click to show Code: ```js GuildMember.user.getProfile(); // or User.getProfile(); ``` Response ```js User { id: '721746046543331449', bot: false, system: false, flags: UserFlagsBitField { bitfield: 256 }, friend: false, blocked: false, connectedAccounts: [], premiumSince: 1623357181151, premiumGuildSince: 0, mutualGuilds: Collection(3) [Map] { '906765260017516605' => { id: '906765260017516605', nick: null }, '809133733591384155' => { id: '809133733591384155', nick: 'uwu' }, '926065180788531261' => { id: '926065180788531261', nick: 'shiro' } }, username: 'Shiraori', discriminator: '1782', avatar: 'f9ba7fb35b223e5f1a12eb910faa40c2', banner: undefined, accentColor: undefined } ```
## Discord User Friend / Blocked
Click to show Code: ```js GuildMember.user.setFriend(); User.unFriend(); Message.member.user.sendFriendRequest(); // or GuildMember.user.setBlock(); User.unBlock(); ``` Response ```js User { id: '721746046543331449', bot: false, system: false, flags: UserFlagsBitField { bitfield: 256 }, friend: false, blocked: false, note: null, connectedAccounts: [], premiumSince: 1623357181151, premiumGuildSince: 0, mutualGuilds: Collection(3) [Map] { '906765260017516605' => { id: '906765260017516605', nick: null }, '809133733591384155' => { id: '809133733591384155', nick: 'uwu' }, '926065180788531261' => { id: '926065180788531261', nick: 'shiro' } }, username: 'Shiraori', discriminator: '1782', avatar: 'f9ba7fb35b223e5f1a12eb910faa40c2', banner: undefined, accentColor: undefined } ```
## Discord Guild set position
Click to show Code: ```js guild.setPosition(position, type, folderID); // Position: The guild's index in the directory or out of the directory // Type: // + 'FOLDER': Move guild to folder // + 'HOME': Move the guild out of the directory // FolderID: The folder's ID , if you want to move the guild to a folder ``` Response ```js Guild {} ```
## Custom Status and RPC
Click to show Custom Status ```js const RichPresence = require('discord-rpc-contructor'); // My module :)) const custom = new RichPresence.CustomStatus() .setUnicodeEmoji('🎮') // Set Unicode Emoji [Using one] .setDiscordEmoji({ // Set Custom Emoji (Nitro Classic / Boost) [Using one] name: 'nom', id: '737373737373737373', animated: false, }) .setState('Testing') // Name of presence .toDiscord(); client.user.setActivity(custom); ``` Rich Presence [Custom] ```js const RPC = require('discord-rpc-contructor'); const r = new RPC.Rpc() .setApplicationId('817229550684471297') .setType(0) .setState('State') .setName('Name') .setDetails('Details') .setParty({ size: [1, 2], id: RPC.uuid(), }) .setStartTimestamp(Date.now()) .setAssetsLargeImage('929325841350000660') .setAssetsLargeText('Youtube') .setAssetsSmallImage('895316294222635008') .setAssetsSmallText('Bot') client.user.setActivity(r.toDiscord().game); // Button not working ``` Rich Presence with Twitch / Spotify ```js Update soon ~ ``` How to get AssetID ? Code ```js const RPC = require('discord-rpc-contructor'); // Bot ID RPC.getRpcImages('817229550684471297').then(console.log); ``` Return ```js // ID is AssetID [ { id: '838629816881381376', type: 1, name: 'honkai' }, { id: '853533658250084352', type: 1, name: 'vscode' }, { id: '895316294222635008', type: 1, name: 'botsagiri' }, { id: '929324633063292929', type: 1, name: 'soundcloud' }, { id: '929324634858479666', type: 1, name: 'spotify' }, { id: '929325841350000660', type: 1, name: 'youtube' } ] ``` You can cache to use these files, do not run this function too much because it will be rate limit And you can change the status 5 times every 20 seconds!
## Interaction
Button Click ```js await Button.click(Message); // Message has button (v1) // await message.clickButton(buttonID); // Message has button (v2) ```
Message Select Menu ```js await MessageSelectMenu.select(Message, options); // Message has menu (v1) // value: ['value1', 'value2' , ...] await message.selectMenu(menuID, options) // If message has >= 2 menu await message.selectMenu(options) // If message has 1 menu ```
Slash Command ```js // v1 [deprecated] // v2 await Channel.sendSlash(botID, commandName, ['option1', 'option2']); // Eg /addrole roleID: 12345678987654321 userID: 98765432123456789 // => await Channel.sendSlash(botID, 'addrole', ['12345678987654321', '98765432123456789']); // Command group await Channel.sendSlash(botID, commandName, ['sub command', 'option1', 'option2']); // Eg: /role add roleID: 12345678987654321 userID: 98765432123456789 // => await Channel.sendSlash(botID, 'role', ['add', '12345678987654321', '98765432123456789']); ```
Message Context Command ```js // v1 [deprecated] // v2 await message.contextMenu(botID, commandName); ```
Issue ? - It has some minor bugs. - ErrorCode: 20012 => You are not authorized to perform this action on this application - I tried to fix it by creating 1 DMs with bot - In this way, all Slash commands can be obtained - I will try to find another way to not need to create DMs with Bot anymore - Credit: [Here](https://www.reddit.com/r/Discord_selfbots/comments/tczprx/discum_help_creating_a_selfbot_that_can_do_ping/)
## MessageEmbed ? - Because Discord has removed the ability to send Embeds in its API, that means MessageEmbed is unusable. But I have created a constructor that uses oEmbed from [page](https://embed.benny.fun/) (known to this site by module py discord.py-self_embed, thanks)
Click to show Code: ```js const Discord = require('discord.js-selfbot-v13'); const w = new Discord.WebEmbed({ shorten: true, hidden: false // if you send this embed with MessagePayload.options.embeds, it must set to false }) .setAuthor({ name: 'hello', url: 'https://google.com' }) .setColor('RED') .setDescription('description uh') .setProvider({ name: 'provider', url: 'https://google.com' }) .setTitle('This is Title') .setURL('https://google.com') .setImage( 'https://cdn.discordapp.com/attachments/820557032016969751/959093026695835648/unknown.png', ) .setVideo( 'https://cdn.discordapp.com/attachments/877060758092021801/957691816143097936/The_Quintessential_Quintuplets_And_Rick_Astley_Autotune_Remix.mp4', ); message.channel.send({ content: `Hello world`, embeds: [w] }) // Patched :) ``` ### Features & Issues - No Timestamp, Footer, Thumbnail (but embed video, thumbnail working), Fields, Author iconURL - Video with Embed working - Description limit 350 characters - If you use hidden mode you must make sure your custom content is less than 1000 characters without nitro (because hidden mode uses 1000 characters + URL)
## User & ClientUser Method
Click to show ```js // HypeSquad await client.user.setHypeSquad('HOUSE_BRAVERY'); await client.user.setHypeSquad('HOUSE_BRILLIANCE'); await client.user.setHypeSquad('HOUSE_BALANCE'); // Set Note to User await user.setNote('Hello World'); // Set Username await client.user.setUsername('new username', 'password'); // Set Accent Color await client.user.setAccentColor('RED'); // set color same as Embed.setColor() // Set Banner await client.user.setBanner('image file / image url'); // same as setAvatar & Require Nitro level 2 // Set Discord Tag await client.user.setDiscriminator('1234', 'password'); // #1234 & Require Nitro // Set About me await client.user.setAboutMe('Hello World'); // Set Email await client.user.setEmail('aiko.dev@mail.nezukobot.vn', 'password'); // It is clone email =)) // Change Password await client.user.setPassword('old password', 'new password'); // Disable Account await client.user.disableAccount('password'); // Delete Account [WARNING] Cannot be changed once used! await client.user.deleteAccount('password'); ```
## Join Guild using Invite
Click to show ```js await client.fetchInvite('code').then(async invite => { await invite.acceptInvite(true); }); ``` `invite.acceptInvite(true);` => Auto skip verify screen But if you are blocked by HCaptcha, this will not work
## Reddem Nitro ?
Click to show ```js await client.reddemNitro('code') ```
## More features
Click to show - I need requests from you! Ask questions, I will help you!
## Warning - This is a beta version, so there are some bugs. - If you use the `Client.destroy()` function, for an account that uses 2FA, it will cause a logout and the Token will no longer be usable.