Tautan undang bot Discord hanyalah URL otorisasi OAuth2. Parameter scope-nya menentukan jenis akses yang diminta (akun bot, slash command, atau keduanya), dan angka permissions-nya menentukan apa yang bisa dilakukan akun bot itu setelah masuk. Admin server harus menyetujui semuanya sebelum ada yang berlaku. Memahami kedua parameter ini adalah perbedaan antara membuat tautan undang yang aman dan menyalin tautan yang tidak bisa kamu pertanggungjawabkan sepenuhnya.

An OAuth permission checklist gets reviewed, Administrator is unticked, and the bot joins online. Permissions Kick Members Manage Messages Administrator Authorize YourBot Online

Anatomi tautan undang

Undangan bot yang umum terlihat seperti ini:

https://discord.com/oauth2/authorize?client_id=123456789&permissions=268446800&scope=bot%20applications.commands

  • client_id - ID publik aplikasi, aman untuk dibagikan, dan ada di setiap tautan undang untuk bot itu.
  • scope - jenis akses yang diminta, dipisahkan spasi (ditulis dengan URL-encoding sebagai %20).
  • permissions - satu angka yang mewakili setiap izin server yang diminta, dijumlahkan.
  • guild_id dan disable_guild_select (opsional) - memilih server tertentu sebelumnya dan mengunci pemilih ke server itu. Berguna untuk tombol "tambahkan saya di sini" per server.

Scope "bot"

Inilah yang benar-benar menambahkan bot sebagai member server, entri yang muncul di daftar member dengan tag bot di sampingnya. Tanpa scope ini, tidak ada yang bergabung, karena tidak ada akun bot yang bisa diotorisasi.

Scope "applications.commands"

Scope ini mendaftarkan slash command, user command, dan message command aplikasi agar bisa dipakai di server itu. Secara teknis bot bisa bergabung hanya dengan scope bot, tetapi tidak satu pun /command-nya akan muncul saat seseorang mengetik /, karena server belum mengizinkan pendaftaran command.

Mengapa hampir selalu butuh keduanya

Bot yang diundang hanya dengan bot tetap bisa mengirim pesan, bereaksi terhadap tombol di pesan yang sudah dikirimnya, dan merespons hal-hal yang tidak membutuhkan slash command. Tetapi pengguna Discord modern mengharapkan command, dan bot yang tidak bisa mendaftarkannya terlihat rusak meskipun sebenarnya berfungsi dengan baik. Setiap tautan undang yang dibuat Noxyr, dan hampir setiap bot sah lainnya, menyertakan kedua scope sekaligus karena alasan itu.

Membaca angka permissions

Setiap izin Discord, seperti mengirim pesan, mengelola role, atau mengeluarkan member, adalah satu bit dalam bitfield: flag berupa pangkat dua. Angka di tautan undang adalah jumlah dari setiap flag yang diminta sekaligus. Tautan yang meminta permissions bernilai 8 hanya meminta satu hal: Administrator, akses penuh tanpa batas ke server. Tautan undang yang dibuat dengan baik hanya menjumlahkan flag spesifik yang benar-benar dipakai kode bot, misalnya pengelolaan channel untuk membuat channel tiket, pengelolaan role untuk role verifikasi, atau aksi moderasi untuk respons anti-raid, bukan semua yang disediakan Discord.

Mengapa Administrator itu tanda bahaya, bukan persyaratan

Sebagian besar bot yang sah tidak membutuhkannya. Memintanya berarti salah satu dari dua hal: kebutuhan nyata yang jarang untuk sesuatu yang menyentuh hampir semua izin sekaligus, atau, jauh lebih sering, bot yang dibuat terburu-buru dengan permissions bernilai 8 karena itu angka paling mudah dicari. Ini juga layar paling menakutkan yang ditampilkan Discord kepada pemilik server saat setup. Karena itu, sering kali undangan ditolak mentah-mentah atau bot dihapus nanti oleh seseorang yang merapikan izin. Kamu bisa menguraikan angka permissions tautan undang mana pun dengan kalkulator permissions Discord sebelum mengklik Authorize, untuk melihat persis apa yang diminta.

Contoh: bagaimana tautan undang Noxyr dibuat

Alih-alih meminta Administrator, undangan Noxyr dibuat dari izin spesifik yang benar-benar dipakai fitur-fiturnya: pengelolaan channel dan role untuk tiket dan verifikasi, izin pesan dan moderasi untuk respons anti-nuke, dan tidak ada yang di luar daftar itu. Undangan ini selalu menyertakan scope bot dan applications.commands, sehingga command-nya langsung berfungsi begitu bot bergabung.

Scope OAuth2 lain yang mungkin kamu temui

Discord mendefinisikan puluhan scope OAuth2 selain bot dan applications.commands. Sebagian besar, seperti identify atau guilds.join, termasuk dalam autentikasi web gaya "Masuk dengan Discord", bukan undangan bot, dan tidak akan muncul sama sekali di tautan undang standar. Jika tautan yang kamu lihat meminta sesuatu yang asing di samping bot, periksa dulu apa yang sebenarnya diberikan scope itu sebelum mengotorisasinya. Undangan bot yang secara sah membutuhkan scope autentikasi web tambahan itu jarang, kecuali untuk layanan yang juga menyediakan penautan akun.

Membuat tautan undang untuk custom bot-mu

Setelah kamu membuat aplikasi di Discord Developer Portal, URL Generator di tab OAuth2 membuat tautan ini untukmu dengan centang. Centang bot dan applications.commands di bagian scopes, centang izin yang dibutuhkan bot-mu, lalu salin hasilnya. Dengan begitu kamu tidak perlu menyusun URL dan angka permissions secara manual.

Pertanyaan umum

Apa yang dilakukan disable_guild_select? Ia mengunci pemilih server ke satu server yang sudah dipilih sebelumnya, sehingga tautan undang yang ditujukan untuk satu komunitas tertentu tidak bisa dipakai tanpa sengaja untuk menambahkan bot ke tempat lain.

Apakah saya perlu applications.commands jika bot saya hanya memakai tombol? Tidak wajib untuk tombol di pesan yang sudah dikirim bot, tetapi kamu membutuhkannya begitu ada slash command yang terlibat.

Apakah mengubah angka permissions nanti bisa menambahkan akses secara mundur? Tidak. Server yang sudah menyetujui undangan tetap memiliki izin yang diberikan saat itu. Mengubah tautan hanya memengaruhi undangan di masa depan. Instalasi yang sudah ada perlu diundang ulang dan disetujui ulang untuk mendapatkan izin tambahan.

Apakah scope=bot saja sudah cukup? Cukup agar bot bisa bergabung, tetapi slash command-nya tidak akan muncul tanpa applications.commands di sampingnya.

Mengapa Discord menampilkan peringatan besar untuk Administrator? Karena izin itu meminta akses tanpa batas ke seluruh server, izin paling berbahaya yang bisa diminta sebuah undangan bot.

Sedang menyiapkan undangan untuk bot-mu sendiri? Baca dulu panduan kami tentang membuat aplikasi Discord, lalu baca dokumentasi Custom Bot jika kamu lebih memilih untuk tidak menulis kode di baliknya sama sekali.