> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dogebot.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Discord objects

> Read anything Discord knows about a server, channel, member, user, role and more.

The normal variables cover the things people use most. But Discord knows **much more**: when a channel was made, how many boosts a server has, a member's nickname, a role's colour and lots else.

**Discord objects** let you read all of it. They start with a **capital letter**, then a **dot**, then the thing you want:

```text theme={null}
{Guild.memberCount}
{Member.nickname}
{Channel.topic}
```

## The objects

| Object | What it's about | Ready by itself? | Example |
| - | - | - | - |
| `Guild` | The server | Yes | `{Guild.premiumSubscriptionCount}` (how many boosts) |
| `Channel` | The channel | Yes | `{Channel.rateLimitPerUser}` (slowmode seconds) |
| `Member` | The person, **as a member of this server** | Yes | `{Member.nickname}` |
| `User` | The person's Discord account | Yes | `{User.globalName}` |
| `Message` | The message, in **message events** | In message events | `{Message.content}` |
| `Role` | A role | Needs an ID | `{Role[ROLE_ID].hexColor}` |
| `Emoji` | A custom emoji | Needs an ID | `{Emoji[EMOJI_ID].name}` |
| `Sticker` | A sticker | Needs an ID | `{Sticker[STICKER_ID].name}` |
| `GuildScheduledEvent` | A scheduled event | Needs an ID | `{GuildScheduledEvent[EVENT_ID].userCount}` |

**Ready by itself** means it already knows which one you mean. In a command, `{Member.nickname}` is the nickname of whoever used the command.

## Pointing at a different one

Put `[ ]` **straight after the object name**, before the dot. Inside, use an ID, an input like `option_user`, or a variable:

```text theme={null}
{Member[option_user].nickname}
{Channel[879733469452836864].topic}
{User[{bot_id}].username}
{Guild[{event_guild_id}].memberCount}
{Role[option_role].hexColor}
```

> [!WARNING]
>
> The brackets go **before** the dot. `{Member[option_user].nickname}` works. `{Member.nickname[option_user]}` does not.

See [Point a variable at someone else](/variables/point-at-someone-else) for everything that can go inside the brackets.

## Going deeper with more dots

Some things have things inside them. Keep adding dots:

| You write | You get |
| - | - |
| `{Member.user.username}` | The member's username |
| `{Channel.parent.name}` | The category the channel is in |
| `{Guild.owner.user.username}` | The server owner's username |

## Useful ones to start with

| You want | Write |
| - | - |
| How many boosts the server has | `{Guild.premiumSubscriptionCount}` |
| The server's boost level | `{Guild.premiumTier}` |
| The server description | `{Guild.description}` |
| When the server was made (seconds) | `{Guild.createdTimestamp}` |
| The channel's slowmode | `{Channel.rateLimitPerUser}` |
| The category a channel is in | `{Channel.parent.name}` |
| A member's nickname | `{Member.nickname}` |
| When a member started boosting | `{Member.premiumSinceTimestamp}` |
| A member's highest role | `{Member.roles.highest.name}` |
| A user's global display name | `{User.globalName}` |
| A role's colour | `{Role[ROLE_ID].hexColor}` |
| How many people have a role | `{Role[ROLE_ID].members.size}` |

> [!NOTE]
>
> These names come from Discord itself, so they use Discord's own words. Discord calls a server a **guild**, and a boost a **premium subscription**.

## If it shows as plain text

If you see `{Member.nickname}` in Discord instead of a value, either:

* that thing is **empty** (the person has no nickname). Add a backup: `{Member.nickname|no nickname}`.
* the name after the dot is **spelled wrong**. Capital letters matter: `memberCount`, not `membercount`.
* the bot **can't see** it, for example a member who already left.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.