Periksa apakah pengguna memiliki peran Discord Python

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?


person freezy26    schedule 07.06.2020    source sumber


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

person Illic    schedule 07.06.2020

Anda dapat menggunakan @commands.has_role("Owner") saat membuat perintah untuk membatasinya hanya pada peran tertentu

https://discordpy.readthedocs.io/en/latest/ext/commands/api.html?highlight=has_role#discord.ext.commands.has_role

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.

person PapiPC12    schedule 07.06.2020
comment
Selamat datang di StackOverflow! Saat memposting tautan, harap kecualikan juga kutipan konten yang relevan jika situs tersebut tidak aktif di masa mendatang. Terima kasih! - person Benjamin Schmidt; 08.06.2020
comment
@BenjaminSchmidt memperbarui terima kasih telah memberi tahu saya! - person PapiPC12; 08.06.2020