Saya mencoba menulis bot perselisihan dan mengalami beberapa masalah dalam membuat daftar pengguna terhubung ke saluran suara. Saya diberitahu untuk mengatur niat. Jadi saya membaca dokumentasi dan menulis sedikit kode ini:

client = discord.Client()
client.intents.members = True
client.intents.presences = True
print_intents()

Metode print_intents adalah salah satu yang saya buat sendiri dan melakukan seperti namanya, mencetak nilai semua atribut dari objek client.intents. Ini menghasilkan yang berikut:

bans: True
dm_messages: True
dm_reactions: True
dm_typing: True
emojis: True
guild_messages: True
guild_reactions: True
guild_typing: True
guilds: True
integrations: True
invites: True
members: False
messages: True
presences: False
reactions: True
typing: True
value: 32509
voice_states: True
webhooks: True

Ini cocok dengan pengaturan default Intent seperti yang dikembalikan oleh metode defaultnya. Dua nilai yang ingin saya ubah masih memiliki nilai default. Saya tidak mengerti mengapa demikian. Dalam dokumentasi dikatakan:

Mirip dengan Izin, properti yang disediakan adalah dua arah. Anda dapat mengatur dan mengambil bit individu menggunakan properti seolah-olah itu adalah bool biasa.

0
caluthan 25 Mei 2021, 15:43

1 menjawab

Jawaban Terbaik

Atribut client.intents harus dari kelas discord.Intents. Mereka tidak dapat ditugaskan dengan cara yang telah Anda lakukan. (Menurut dokumen, itu harus bertipe discord.Intents).
Lihat discord.Intents dokumen.

Anda harus menggunakan discord.Intents.all() karena akan mendefinisikan semua maksud sebagai True. .default() hanya menghapus yang Anda inginkan. .all() tidak akan.

Cara terbaik untuk melakukannya adalah selama inisialisasi.

intents = discord.Intents.all() # You can use this
# OR create Intents and manually change the values
intents = discord.Intents.default()
intents.members = True
intents.presences = True
client = discord.Client(intents=intents)
4
12944qwerty 25 Mei 2021, 12:51