From 6af816d45751a774f7503956ef0cc9a50a1acafd Mon Sep 17 00:00:00 2001
From: March 7th <71698422+aiko-chan-ai@users.noreply.github.com>
Date: Sun, 10 Apr 2022 20:11:20 +0700
Subject: [PATCH] Document .-.
maybe
---
DOCUMENT.md | 430 +--------------------------------------
Document/ClientOption.md | 8 +
Document/Guild.md | 66 ++++++
Document/HTTPOption.md | 22 ++
Document/Message.md | 94 +++++++++
Document/User.md | 235 +++++++++++++++++++++
6 files changed, 426 insertions(+), 429 deletions(-)
create mode 100644 Document/ClientOption.md
create mode 100644 Document/Guild.md
create mode 100644 Document/HTTPOption.md
create mode 100644 Document/Message.md
create mode 100644 Document/User.md
diff --git a/DOCUMENT.md b/DOCUMENT.md
index 14b5b9a..2d09529 100644
--- a/DOCUMENT.md
+++ b/DOCUMENT.md
@@ -3,435 +3,7 @@
# [Risky actions](https://github.com/Merubokkusu/Discord-S.C.U.M/issues/66)
-## HTTP options:
-
-```js
-/* If you want to change the API version from v9 to v10, here are the instructions */
-const { Client } = require('discord.js-selfbot-v13');
-const client = new Client({
- ws: {
- version: 10
- },
- http: {
- version: 10,
- header: {
- cookie: '', // If you want to use cookies, here is the place
- }
- }
-});
-/* Discord fingerprint ??? idk ... */
-/**
- * const { data } = await axios.get('https://discord.com/api/v9/experiments');
- * client.options.http.header['x-fingerprint'] = data.fingerprint
- */
-```
-
-## 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]
- autoCookie: true, // Auto added Cookie and Fingerprint [Enable Default](https://github.com/aiko-chan-ai/discord.js-selfbot-v13/blob/main/DOCUMENT.md#http-options)
-})
-```
-
-
-## 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 },
- 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 },
- 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 {}
-```
-
-
-## Group DM
-
-Click to show
-
-Code:
-```js
-/* Create */
-const memberAdd = [
- client.users.cache.get('id1'),
- client.users.cache.get('id2'),
- ...
- client.users.cache.get('id9')
-]
-// Max member add to Group: 9, Min: 2
-await client.channels.createGroupDM(memberAdd);
-/* Edit */
-const groupDM = client.channels.cache.get('id');
-await groupDM.setName('New Name');
-await groupDM.setIcon('iconURL');
-await groupDM.getInvite();
-await groupDM.fetchInvite();
-await groupDM.removeInvite(invite);
-await groupDM.addMember(user);
-await groupDM.removeMember(user);
-/* Text Channel not Bulk delete */
-await groupDM.send('Hello World');
-await groupDM.delete(); // Leave
-```
-
-
-
-## 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')
-```
-
+# Quick links
## More features
diff --git a/Document/ClientOption.md b/Document/ClientOption.md
new file mode 100644
index 00000000..fa073d6
--- /dev/null
+++ b/Document/ClientOption.md
@@ -0,0 +1,8 @@
+## Client Settings
+```js
+new Client({
+ checkUpdate: true, // Check Package Update (Bot Ready) [Enable Default]
+ readyStatus: false, // Set Custom Status sync from Account (Bot Ready) [Disable Default]
+ autoCookie: true, // Auto added Cookie and Fingerprint [Enable Default](https://github.com/aiko-chan-ai/discord.js-selfbot-v13/blob/main/DOCUMENT.md#http-options)
+})
+```
\ No newline at end of file
diff --git a/Document/Guild.md b/Document/Guild.md
new file mode 100644
index 00000000..f540875
--- /dev/null
+++ b/Document/Guild.md
@@ -0,0 +1,66 @@
+## 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 {}
+```
+
+
+## Group DM
+
+Click to show
+
+Code:
+```js
+/* Create */
+const memberAdd = [
+ client.users.cache.get('id1'),
+ client.users.cache.get('id2'),
+ ...
+ client.users.cache.get('id9')
+]
+// Max member add to Group: 9, Min: 2
+await client.channels.createGroupDM(memberAdd);
+/* Edit */
+const groupDM = client.channels.cache.get('id');
+await groupDM.setName('New Name');
+await groupDM.setIcon('iconURL');
+await groupDM.getInvite();
+await groupDM.fetchInvite();
+await groupDM.removeInvite(invite);
+await groupDM.addMember(user);
+await groupDM.removeMember(user);
+/* Text Channel not Bulk delete */
+await groupDM.send('Hello World');
+await groupDM.delete(); // Leave
+```
+
+
+
+
+## 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
+
diff --git a/Document/HTTPOption.md b/Document/HTTPOption.md
new file mode 100644
index 00000000..1d7f6c1
--- /dev/null
+++ b/Document/HTTPOption.md
@@ -0,0 +1,22 @@
+## HTTP options:
+
+```js
+/* If you want to change the API version from v9 to v10, here are the instructions */
+const { Client } = require('discord.js-selfbot-v13');
+const client = new Client({
+ ws: {
+ version: 10
+ },
+ http: {
+ version: 10,
+ header: {
+ cookie: '', // If you want to use cookies, here is the place
+ }
+ }
+});
+/* Discord fingerprint ??? idk ... */
+/**
+ * const { data } = await axios.get('https://discord.com/api/v9/experiments');
+ * client.options.http.header['x-fingerprint'] = data.fingerprint
+ */
+```
\ No newline at end of file
diff --git a/Document/Message.md b/Document/Message.md
new file mode 100644
index 00000000..0324561
--- /dev/null
+++ b/Document/Message.md
@@ -0,0 +1,94 @@
+## 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.
+> DiscordAPIError [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)
+- Update: This [page](https://embed.benny.fun/) is no longer available.
+
+
+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)
+
+
\ No newline at end of file
diff --git a/Document/User.md b/Document/User.md
new file mode 100644
index 00000000..85d0129
--- /dev/null
+++ b/Document/User.md
@@ -0,0 +1,235 @@
+## 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 },
+ 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 },
+ 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
+}
+```
+
+
+## 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!
+
+
+## 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');
+```
+
+
+
+## Reddem Nitro ?
+
+Click to show
+
+```js
+await client.reddemNitro('code')
+```
+