2022-03-21 11:15:44 +00:00
# Discord.js Selfbot v13
2022-03-25 05:37:56 +00:00
- Install: < strong > ```npm i discord.js-selfbot-v13@latest```</ strong >
2022-03-22 10:09:50 +00:00
## Client Settings
< details >
< summary > < strong > Click to show< / strong > < / summary >
```js
new Client({
2022-03-28 14:35:39 +00:00
checkUpdate: true, // Check Package Update (Bot Ready) [Enable Default]
2022-03-25 05:37:56 +00:00
readyStatus: false, // Set Custom Status sync from Account (Bot Ready) [Disable Default]
2022-03-22 10:09:50 +00:00
})
```
< / details >
2022-03-21 11:15:44 +00:00
## User Settings
< details >
< summary > < strong > Click to show< / strong > < / summary >
```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}
*/
```
< / details >
## Discord User Info
< details >
< summary > < strong > Click to show< / strong > < / summary >
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,
connectedAccounds: [],
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
}
```
< / details >
## Discord User Friend / Blocked
< details >
< summary > < strong > Click to show< / strong > < / summary >
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,
2022-03-30 12:50:57 +00:00
note: null,
2022-03-21 11:15:44 +00:00
connectedAccounds: [],
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
}
```
< / details >
## Discord Guild set position
< details >
< summary > < strong > Click to show< / strong > < / summary >
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
2022-03-25 05:37:56 +00:00
Guild {}
2022-03-21 11:15:44 +00:00
```
< / details >
2022-03-21 13:12:36 +00:00
## Custom Status and RPC
< details >
< summary > < strong > Click to show< / strong > < / summary >
2022-03-21 15:24:08 +00:00
Custom Status
```js
2022-03-21 16:40:26 +00:00
const RichPresence = require('discord-rpc-contructor'); // My module :))
2022-03-21 15:24:08 +00:00
const custom = new RichPresence.CustomStatus()
2022-03-28 14:15:26 +00:00
.setUnicodeEmoji('🎮') // Set Unicode Emoji [Using one]
2022-03-25 05:37:56 +00:00
.setDiscordEmoji({ // Set Custom Emoji (Nitro Classic / Boost) [Using one]
2022-03-21 15:24:08 +00:00
name: 'nom',
id: '737373737373737373',
animated: false,
})
2022-03-28 14:15:26 +00:00
.setState('Testing') // Name of presence
2022-03-21 15:24:08 +00:00
.toDiscord();
client.user.setActivity(custom);
```
2022-03-22 10:09:50 +00:00
Rich Presence [Custom]
2022-03-21 15:24:08 +00:00
```js
2022-03-22 10:09:50 +00:00
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
2022-03-21 15:24:08 +00:00
```
2022-03-22 10:09:50 +00:00
< img src = 'https://cdn.discordapp.com/attachments/820557032016969751/955767445220646922/unknown.png' >
Rich Presence with Twitch / Spotify
```js
Update soon ~
```
< strong > How to get AssetID ?< / strong >
Code
```js
2022-03-28 13:46:18 +00:00
const RPC = require('discord-rpc-contructor');
2022-03-22 10:09:50 +00:00
// 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!
2022-03-21 13:12:36 +00:00
< / details >
2022-03-24 12:35:59 +00:00
## Interaction
< details >
2022-03-27 12:05:43 +00:00
< summary > Button Click< / summary >
2022-03-24 12:35:59 +00:00
```js
2022-03-27 12:05:43 +00:00
await Button.click(Message); // Message has button (v1)
//
await message.clickButton(buttonID); // Message has button (v2)
2022-03-24 12:35:59 +00:00
```
< / details >
2022-03-24 17:03:20 +00:00
< details >
2022-03-27 12:05:43 +00:00
< summary > Message Select Menu< / summary >
2022-03-24 17:03:20 +00:00
```js
2022-03-27 12:05:43 +00:00
await MessageSelectMenu.select(Message, options); // Message has menu (v1)
2022-03-24 17:03:20 +00:00
// value: ['value1', 'value2' , ...]
2022-03-27 12:05:43 +00:00
await message.selectMenu(menuID, options) // If message has >= 2 menu
await message.selectMenu(options) // If message has 1 menu
2022-03-24 17:03:20 +00:00
```
< / details >
2022-03-25 16:31:17 +00:00
< details >
2022-03-28 13:52:30 +00:00
< summary > Slash Command< / summary >
2022-03-25 16:31:17 +00:00
```js
2022-03-30 16:24:26 +00:00
// v1 [deprecated]
2022-03-28 13:46:18 +00:00
// v2
await Channel.sendSlash(botID, commandName, ['option1', 'option2']);
2022-03-30 16:12:56 +00:00
// 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']);
2022-03-25 16:31:17 +00:00
```
< / details >
< details >
2022-03-28 13:46:18 +00:00
< summary > Message Context Command< / summary >
2022-03-25 16:31:17 +00:00
```js
2022-03-30 16:24:26 +00:00
// v1 [deprecated]
2022-03-28 13:46:18 +00:00
// v2
await message.contextMenu(botID, commandName);
2022-03-25 16:31:17 +00:00
```
< / details >
2022-03-28 13:46:18 +00:00
< details >
< summary > Issue ?< / summary >
- 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/ )
< / details >
2022-03-24 12:35:59 +00:00
2022-04-01 05:09:46 +00:00
## 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)
< details >
< summary > < strong > Click to show< / strong > < / summary >
Code:
```js
const Discord = require('discord.js-selfbot-v13');
const w = new Discord.WebEmbed()
.setAuthor({ name: 'hello', url: 'https://google.com' })
.setColor('RED')
.setDescription('description uh')
.setProvider({ name: 'provider', url: 'https://google.com' })
.setTitle('This is Title')
2022-04-01 05:40:10 +00:00
.setURL('https://google.com')
2022-04-01 05:09:46 +00:00
.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',
);
/**
* w.toMessage(hidden: true | false, shorten: true | false) => Promise< string >
*/
// Normal mode (Auto shorten)
message.channel.send({ content: `${await w.toMessage()}` })
// Normal mode (Not shorten)
message.channel.send({ content: `${await w.toMessage(false, false)}` })
// Hidden mode (with shorten)
message.channel.send({ content: `${await w.toMessage(true, true)}` })
// Hidden mode (no shorten)
message.channel.send({ content: `${await w.toMessage(true, false)}` })
// Custom content + Shorten + Hidden
message.channel.send({ content: `Hello world ${await w.toMessage(true, true)}` })
// etc ...
```
### 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)
2022-04-01 05:39:33 +00:00
- < strong > PLEASE DON'T CREATE TOO MUCH EMBED WITH SHORTEN OPTION BECAUSE IT CAN OVERLOAD MY API (I USE API HOST BY HEROKU)</ strong >
2022-04-01 05:09:46 +00:00
< / details >
2022-03-30 12:50:57 +00:00
## User & ClientUser Method
2022-03-25 17:01:26 +00:00
< details >
< summary > Click to show< / summary >
```js
2022-03-30 12:50:57 +00:00
// HypeSquad
2022-03-25 17:01:26 +00:00
await client.user.setHypeSquad('HOUSE_BRAVERY');
2022-03-26 05:43:56 +00:00
await client.user.setHypeSquad('HOUSE_BRILLIANCE');
await client.user.setHypeSquad('HOUSE_BALANCE');
2022-03-30 12:50:57 +00:00
// 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
2022-03-31 13:21:53 +00:00
await client.user.setDiscriminator('1234', 'password'); // #1234 & Require Nitro
2022-03-30 12:50:57 +00:00
// 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');
2022-03-26 05:43:56 +00:00
```
< / details >
## Join Guild using Invite
< details >
< summary > Click to show< / summary >
```js
await client.fetchInvite('code').then(async invite => {
2022-03-26 12:01:36 +00:00
await invite.acceptInvite(true);
2022-03-26 05:43:56 +00:00
});
2022-03-25 17:01:26 +00:00
```
2022-03-26 12:01:36 +00:00
`invite.acceptInvite(true);` => Auto skip verify screen
2022-03-27 15:22:07 +00:00
2022-03-26 12:01:36 +00:00
< img src = 'https://cdn.discordapp.com/attachments/820557032016969751/957247688666132520/unknown.png' >
2022-03-30 16:24:26 +00:00
< strong > But if you are blocked by HCaptcha, this will not work< / strong >
2022-03-25 17:01:26 +00:00
< / details >
2022-03-26 13:55:05 +00:00
## Reddem Nitro ?
< details >
< summary > Click to show< / summary >
```js
await client.reddemNitro('code')
```
< / details >
2022-03-21 11:15:44 +00:00
## More features
< details >
< summary > < strong > Click to show< / strong > < / summary >
- I need requests from you! Ask questions, I will help you!
2022-03-22 10:09:50 +00:00
< / details >
## Warning
- This is a beta version, so there are some bugs.
2022-03-28 14:15:26 +00:00
- 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.