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]
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.
You may check the message channel type. Visit Glossary to see the
various types of channels.
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).
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]
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.
Unfortunately, not at the moment. See #401.