Add files via upload

This commit is contained in:
Arthur
2024-06-27 01:00:05 +02:00
committed by GitHub
parent 262ee55599
commit 0db429713e
4 changed files with 509 additions and 0 deletions
+342
View File
@@ -0,0 +1,342 @@
const axios = require('axios');
const { cp } = require('fs');
const WebSocket = require('ws');
class EventEmitter {
constructor() {
this.events = {};
}
on(event, listener) {
if (!this.events[event]) {
this.events[event] = [];
}
this.events[event].push(listener);
}
emit(event, ...args) {
if (this.events[event]) {
this.events[event].forEach(listener => {
listener(...args);
});
}
}
}
class Client extends EventEmitter {
constructor() {
super();
this.baseUrl = 'https://discord.com/api/v10';
}
async login(token) {
try {
this.token = token;
const user = await this.getUser();
this.user = user;
this.emit('ready');
this.initWebSocket();
} catch (error) {
console.error('Erreur lors de l\'initialisation :', error);
}
}
initWebSocket() {
// Simplified example to open a WebSocket connection
this.ws = new WebSocket('wss://gateway.discord.gg/?v=10&encoding=json')
this.ws.on('open', () => {
// Envoyer un payload pour identifier et initialiser la session
this.ws.send(JSON.stringify({
op: 2,
d: {
token: this.token,
intents: 3276799, // Intents pour avoir tous les événements
properties: {
$os: 'linux',
$browser: 'my_library',
$device: 'my_library'
}
}
}));
});
this.ws.on('message', (data) => {
const payload = JSON.parse(data);
// Vérifier le type de l'événement reçu
switch (payload.op) {
case 10: // Hello
// Répondre avec le heartbeat
const interval = payload.d.heartbeat_interval;
setInterval(() => {
this.ws.send(JSON.stringify({
op: 1,
d: null
}));
}, interval);
break;
case 0: // Dispatch
const { t, d } = payload;
switch (t) {
case 'APPLICATION_COMMAND_PERMISSIONS_UPDATE':
this.emit('applicationCommandPermissionsUpdate', d);
break;
case 'AUTO_MODERATION_ACTION_EXECUTION':
this.emit('autoModerationActionExecution', d);
break;
case 'AUTO_MODERATION_RULE_CREATE':
this.emit('autoModerationRuleCreate', d);
break;
case 'AUTO_MODERATION_RULE_DELETE':
this.emit('autoModerationRuleDelete', d);
break;
case 'AUTO_MODERATION_RULE_UPDATE':
this.emit('autoModerationRuleUpdate', d);
break;
case 'CHANNEL_CREATE':
this.emit('channelCreate', d);
break;
case 'CHANNEL_DELETE':
this.emit('channelDelete', d);
break;
case 'CHANNEL_PINS_UPDATE':
this.emit('channelPinsUpdate', d);
break;
case 'CHANNEL_UPDATE':
this.emit('channelUpdate', d);
break;
case 'DEBUG':
this.emit('debug', d);
break;
case 'EMOJI_CREATE':
this.emit('emojiCreate', d);
break;
case 'EMOJI_DELETE':
this.emit('emojiDelete', d);
break;
case 'EMOJI_UPDATE':
this.emit('emojiUpdate', d);
break;
case 'ENTITLEMENT_CREATE':
this.emit('entitlementCreate', d);
break;
case 'ENTITLEMENT_DELETE':
this.emit('entitlementDelete', d);
break;
case 'ENTITLEMENT_UPDATE':
this.emit('entitlementUpdate', d);
break;
case 'ERROR':
this.emit('error', d);
break;
case 'GUILD_AUDIT_LOG_ENTRY_CREATE':
this.emit('guildAuditLogEntryCreate', d);
break;
case 'GUILD_AVAILABLE':
this.emit('guildAvailable', d);
break;
case 'GUILD_BAN_ADD':
this.emit('guildBanAdd', d);
break;
case 'GUILD_BAN_REMOVE':
this.emit('guildBanRemove', d);
break;
case 'GUILD_CREATE':
this.emit('guildCreate', d);
break;
case 'GUILD_DELETE':
this.emit('guildDelete', d);
break;
case 'GUILD_INTEGRATIONS_UPDATE':
this.emit('guildIntegrationsUpdate', d);
break;
case 'GUILD_MEMBER_ADD':
this.emit('guildMemberAdd', d);
break;
case 'GUILD_MEMBER_AVAILABLE':
this.emit('guildMemberAvailable', d);
break;
case 'GUILD_MEMBER_REMOVE':
this.emit('guildMemberRemove', d);
break;
case 'GUILD_MEMBERS_CHUNK':
this.emit('guildMembersChunk', d);
break;
case 'GUILD_MEMBER_UPDATE':
this.emit('guildMemberUpdate', d);
break;
case 'GUILD_SCHEDULED_EVENT_CREATE':
this.emit('guildScheduledEventCreate', d);
break;
case 'GUILD_SCHEDULED_EVENT_DELETE':
this.emit('guildScheduledEventDelete', d);
break;
case 'GUILD_SCHEDULED_EVENT_UPDATE':
this.emit('guildScheduledEventUpdate', d);
break;
case 'GUILD_SCHEDULED_EVENT_USER_ADD':
this.emit('guildScheduledEventUserAdd', d);
break;
case 'GUILD_SCHEDULED_EVENT_USER_REMOVE':
this.emit('guildScheduledEventUserRemove', d);
break;
case 'GUILD_UNAVAILABLE':
this.emit('guildUnavailable', d);
break;
case 'GUILD_UPDATE':
this.emit('guildUpdate', d);
break;
case 'INTERACTION_CREATE':
this.emit('interactionCreate', d);
break;
case 'INVITE_CREATE':
this.emit('inviteCreate', d);
break;
case 'INVITE_DELETE':
this.emit('inviteDelete', d);
break;
case 'MESSAGE_CREATE':
this.emit('messageCreate', d);
break;
case 'MESSAGE_DELETE':
this.emit('messageDelete', d);
break;
case 'MESSAGE_DELETE_BULK':
this.emit('messageDeleteBulk', d);
break;
case 'MESSAGE_POLL_VOTE_ADD':
this.emit('messagePollVoteAdd', d);
break;
case 'MESSAGE_POLL_VOTE_REMOVE':
this.emit('messagePollVoteRemove', d);
break;
case 'MESSAGE_REACTION_ADD':
this.emit('messageReactionAdd', d);
break;
case 'MESSAGE_REACTION_REMOVE':
this.emit('messageReactionRemove', d);
break;
case 'MESSAGE_REACTION_REMOVE_ALL':
this.emit('messageReactionRemoveAll', d);
break;
case 'MESSAGE_REACTION_REMOVE_EMOJI':
this.emit('messageReactionRemoveEmoji', d);
break;
case 'MESSAGE_UPDATE':
this.emit('messageUpdate', d);
break;
case 'PRESENCE_UPDATE':
this.emit('presenceUpdate', d);
break;
//case 'READY':
// this.emit('ready', d);
// break;
case 'ROLE_CREATE':
this.emit('roleCreate', d);
break;
case 'ROLE_DELETE':
this.emit('roleDelete', d);
break;
case 'ROLE_UPDATE':
this.emit('roleUpdate', d);
break;
case 'SHARD_DISCONNECT':
this.emit('shardDisconnect', d);
break;
case 'SHARD_ERROR':
this.emit('shardError', d);
break;
case 'SHARD_READY':
this.emit('shardReady', d);
break;
case 'SHARD_RECONNECTING':
this.emit('shardReconnecting', d);
break;
case 'SHARD_RESUME':
this.emit('shardResume', d);
break;
case 'STAGE_INSTANCE_CREATE':
this.emit('stageInstanceCreate', d);
break;
case 'STAGE_INSTANCE_DELETE':
this.emit('stageInstanceDelete', d);
break;
case 'STAGE_INSTANCE_UPDATE':
this.emit('stageInstanceUpdate', d);
break;
case 'STICKER_CREATE':
this.emit('stickerCreate', d);
break;
case 'STICKER_DELETE':
this.emit('stickerDelete', d);
break;
case 'STICKER_UPDATE':
this.emit('stickerUpdate', d);
break;
case 'THREAD_CREATE':
this.emit('threadCreate', d);
break;
case 'THREAD_DELETE':
this.emit('threadDelete', d);
break;
case 'THREAD_LIST_SYNC':
this.emit('threadListSync', d);
break;
case 'THREAD_MEMBERS_UPDATE':
this.emit('threadMembersUpdate', d);
break;
case 'THREAD_MEMBER_UPDATE':
this.emit('threadMemberUpdate', d);
break;
case 'THREAD_UPDATE':
this.emit('threadUpdate', d);
break;
case 'TYPING_START':
this.emit('typingStart', d);
break;
case 'USER_UPDATE':
this.emit('userUpdate', d);
break;
case 'VOICE_STATE_UPDATE':
this.emit('voiceStateUpdate', d);
break;
case 'WARN':
this.emit('warn', d);
break;
case 'WEBHOOKS_UPDATE':
this.emit('webhooksUpdate', d);
break;
case 'WEBHOOK_UPDATE':
this.emit('webhookUpdate', d);
break;
default:
break;
}
break;
default:
break;
}
});
}
async getUser() {
const url = `${this.baseUrl}/users/@me`;
try {
const response = await axios.get(url, {
headers: {
'Authorization': this.token
}
});
return response.data;
} catch (error) {
console.error(`Error: ${error.response ? error.response.data.message : error.message}`);
throw new Error(`Error: ${error.response ? error.response.data.message : error.message}`);
}
}
}
module.exports = { Client };
+14
View File
@@ -0,0 +1,14 @@
require('dotenv').config()
const { Client } = require('./discord.js-selfbot');
const client = new Client();
client.on('ready', () => {
console.log(`Connecté en tant que ${client.user.username}`);
});
client.on('messageCreate', (message) => {
console.log(`Nouveau message de ${message.author.username} : ${message.content}`);
});
client.login(process.env.TOKEN);
+146
View File
@@ -0,0 +1,146 @@
{
"name": "ma bibliotheque discord",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"dependencies": {
"axios": "^1.7.2",
"dotenv": "^16.4.5",
"ws": "^8.17.1"
}
},
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
"license": "MIT"
},
"node_modules/axios": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz",
"integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==",
"license": "MIT",
"dependencies": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"license": "MIT",
"dependencies": {
"delayed-stream": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"license": "MIT",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/dotenv": {
"version": "16.4.5",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
"integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://dotenvx.com"
}
},
"node_modules/follow-redirects": {
"version": "1.15.6",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
"integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
"license": "MIT",
"engines": {
"node": ">=4.0"
},
"peerDependenciesMeta": {
"debug": {
"optional": true
}
}
},
"node_modules/form-data": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
"license": "MIT"
},
"node_modules/ws": {
"version": "8.17.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
"integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
"license": "MIT",
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
"utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
"optional": true
},
"utf-8-validate": {
"optional": true
}
}
}
}
}
+7
View File
@@ -0,0 +1,7 @@
{
"dependencies": {
"axios": "^1.7.2",
"dotenv": "^16.4.5",
"ws": "^8.17.1"
}
}