Kod 📌 Discord.js AFK Sistemi (croxydb ile)

  • 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 arkadaşlar, bugün sizlere Discord.js v14 ve croxydb kullanarak basit bir AFK sistemi nasıl yapılır onu göstereceğim.
Bu sistem sayesinde kullanıcılar /afk komutu ile AFK moduna geçebilir ve biri onları etiketlediğinde AFK olduklarını sebebiyle birlikte görebilir. Ayrıca mesaj yazdıklarında AFK durumları otomatik olarak kalkar.

🔧 Kullanılan Modüller​

  • discord.js@14
  • croxydb

Kurulum için:
Bash:
npm install discord.js croxydb

---

📂 AFK Komutu​

Öncelikle bir /afk komutu ekleyelim:

Kod:
const { SlashCommandBuilder } = require("discord.js");
const db = require("croxydb");

module.exports = {
  data: new SlashCommandBuilder()
    .setName("afk")
    .setDescription("AFK moduna geçersiniz.")
    .addStringOption(option =>
      option.setName("sebep")
        .setDescription("AFK olma sebebiniz")
        .setRequired(false)
    ),
    
  async execute(interaction) {
    const sebep = interaction.options.getString("sebep") || "Sebep belirtilmemiş.";
    db.set(`afk_${interaction.user.id}`, sebep);

    await interaction.reply(`✅ ${interaction.user} AFK moduna geçtin! \n📌 Sebep: \`${sebep}\``);
  }
};

---

📂 AFK Kontrol Sistemi​

Bunu da messageCreate event’ine ekliyoruz:

Kod:
const db = require("croxydb");
const { EmbedBuilder } = require("discord.js");

client.on("messageCreate", async message => {
  if (message.author.bot) return;

  // Kullanıcı AFK ise AFK durumunu kaldır
  const afkSebep = await db.get(`afk_${message.author.id}`);
  if (afkSebep) {
    await db.delete(`afk_${message.author.id}`);
    message.reply("🔔 AFK modundan çıktın!");
  }

  // Eğer mesajda bir kullanıcı etiketlendiyse
  const kullanıcı = message.mentions.users.first();
  if (!kullanıcı) return;

  const sebep = await db.get(`afk_${kullanıcı.id}`);
  if (sebep) {
    const afkEmbed = new EmbedBuilder()
      .setColor("Blue")
      .setDescription(`💤 ${kullanıcı} şu anda AFK!\n📌 Sebep: \`${sebep}\``);

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

---

🖼️ Çalışma Mantığı​

  1. /afk sebep yazdığınızda veritabanına sebep kaydedilir.
  2. Biri sizi etiketlerse embed ile AFK olduğunuz bildirilir.
  3. Siz mesaj yazdığınız anda AFK kaydınız otomatik silinir.

---

🎯 Sonuç​

Bu sistem ile sunucularınızda basit ve işlevsel bir AFK özelliği ekleyebilirsiniz.
Daha da geliştirmek isterseniz, AFK süresini de kaydedip "ne kadar süredir AFK" bilgisini gösterebilirsiniz.
 
Geri
Üst