Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen tarafından sunulan Discord botu geliştirme eğitimidir. Eğitmen, izleyicilere adım adım Discord botu için database bağlama ve AFK komutu oluşturma sürecini göstermektedir.
- Video, öncelikle Bookman modülü kullanarak database bağlama işlemini anlatarak başlıyor, ardından botun core kısmına global bir database özelliği ekleniyor. Daha sonra APK komutu oluşturuluyor; bu komut, kullanıcıların belirli bir sebep belirterek afk moduna girmelerini sağlıyor ve bu bilgiler veritabanına kaydediliyor. Son olarak, kullanıcıların AFK durumlarını kaydetmek için bir interface oluşturuluyor ve milisaniye dönüşümleri yapılıyor.
- Eğitim, kullanıcıların kendilerini etiketlemelerini engellemek için kontroller ekleme ve geliştirilen komutun test edilmesi aşamalarını da içermektedir. Video, kullanıcıların AFK durumlarını nasıl görebilecekleri ve komutun nasıl çalıştığı açıklamasıyla sonlanmaktadır.
- Discord Botuna Database Bağlama
- Video, Discord botuna database bağlama konusunu ele alıyor.
- Back planda çalışan development server için database modu indirilecek ve Bookman modülü kullanılacak.
- Bookman modülü npm install komutuyla indirilip, package.json dosyasına eklenerek gelecekte hızlıca kullanılabilir hale getirilecek.
- 00:54Database Yapılandırması
- Core dosyasında public database adında bir property oluşturuluyor.
- Database.ts dosyası oluşturulup, Bookman modu içerisindeki database class ve fs adaptör klasını import ediyoruz.
- Global bir database oluşturuluyor ve fs adaptör kullanılarak database dosyalarının toplanacağı ana klasör belirleniyor.
- 04:18APK Komutu Oluşturma
- APK komutu, bir sebep belirterek afk moduna girmeyi sağlayacak ve bu veri botun database'ine kaydedilecek.
- Afk.ts dosyası oluşturulup, komutun içeriği kopyalanıp düzenleniyor.
- Komutun açıklaması ve alternatif komutları belirleniyor.
- 05:59APK Komutunun İşlevselliği
- Komutun çalışması için client import ediliyor ve argümanlar kontrol ediliyor.
- Afk olma sebebi belirtilmediğinde uyarı veriliyor.
- Belirtilen sebebin uzunluğu 60 karakterden uzunsa uyarı veriliyor.
- 07:19Database'e Veri Kaydetme
- Cli.database.global.set fonksiyonu kullanılarak database'e veri kaydediliyor.
- Kullanıcının ne zaman afk olduğunu ve neden afk olduğunu database'e kaydediyoruz.
- Kullanıcıya başarıyla afk moduna girdiği mesajı gönderiliyor.
- 09:13APK Komutunun Test Edilmesi
- Bot test ediliyor ve APK komutu başarıyla çalışıyor.
- 60 karakterden uzun bir sebep belirtildiğinde uyarı veriliyor.
- Global dosyasında kaydedilen veriler görüntüleniyor.
- 10:12Mesaj İşleme Fonksiyonu
- Mesaj işleme fonksiyonunda "çek_afk" adında bir property oluşturuluyor.
- Bu fonksiyon, database'den veri çekmeye çalışacak ve void (hiçbir veri döndürmeyecek) bir fonksiyon olacak.
- Fonksiyonun iki kontrolü olacak: mesajı gönderen kişi afk modunda ise afk'dan çıkması ve mesaj içeriğinde etiket varsa etiketlenen kişi afk ise uyarı göndermesi.
- 11:57AFK Sistemi İçin Veri Kaydetme
- Mesajın gönderildiği tarihi almak için "const now = Date()" kullanılıyor.
- Database'e veri kaydederken ne kaydedildiği belirtilmediği için, önceden kaydedilen verilere dayanarak "stat" olarak timestamp ve "reason" olarak stream kaydediliyor.
- Type definition'lar için "struct types" klasörü oluşturulup, "export interface apkData" ile "reason" (string) ve "start" (number) özellikleri tanımlanıyor.
- 14:18AFK Modundan Çıkış İşlemi
- Bir kullanıcı mesaj gönderdiğinde, "afk" modundan çıkması gerekiyor.
- "client.database.global.delete" fonksiyonu ile kullanıcıdan "apk" propertisi siliniyor ve database'de bu kullanıcı ile ilgili afk verisi olmadığı için artık afk olarak görünmeyecek.
- Kullanıcıya "afk modundan çıktınız, afk kalma süreniz" şeklinde uyarı mesajı gönderiliyor.
- 15:14AFK Süresi Hesaplama
- "const pars" fonksiyonu ile afk süresi hesaplanıyor.
- Şimdiki zaman ile geçmiş zaman arasındaki fark milisaniye cinsinden hesaplanıyor.
- Kullanıcıya "afk kalma süreniz: gün saat dakika saniye" şeklinde uyarı mesajı gönderiliyor.
- 17:19Etiketleme Kontrolü
- Mesajda etiket varsa ve etiketlenen kişi bot değilse, işlem iptal ediliyor.
- Kullanıcı kendisini etiketleyip botu mal etmeye çalışmasın diye, mesajın dış ID'si ile kullanıcı ID'si karşılaştırılıyor.
- Etiketlenen kişi afk değilse, "if !data.return" ile uyarı mesajı gönderilmiyor.
- 20:44Fonksiyonun Kullanımı ve Test
- Yazılan fonksiyonun hiçbir yerde kullanılmadığı için, mesajın execute kısmına "afkCheck" fonksiyonu ekleniyor.
- Bot test edildiğinde, "!afk test" komutu ile kullanıcı afk moduna sokulabiliyor ve afk süresi artıyor.
- "!afk modundan çıktınız" mesajı ile afk modundan çıkıldığında, kullanıcılar afk durumunu görebiliyor.