Halo Saya ingin membuat bot perselisihan yang memeriksa terlebih dahulu apakah anggota memiliki izin untuk menjalankan perintah. Contoh: Dengan !create Anda dapat membuat kunci acak tetapi hanya peran Pemilik yang dapat menggunakan !create, bagaimana cara melakukan ini?
Periksa apakah pengguna memiliki peran Discord Python
Jawaban (2)
jika Anda menggunakan discord.py, Anda dapat memeriksa referensi mereka yang menyatakan bahwa hook on_message()
berisi objek Pesan, yang memiliki atribut author
.
author
tersebut adalah Anggota dan dapat dibandingkan dengan atribut members
dari objek Peran.
Saya bukan ahli perpustakaan ini tetapi membaca dokumentasi dengan cepat membuatnya tampak seperti tugas yang mudah
Anda dapat menggunakan @commands.has_role("Owner")
saat membuat perintah untuk membatasinya hanya pada peran tertentu
perselisihan.ext.commands.has_role(item)
Sebuah check() yang ditambahkan memeriksa apakah anggota yang menjalankan perintah memiliki peran yang ditentukan melalui nama atau ID yang ditentukan. Jika string ditentukan, Anda harus memberikan nama persis peran tersebut, termasuk huruf besar dan ejaan.
Jika bilangan bulat ditentukan, Anda harus memberikan ID kepingan salju yang tepat dari peran tersebut.
Jika pesan dipanggil dalam konteks pesan pribadi maka pemeriksaan akan menghasilkan False.
Pemeriksaan ini memunculkan salah satu dari dua pengecualian khusus, MissingRole jika pengguna kehilangan peran, atau NoPrivateMessage jika digunakan dalam pesan pribadi. Keduanya mewarisi dari CheckFailure.
Diubah di versi 1.1: Naikkan MissingRole atau NoPrivateMessage alih-alih item Parameter CheckFailure generik (Union[int, str]) – Nama atau ID peran yang akan diperiksa.