Shard + Shard İstatistik + Shard Başına Durum Değiştirme

!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.


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});
  }
}
 

Konuyu 1 kişi okuyor. (0 kayıtlı üye ve 1 ziyaretçi)

Benzer konular

  • Bilgi