- heisenberg#7292
- Katılım
- 19 Tem 2022
- Mesajlar
- 35
- Tepkime puanı
- 2
- Şehir
- Samsun
Arkadaşlar, diyelim ki çok sayıda arkadaşınız var ve eski bir mesajınızın ekran görüntüsünü almak istiyorsunuz. Bunun için, bağlı olduğunuz tokeni girip, aramak istediğiniz mesajı yazarak gönderdiğiniz mesajı bulabilirsiniz. Hangi kullanıcıya ve hangi tarihte mesajı gönderdiğinizi de bu şekilde kolayca tespit edebilirsiniz. Aynı şekilde, sunucularda da arama yapabilirsiniz. Örneğin, bir sunucuda eski bir mesajınızı bulmanız gerektiğinde, aramak istediğiniz kelimeyi yazıp, kanal ID'sini girerek otomatik olarak arama yapabilirsiniz.
JavaScript:
const axios = require('axios');
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
async function tokenGir() {
return new Promise((resolve) => {
rl.question('Lütfen Discord hesap tokeninizi girin: ', async (token) => {
const isValid = await checkToken(token);
if (isValid) {
console.log('Token başarılı, devam ediyorsunuz.');
resolve(token);
} else {
console.log('Token yanlış, işlem sonlandırılıyor.');
rl.close();
process.exit(1);
}
});
});
}
async function checkToken(token) {
try {
const response = await axios.get('https://discord.com/api/v9/users/@me', {
headers: { Authorization: token }
});
return response.status === 200;
} catch (error) {
return false;
}
}
async function mesajlariAl() {
const mesajlar = [];
let devam = true;
while (devam) {
const mesaj = await new Promise((resolve) => {
rl.question('Aranacak bir mesaj girin (Bitirmek için "q" yazın): ', (cevap) => {
resolve(cevap);
});
});
if (mesaj.toLowerCase() === 'q') {
devam = false;
} else {
mesajlar.push(mesaj);
}
}
return mesajlar;
}
async function getMessages(token, channelId) {
try {
const response = await axios.get(`https://discord.com/api/v9/channels/${channelId}/messages?limit=100`, {
headers: { Authorization: token }
});
return response.data;
} catch (error) {
if (error.response && error.response.status === 403) {
console.error(`Kanal erişimi reddedildi (ID: ${channelId}). Bu kanalı atlıyoruz.`);
return [];
}
console.error('Mesajlar alınırken hata oluştu:', error.message);
return [];
}
}
async function getDMChannels(token) {
try {
const response = await axios.get('https://discord.com/api/v9/users/@me/channels', {
headers: { Authorization: token }
});
return response.data;
} catch (error) {
console.error('DM kanalları alınırken hata oluştu:', error.message);
return [];
}
}
async function getGuilds(token) {
try {
const response = await axios.get('https://discord.com/api/v9/users/@me/guilds', {
headers: { Authorization: token }
});
return response.data;
} catch (error) {
console.error('Sunucular alınırken hata oluştu:', error.message);
return [];
}
}
async function getGuildChannels(token, guildId) {
try {
const response = await axios.get(`https://discord.com/api/v9/guilds/${guildId}/channels`, {
headers: { Authorization: token }
});
return response.data;
} catch (error) {
console.error(`Sunucu kanalları alınırken hata oluştu (Sunucu ID: ${guildId}):`, error.message);
return [];
}
}
async function aramaYap(token, channels, aranacakMesajlar, channelType) {
for (const channel of channels) {
const messages = await getMessages(token, channel.id);
for (const msg of messages) {
for (const aranacakMesaj of aranacakMesajlar) {
if (msg.content.includes(aranacakMesaj)) {
const channelName = channelType === 'dm' ? (channel.recipients ? channel.recipients[0].username : 'Bilinmeyen Kullanıcı') : channel.name;
console.log(`${channelName} ${channelType === 'dm' ? 'kullanıcısı' : 'kanalında'} "${aranacakMesaj}" mesajı ${new Date(msg.timestamp).toLocaleString()} tarihinde bulundu.`);
return true; // Mesaj bulundu, aramayı sonlandır
}
}
}
}
return false; // Mesaj bulunamadı
}
async function main() {
const token = await tokenGir();
const aranacakMesajlar = await mesajlariAl();
console.log(`${aranacakMesajlar.length} adet mesaj aranacak...`);
const secim = await new Promise((resolve) => {
rl.question('Nerede arama yapmak istersiniz?\n1- Özel mesajlarda ara\n2- Kanallarda ara\nSeçiminiz (1 veya 2): ', (cevap) => {
resolve(cevap);
});
});
if (secim === '1') {
console.log('Özel mesajlar aranıyor...');
const dmChannels = await getDMChannels(token);
await aramaYap(token, dmChannels, aranacakMesajlar, 'dm');
} else if (secim === '2') {
const sunucuIdleri = await new Promise((resolve) => {
rl.question('Arama yapılacak sunucu ID\'lerini virgülle ayırarak girin: ', (cevap) => {
resolve(cevap.split(',').map(id => id.trim()));
});
});
console.log('Sunucu kanallarında aranıyor...');
for (const sunucuId of sunucuIdleri) {
const channels = await getGuildChannels(token, sunucuId);
const mesajBulundu = await aramaYap(token, channels, aranacakMesajlar, 'guild');
if (mesajBulundu) break;
}
} else {
console.log('Geçersiz seçim. Program sonlandırılıyor.');
}
console.log('Arama tamamlandı.');
rl.close();
}
main().catch(error => {
console.error('Bir hata oluştu:', error.message);
rl.close();
});