Browse Source

Merge pull request #23 from 420foxbot/docsrewrite

started updating documentation for 0.9
tags/docs-0.9
RogueException 9 years ago
parent
commit
f7150c289f
6 changed files with 107 additions and 121 deletions
  1. +4
    -4
      docs/features/commands.rst
  2. +72
    -72
      docs/features/events.rst
  3. +6
    -6
      docs/features/permissions.rst
  4. +12
    -12
      docs/index.rst
  5. +3
    -3
      docs/samples/getting_started.cs
  6. +10
    -24
      docs/samples/permissions.cs

+ 4
- 4
docs/features/commands.rst View File

@@ -1,5 +1,5 @@
Commands
========
|stub| Commands
===============


The `Discord.Net.Commands`_ package DiscordBotClient extends DiscordClient with support for commands. The `Discord.Net.Commands`_ package DiscordBotClient extends DiscordClient with support for commands.


@@ -11,10 +11,10 @@ Example (Simple)
.. literalinclude:: /samples/command.cs .. literalinclude:: /samples/command.cs
:language: csharp6 :language: csharp6
:tab-width: 2 :tab-width: 2
Example (Groups) Example (Groups)
---------------- ----------------


.. literalinclude:: /samples/command_group.cs .. literalinclude:: /samples/command_group.cs
:language: csharp6 :language: csharp6
:tab-width: 2
:tab-width: 2

+ 72
- 72
docs/features/events.rst View File

@@ -1,75 +1,75 @@
|stub| Events
=============
Events
======


Usage 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
Events in Discord.NET are raised using the Event system in c#. Most events are raised on the ``DiscordClient`` class.
Most events in Discord.NET explain theirselves by their name.
Messages
--------
The Four Message Events (MessageReceived, Updated, Deleted, and Acknowledged) are raised when a message has been modified/created.
Example of MessageReceived:
.. code-block:: c#
// (Preface: Echo Bots are discouraged, make sure your bot is not running in a public server if you use them)
// Hook into the MessageReceived event using a Lambda
_client.MessageReceived += (s, e) => {
// Check to make sure that the bot is not the author
if (!e.Message.IsAuthor)
// Echo the message back to the channel
e.Channel.SendMessage(e.Message);
};
Users
-----
There are Six User Events:
UserBanned: A user has been banned from a Server
UserUnbanned: A user was unbanned
UserJoined: A user joins a server
UserLeft: A user left (or was kicked) from a Server
UserIsTyping: A user in a channel starts typing
UserUpdated: A user object was updated. (caused by a presence update, role/permission change, or a voice state update)
.. note::
UserUpdated Events include a ``User`` object for Before and After the change.
When accessing the User, you should only use ``e.Before`` if comparing changes, otherwise use ``e.After``
Examples:
.. code-block:: c#
// Register a Hook into the UserBanned event using a Lambda
_client.UserBanned += (s, e) => {
// Create a Channel object by searching for a channel named '#logs' on the server the ban occurred in.
var logChannel = e.Server.FindChannels("logs").FirstOrDefault();
// Send a message to the server's log channel, stating that a user was banned.
logChannel.SendMessage($"User Banned: {e.User.Name}")
};
// Register a Hook into the UserUpdated event using a Lambda
_client.UserUpdated += (s, e) => {
// Check that the user is in a Voice channel
if (e.After.VoiceChannel == null) return;
// See if they changed Voice channels
if (e.Before.VoiceChannel == e.After.VoiceChannel) return;
// do something...
};
Connection States
-----------------
Connection Events will be raised when the Connection State of your client changes.
.. warning::
You should not use DiscordClient.Connected to run code when your client first connects to Discord.
If you lose connection and automatically reconnect, this code will be ran again, which may lead to unexpected behavior.

+ 6
- 6
docs/features/permissions.rst View File

@@ -1,11 +1,11 @@
Permissions Permissions
==================
===========


There are two types of permissions: *Channel Permissions* and *Server Permissions*. There are two types of permissions: *Channel Permissions* and *Server Permissions*.


Channel Permissions Channel Permissions
------------------- -------------------
Channel Permissions have a set of bools behind them:
Channel Permissions are controlled using a set of flags:


======================= ======= ============== ======================= ======= ==============
Flag Type Description Flag Type Description
@@ -49,7 +49,7 @@ Otherwise, you can use a single DualChannelPermissions.
Server Permissions Server Permissions
------------------ ------------------


Server permisisons are read-only, you cannot change them. You may still access them, however, using User.GetServerPermissions();
Server Permissions can be accessed by ``Server.GetPermissions(User)``, and updated with ``Server.UpdatePermissions(User, ServerPermissions)``


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: 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:


@@ -57,7 +57,7 @@ A user's server permissions also contain the default values for it's channel per
Flag Type Description Flag Type Description
======================= ======= ============== ======================= ======= ==============
BanMembers Server Ban users from the server. BanMembers Server Ban users from the server.
KickMembers Server Kick users from the server. They can stil rejoin.
KickMembers Server Kick users from the server. They can still rejoin.
ManageRoles Server Manage roles on the server, and their permissions. ManageRoles Server Manage roles on the server, and their permissions.
ManageChannels Server Manage channels that exist on the server (add, remove them) ManageChannels Server Manage channels that exist on the server (add, remove them)
ManageServer Server Manage the server settings. ManageServer Server Manage the server settings.
@@ -69,7 +69,7 @@ Managing permissions for roles is much easier than for users in channels. For ro


Example Example
------- -------
.. literalinclude:: /samples/permissions.cs .. literalinclude:: /samples/permissions.cs
:language: csharp6 :language: csharp6
:tab-width: 2
:tab-width: 2

+ 12
- 12
docs/index.rst View File

@@ -1,7 +1,7 @@
Discord.Net Discord.Net
=========== ===========


Discord.Net is an unofficial C# wrapper around the `Discord chat service`.
Discord.Net is an unofficial C# wrapper around the `Discord Chat Service`.
It offers several methods to create automated operations, bots, or even custom clients. It offers several methods to create automated operations, bots, or even custom clients.


Feel free to join us in the `Discord API chat`_. Feel free to join us in the `Discord API chat`_.
@@ -9,28 +9,28 @@ Feel free to join us in the `Discord API chat`_.
.. _Discord chat service: https://discordapp.com .. _Discord chat service: https://discordapp.com
.. _Discord API chat: https://discord.gg/0SBTUU1wZTVjAMPx .. _Discord API chat: https://discord.gg/0SBTUU1wZTVjAMPx


Warning
-------
.. warn::


This is an alpha!
This is a beta!


This library has been built thanks to a community effort reverse engineering the Discord client.
As Discord is still in alpha, it may change at any time without notice, breaking this library as well.
Discord.Net itself is also in early development and you will often encounter breaking changes until the official Discord API is released.
This library has been built thanks to a community effort reverse engineering the Discord client.
As the API is still unofficial, it may change at any time without notice, breaking this library as well.
Discord.Net itself is still in development (and is currently undergoing a rewrite) and you may encounter breaking changes throughout development until the official Discord API is released.


It is highly recommended that you always use the latest version and please report any bugs you find to our `Discord chat`_. It is highly recommended that you always use the latest version and please report any bugs you find to our `Discord chat`_.


.. _Discord chat: https://discord.gg/0SBTUU1wZTVjAMPx .. _Discord chat: https://discord.gg/0SBTUU1wZTVjAMPx


This Documentation is **currently undergoing a rewrite**. Some pages (marked with a wrench) are not updated, or are not completed yet.

.. toctree:: .. toctree::
:caption: Documentation :caption: Documentation
:maxdepth: 2 :maxdepth: 2
getting_started
features/logging
getting_started
features/logging
features/management features/management
features/permissions features/permissions
features/profile
features/commands features/commands
features/voice features/voice
features/events
features/events

+ 3
- 3
docs/samples/getting_started.cs View File

@@ -11,17 +11,17 @@ class Program
client.MessageReceived += async (s, e) => client.MessageReceived += async (s, e) =>
{ {
if (!e.Message.IsAuthor) if (!e.Message.IsAuthor)
await client.SendMessage(e.Channel, e.Message.Text);
await e.Channel.SendMessage(e.Message.Text);
}; };


//Convert our sync method to an async one and block the Main function until the bot disconnects //Convert our sync method to an async one and block the Main function until the bot disconnects
client.Run(async () =>
client.ExecuteAndWait(async () =>
{ {
//Connect to the Discord server using our email and password //Connect to the Discord server using our email and password
await client.Connect("discordtest@email.com", "Password123"); await client.Connect("discordtest@email.com", "Password123");


//If we are not a member of any server, use our invite code (made beforehand in the official Discord Client) //If we are not a member of any server, use our invite code (made beforehand in the official Discord Client)
if (!client.AllServers.Any())
if (!client.Servers.Any())
await client.AcceptInvite(client.GetInvite("aaabbbcccdddeee")); await client.AcceptInvite(client.GetInvite("aaabbbcccdddeee"));
}); });
} }


+ 10
- 24
docs/samples/permissions.cs View File

@@ -1,28 +1,14 @@
// Finding User Permissions
// Find a User's Channel Permissions
var userChannelPermissions = user.GetPermissions(channel);


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();
// Find a User's Server Permissions
var userServerPermissions = user.ServerPermissions();
var userServerPermissions = server.GetPermissions(user);


allow.Connect = true;
deny.AttachFiles = true;
// Set a User's Channel Permissions (using DualChannelPermissions)


client.SetChannelPermissions(c, u, allow, deny)
var userPerms = user.GetPermissions(channel);
userPerms.ReadMessageHistory = false;
userPerms.AttachFiles = null;
channel.AddPermissionsRule(user, userPerms);
} }

void SetPermissionsDualPerms(User u, Channel c)
{
DualChannelPermissions dual = new DualChannelPermissions();
dual.ReadMessageHistory = false;
dual.Connect = true;
dual.AttachFiles = null;

client.SetChannelPermissions(c, u, dual);
}

Loading…
Cancel
Save