102 lines
3.8 KiB
Markdown
102 lines
3.8 KiB
Markdown
---
|
||
uid: Guides.Emoji
|
||
title: Emoji
|
||
---
|
||
|
||
# Emoji in Discord.Net
|
||
|
||
Before we delve into the difference between an @Discord.Emoji and an
|
||
@Discord.Emote in Discord.Net, it is **crucial** to understand what
|
||
they both look like behind the scene. When the end-users are sending
|
||
or receiving an emoji or emote, they are typically in the form of
|
||
`:ok_hand:` or `:reeee:`; however, what goes under the hood is that,
|
||
depending on the type of emoji, they are sent in an entirely
|
||
different format.
|
||
|
||
What does this all mean? It means that you should know that by
|
||
reacting with a string like `“:ok_hand:”` will **NOT** automatically
|
||
translate to `👌`; rather, it will be treated as-is,
|
||
like `:ok_hand:`, thus the server will return a `400 Bad Request`.
|
||
|
||
## Emoji
|
||
|
||
An emoji is a standard emoji that can be found anywhere else outside
|
||
of Discord, which means strings like `👌`, `♥`, `👀` are all
|
||
considered an emoji in Discord. However, from the
|
||
introduction paragraph we have learned that we cannot
|
||
simply send `:ok_hand:` and have Discord take
|
||
care of it, but what do we need to send exactly?
|
||
|
||
To send an emoji correctly, one must send the emoji in its Unicode
|
||
form; this can be obtained in several different ways.
|
||
|
||
1. (Easiest) Escape the emoji by using the escape character, `\`, in
|
||
your Discord chat client; this will reveal the emoji’s pure Unicode
|
||
form, which will allow you to copy-paste into your code.
|
||
2. Look it up on Emojipedia, from which you can copy the emoji
|
||
easily into your code.
|
||
![Emojipedia](images/emojipedia.png)
|
||
3. (Recommended) Look it up in the Emoji list from [FileFormat.Info];
|
||
this will give you the .NET-compatible code that
|
||
represents the emoji.
|
||
* This is the most recommended method because some systems or
|
||
IDE sometimes do not render the Unicode emoji correctly.
|
||
![Fileformat Emoji Source Code](images/fileformat-emoji-src.png)
|
||
|
||
### Emoji Declaration
|
||
|
||
After obtaining the Unicode representation of the emoji, you may
|
||
create the @Discord.Emoji object by passing the string with unicode into its
|
||
constructor (e.g. `new Emoji("👌");` or `new Emoji("\uD83D\uDC4C");`).
|
||
|
||
Your method of declaring an @Discord.Emoji should look similar to
|
||
this:
|
||
[!code-csharp[Emoji Sample](samples/emoji-sample.cs)]
|
||
|
||
Also you can use `Emoji.Parse()` or `Emoji.TryParse()` methods
|
||
for parsing emojis from strings like `:heart:`, `<3` or `❤`.
|
||
|
||
[FileFormat.Info]: https://www.fileformat.info/info/emoji/list.htm
|
||
|
||
## Emote
|
||
|
||
The meat of the debate is here; what is an emote and how does it
|
||
differ from an emoji? An emote refers to a **custom emoji**
|
||
created on Discord.
|
||
|
||
The underlying structure of an emote also differs drastically; an
|
||
emote looks sort-of like a mention on Discord. It consists of two
|
||
main elements as illustrated below:
|
||
|
||
![Emote illustration](images/emote-format.png)
|
||
|
||
As you can see, emote uses a completely different format. To obtain
|
||
the raw string as shown above for your emote, you would need to
|
||
escape the emote using the escape character `\` in chat somewhere.
|
||
|
||
### Emote Declaration
|
||
|
||
After obtaining the raw emote string, you would need to use
|
||
@Discord.Emote.Parse* or @Discord.Emote.TryParse* to create a valid
|
||
emote object.
|
||
|
||
Your method of declaring an @Discord.Emote should look similar to
|
||
this:
|
||
|
||
[!code[Emote Sample](samples/emote-sample.cs)]
|
||
|
||
> [!TIP]
|
||
> For WebSocket users, you may also consider fetching the Emote
|
||
> via the @Discord.WebSocket.SocketGuild.Emotes collection.
|
||
> [!code-csharp[Socket emote sample](samples/socket-emote-sample.cs)]
|
||
|
||
> [!TIP]
|
||
> On Discord, any user with Discord Nitro subscription may use
|
||
> custom emotes from any guilds they are currently in. This is also
|
||
> true for _any_ standard bot accounts; this does not require
|
||
> the bot owner to have a Nitro subscription.
|
||
|
||
## Additional Information
|
||
|
||
To learn more about emote and emojis and how they could be used,
|
||
see the documentation of @Discord.IEmote.
|