Gateway Intent'leri
Intent'ler, gateway'e botuna hangi olay kategorilerini göndereceğini söyleyen ve op:2 Identify ile gönderdiğin bir bit alanıdır. Bitler ve anlamları Discord ile aynı. Mevcut intent yapılandırman değişiklik olmadan çalışır.
Intent bitleri
Kullanımdan kaldırılmamış tüm Discord intent bitleri GameVox'ta desteklenir. Bir özellik GameVox'ta henüz yoksa (ör. Sahne Kanalları, Planlanmış Etkinlikler) bit kabul edilir ama hiçbir olay tetiklenmez. Kütüphanen hata vermez.
| Intent | Bit | Ayrıcalıklı | Olaylar |
|---|---|---|---|
| GUILDS | 1 << 0 | GUILD_CREATE, GUILD_UPDATE, GUILD_DELETE, CHANNEL_CREATE/UPDATE/DELETE, CHANNEL_PINS_UPDATE, GUILD_ROLE_CREATE/UPDATE/DELETE | |
| GUILD_MEMBERS | 1 << 1 | ✓ | GUILD_MEMBER_ADD, GUILD_MEMBER_UPDATE, GUILD_MEMBER_REMOVE, üye parçalama (chunking) |
| GUILD_MODERATION | 1 << 2 | GUILD_BAN_ADD, GUILD_BAN_REMOVE. GUILD_AUDIT_LOG_ENTRY_CREATE kabul edilir, henüz olay yok | |
| GUILD_EMOJIS_AND_STICKERS | 1 << 3 | Kabul edilir, henüz olay yok (güncel durum için REST ile çek) | |
| GUILD_INTEGRATIONS | 1 << 4 | Kabul edilir, henüz olay yok | |
| GUILD_WEBHOOKS | 1 << 5 | Kabul edilir, henüz olay yok | |
| GUILD_INVITES | 1 << 6 | Kabul edilir, henüz olay yok | |
| GUILD_VOICE_STATES | 1 << 7 | VOICE_STATE_UPDATE, VOICE_SERVER_UPDATE | |
| GUILD_PRESENCES | 1 << 8 | ✓ | PRESENCE_UPDATE |
| GUILD_MESSAGES | 1 << 9 | Guild'lerde MESSAGE_CREATE/UPDATE/DELETE/DELETE_BULK | |
| GUILD_MESSAGE_REACTIONS | 1 << 10 | MESSAGE_REACTION_ADD, MESSAGE_REACTION_REMOVE. REMOVE_ALL / REMOVE_EMOJI kabul edilir, henüz olay yok (REST çalışır) | |
| GUILD_MESSAGE_TYPING | 1 << 11 | Guild'lerde TYPING_START | |
| DIRECT_MESSAGES | 1 << 12 | DM'lerde MESSAGE_* | |
| DIRECT_MESSAGE_REACTIONS | 1 << 13 | DM'lerde MESSAGE_REACTION_* | |
| DIRECT_MESSAGE_TYPING | 1 << 14 | DM'lerde TYPING_START | |
| MESSAGE_CONTENT | 1 << 15 | ✓ | MESSAGE_* olaylarına content, embeds, attachments, components ekler |
| GUILD_SCHEDULED_EVENTS | 1 << 16 | Kabul edilir, henüz olay yok | |
| AUTO_MODERATION_CONFIGURATION | 1 << 20 | Kabul edilir, henüz olay yok | |
| AUTO_MODERATION_EXECUTION | 1 << 21 | Kabul edilir, henüz olay yok |
Ayrıcalıklı intent'ler
Discord'da üç intent ayrıcalıklıdır ve botun 100'den fazla sunucuya ulaştığında elle onay gerektirir: GUILD_MEMBERS, GUILD_PRESENCES ve MESSAGE_CONTENT.
GameVox'ta üçü de uygulamanın Bot sekmesinde açıldığında otomatik onaylanır. Anahtar yalnızca portal tarafındaki onaya bakan kütüphaneler 4014 Disallowed intents ile bağlantıyı kapatmasın diye var. Erişim için 100 sunuculuk bir doğrulama süreci yok. Anahtarı aç, biti ayarla, bitti.
MESSAGE_CONTENT istisnaları
Discord ile birebir aynı. MESSAGE_CONTENT olmasa bile mesajın content / embeds / attachments / components alanları şu durumlarda dahil edilir:
- Mesaj kendi botundan geliyorsa (kendi mesajları her zaman içeriği içerir).
- Mesaj botunu etiketliyorsa (ID ile).
- Mesaj, botunla olan bir DM içindeyse.
- Mesaj, botunun alıcısı olduğu bir etkileşim yanıtıysa.
Henüz gönderilmeyen olaylar (ama kabul edilen intent'ler)
Aşağıdaki intent'leri açmak güvenli (veri formatı bunları kabul eder ve kütüphanen hata vermez), ama bugün hiçbir olay yayınlanmıyor. Botunun mantığı bunlardan birine bağlıysa şimdilik REST'i yokla:
USER_UPDATEGUILD_EMOJIS_UPDATE,GUILD_STICKERS_UPDATEWEBHOOKS_UPDATE,INTEGRATION_CREATE/UPDATE/DELETE,INVITE_CREATE/DELETEGUILD_AUDIT_LOG_ENTRY_CREATEMESSAGE_REACTION_REMOVE_ALL,MESSAGE_REACTION_REMOVE_EMOJI(REST endpoint'leri çalışır)THREAD_*,STAGE_INSTANCE_*,GUILD_SCHEDULED_EVENT_*,AUTO_MODERATION_*,MESSAGE_POLL_*
Kendi barındırdığın sunucular daha da kısıtlı bir alt küme gönderir. Tam liste için o sayfaya bak.
Görebileceğin kapanış kodları
4013 Invalid intent(s): geçerli maskenin üzerinde bir bit ayarlanmış (kütüphanenin bit hesabını tekrar kontrol et).4014 Disallowed intents: geliştirici portalında karşılık gelen anahtar açılmadan ayrıcalıklı bir intent biti ayarlanmış.
Örnek: intent'leri ayarlama
discord.js
const { GatewayIntentBits } = require('discord.js');
const intents =
GatewayIntentBits.Guilds
| GatewayIntentBits.GuildMessages
| GatewayIntentBits.MessageContent; // ayrıcalıklı, önce portalda aç
const client = new Client({ intents }); discord.py
intents = discord.Intents.default()
intents.members = True # ayrıcalıklı
intents.message_content = True # ayrıcalıklı
client = discord.Client(intents=intents)