* Fix broken link (#11) * Fix typos and improve wording * Add information for IGuildUser + Add GetPermission sample + Add ModifyAsync remarks * Add information for IGuildChannel + Add ModifyAsync remarks + Add GetOverwritePermissionAsync examples * Add warning for Direction.Around * Fix indentations and references * Move IRole.ModifyAsync sample * Add information for IUser + Add example, remarks for Get(Default)AvatarUrl + Add example, remarks for GetOrCreateDMChannelAsync + Add missing remarks/summary/returns for other properties of the class * Change verbs used in IVoiceState summary/remarks * Add additional explanation for IGuildUser.RoleIds * Change verbs used in IMessage summary/remarks * Clarify IUserMessage Add/RemoveReactionAsync samples * Fix command handler sample typo * Add information for DiscordSocketConfig + Add remarks/example to the class + Add remarks to AlwaysDownloadUsers * Fix documentation for SlowMode * Add additional remarks for Guild/TextChannelProperties * Update DocFx.Plugins.LastModified to v1.2.0 This should drastically improve docfx build time. * Add missing dependencies * Update DocFx.Plugins.LastModified to v1.2.1 Improve performance * Update DocFx.Plugins.LastModified to v1.2.2 * Clarify deployment.md + Rewritten .NET Core deployment strategies for better clarification * Split deployment types into framework-dependent and self-contained * Clarify the benefits of using different types of publishing * Include a sample of how to execute dotnet application with the dotnet command in a TIP dialog for visibility * Update post-execution article and samples + This change is to reflect changes made in https://github.com/RogueException/Discord.Net/pull/1164, where CommandInfo is now passed into the CommandExecuted event as an Optional<T> * Update DocFX.Plugin.DescriptionGenerator to v1.1.1 * Adjust according to recent CommandExecuted changes See: +f549da50e0+6260749095* Add further documentation for https://github.com/RogueException/Discord.Net/pull/1037 * Add partial documentation for the precondition helper class * Include CHANGELOG.md in docs * Revise post-execution docs * Fix incorrect Optional<T> usage * Indent some sample code and add a comment reminding the user that the post-execution basic sample code is not ideal. * Streamline docs for Attachment + This commit also adds further explanation for why Embeds and Attachments are read-only collections * Add further documentation for MessageActivity and MessageApplication * Add caching-related docs to ISocketMessageChannel * Add missing documentation inheritance for SyncPermissionsAsync * Streamline documentation process This is done by changing the documentation of the implementations required by interfaces to redirect to the interface method instead (e.g., SocketDMChannel#GetMessagesAsync refer to IMessageChannel.GetMessagesAsync within the remarks of the method). * Cleanup92bf8363ca* Update src/Discord.Net.Core/Entities/Channels/Direction.cs Co-Authored-By: Still34 <341464@gmail.com> * Update src/Discord.Net.Core/Entities/Channels/Direction.cs Co-Authored-By: Still34 <341464@gmail.com> * Update src/Discord.Net.Core/Entities/Channels/GuildChannelProperties.cs Co-Authored-By: Still34 <341464@gmail.com> * Update src/Discord.Net.WebSocket/DiscordSocketConfig.cs Co-Authored-By: Still34 <341464@gmail.com> * Update according to PR suggestions * Reword sentences of deployment article for clarification & remove mention of portability * Fix typos/grammar errors within TextChannelProperties * Add the logo SVG to the page navbar * Implement changing logo image based on theme color using CSS background image * Add a favicon * use the purple logomark instead of white * hack? set the title to navbar svg to read "Discord.Net Docs"
4.3 KiB
uid, title
| uid | title |
|---|---|
| FAQ.Basics.BasicOp | Questions about Basic Operations |
Basic Operations Questions
In the following section, you will find commonly asked questions and answers regarding basic usage of the library, as well as language-specific tips when using this library.
How should I safely check a type?
Warning
Direct casting (e.g.,
(Type)type) is the least recommended way of casting, as it can throw an InvalidCastException when the object isn't the desired type.Please refer to this post for more details.
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.
A good and safe casting example:
[!code-csharpCasting]
How do I send a message?
Tip
The GetChannel method by default returns an IChannel, allowing channel types such as IVoiceChannel, ICategoryChannel to be returned; consequently, you cannot send a message to channels like those.
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 channel?
You may check the message channel type. Visit Glossary to see the various types of channels.
How can I get the guild from a message?
There are 2 ways to do this. You can do either of the following,
- Cast the user as an IGuildUser and use its IGuild property.
- Cast the channel as an IGuildChannel and use its IGuild property.
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 with
[text](link).
How do I add reactions to a message?
Any entity that implements IUserMessage has an AddReactionAsync method. This method expects an IEmote as a parameter. In Discord.Net, an Emote represents a custom-image emote, while an Emoji is a Unicode emoji (standard emoji). Both Emoji and Emote implement IEmote and are valid options.
Adding a reaction to another message
[!code-csharpEmoji]
Adding a reaction to a sent message
[!code-csharpEmoji]
What is a "preemptive rate limit?"
A preemptive rate limit is Discord.Net's way of telling you to slow down before you get hit by the real rate limit. Hitting a real rate limit might prevent your entire client from sending any requests for a period of time. This is calculated based on the HTTP header returned by a Discord response.
Why am I getting so many preemptive rate limits when I try to add more than one reactions?
This is due to how HTML header works, mistreating 0.25sec/action to 1sec. This causes 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.