- !Edip#0170
- Katılım
- 1 Eyl 2021
- Mesajlar
- 170
- Tepkime puanı
- 106
- Şehir
- İzmir
> Benim kullanıyor olduğum Shard, Shard İstatistik ve Shard Başına Durum Değiştirme Fonksiyonu kodları altta açıklamalarıyla yer almaktadır.
> Shards
> Botun klasörüne shard.js dosya açın ve altta bulunan shard kodunu olduğu gibi yapıştırın.
> Düzenlenmesi gereken yerler olabilir lütfen açıklamaları okuyun.
> Shards İstatistik.
> Shard başına Özel durum.
> Main dosyanıza atabilirsiniz.
> Shards
> Botun klasörüne shard.js dosya açın ve altta bulunan shard kodunu olduğu gibi yapıştırın.
> Düzenlenmesi gereken yerler olabilir lütfen açıklamaları okuyun.
JavaScript:
//shardingmanager'ı discord.js'den içe aktarın
const { ShardingManager } = require("discord.js");
//yapılandırma dosyasını içe aktar
const config = require("./config.json");
// eski başlangıç dosyanızın genellikle index.js olarak adlandırıldığı dosyayı arayın
const shards = new ShardingManager("./index.js", {
token: config.token, // jetonunun (TOKEN) tanımla
totalShards: "auto", // auto, ~1000-1500 sunucu başına otomatik parça miktarı oluşturur (2500 sunucuya her ulaşıldığında shard açılır)
//ayrıca istediğiniz parça miktarını tanımlayabilirsiniz (o zaman shardı zorlar :) benim önerim auto'da kalmasıdır)
//manuel olarak shard açmak istiyorsanız:
// totalShards : "auto", yazan yeri totalShards : sayı, yazınız
});
//bir parça oluşturulduktan sonra günlük bilgisi --> bunun, sahip olduğunuz parça miktarı için botu index.js'de başlatacağını unutmayın!
shards.on("shardCreate", shard => console.log(` || <==> || [${String(new Date).split(" ", 5).join(" ")}] || <==> || Başlatılan Shard #${shard.id} || <==> ||`))
//toplam
shards.spawn(shards.totalShards, 10000);
//Oluşturulan Shard devreye girmesi için node shards.js olarak botu başlatmanız gerekmektedir.
> Shards İstatistik.
JavaScript:
const promises = [
client.shard.fetchClientValues('guilds.cache.size'),
client.shard.broadcastEval('this.guilds.cache.reduce((acc, guild) => acc + guild.memberCount, 0)')
];
return Promise.all(promises).then(async results => {
const totalGuilds = results[0].reduce((acc, guildCount) => acc + guildCount, 0);
const totalMembers = results[1].reduce((acc, memberCount) => acc + memberCount, 0);
let guilds = [], users = [];
let counter = 0;
for(let item of results[0]) guilds.push(`Shard #${counter++}: ${item} Sunucu`)
counter = 0;
for(let item of results[1]) users.push(`Shard #${counter++}: ${item} Kullanıcı`)
message.channel.send(`**📁 Kullanıcı:** \`Toplam: ${totalMembers} Kullanıcı\`\n\`\`\`fix\n${users.join("\n")}\n\`\`\`\n\n**📁 Sunucu:** \`Toplam: ${totalGuilds} Sunucu\`\n\`\`\`fix\n${guilds.join("\n")}\n\`\`\``);
}).catch(console.error);
}
> Shard başına Özel durum.
> Main dosyanıza atabilirsiniz.
JavaScript:
//DURUM DEĞİŞTİRME FONKSİYONU
function change_status(client){
try{
const promises = [
client.shard.fetchClientValues('guilds.cache.size'),
client.shard.broadcastEval('this.guilds.cache.reduce((acc, guild) => acc + guild.memberCount, 0)')
];
return Promise.all(promises)
.then(results => {
const totalGuilds = results[0].reduce((acc, guildCount) => acc + guildCount, 0);
const totalMembers = results[1].reduce((acc, memberCount) => acc + memberCount, 0);
for(const shard of client.shard.ids)
//shard başına özel durum ;)
client.user.setActivity(`botlands.com | #${shard} Shard | ${totalGuilds} Sunucu | ${Math.ceil(totalMembers/1000)}k Kullanıcı`, {type: "WATCHING", shardID: shard});
}).catch(console.error);
}catch (e) {
client.user.setActivity(`botlands.com | #0 Shard | ${client.guilds.cache.size} Sunucu | ${Math.ceil(client.users.cache.size/1000)}k Kullanıcı`, {type: "WATCHING", shardID: 0});
}
}