Topluluk Ürünü En Kaliteli Discord Bot Kütüphanesi

Koply

Codexia
Mesajlar
57
En iyi cevaplar
0
Beğeniler
54
Puanları
300
Ruh hali

quality.png build.png

Nefesinizi tüketecek kadar uzun bir başlıktan sonra göz atmanıza değecek olan bir kütüphanenin tanıtımına geçebiliriz.

Bu konu Codexia'nın sponsorluğu sayesinde varoluşa katılmıştır.

Bu kütüphane JDA ve Javacord kütüphaneleri ile tam uyumluluk gösterir. Doğru entegrasyonu kullanarak projenize bağlayabilirsiniz. Örnekler JDA baz alınarak gösterildi. Herhangi bir şeyde takılırsanız sponsorumuz olan Codexia Discord sunucusu içinden bizlere ulaşabilirsiniz.

Kullanım ve Komut Oluşturma
Asıl mevzu nasıl kullanabileceğimiz. Aşağıda kütüphaneyi kullanabilmek için yapmamız gereken en temel şey olan KCommando'yu hazırlama aşamasını görebilirsiniz.

Java:
public class Main extends JDAIntegration {
    
    public Main(JDA jda) { super(jda); }

    public void main(String[] args) throws Exception {
        JDA jda = JDABuilder.createDefault("TOKEN").build();
        jda.awaitReady();
        
        KCommando kcommando = new KCommando(new Main(jda))
              .setCooldown(5000L) // 5 seconds as 5000 ms
              .setOwners("FIRST_OWNER_ID", "SECOND_OWNER_ID")
              .setPackage("com.example.mybot.commands") // command classes package path
              .setPrefix("!")
              .setReadBotMessages(false) // default false
              .setCaseSensivity(Locale.getDefault()) 
              // Optional<Locale> -> varsayılan olarak büyük harf duyarlılığı devredışıdır
              .build();
    }
}

En ilkel yapıda botunuza KCommando'yu bu şekilde tanımlayabilirsiniz. Fakat kullanabilmek için sadece tanımlamak yetmiyor. Komut oluşturmamız da gerekiyor. Komut oluşturmayacaksak kütüphaneyi kullanmanın ne anlamı var?

Java:
@Commando(name = "Ping!"
           aliases = "ping",
           description = "Pong!", /* varsayılan "-" */
           guildOnly = false, /* varsayılan false */
           ownerOnly = false, /* varsayılan false */
           privateOnly = false, /* varsayılan false */
           sync = false /* varsayılan false */)
public class BasicCommand extends JDACommand {
    
    public BasicCommand() {
        // eğer handle methodu false dönderirse bu callback çalıştırılır
        getInfo().setOnFalseCallback( (KRunnable<MessageReceivedEvent>) e -> e.getMessage().addReaction("⛔").queue() );
    }

    @Override
    public boolean handle(MessageReceivedEvent e /* opsiyonel String[] args*/ ) {
        e.getChannel().sendMessage( "Pong!" ).queue();
        return true;
        // eğer komut başarılı olmuşsa true döndermeniz gerekir
    }
}

Bu kadarla bitti mi? Hayır! Bunlar sadece başlangıç...

  • Yanlış komut kullanıldığında benzer komutları kişiye göstermek mi istiyorsunuz?
  • Komutun asenkron çalışmasını istiyor veya istemiyor musunuz?
  • Sunuculara özel prefixler mi eklemek istiyorsunuz?
  • Bir kullanıcıyı blackliste eklemek mi istiyorsunuz?
  • Bir sunucunun kanalı veya üyeyi blackliste eklemesini mi istiyorsunuz?
  • Sunuculara, özel konuşmaya, bot sahibine özel olan bir komutun yanlış kullanımında geri bildirim mi vermek istiyorsunuz?
  • Zaman aşımına uğrayan komutlara geri bildirim mi vermek istiyorsunuz?
  • Yapacağınız bot ile KCommando arasında bazı pürüzler çıktı. Bu pürüzleri gidermek mi istiyorsunuz?
  • Database sisteminizi KCommando ile daha uyumlu bir şekilde mi kullanmak istiyorsunuz?

Saydığım her şeyi KCommando ile 1 satırda bile yapabilirsiniz (ayrı ayrı ._.). Ayrıca bunların hepsini yaparken performanstan da yaklaşık olarak 0,5ms kadar feda ediyorsunuz. Mükemmel değil mi?

Yardım (help) komutunun nasıl yapılacağına dair örnekler Rae isimli botumun kaynak kodlarında mevcut.
şşt Rae müzik komutlarını içeriyor. Aklınıza gelen fikirleri, bulduğunuz bugları ve diğer her türlü hataları bu sayfadan bildirebilirsiniz. Ayrıca kütüphaneye siz de eklemeler yapmak için PR atabilirsiniz.

Projenize bu kütüphaneyi maven ve gradle ile kolayca kurabilirsiniz. Eğer belirttiğim kütüphane araçlarını kullanmıyorsanız .jar dosyasını projenize ekleyerek yine kullanabilirsiniz fakat derlenmiş olan .jar dosyasını projenize eklediğinizde hatalar almanız muhtemel. Hataları almak istemiyorsanız .jar dosyasının yanında kütüphanenin ihtiyaç duyduğu diğer kütüphaneleri de projenize eklemeniz gerekir. Benim tavsiyem maven veya gradle kullanmanız yönünde.

Kütüphanenin daha detaylı örnekleri için KCommando Github sayfasını inceleyebilirsiniz!

Konunun başındaki fotoğraf bir fotoğraf oluşturma aracı ile yapıldı. Üstelik
açık kaynak!
 


Son düzenleme:

NoMan

Taş Madencisi
Mesajlar
76
En iyi cevaplar
0
Beğeniler
111
Puanları
250
Kodların tamamını inceleme fırsatım olmadı ancak gördüğüm kadarıyla gayet temiz bir iş çıkarılmış. Bot yapacaklar için gayet iyi bir kütüphane olmuş, ellerine sağlık. Diğer işlerini de daha iyi yerlerde görmek dileğiyle.
 

xXDavcerXx

damnant quod non intelligunt.
Mesajlar
257
En iyi cevaplar
1
Beğeniler
135
Puanları
600
Ruh hali
Güzele benziyor. JDA benim için malum sebeplerden tarih olmasaydı kullanabilirdim :)

Geliştirmelerinizin devamı dileğiyle.

- İyi forumlar.
 

Koply

Codexia
Mesajlar
57
En iyi cevaplar
0
Beğeniler
54
Puanları
300
Ruh hali
Konu 4.2.2 sürümü ile güncellendi!
Güzele benziyor. JDA benim için malum sebeplerden tarih olmasaydı kullanabilirdim :)

Geliştirmelerinizin devamı dileğiyle.

- İyi forumlar.
Endişelenmeyin! Artık Javacord'u da destekliyoruz.
 

Nxymn

Warum diese games? Sei doch einfach Straight.
Mesajlar
336
En iyi cevaplar
2
Beğeniler
169
Puanları
360
Ruh hali

Nefesinizi tüketecek kadar uzun bir başlıktan sonra göz atmanıza değecek olan bir kütüphanenin tanıtımına geçebiliriz.

Bu konu Codexia'nın sponsorluğu sayesinde varoluşa katılmıştır.

Bu kütüphane JDA ve Javacord kütüphaneleri ile tam uyumluluk gösterir. Doğru entegrasyonu kullanarak projenize bağlayabilirsiniz. Örnekler JDA baz alınarak gösterildi. Herhangi bir şeyde takılırsanız sponsorumuz olan Codexia Discord sunucusu içinden bizlere ulaşabilirsiniz.

Kullanım ve Komut Oluşturma
Asıl mevzu nasıl kullanabileceğimiz. Aşağıda kütüphaneyi kullanabilmek için yapmamız gereken en temel şey olan KCommando'yu hazırlama aşamasını görebilirsiniz.

Java:
public class Main extends JDAIntegration {
    
    public Main(JDA jda) { super(jda); }

    public void main(String[] args) throws Exception {
        JDA jda = JDABuilder.createDefault("TOKEN").build();
        jda.awaitReady();
        
        KCommando kcommando = new KCommando(new Main(jda))
              .setCooldown(5000L) // 5 seconds as 5000 ms
              .setOwners("FIRST_OWNER_ID", "SECOND_OWNER_ID")
              .setPackage("com.example.mybot.commands") // command classes package path
              .setPrefix("!")
              .setReadBotMessages(false) // default false
              .setCaseSensivity(Locale.getDefault()) 
              // Optional<Locale> -> varsayılan olarak büyük harf duyarlılığı devredışıdır
              .build();
    }
}

En ilkel yapıda botunuza KCommando'yu bu şekilde tanımlayabilirsiniz. Fakat kullanabilmek için sadece tanımlamak yetmiyor. Komut oluşturmamız da gerekiyor. Komut oluşturmayacaksak kütüphaneyi kullanmanın ne anlamı var?

Java:
@Commando(name = "Ping!"
           aliases = "ping",
           description = "Pong!", /* varsayılan "-" */
           guildOnly = false, /* varsayılan false */
           ownerOnly = false, /* varsayılan false */
           privateOnly = false, /* varsayılan false */
           sync = false /* varsayılan false */)
public class BasicCommand extends JDACommand {
    
    public BasicCommand() {
        // eğer handle methodu false dönderirse bu callback çalıştırılır
        getInfo().setOnFalseCallback( (KRunnable<MessageReceivedEvent>) e -> e.getMessage().addReaction("⛔").queue() );
    }

    @Override
    public boolean handle(MessageReceivedEvent e /* opsiyonel String[] args*/ ) {
        e.getChannel().sendMessage( "Pong!" ).queue();
        return true;
        // eğer komut başarılı olmuşsa true döndermeniz gerekir
    }
}

Bu kadarla bitti mi? Hayır! Bunlar sadece başlangıç...

  • Yanlış komut kullanıldığında benzer komutları kişiye göstermek mi istiyorsunuz?
  • Komutun asenkron çalışmasını istiyor veya istemiyor musunuz?
  • Sunuculara özel prefixler mi eklemek istiyorsunuz?
  • Bir kullanıcıyı blackliste eklemek mi istiyorsunuz?
  • Bir sunucunun kanalı veya üyeyi blackliste eklemesini mi istiyorsunuz?
  • Sunuculara, özel konuşmaya, bot sahibine özel olan bir komutun yanlış kullanımında geri bildirim mi vermek istiyorsunuz?
  • Zaman aşımına uğrayan komutlara geri bildirim mi vermek istiyorsunuz?
  • Yapacağınız bot ile KCommando arasında bazı pürüzler çıktı. Bu pürüzleri gidermek mi istiyorsunuz?
  • Database sisteminizi KCommando ile daha uyumlu bir şekilde mi kullanmak istiyorsunuz?

Saydığım her şeyi KCommando ile 1 satırda bile yapabilirsiniz (ayrı ayrı ._.). Ayrıca bunların hepsini yaparken performanstan da yaklaşık olarak 0,5ms kadar feda ediyorsunuz. Mükemmel değil mi?

Yardım (help) komutunun nasıl yapılacağına dair örnekler Rae isimli botumun kaynak kodlarında mevcut.
şşt Rae müzik komutlarını içeriyor. Aklınıza gelen fikirleri, bulduğunuz bugları ve diğer her türlü hataları bu sayfadan bildirebilirsiniz. Ayrıca kütüphaneye siz de eklemeler yapmak için PR atabilirsiniz.

Projenize bu kütüphaneyi maven ve gradle ile kolayca kurabilirsiniz. Eğer belirttiğim kütüphane araçlarını kullanmıyorsanız .jar dosyasını projenize ekleyerek yine kullanabilirsiniz fakat derlenmiş olan .jar dosyasını projenize eklediğinizde hatalar almanız muhtemel. Hataları almak istemiyorsanız .jar dosyasının yanında kütüphanenin ihtiyaç duyduğu diğer kütüphaneleri de projenize eklemeniz gerekir. Benim tavsiyem maven veya gradle kullanmanız yönünde.

Kütüphanenin daha detaylı örnekleri için KCommando Github sayfasını inceleyebilirsiniz!

Konunun başındaki fotoğraf bir fotoğraf oluşturma aracı ile yapıldı. Üstelik
açık kaynak!
Elinize sağlık işime yaradı.
 

Nxymn

Warum diese games? Sei doch einfach Straight.
Mesajlar
336
En iyi cevaplar
2
Beğeniler
169
Puanları
360
Ruh hali
Güzele benziyor. JDA benim için malum sebeplerden tarih olmasaydı kullanabilirdim :)

Geliştirmelerinizin devamı dileğiyle.

- İyi forumlar.
reis bir şey sorucam nasıl hareketli avatar yapabiliyoruz
 

Nxymn

Warum diese games? Sei doch einfach Straight.
Mesajlar
336
En iyi cevaplar
2
Beğeniler
169
Puanları
360
Ruh hali
Niye böyle muhteşem konuda hala topluluk ürünü olmasına rağmen 7 mesaj var?
 

Koply

Codexia
Mesajlar
57
En iyi cevaplar
0
Beğeniler
54
Puanları
300
Ruh hali
Github sayfasındaki "Code Quality" badge'i D notuna düşmüş. Konudakini A+'dan D'ye düşürmeyeceğim. Sebebini şöyle açıklayayım. Kullandığım maven deposu yakında kapatılacak. Kapanması yüzünden kararsız bir depo kullanmış oluyorum. Proje içinde 3 farklı yerde kullandığım için 3 tane kritik hata gözü ile bakılıyor. Kararlı bir depo bulana kadar güncellemeyeceğim. Kodun kendisinde herhangi bir eksik araştırmalarıma göre yok.
 

Üst