@@ -1,4 +1,75 @@ | |||
|stub| Events | |||
============= | |||
|stub-desc| | |||
Usage | |||
----- | |||
To take advantage of Events in Discord.Net, you need to hook into them. | |||
There are two ways of hooking into events. See the example for examples on using these events. | |||
Usable Events | |||
------------- | |||
+--------------------+--------------------+------------------------------------------+ | |||
| Event Name | EventArgs | Description | | |||
+====================+====================+==========================================+ | |||
| UserBanned | BanEventArgs | Called when a user is banned. | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| UserUnbanned | BanEventArgs | Called when a user is unbanned. | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| ChannelCreated | ChannelEventArgs | Called when a channel is created. | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| ChannelDestroyed | ChannelEventArgs | Called when a channel is destroyed. | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| ChannelUpdated | ChannelEventArgs | Called when a channel is updated. | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| MessageReceived | MessageEventArgs | Called when a message is received. | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| MessageSent | MessageEventArgs | Called when a message is sent. | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| MessageDeleted | MessageEventArgs | Called when a message is deleted. | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| MessageUpdated | MessageEventArgs | Called when a message is updated\\edited.| | |||
+--------------------+--------------------+------------------------------------------+ | |||
| MessageReadRemotely| MessageEventArgs | Called when a message is read. | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| RoleCreated | RoleEventArgs | Called when a role is created. | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| RoleUpdated | RoleEventArgs | Called when a role is updated. | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| RoleDeleted | RoleEventArgs | Called when a role is deleted. | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| JoinedServer | ServerEventArgs | Called when a member joins a server. | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| LeftServer | ServerEventArgs | Called when a member leaves a server. | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| ServerUpdated | ServerEventArgs | Called when a server is updated. | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| ServerUnavailable | ServerEventArgs | Called when a Discord server goes down. | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| ServerAvailable | ServerEventArgs |Called when a Discord server goes back up.| | |||
+--------------------+--------------------+------------------------------------------+ | |||
| UserJoined | UserEventArgs | Called when a user joins a Channel. | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| UserLeft | UserEventArgs | Called when a user leaves a Channel. | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| UserUpdated | UserEventArgs | --- | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| UserPresenceUpdated| UserEventArgs | Called when a user's presence changes. | | |||
| | | (Here\\Away) | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| UserVoiceState | UserEventArgs | Called when a user's voice state changes.| | |||
| Updated | | (Muted\\Unmuted) | | |||
+--------------------+--------------------+------------------------------------------+ | |||
|UserIsTypingUpdated | UserEventArgs | Called when a user starts\\stops typing. | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| UserIsSpeaking | UserEventArgs | Called when a user's voice state changes.| | |||
| Updated | | (Speaking\\Not Speaking) | | |||
+--------------------+--------------------+------------------------------------------+ | |||
| ProfileUpdated | N/A | Called when a user's profile changes. | | |||
+--------------------+--------------------+------------------------------------------+ | |||
Example | |||
------- | |||
.. literalinclude:: /samples/events.cs | |||
:language: csharp6 | |||
:tab-width: 2 |
@@ -1,4 +1,75 @@ | |||
|stub| Permissions | |||
Permissions | |||
================== | |||
|stub-desc| | |||
There are two types of permissions: *Channel Permissions* and *Server Permissions*. | |||
Channel Permissions | |||
------------------- | |||
Channel Permissions have a set of bools behind them: | |||
======================= ======= ============== | |||
Flag Type Description | |||
======================= ======= ============== | |||
AttachFiles Text Send files to a channel. | |||
Connect Voice Connect to a voice channel. | |||
CreateInstantInvite General Create an invite to the channel. | |||
DeafenMembers Voice Prevent users of a voice channel from hearing other users (server-wide). | |||
EmbedLinks Text Create embedded links. | |||
ManageChannel General Manage a channel. | |||
ManageMessages Text Remove messages in a channel. | |||
ManagePermissions General Manage the permissions of a channel. | |||
MentionEveryone Text Use @everyone in a channel. | |||
MoveMembers Voice Move members around in voice channels. | |||
MuteMembers Voice Mute users of a voice channel (server-wide). | |||
ReadMessageHistory Text Read the chat history of a voice channel. | |||
ReadMessages Text Read any messages in a text channel; exposes the text channel to users. | |||
SendMessages Text Send messages in a text channel. | |||
SendTTSMessages Text Send TTS messages in a text channel. | |||
Speak Voice Speak in a voice channel. | |||
UseVoiceActivation Voice Use Voice Activation in a text channel (for large channels where PTT is preferred) | |||
======================= ======= ============== | |||
If a user has a permission, the value is true. Otherwise, it must be null. | |||
Dual Channel Permissions | |||
------------------------ | |||
You may also access a user's permissions in a channel with the DualChannelPermissions class. | |||
Unlike normal ChannelPermissions, DualChannelPermissions hold three values: | |||
If a user has a permission, the value is true. If a user is denied a permission, it will be false. If the permission is not set, the value will return null. | |||
Setting Channel Permissions | |||
--------------------------- | |||
To set channel permissions, you may use either two ChannelPermissions, or one DualChannelPermissions. | |||
In the case of using two Channel Permissions, you must create one list of allowed permissions, and one list of denied permissions. | |||
Otherwise, you can use a single DualChannelPermissions. | |||
Server Permissions | |||
------------------ | |||
Server permisisons are read-only, you cannot change them. You may still access them, however, using User.GetServerPermissions(); | |||
A user's server permissions also contain the default values for it's channel permissions, so the channel permissions listed above are also valid flags for Server Permissions. There are also a few extra Server Permissions: | |||
======================= ======= ============== | |||
Flag Type Description | |||
======================= ======= ============== | |||
BanMembers Server Ban users from the server. | |||
KickMembers Server Kick users from the server. They can stil rejoin. | |||
ManageRoles Server Manage roles on the server, and their permissions. | |||
ManageChannels Server Manage channels that exist on the server (add, remove them) | |||
ManageServer Server Manage the server settings. | |||
Roles | |||
----- | |||
Managing permissions for roles is much easier than for users in channels. For roles, just access the flag under `Role.Permissions`. | |||
Example | |||
------- | |||
.. literalinclude:: /samples/permissions.cs | |||
:language: csharp6 | |||
:tab-width: 2 |
@@ -1,2 +1,2 @@ | |||
.. |stub| unicode:: U+0D83D U+0DD27 | |||
.. |stub| unicode:: U+1F527 | |||
.. |stub-desc| replace:: This page is a placeholder and has not been written yet. It should be coming soon! |
@@ -0,0 +1,27 @@ | |||
class Program | |||
{ | |||
private static DiscordBotClient _client; | |||
static void Main(string[] args) | |||
{ | |||
var client = new DiscordClient(); | |||
// Handle Events using Lambdas | |||
client.MessageCreated += (s, e) => | |||
{ | |||
if (!e.Message.IsAuthor) | |||
await client.SendMessage(e.Message.ChannelId, "foo"); | |||
} | |||
// Handle Events using Event Handlers | |||
EventHandler<MessageEventArgs> handler = new EventHandler<MessageEventArgs>(HandleMessageCreated); | |||
client.MessageCreated += handler; | |||
} | |||
// NOTE: When using this method, 'client' must be accessible from outside the Main function. | |||
static void HandleMessageCreated(object sender, EventArgs e) | |||
{ | |||
if (!e.Message.IsAuthor) | |||
await client.SendMessage(e.Message.ChannelId, "foo"); | |||
} | |||
} |
@@ -0,0 +1,28 @@ | |||
// Finding User Permissions | |||
void FindPermissions(User u, Channel c) | |||
{ | |||
ChannelPermissions cperms = u.GetPermissions(c); | |||
ServerPermissions sperms = u.GetServerPermissions(); | |||
} | |||
void SetPermissionsChannelPerms(User u, Channel c) | |||
{ | |||
ChannelPermissions allow = new ChannelPermissions(); | |||
ChannelPermissions deny = new ChannelPermissions(); | |||
allow.Connect = true; | |||
deny.AttachFiles = true; | |||
client.SetChannelPermissions(c, u, allow, deny) | |||
} | |||
void SetPermissionsDualPerms(User u, Channel c) | |||
{ | |||
DualChannelPermissions dual = new DualChannelPermissions(); | |||
dual.ReadMessageHistory = false; | |||
dual.Connect = true; | |||
dual.AttachFiles = null; | |||
client.SetChannelPermissions(c, u, dual); | |||
} |