/Discord.js-slash

Primary LanguageJavaScriptGNU General Public License v3.0GPL-3.0

Discord.js'de "/" Komutları Ekleme / Örnek Oto Rol Komutu

Genel Anlatım


"/" komutları Discord'da Aralık 2020 tarihinde güncellenip botlar için daha kapsamlı hale getirilen bir özelliktir bu özelliği kullanmak için yapmanız gereken tek şey bir metin kanalına "/" yazmak.

/ komutlarının görseli


Artık bu / özelliğine botlar kendi komutlarını ekleyebiliyorlar fakat bunun için sunucudaki bir yetkilinin botunuzu onaylaması gerekiyor, alt resimde gördüğünüz gibi ben bir otorol komutu yaptım ve komut bu şekilde gözükmekte.

/ komutlarının görseli


Yapım

"/" komutlarının 2 türü vardır:

  1. Global Komutlar
  2. Sunucuya Özel Komutlar

1. Global Komutlar

Bir global komut oluşturduğunuzda botun olduğu tüm sunuculara bu komutu uygularsınız. Fakat hepsinde göremezsiniz çünkü botunuza sunucu içinde özel ve gözükmeyen bir yetki vermelisiniz.

Bota yetki nasıl verilir?

  • Yetki vermek için Discord Developers sayfasına giriyoruz.
  • Ardından botumuzu seçiyoruz (Görsel)
  • Daha sonra sol taraftan OAuth2 kısmına giriyoruz (Görsel)
  • Biraz aşağıya inip sunulan seçeneklerden applications.commands seçeneğini işaretliyoruz ve alt tarafta oluşan linke giriyoruz. (Görsel)
  • Girdiğimiz linkte alt taraftaki sunucu seçme butonundan hangi sunucuda yetki vermek istiyorsak onu seçiyoruz ve yetkilendir butonuna basıyoruz. (Görsel)

Ve artık botumuz yetkilendirildi. Artık komutlarımızı oluşturabiliriz.


Global Komut Oluşturma

Global komut oluşturmak için aşağıdaki kodu yazmanız yeterli. Fakat bu komutu botunuza bir kere ekleyin ve başlatın, başlattıktan sonra eğer bir hata vermezse kodu silmenizi tavsiye ediyorum.

client.on("ready", () => {
  client.api.applications(client.user.id).commands.post({data: {
      name: 'ping',
      description: 'ping pong!'
  }})
});

Komutumuzu oluşturduktan sonra "/" yazınca karşımıza ping komutu çıkıyor. Ben daha önce otorol komutunu yaptığım için otorol de gözüküyor, sizde sadece ping komutu gözükür.

Görsel


Komutumuzu oluşturduk fakat komutumuzu yazınca karşımıza hiç bir şey çıkmıyor. Bunun için bir event oluşturmamız gerekiyor.

client.ws.on('INTERACTION_CREATE', async interaction => {
  const command = interaction.data.name.toLowerCase();
  
  if (command == 'ping'){
    client.api.interactions(interaction.id, interaction.token).callback.post({
      data: {
        type: 4,
        data: {
          content: "Pong!"
        }
      }
    })
  }
});

Eventimizi ekledikten sonra artık ping komutunu girince botumuz cevap veriyor.

Görsel

2. Sunucuya Özel Komutlar

Sunucuya özel komut oluşturduğunuzda isminden belli olduğu gibi sunucuya özel bir komut oluşturursunuz Global komutlar ile tek farkı sadece bir sunucu için geçerli olması. Sadece oluşturması farklı diğer tüm her şeyi Global ile aynı.

client.on("ready", () => {
  client.api.applications(client.user.id)..guilds("SUNUCU ID")commands.post({data: {
      name: 'ping',
      description: 'ping pong!'
  }})
});

Oto Rol Komutu

  • Oto Rol komutu kurulumu için ilk öncelikle botumuza yetki veriyoruz (Global komutlar kısmında anlattığım gibi).
  • Daha sonra /bot.js dosyasındaki ilk parçayı alıyoruz ve çalıştırıyoruz. Çalıştırdıktan sonra hatasız bir şekilde ekranda "hazır" yazarsa botu kapatıp kodu siliyoruz.
  • Ardından /bot.js dosyasındaki ikinci parçayı alıyoruz ve çalıştırıyoruz.
  • Ve botunuz artık hazır!

Ek notlar;

  • Eğer botunuz çalışmazsa ve hata verirse dert etmeyin çünkü bu daha yeni gelmiş bir özellik ve tam çalışmayan bir özellik.
  • Bu bilgilerin hepsini internetten araştırdım daha fazla bilgi istiyorsanız buradan ve ya internette araştırarak bulabilirsiniz.
  • V12 için geçerlidir v11'de çalışmamaktadır.