Kod 📌 Discord.js Gelişmiş Sunucu Bilgi Komutu

  • Konuyu Başlatan Konuyu Başlatan WxTimer
  • Başlangıç tarihi Başlangıç tarihi

Hoş Geldiniz!

Discordev'e Kayıt Olduğunuzda, topluluğumuzun diğer üyeleriyle tartışabilir, paylaşımda bulunabilir ve özel mesajlaşabilirsiniz.

Hemen Kayıt Ol!
  • Konu Yazar
Merhaba, bu konuda sizlerle Discord.js v14 kullanılarak geliştirilmiş bir !sunucubilgi komutunu paylaşıyorum.
Bu komut sayesinde sunucunuzun neredeyse tüm detaylarını Embed içerisinde görüntüleyebilirsiniz.

🔧 Özellikler​

  • Sunucu ID, Kuruluş tarihi, sahibi ve varsayılan bildirim ayarları
  • Kanal istatistikleri (Yazı, Ses, Kategori, diğer)
  • Üye ve Bot sayıları
  • Üye durumları (Online, Idle, DND, Offline)
  • Emoji istatistikleri (animasyonlu / animasyonsuz)
  • Boost bilgileri (basan kişi, seviye, toplam boost)
  • Sunucu görselleri (icon, banner, splash, discovery splash)
  • Roller (40 taneye kadar listelenir, fazlası için “+x rol” şeklinde gösterilir)

---

📂 Komut Kodu​


Kod:
"use strict";

const {
    EmbedBuilder,
    ChannelType,
    GuildDefaultMessageNotifications
} = require("discord.js");

exports.run = async (client, message, args) => {
    const { guildId, guild } = message;

    // Sunucu resimleri
    const guildIcon = guild.iconURL({ extension: "png", forceStatic: false, size: 1024 });
    const guildBanner = guild.bannerURL({ extension: "png", forceStatic: false, size: 1024 });
    const guildSplash = guild.splashURL({ extension: "png", forceStatic: false, size: 1024 });
    const guildDiscoverySplash = guild.discoverySplashURL({ extension: "png", forceStatic: false, size: 1024 });

    // Sayılabilen veriler
    const allMembers = guild.members.cache;
    const allEmojis = guild.emojis.cache;
    const allBots = allMembers.filter(member => member.user.bot);
    const allChannels = guild.channels.cache;
    const allRoles = guild.roles.cache.clone();
    const animatedEmojis = allEmojis.filter(emoji => emoji.animated);

    const channelsCount = { text: 0, voice: 0, category: 0, others: 0 };
    const statusCount = { total: 0, online: 0, idle: 0, dnd: 0, offline: 0 };

    allMembers.forEach(member => {
        if (!member.presence || member.presence.status === "offline") statusCount.offline += 1;
        else {
            statusCount[member.presence.status] += 1;
            statusCount.total += 1;
        }
    });

    allChannels.forEach(channel => {
        switch (channel.type) {
            case ChannelType.GuildText: channelsCount.text += 1; break;
            case ChannelType.GuildVoice: channelsCount.voice += 1; break;
            case ChannelType.GuildCategory: channelsCount.category += 1; break;
            default: channelsCount.others += 1; break;
        }
    });

    allRoles.delete(guildId);
    const createdTimestampWithSeconds = Math.round(guild.createdTimestamp / 1000);

    const basicInformation = [
        `🆔 **Sunucu ID'si:** ${guildId}`,
        `📅 **Kuruluş tarihi:** <t:${createdTimestampWithSeconds}:F> - <t:${createdTimestampWithSeconds}:R>`,
        `🔔 **Varsayılan bildirimler:** ${guild.defaultMessageNotifications == GuildDefaultMessageNotifications.AllMessages ? "Tüm mesajlar 📬" : `Sadece etiketler 🎭`}`
    ];

    const vanityData = await guild.fetchVanityData().catch(() => { });
    if (vanityData) basicInformation.push(`✉️ **Özel davet:** https://discord.gg/${vanityData.code} - (${vanityData.uses})`);

    if (guild.afkChannel) basicInformation.push(`🔇 **AFK kanalı:** <#${guild.afkChannelId}> (${guild.afkTimeout} sn)`);
    if (guild.rulesChannel) basicInformation.push(`📕 **Kurallar kanalı:** <#${guild.rulesChannel}>`);
    basicInformation.push(`👑 **Sunucu sahibi:** <@${guild.ownerId}> - (${guild.ownerId})`);

    function toHumanize(number) { return number?.toLocaleString("tr-TR"); }

    const MAX_SHOW_ROLE_IN_INFO = 40;

    const embed = new EmbedBuilder()
        .setAuthor({ name: guild.name, iconURL: guildIcon })
        .addFields(
            { name: "TEMEL BİLGİLER", value: basicInformation.join("\n") },
            { name: `KANALLAR (${toHumanize(allChannels.size)})`, value: `📃 Yazı: ${channelsCount.text}\n🔊 Ses: ${channelsCount.voice}\n🖇️ Kategori: ${channelsCount.category}\n🎞️ Diğer: ${channelsCount.others}`, inline: true },
            { name: `ÜYELER (${toHumanize(allMembers.size)})`, value: `👥 Üye: ${allMembers.size - allBots.size}\n🤖 Bot: ${allBots.size}`, inline: true },
            { name: `DURUMLAR (${toHumanize(statusCount.total)})`, value: `🟢 Online: ${statusCount.online}\n🟡 Boşta: ${statusCount.idle}\n🔴 DND: ${statusCount.dnd}\n⚫ Offline: ${statusCount.offline}`, inline: true },
            { name: `EMOJİLER (${allEmojis.size})`, value: `🧱 Normal: ${allEmojis.size - animatedEmojis.size}\n💫 Animasyonlu: ${animatedEmojis.size}` },
            { name: "BOOST BİLGİLERİ", value: `💖 Boost basan: ${allMembers.filter(m => m.premiumSinceTimestamp).size}\n🚀 Boost sayısı: ${guild.premiumSubscriptionCount || "0"}\n📈 Seviye: ${guild.premiumTier}`, inline: true },
            { name: "FOTOĞRAFLAR", value: `🖥️ Icon: ${guildIcon ? `[URL](${guildIcon})` : "Yok"}\n🖼️ Banner: ${guildBanner ? `[URL](${guildBanner})` : "Yok"}\n💌 Splash: ${guildSplash ? `[URL](${guildSplash})` : "Yok"}\n📡 Discovery: ${guildDiscoverySplash ? `[URL](${guildDiscoverySplash})` : "Yok"}`, inline: true },
            { name: `🎭 ROLLER (${toHumanize(allRoles.size)})`, value: [...allRoles.values()].sort((a, b) => b.position - a.position).slice(0, MAX_SHOW_ROLE_IN_INFO).map(r => `<@&${r.id}>`).join(" | ") + (allRoles.size > MAX_SHOW_ROLE_IN_INFO ? ` +${allRoles.size - MAX_SHOW_ROLE_IN_INFO} rol daha...` : "") }
        )
        .setThumbnail(guildIcon)
        .setColor("Blue")
        .setTimestamp();

    return message.reply({ embeds: [embed] });
};

exports.conf = {
    enabled: true,
    guildOnly: true,
    aliases: ['sunucubilgi', 'sbilgi'],
    permLevel: 0
};

exports.help = {
    name: 'sunucubilgi',
};

---

🎯 Sonuç​

Bu komut sayesinde sunucunuzun istatistiklerini detaylı bir şekilde öğrenebilir, kullanıcılarınıza profesyonel bir bilgi kartı sunabilirsiniz.
 
Geri
Üst