Basic Operations Questions
How should I safely check a type?
In Discord.NET, the idea of polymorphism is used throughout. You may
need to cast the object as a certain type before you can perform any
action. There are several ways to cast, with direct casting
(Type)type
being the the least recommended, as it can throw an
InvalidCastException when the object isn't the desired type.
Please refer to this post for more details.
A good and safe casting example:
[!code-csharpCasting]
How do I send a message?
Any implementation of IMessageChannel has a SendMessageAsync
method. You can get the channel via GetChannel under the client.
Remember, when using Discord.NET, polymorphism is a common recurring
theme. This means an object may take in many shapes or form, which
means casting is your friend. You should attempt to cast the channel
as an IMessageChannel or any other entity that implements it to be
able to message.
How can I tell if a message is from X, Y, Z?
You may check the message channel type. Visit Glossary to see the
various types of channels.
How do I add hyperlink text to an embed?
Embeds can use standard markdown in the description field as well as
in field values. With that in mind, links can be added using the
following format [text](link).
How do I add reactions to a message?
Any entities that implement IUserMessage has an AddReactionAsync
method. This method expects an IEmote as a parameter.
In Discord.Net, an Emote represents a server custom emote, while an
Emoji is a Unicode emoji (standard emoji). Both Emoji and Emote
implement IEmote and are valid options.
[!code-csharpEmoji]
Why am I getting so many preemptive rate limits when I try to add more than one reactions?
This is due to how .NET parses the HTML header, mistreating
0.25sec/action to 1sec. This casues the lib to throw preemptive rate
limit more frequently than it should for methods such as adding
reactions.
Can I opt-out of preemptive rate limits?
Unfortunately, not at the moment. See #401.