From 2e06239d3c9c62887e479a21a9fd5bd4e7c6e473 Mon Sep 17 00:00:00 2001 From: Rapptz Date: Wed, 23 Sep 2020 01:54:14 -0400 Subject: [PATCH] Add documentation for gateway intents --- discord/flags.py | 109 ++++++++++++++++++++- docs/images/discord_bot_tab.png | Bin 0 -> 9430 bytes docs/images/discord_privileged_intents.png | Bin 0 -> 51849 bytes docs/index.rst | 1 + docs/intents.rst | 98 ++++++++++++++++++ 5 files changed, 206 insertions(+), 2 deletions(-) create mode 100644 docs/images/discord_bot_tab.png create mode 100644 docs/images/discord_privileged_intents.png create mode 100644 docs/intents.rst diff --git a/discord/flags.py b/discord/flags.py index 47a3bcae4..f568c26f8 100644 --- a/discord/flags.py +++ b/discord/flags.py @@ -418,6 +418,15 @@ class Intents(BaseFlags): - :func:`on_guild_channel_create` - :func:`on_guild_channel_delete` - :func:`on_guild_channel_pins_update` + + This also corresponds to the following attributes and classes in terms of cache: + + - :attr:`Client.guilds` + - :class:`Guild` and all its attributes. + - :meth:`Client.get_channel` + - :meth:`Client.get_all_channels` + + It is highly advisable to leave this intent enabled for your bot to function. """ return 1 << 0 @@ -432,9 +441,25 @@ class Intents(BaseFlags): - :func:`on_member_update` (nickname, roles) - :func:`on_user_update` + This also corresponds to the following attributes and classes in terms of cache: + + - :attr:`Client.get_all_members` + - :meth:`Guild.chunk` + - :meth:`Guild.fetch_members` + - :meth:`Guild.members` + - :meth:`Guild.get_member` + - :attr:`Member.roles` + - :attr:`Member.nick` + - :attr:`Member.premium_since` + - :attr:`User.name` + - :attr:`User.avatar` (:meth:`User.avatar_url` and :meth:`User.avatar_url_as`) + - :attr:`User.discriminator` + + For more information go to the :ref:`member intent documentation `. + .. note:: - Currently, this requires opting in explicitly via the dev portal as well. + Currently, this requires opting in explicitly via the developer portal as well. Bots in over 100 guilds will need to apply to Discord for verification. """ return 1 << 1 @@ -447,6 +472,8 @@ class Intents(BaseFlags): - :func:`on_member_ban` - :func:`on_member_unban` + + This does not correspond to any attributes or classes in the library in terms of cache. """ return 1 << 2 @@ -457,6 +484,13 @@ class Intents(BaseFlags): This corresponds to the following events: - :func:`on_guild_emojis_update` + + This also corresponds to the following attributes and classes in terms of cache: + + - :class:`Emoji` + - :meth:`Client.get_emoji` + - :meth:`Client.emojis` + - :attr:`Guild.emojis` """ return 1 << 3 @@ -467,6 +501,8 @@ class Intents(BaseFlags): This corresponds to the following events: - :func:`on_guild_integrations_update` + + This does not correspond to any attributes or classes in the library in terms of cache. """ return 1 << 4 @@ -477,6 +513,8 @@ class Intents(BaseFlags): This corresponds to the following events: - :func:`on_webhooks_update` + + This does not correspond to any attributes or classes in the library in terms of cache. """ return 1 << 5 @@ -488,6 +526,8 @@ class Intents(BaseFlags): - :func:`on_invite_create` - :func:`on_invite_delete` + + This does not correspond to any attributes or classes in the library in terms of cache. """ return 1 << 6 @@ -498,6 +538,12 @@ class Intents(BaseFlags): This corresponds to the following events: - :func:`on_voice_state_update` + + This also corresponds to the following attributes and classes in terms of cache: + + - :attr:`VoiceChannel.members` + - :attr:`VoiceChannel.voice_states` + - :attr:`Member.voice` """ return 1 << 7 @@ -509,9 +555,17 @@ class Intents(BaseFlags): - :func:`on_member_update` (activities, status) + This also corresponds to the following attributes and classes in terms of cache: + + - :attr:`Member.activities` + - :attr:`Member.status` + - :attr:`Member.raw_status` + + For more information go to the :ref:`presence intent documentation `. + .. note:: - Currently, this requires opting in explicitly via the dev portal as well. + Currently, this requires opting in explicitly via the developer portal as well. Bots in over 100 guilds will need to apply to Discord for verification. """ return 1 << 8 @@ -530,6 +584,17 @@ class Intents(BaseFlags): - :func:`on_raw_message_delete` (both guilds and DMs) - :func:`on_raw_message_update` (both guilds and DMs) - :func:`on_private_channel_create` + + This also corresponds to the following attributes and classes in terms of cache: + + - :class:`Message` + - :attr:`Client.cached_messages` + + Note that due to an implicit relationship this also corresponds to the following events: + + - :func:`on_reaction_add` (both guilds and DMs) + - :func:`on_reaction_remove` (both guilds and DMs) + - :func:`on_reaction_clear` (both guilds and DMs) """ return (1 << 9) | (1 << 12) @@ -546,6 +611,17 @@ class Intents(BaseFlags): - :func:`on_message_delete` (only for guilds) - :func:`on_raw_message_delete` (only for guilds) - :func:`on_raw_message_update` (only for guilds) + + This also corresponds to the following attributes and classes in terms of cache: + + - :class:`Message` + - :attr:`Client.cached_messages` (only for guilds) + + Note that due to an implicit relationship this also corresponds to the following events: + + - :func:`on_reaction_add` (only for guilds) + - :func:`on_reaction_remove` (only for guilds) + - :func:`on_reaction_clear` (only for guilds) """ return 1 << 9 @@ -563,6 +639,17 @@ class Intents(BaseFlags): - :func:`on_raw_message_delete` (only for DMs) - :func:`on_raw_message_update` (only for DMs) - :func:`on_private_channel_create` + + This also corresponds to the following attributes and classes in terms of cache: + + - :class:`Message` + - :attr:`Client.cached_messages` (only for DMs) + + Note that due to an implicit relationship this also corresponds to the following events: + + - :func:`on_reaction_add` (only for DMs) + - :func:`on_reaction_remove` (only for DMs) + - :func:`on_reaction_clear` (only for DMs) """ return 1 << 12 @@ -580,6 +667,10 @@ class Intents(BaseFlags): - :func:`on_raw_reaction_add` (both guilds and DMs) - :func:`on_raw_reaction_remove` (both guilds and DMs) - :func:`on_raw_reaction_clear` (both guilds and DMs) + + This also corresponds to the following attributes and classes in terms of cache: + + - :attr:`Message.reactions` (both guild and DM messages) """ return (1 << 10) | (1 << 13) @@ -597,6 +688,10 @@ class Intents(BaseFlags): - :func:`on_raw_reaction_add` (only for guilds) - :func:`on_raw_reaction_remove` (only for guilds) - :func:`on_raw_reaction_clear` (only for guilds) + + This also corresponds to the following attributes and classes in terms of cache: + + - :attr:`Message.reactions` (only for guild messages) """ return 1 << 10 @@ -614,6 +709,10 @@ class Intents(BaseFlags): - :func:`on_raw_reaction_add` (only for DMs) - :func:`on_raw_reaction_remove` (only for DMs) - :func:`on_raw_reaction_clear` (only for DMs) + + This also corresponds to the following attributes and classes in terms of cache: + + - :attr:`Message.reactions` (only for DM messages) """ return 1 << 13 @@ -626,6 +725,8 @@ class Intents(BaseFlags): This corresponds to the following events: - :func:`on_typing` (both guilds and DMs) + + This does not correspond to any attributes or classes in the library in terms of cache. """ return (1 << 11) | (1 << 14) @@ -638,6 +739,8 @@ class Intents(BaseFlags): This corresponds to the following events: - :func:`on_typing` (only for guilds) + + This does not correspond to any attributes or classes in the library in terms of cache. """ return 1 << 11 @@ -650,6 +753,8 @@ class Intents(BaseFlags): This corresponds to the following events: - :func:`on_typing` (only for DMs) + + This does not correspond to any attributes or classes in the library in terms of cache. """ return 1 << 14 diff --git a/docs/images/discord_bot_tab.png b/docs/images/discord_bot_tab.png new file mode 100644 index 0000000000000000000000000000000000000000..835682448e3fc42afb5a6480b12e9c559e04acdc GIT binary patch literal 9430 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 literal 0 HcmV?d00001 diff --git a/docs/images/discord_privileged_intents.png b/docs/images/discord_privileged_intents.png new file mode 100644 index 0000000000000000000000000000000000000000..297eabbb5e2d64b36df6246cea370b52125f0cbb GIT binary patch literal 51849 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 Tuj_vS|5P7oJuH9l?9KlIyuJ*i literal 0 HcmV?d00001 diff --git a/docs/index.rst b/docs/index.rst index 99868756d..20c5d1836 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -49,6 +49,7 @@ Additional Information :maxdepth: 2 discord + intents faq whats_new version_guarantees diff --git a/docs/intents.rst b/docs/intents.rst new file mode 100644 index 000000000..fd6d0bbe1 --- /dev/null +++ b/docs/intents.rst @@ -0,0 +1,98 @@ +.. currentmodule:: discord +.. versionadded:: 1.5 +.. _intents_primer: + +A Primer to Gateway Intents +============================= + +In version 1.5 comes with the introduction of :class:`Intents`. This is a radical change in how bots are written. An intent basically allows a bot to subscribe into specific buckets of events. The events that correspond to each intent is documented in the individual attribute of the :class:`Intents` documentation. + +These intents are passed to the constructor of :class:`Client` or its subclasses (:class:`AutoShardedClient`, :class:`~.AutoShardedBot`, :class:`~.Bot`) with the ``intents`` argument. + +If intents are not passed, then the library defaults to every intent being enabled except the privileged intents, currently :attr:`Intents.members` and :attr:`Intents.presences`. + +What intents are needed? +-------------------------- + +The intents that are necessary for your bot can only be dictated by yourself. Each attribute in the :class:`Intents` class documents what :ref:`events ` it corresponds to and what kind of cache it enables. + +For example, if you want a bot that functions without spammy events like presences or typing then we could do the following: + +.. code-block:: python3 + + import discord + intents = Intents(typing=False, presences=False) + +Note that this doesn't enable :attr:`Intents.members` since it's a privileged intent. + +Another example showing a bot that only deals with messages and guild information: + +.. code-block:: python3 + + import discord + intents = discord.Intents(messages=True, guilds=True) + # If you also want reaction events enable the following: + # intents.reactions = True + +.. _privileged_intents: + +Privileged Intents +--------------------- + +With the API change requiring bot authors to specify intents, some intents were restricted further and require more manual steps. These intents are called **privileged intents**. + +A privileged intent is one that requires you to go to the developer portal and manually enable it. To enable privileged intents do the following: + +1. Make sure you're logged on to the `Discord website `_. +2. Navigate to the `application page `_ +3. Click on the bot you want to enable privileged intents for. +4. Navigate to the bot tab on the left side of the screen. + + .. image:: /images/discord_bot_tab.png + :alt: The bot tab in the application page. + +5. Scroll down to the "Privileged Gateway Intents" section and enable the ones you want. + + .. image:: /images/discord_privileged_intents.png + :alt: The privileged gateway intents selector. + +.. warning:: + + Enabling privileged intents when your bot is in over 100 guilds requires going through `bot verification `_. If your bot is already verified and you would like to enable a privileged intent you must go through `discord support `_ and talk to them about it. + +Do I need privileged intents? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This is a quick checklist to see if you need specific privileged intents. + +Presence Intent ++++++++++++++++++ + +- Whether you use :attr:`Member.status` at all to track member statuses. +- Whether you use :attr:`Member.activity` or :attr:`Member.activities` to check member's activities. + +Member Intent ++++++++++++++++ + +- Whether you track member joins or member leaves, corresponds to :func:`on_member_join` and :func:`on_member_remove` events. +- Whether you want to track member updates such as nickname or role changes. +- Whether you want to track user updates such as usernames, avatars, discriminators, etc. +- Whether you want to request the guild member list through :meth:`Guild.chunk` or :meth:`Guild.fetch_members`. +- Whether you want high accuracy member cache under :attr:`Guild.members`. + +Member Cache +------------- + +Along with intents, Discord now further restricts the ability to cache members and expects bot authors to cache as little as is necessary. However, to properly maintain a cache the :attr:`Intents.members` intent is required in order to track the members who left and properly evict them. + +To aid with member cache where we don't need members to be cached, the library now has a :class:`MemberCacheFlags` flag to control the member cache. The documentation page for the class goes over the specific policies that are possible. + +It should be noted that certain things do not need a member cache since Discord will provide full member information if possible. For example: + +- :func:`on_message` will have :attr:`Message.author` be a member even if cache is disabled. +- :func:`on_voice_state_update` will have the ``member`` parameter be a member even if cache is disabled. +- :func:`on_reaction_add` will have the ``user`` parameter be a member even if cache is disabled. +- :func:`on_raw_reaction_add` will have :attr:`RawReactionActionEvent.member` be a member even if cache is disabled. +- The reaction removal events do not have the member information. This is a Discord limitation. + +Other events that take a :class:`Member` will require the use of the member cache. If absolute accuracy over the member cache is desirable, then it is advisable to have the :attr:`Intents.members` intent enabled.