Documentation structure

Types of pages

Subjects are organized into "container" pages, which can contain both container pages and "class" pages. Container pages are basically just pages that contain other pages. Class pages on the other hand document actual classes. The top-level container pages contain a tutorial explaining specific subjects (Guilds, Channels, etc.).

Class pages follow 1 of these formats:

Optional properties/parameters

Sometimes, certain class properties or method parameters are optional. To mark this, the 'Type' column of one of the tables have a '?' added, following c#'s Nullable value types.

Format of subject-specific tutorials



Methods will be referenced using the format {class}.{method}(), with {class} removed if

  • It's clear from context, i.e. that the class has already been referenced.

  • The method is exposed, i.e. that it's callable from clients.

  • If it's a method that can be called from multiple classes, with that being the intended reference of the method.

Links to relevant pages in the docs, whether that would be a tutorial or a class, can be found at the bottom of a tutorial section. Unfortunately, due to the way GitBook works, i cannot specify the section.

Common methods

The methods .Update(), .Modify() and .Delete() are really common among API-bound classes, and will therefore not be in the tutorials unless i want to explain a "quirk" with one of them. The same can be said for the .GetX() and .CreateX() methods (X being an object like Channel, Guild, etc.). Instead, placeholders are used.

Property classes

An object's .Modify() method usually has a 'Properties' class as a parameter. These property classes basically just have a set of optional values that will be applied to the object.



To simplify the subject-specific tutorials, placeholders are used. For example, instead of each channel example calling .GetChannel(), they can just use 'channel'.

Here's a list of the placeholders that will be used:

  • guild: MinimalGuild

  • channel: MinimalChannel or MinimalTextChannel, clear from context

  • hook: DiscordWebhook

  • member: GuildMember

The placeholders can either be of the type specified above, or one of the classes it derives. If the type isn't clear from context, it will be stated explicitly.


Often, only the member of the enum is referenced. This will be done whenever the enum type is known from context. An example of this is the ChannelType enum, where i might just specify Text or Group.