Document .-.
maybe
This commit is contained in:
parent
d900f7321c
commit
6af816d457
430
DOCUMENT.md
430
DOCUMENT.md
@ -3,435 +3,7 @@
|
|||||||
|
|
||||||
# <strong>[Risky actions](https://github.com/Merubokkusu/Discord-S.C.U.M/issues/66)</strong>
|
# <strong>[Risky actions](https://github.com/Merubokkusu/Discord-S.C.U.M/issues/66)</strong>
|
||||||
|
|
||||||
## HTTP options:
|
# Quick links
|
||||||
|
|
||||||
```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
|
|
||||||
<details>
|
|
||||||
<summary><strong>Click to show</strong></summary>
|
|
||||||
|
|
||||||
```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)
|
|
||||||
})
|
|
||||||
```
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## 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 },
|
|
||||||
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
|
|
||||||
}
|
|
||||||
```
|
|
||||||
</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 },
|
|
||||||
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
|
|
||||||
}
|
|
||||||
```
|
|
||||||
</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
|
|
||||||
Guild {}
|
|
||||||
```
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## Group DM
|
|
||||||
<details>
|
|
||||||
<summary><strong>Click to show</strong></summary>
|
|
||||||
|
|
||||||
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
|
|
||||||
```
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## Custom Status and RPC
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary><strong>Click to show</strong></summary>
|
|
||||||
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
|
|
||||||
```
|
|
||||||
<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
|
|
||||||
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!
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## Interaction
|
|
||||||
<details>
|
|
||||||
<summary>Button Click</summary>
|
|
||||||
|
|
||||||
```js
|
|
||||||
await Button.click(Message); // Message has button (v1)
|
|
||||||
//
|
|
||||||
await message.clickButton(buttonID); // Message has button (v2)
|
|
||||||
```
|
|
||||||
</details>
|
|
||||||
<details>
|
|
||||||
<summary>Message Select Menu</summary>
|
|
||||||
|
|
||||||
```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
|
|
||||||
```
|
|
||||||
</details>
|
|
||||||
<details>
|
|
||||||
<summary>Slash Command</summary>
|
|
||||||
|
|
||||||
```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']);
|
|
||||||
```
|
|
||||||
</details>
|
|
||||||
<details>
|
|
||||||
<summary>Message Context Command</summary>
|
|
||||||
|
|
||||||
```js
|
|
||||||
// v1 [deprecated]
|
|
||||||
// v2
|
|
||||||
await message.contextMenu(botID, commandName);
|
|
||||||
```
|
|
||||||
</details>
|
|
||||||
<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>
|
|
||||||
|
|
||||||
## 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({
|
|
||||||
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)
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
|
|
||||||
## User & ClientUser Method
|
|
||||||
<details>
|
|
||||||
<summary>Click to show</summary>
|
|
||||||
|
|
||||||
```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');
|
|
||||||
```
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## Join Guild using Invite
|
|
||||||
<details>
|
|
||||||
<summary>Click to show</summary>
|
|
||||||
|
|
||||||
```js
|
|
||||||
await client.fetchInvite('code').then(async invite => {
|
|
||||||
await invite.acceptInvite(true);
|
|
||||||
});
|
|
||||||
```
|
|
||||||
`invite.acceptInvite(true);` => Auto skip verify screen
|
|
||||||
|
|
||||||
<img src= 'https://cdn.discordapp.com/attachments/820557032016969751/957247688666132520/unknown.png'>
|
|
||||||
|
|
||||||
<strong>But if you are blocked by HCaptcha, this will not work</strong>
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## Reddem Nitro ?
|
|
||||||
<details>
|
|
||||||
<summary>Click to show</summary>
|
|
||||||
|
|
||||||
```js
|
|
||||||
await client.reddemNitro('code')
|
|
||||||
```
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## More features
|
## More features
|
||||||
|
|
||||||
|
8
Document/ClientOption.md
Normal file
8
Document/ClientOption.md
Normal file
@ -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)
|
||||||
|
})
|
||||||
|
```
|
66
Document/Guild.md
Normal file
66
Document/Guild.md
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
## 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
|
||||||
|
Guild {}
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## Group DM
|
||||||
|
<details>
|
||||||
|
<summary><strong>Click to show</strong></summary>
|
||||||
|
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
|
||||||
|
## Join Guild using Invite
|
||||||
|
<details>
|
||||||
|
<summary>Click to show</summary>
|
||||||
|
|
||||||
|
```js
|
||||||
|
await client.fetchInvite('code').then(async invite => {
|
||||||
|
await invite.acceptInvite(true);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
`invite.acceptInvite(true);` => Auto skip verify screen
|
||||||
|
|
||||||
|
<img src= 'https://cdn.discordapp.com/attachments/820557032016969751/957247688666132520/unknown.png'>
|
||||||
|
|
||||||
|
<strong>But if you are blocked by HCaptcha, this will not work</strong>
|
||||||
|
</details>
|
22
Document/HTTPOption.md
Normal file
22
Document/HTTPOption.md
Normal file
@ -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
|
||||||
|
*/
|
||||||
|
```
|
94
Document/Message.md
Normal file
94
Document/Message.md
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
## Interaction
|
||||||
|
<details>
|
||||||
|
<summary>Button Click</summary>
|
||||||
|
|
||||||
|
```js
|
||||||
|
await Button.click(Message); // Message has button (v1)
|
||||||
|
//
|
||||||
|
await message.clickButton(buttonID); // Message has button (v2)
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
<details>
|
||||||
|
<summary>Message Select Menu</summary>
|
||||||
|
|
||||||
|
```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
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
<details>
|
||||||
|
<summary>Slash Command</summary>
|
||||||
|
|
||||||
|
```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']);
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
<details>
|
||||||
|
<summary>Message Context Command</summary>
|
||||||
|
|
||||||
|
```js
|
||||||
|
// v1 [deprecated]
|
||||||
|
// v2
|
||||||
|
await message.contextMenu(botID, commandName);
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
<details>
|
||||||
|
<summary>Issue ?</summary>
|
||||||
|
|
||||||
|
- 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/)
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><strong>Click to show</strong></summary>
|
||||||
|
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
</details>
|
235
Document/User.md
Normal file
235
Document/User.md
Normal file
@ -0,0 +1,235 @@
|
|||||||
|
## 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 },
|
||||||
|
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
|
||||||
|
}
|
||||||
|
```
|
||||||
|
</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 },
|
||||||
|
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
|
||||||
|
}
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## Custom Status and RPC
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><strong>Click to show</strong></summary>
|
||||||
|
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
|
||||||
|
```
|
||||||
|
<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
|
||||||
|
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!
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## User & ClientUser Method
|
||||||
|
<details>
|
||||||
|
<summary>Click to show</summary>
|
||||||
|
|
||||||
|
```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');
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
|
||||||
|
## Reddem Nitro ?
|
||||||
|
<details>
|
||||||
|
<summary>Click to show</summary>
|
||||||
|
|
||||||
|
```js
|
||||||
|
await client.reddemNitro('code')
|
||||||
|
```
|
||||||
|
</details>
|
Loading…
Reference in New Issue
Block a user