diff --git a/src/Discord.Net.Commands/Attributes/AliasAttribute.cs b/src/Discord.Net.Commands/Attributes/AliasAttribute.cs
index 085a1f307..acdb600ce 100644
--- a/src/Discord.Net.Commands/Attributes/AliasAttribute.cs
+++ b/src/Discord.Net.Commands/Attributes/AliasAttribute.cs
@@ -6,7 +6,7 @@ namespace Discord.Commands
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class AliasAttribute : Attribute
{
- /// The aliases which have been defined for the command.
+ /// Gets the aliases which have been defined for the command.
public string[] Aliases { get; }
/// Creates a new with the given aliases.
diff --git a/src/Discord.Net.Commands/Attributes/CommandAttribute.cs b/src/Discord.Net.Commands/Attributes/CommandAttribute.cs
index db1f3067b..91a862f41 100644
--- a/src/Discord.Net.Commands/Attributes/CommandAttribute.cs
+++ b/src/Discord.Net.Commands/Attributes/CommandAttribute.cs
@@ -7,11 +7,11 @@ namespace Discord.Commands
public class CommandAttribute : Attribute
{
///
- /// Gets the text that has been set to be recognized as a command.
+ /// Gets the text that has been set to be recognized as a command.
///
public string Text { get; }
///
- /// Specifies the of the command. This affects how the command is executed.
+ /// Specifies the of the command. This affects how the command is executed.
///
public RunMode RunMode { get; set; } = RunMode.Default;
diff --git a/src/Discord.Net.Commands/Attributes/DontInjectAttribute.cs b/src/Discord.Net.Commands/Attributes/DontInjectAttribute.cs
index b0823693e..19d946afd 100644
--- a/src/Discord.Net.Commands/Attributes/DontInjectAttribute.cs
+++ b/src/Discord.Net.Commands/Attributes/DontInjectAttribute.cs
@@ -1,10 +1,12 @@
using System;
-namespace Discord.Commands {
-
- /// Prevents the marked property from being injected into a module.
- [AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
- public class DontInjectAttribute : Attribute {
- }
-
+namespace Discord.Commands
+{
+ ///
+ /// Prevents the marked property from being injected into a module.
+ ///
+ [AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
+ public class DontInjectAttribute : Attribute
+ {
+ }
}
diff --git a/src/Discord.Net.Commands/Attributes/NameAttribute.cs b/src/Discord.Net.Commands/Attributes/NameAttribute.cs
index aba44370b..b3330f1dd 100644
--- a/src/Discord.Net.Commands/Attributes/NameAttribute.cs
+++ b/src/Discord.Net.Commands/Attributes/NameAttribute.cs
@@ -3,11 +3,15 @@ using System;
namespace Discord.Commands
{
// Override public name of command/module
- /// Marks the public name of a command, module, or parameter.
+ ///
+ /// Marks the public name of a command, module, or parameter.
+ ///
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Parameter, AllowMultiple = false, Inherited = true)]
public class NameAttribute : Attribute
{
- /// Gets the name of the command.
+ ///
+ /// Gets the name of the command.
+ ///
public string Text { get; }
/// Marks the public name of a command, module, or parameter with the provided name.
diff --git a/src/Discord.Net.Commands/Attributes/ParameterPreconditionAttribute.cs b/src/Discord.Net.Commands/Attributes/ParameterPreconditionAttribute.cs
index e6d244b8f..4c1fe30d7 100644
--- a/src/Discord.Net.Commands/Attributes/ParameterPreconditionAttribute.cs
+++ b/src/Discord.Net.Commands/Attributes/ParameterPreconditionAttribute.cs
@@ -3,7 +3,9 @@ using System.Threading.Tasks;
namespace Discord.Commands
{
- /// Requires the parameter to pass the specified precondition before execution can begin.
+ ///
+ /// Requires the parameter to pass the specified precondition before execution can begin.
+ ///
[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = true, Inherited = true)]
public abstract class ParameterPreconditionAttribute : Attribute
{
diff --git a/src/Discord.Net.Commands/Attributes/PreconditionAttribute.cs b/src/Discord.Net.Commands/Attributes/PreconditionAttribute.cs
index f33a417fd..7959b748b 100644
--- a/src/Discord.Net.Commands/Attributes/PreconditionAttribute.cs
+++ b/src/Discord.Net.Commands/Attributes/PreconditionAttribute.cs
@@ -7,12 +7,15 @@ namespace Discord.Commands
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
public abstract class PreconditionAttribute : Attribute
{
- /// Specify a group that this precondition belongs to.
+ ///
+ /// Specify a group that this precondition belongs to.
+ ///
///
- /// of the same group require only one
- /// of the preconditions to pass in order to be successful (A || B).
- /// Specifying =
- /// or not at all will require *all* preconditions to pass, just like normal (A && B).
+ ///
+ /// of the same group require only one of the preconditions to pass in
+ /// order to be successful (A || B). Specifying = or not
+ /// at all will require *all* preconditions to pass, just like normal (A && B).
+ ///
///
public string Group { get; set; } = null;
diff --git a/src/Discord.Net.Commands/Attributes/PriorityAttribute.cs b/src/Discord.Net.Commands/Attributes/PriorityAttribute.cs
index ad49ebb06..ba7360ef3 100644
--- a/src/Discord.Net.Commands/Attributes/PriorityAttribute.cs
+++ b/src/Discord.Net.Commands/Attributes/PriorityAttribute.cs
@@ -2,14 +2,20 @@ using System;
namespace Discord.Commands
{
- /// Sets priority of commands.
+ ///
+ /// Sets priority of commands.
+ ///
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class PriorityAttribute : Attribute
{
- /// Gets the priority which has been set for the command.
+ ///
+ /// Gets the priority which has been set for the command.
+ ///
public int Priority { get; }
- /// Creates a new with the given priority.
+ ///
+ /// Creates a new with the given priority.
+ ///
public PriorityAttribute(int priority)
{
Priority = priority;
diff --git a/src/Discord.Net.Commands/Attributes/RemainderAttribute.cs b/src/Discord.Net.Commands/Attributes/RemainderAttribute.cs
index fd1d93d9f..33e07f0d9 100644
--- a/src/Discord.Net.Commands/Attributes/RemainderAttribute.cs
+++ b/src/Discord.Net.Commands/Attributes/RemainderAttribute.cs
@@ -2,7 +2,9 @@ using System;
namespace Discord.Commands
{
- /// Marks the input to not be parsed by the parser.
+ ///
+ /// Marks the input to not be parsed by the parser.
+ ///
[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = true)]
public class RemainderAttribute : Attribute
{
diff --git a/src/Discord.Net.Commands/CommandError.cs b/src/Discord.Net.Commands/CommandError.cs
index 7985e5ee1..40d678137 100644
--- a/src/Discord.Net.Commands/CommandError.cs
+++ b/src/Discord.Net.Commands/CommandError.cs
@@ -1,6 +1,6 @@
namespace Discord.Commands
{
- /// The type of error the command throws.
+ /// Defines the type of error a command can throw.
public enum CommandError
{
//Search
diff --git a/src/Discord.Net.Commands/CommandException.cs b/src/Discord.Net.Commands/CommandException.cs
index c44bb2a01..f8fbda290 100644
--- a/src/Discord.Net.Commands/CommandException.cs
+++ b/src/Discord.Net.Commands/CommandException.cs
@@ -2,14 +2,24 @@ using System;
namespace Discord.Commands
{
- /// Thrown when a command fails to execute.
+ ///
+ /// Describes an exception that occurred during a command execution.
+ ///
public class CommandException : Exception
{
- /// The command that caused the exception.
+ /// Gets the command that caused the exception.
public CommandInfo Command { get; }
- /// The command context of the exception.
+ /// Gets the command context of the exception.
public ICommandContext Context { get; }
+ ///
+ /// Initializes a new instance of the class using a
+ /// information, a context, and the exception that
+ /// interrupted the execution.
+ ///
+ /// The command information.
+ /// The context of the command.
+ /// The exception that interrupted the command execution.
public CommandException(CommandInfo command, ICommandContext context, Exception ex)
: base($"Error occurred executing {command.GetLogText(context)}.", ex)
{
diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs
index 30388195b..7ed106132 100644
--- a/src/Discord.Net.Commands/CommandService.cs
+++ b/src/Discord.Net.Commands/CommandService.cs
@@ -18,7 +18,7 @@ namespace Discord.Commands
internal readonly AsyncEvent> _logEvent = new AsyncEvent>();
///
- /// Fired when a command is successfully executed.
+ /// Fired when a command is successfully executed without any runtime error.
///
public event Func CommandExecuted { add { _commandExecutedEvent.Add(value); } remove { _commandExecutedEvent.Remove(value); } }
internal readonly AsyncEvent> _commandExecutedEvent = new AsyncEvent>();
@@ -38,17 +38,17 @@ namespace Discord.Commands
internal readonly LogManager _logManager;
///
- /// Represents all modules loaded within .
+ /// Represents all modules loaded within .
///
public IEnumerable Modules => _moduleDefs.Select(x => x);
///
- /// Represents all commands loaded within .
+ /// Represents all commands loaded within .
///
public IEnumerable Commands => _moduleDefs.SelectMany(x => x.Commands);
///
- /// Represents all loaded within .
+ /// Represents all loaded within .
///
public ILookup TypeReaders => _typeReaders.SelectMany(x => x.Value.Select(y => new { y.Key, y.Value })).ToLookup(x => x.Key, x => x.Value);
@@ -111,12 +111,28 @@ namespace Discord.Commands
}
///
- /// Add a command module from a .
+ /// Add a command module from a .
///
/// The type of module.
- /// An for your dependency injection solution, if using one - otherwise, pass .
- /// A built module.
+ ///
+ /// The for your dependency injection solution, if using one - otherwise, pass
+ /// .
+ ///
+ ///
+ /// A built module.
+ ///
public Task AddModuleAsync(IServiceProvider services) => AddModuleAsync(typeof(T), services);
+ ///
+ /// Adds a command module from a .
+ ///
+ /// The type of module.
+ ///
+ /// The for your dependency injection solution, if using one - otherwise, pass
+ /// .
+ ///
+ ///
+ /// A built module.
+ ///
public async Task AddModuleAsync(Type type, IServiceProvider services)
{
services = services ?? EmptyServiceProvider.Instance;
@@ -144,11 +160,16 @@ namespace Discord.Commands
}
}
///
- /// Add command modules from an .
+ /// Add command modules from an .
///
- /// The containing command modules.
- /// An for your dependency injection solution, if using one - otherwise, pass .
- /// A collection of built modules.
+ /// The containing command modules.
+ ///
+ /// An for your dependency injection solution, if using one - otherwise, pass
+ /// .
+ ///
+ ///
+ /// A collection of built modules.
+ ///
public async Task> AddModulesAsync(Assembly assembly, IServiceProvider services)
{
services = services ?? EmptyServiceProvider.Instance;
@@ -184,7 +205,13 @@ namespace Discord.Commands
return module;
}
-
+ ///
+ /// Removes the command module.
+ ///
+ /// The to be removed from the service.
+ ///
+ /// Returns whether the is successfully removed.
+ ///
public async Task RemoveModuleAsync(ModuleInfo module)
{
await _moduleLock.WaitAsync().ConfigureAwait(false);
@@ -231,29 +258,25 @@ namespace Discord.Commands
//Type Readers
///
- /// Adds a custom to this for the supplied object type.
- ///
- /// If is a , a will also be added.
- ///
- ///
- /// If a default exists for , a warning will be logged and the default will be replaced.
- ///
+ /// Adds a custom to this for the supplied object type.
+ /// If is a , a nullable will also be
+ /// added.
+ /// If a default exists for , a warning will be logged and the
+ /// default will be replaced.
///
- /// The object type to be read by the .
- /// An instance of the to be added.
+ /// The object type to be read by the .
+ /// An instance of the to be added.
public void AddTypeReader(TypeReader reader)
=> AddTypeReader(typeof(T), reader);
///
- /// Adds a custom to this for the supplied object type.
- ///
- /// If is a , a for the value type will also be added.
- ///
- ///
- /// If a default exists for , a warning will be logged and the default will be replaced.
- ///
+ /// Adds a custom to this for the supplied object type.
+ /// If is a , a nullable for the value
+ /// type will also be added.
+ /// If a default exists for , a warning will be logged and the
+ /// default will be replaced.
///
- /// A instance for the type to be read.
- /// An instance of the to be added.
+ /// A instance for the type to be read.
+ /// An instance of the to be added.
public void AddTypeReader(Type type, TypeReader reader)
{
if (_defaultTypeReaders.ContainsKey(type))
@@ -262,25 +285,29 @@ namespace Discord.Commands
AddTypeReader(type, reader, true);
}
///
- /// Adds a custom to this for the supplied object type.
- ///
- /// If is a , a will also be added.
- ///
+ /// Adds a custom to this for the supplied object type.
+ /// If is a , a nullable will also be
+ /// added.
///
- /// The object type to be read by the .
- /// An instance of the to be added.
- /// If should replace the default for if one exists.
+ /// The object type to be read by the .
+ /// An instance of the to be added.
+ ///
+ /// Defines whether the should replace the default one for
+ /// if it exists.
+ ///
public void AddTypeReader(TypeReader reader, bool replaceDefault)
=> AddTypeReader(typeof(T), reader, replaceDefault);
///
- /// Adds a custom to this for the supplied object type.
- ///
- /// If is a , a for the value type will also be added.
- ///
+ /// Adds a custom to this for the supplied object type.
+ /// If is a , a nullable for the value
+ /// type will also be added.
///
- /// A instance for the type to be read.
- /// An instance of the to be added.
- /// If should replace the default for if one exists.
+ /// A instance for the type to be read.
+ /// An instance of the to be added.
+ ///
+ /// Defines whether the should replace the default one for
+ /// if it exists.
+ ///
public void AddTypeReader(Type type, TypeReader reader, bool replaceDefault)
{
if (replaceDefault && _defaultTypeReaders.ContainsKey(type))
@@ -342,8 +369,20 @@ namespace Discord.Commands
}
//Execution
+ ///
+ /// Searches for the command.
+ ///
+ /// The context of the command.
+ /// The position of which the command starts at.
+ /// The result containing the matching commands.
public SearchResult Search(ICommandContext context, int argPos)
=> Search(context, context.Message.Content.Substring(argPos));
+ ///
+ /// Searches for the command.
+ ///
+ /// The context of the command.
+ /// The command string.
+ /// The result containing the matching commands.
public SearchResult Search(ICommandContext context, string input)
{
string searchInput = _caseSensitive ? input : input.ToLowerInvariant();
@@ -355,8 +394,24 @@ namespace Discord.Commands
return SearchResult.FromError(CommandError.UnknownCommand, "Unknown command.");
}
+ ///
+ /// Executes the command.
+ ///
+ /// The context of the command.
+ /// The position of which the command starts at.
+ /// The service to be used in the command's dependency injection.
+ /// The handling mode when multiple command matches are found.
+ /// The result of the command execution.
public Task ExecuteAsync(ICommandContext context, int argPos, IServiceProvider services, MultiMatchHandling multiMatchHandling = MultiMatchHandling.Exception)
=> ExecuteAsync(context, context.Message.Content.Substring(argPos), services, multiMatchHandling);
+ ///
+ /// Executes the command.
+ ///
+ /// The context of the command.
+ /// The command string.
+ /// The service to be used in the command's dependency injection.
+ /// The handling mode when multiple command matches are found.
+ /// The result of the command execution.
public async Task ExecuteAsync(ICommandContext context, string input, IServiceProvider services, MultiMatchHandling multiMatchHandling = MultiMatchHandling.Exception)
{
services = services ?? EmptyServiceProvider.Instance;
diff --git a/src/Discord.Net.Commands/Extensions/MessageExtensions.cs b/src/Discord.Net.Commands/Extensions/MessageExtensions.cs
index 096b03f6b..436f1bb98 100644
--- a/src/Discord.Net.Commands/Extensions/MessageExtensions.cs
+++ b/src/Discord.Net.Commands/Extensions/MessageExtensions.cs
@@ -1,9 +1,15 @@
-using System;
+using System;
namespace Discord.Commands
{
+ ///
+ /// Extension methods for that related to commands.
+ ///
public static class MessageExtensions
{
+ ///
+ /// Gets whether the message starts with the provided .
+ ///
public static bool HasCharPrefix(this IUserMessage msg, char c, ref int argPos)
{
var text = msg.Content;
@@ -14,6 +20,9 @@ namespace Discord.Commands
}
return false;
}
+ ///
+ /// Gets whether the message starts with the provided .
+ ///
public static bool HasStringPrefix(this IUserMessage msg, string str, ref int argPos, StringComparison comparisonType = StringComparison.Ordinal)
{
var text = msg.Content;
@@ -24,6 +33,9 @@ namespace Discord.Commands
}
return false;
}
+ ///
+ /// Gets whether the message starts with the user's mention string.
+ ///
public static bool HasMentionPrefix(this IUserMessage msg, IUser user, ref int argPos)
{
var text = msg.Content;
@@ -43,4 +55,4 @@ namespace Discord.Commands
return false;
}
}
-}
\ No newline at end of file
+}
diff --git a/src/Discord.Net.Commands/Info/CommandInfo.cs b/src/Discord.Net.Commands/Info/CommandInfo.cs
index e4dda456f..de1462a3f 100644
--- a/src/Discord.Net.Commands/Info/CommandInfo.cs
+++ b/src/Discord.Net.Commands/Info/CommandInfo.cs
@@ -8,14 +8,15 @@ using System.Linq;
using System.Reflection;
using System.Runtime.ExceptionServices;
using System.Threading.Tasks;
-using Microsoft.Extensions.DependencyInjection;
namespace Discord.Commands
{
- /// The information of a command.
- ///
- /// This object contains the information of a command.
- /// This can include the module of the command, various descriptions regarding the command, and its .
+ ///
+ /// Provides the information of a command.
+ ///
+ ///
+ /// This object contains the information of a command. This can include the module of the command, various
+ /// descriptions regarding the command, and its .
///
[DebuggerDisplay("{Name,nq}")]
public class CommandInfo
@@ -26,36 +27,59 @@ namespace Discord.Commands
private readonly CommandService _commandService;
private readonly Func _action;
- /// The module that the command belongs in.
+ ///
+ /// Gets the module that the command belongs in.
+ ///
public ModuleInfo Module { get; }
- /// Name of the command. If none is set, the first alias is used.
+ ///
+ /// Gets the name of the command. If none is set, the first alias is used.
+ ///
public string Name { get; }
- /// Summary of the command.
- ///
- /// This field returns the summary of the command.
- /// Summary and remarks can be useful in help commands and various implementation that fetches details of the command for the user.
+ ///
+ /// Gets the summary of the command.
+ ///
+ ///
+ /// This field returns the summary of the command. and can be
+ /// useful in help commands and various implementation that fetches details of the command for the user.
///
public string Summary { get; }
- /// Remarks of the command.
- ///
- /// This field returns the remarks of the command.
- /// Summary and remarks can be useful in help commands and various implementation that fetches details of the command for the user.
+ ///
+ /// Gets the remarks of the command.
+ ///
+ ///
+ /// This field returns the summary of the command. and can be
+ /// useful in help commands and various implementation that fetches details of the command for the user.
///
public string Remarks { get; }
- /// The priority of the command. This is used when there are multiple overloads of the command.
+ ///
+ /// Gets the priority of the command. This is used when there are multiple overloads of the command.
+ ///
public int Priority { get; }
- /// Indicates whether the command accepts a [] for its parameter.
+ ///
+ /// Indicates whether the command accepts a [] for its
+ /// parameter.
+ ///
public bool HasVarArgs { get; }
- /// Indicates the that is being used for the command.
+ ///
+ /// Gets the that is being used for the command.
+ ///
public RunMode RunMode { get; }
- /// List of aliases defined by the of the command.
+ ///
+ /// Gets a list of aliases defined by the of the command.
+ ///
public IReadOnlyList Aliases { get; }
- /// List of information about the parameters of the command.
+ ///
+ /// Gets a list of information about the parameters of the command.
+ ///
public IReadOnlyList Parameters { get; }
- /// List of preconditions defined by the of the command.
+ ///
+ /// Gets a list of preconditions defined by the of the command.
+ ///
public IReadOnlyList Preconditions { get; }
- /// List of attributes of the command.
+ ///
+ /// Gets a list of attributes of the command.
+ ///
public IReadOnlyList Attributes { get; }
internal CommandInfo(CommandBuilder builder, ModuleInfo module, CommandService service)
@@ -145,8 +169,7 @@ namespace Discord.Commands
string input = searchResult.Text.Substring(startIndex);
return await CommandParser.ParseArgsAsync(this, context, _commandService._ignoreExtraArgs, services, input, 0).ConfigureAwait(false);
}
-
- /// Executes the command with the provided context, parsed value, and service provider.
+
public Task ExecuteAsync(ICommandContext context, ParseResult parseResult, IServiceProvider services)
{
if (!parseResult.IsSuccess)
@@ -170,7 +193,6 @@ namespace Discord.Commands
return ExecuteAsync(context, argList, paramList, services);
}
- /// Executes the command with the provided context, argument and parameter list, and service provider.
public async Task ExecuteAsync(ICommandContext context, IEnumerable argList, IEnumerable paramList, IServiceProvider services)
{
services = services ?? EmptyServiceProvider.Instance;
diff --git a/src/Discord.Net.Commands/Info/ModuleInfo.cs b/src/Discord.Net.Commands/Info/ModuleInfo.cs
index 5a7f9208e..54442afb7 100644
--- a/src/Discord.Net.Commands/Info/ModuleInfo.cs
+++ b/src/Discord.Net.Commands/Info/ModuleInfo.cs
@@ -2,7 +2,6 @@ using System;
using System.Linq;
using System.Collections.Generic;
using System.Collections.Immutable;
-using System.Reflection;
using Discord.Commands.Builders;
namespace Discord.Commands
diff --git a/src/Discord.Net.Commands/Info/ParameterInfo.cs b/src/Discord.Net.Commands/Info/ParameterInfo.cs
index 0a993b0f3..150a98144 100644
--- a/src/Discord.Net.Commands/Info/ParameterInfo.cs
+++ b/src/Discord.Net.Commands/Info/ParameterInfo.cs
@@ -4,7 +4,6 @@ using System.Collections.Generic;
using System.Collections.Immutable;
using System.Diagnostics;
using System.Threading.Tasks;
-using Microsoft.Extensions.DependencyInjection;
namespace Discord.Commands
{
diff --git a/src/Discord.Net.Commands/Map/CommandMap.cs b/src/Discord.Net.Commands/Map/CommandMap.cs
index bcff800d3..dfc366333 100644
--- a/src/Discord.Net.Commands/Map/CommandMap.cs
+++ b/src/Discord.Net.Commands/Map/CommandMap.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace Discord.Commands
{
@@ -6,7 +6,6 @@ namespace Discord.Commands
{
private readonly CommandService _service;
private readonly CommandMapNode _root;
- private static readonly string[] _blankAliases = new[] { "" };
public CommandMap(CommandService service)
{
diff --git a/src/Discord.Net.Commands/Map/CommandMapNode.cs b/src/Discord.Net.Commands/Map/CommandMapNode.cs
index 863409207..db69af415 100644
--- a/src/Discord.Net.Commands/Map/CommandMapNode.cs
+++ b/src/Discord.Net.Commands/Map/CommandMapNode.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Collections.Immutable;
@@ -7,7 +7,7 @@ namespace Discord.Commands
{
internal class CommandMapNode
{
- private static readonly char[] _whitespaceChars = new[] { ' ', '\r', '\n' };
+ private static readonly char[] WhitespaceChars = new[] { ' ', '\r', '\n' };
private readonly ConcurrentDictionary _nodes;
private readonly string _name;
@@ -100,7 +100,7 @@ namespace Discord.Commands
}
//Check if this is the last command segment before args
- nextSegment = NextSegment(text, index, _whitespaceChars, service._separatorChar);
+ nextSegment = NextSegment(text, index, WhitespaceChars, service._separatorChar);
if (nextSegment != -1)
{
name = text.Substring(index, nextSegment - index);
diff --git a/src/Discord.Net.Commands/Results/ExecuteResult.cs b/src/Discord.Net.Commands/Results/ExecuteResult.cs
index bad39e230..7eb252be5 100644
--- a/src/Discord.Net.Commands/Results/ExecuteResult.cs
+++ b/src/Discord.Net.Commands/Results/ExecuteResult.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Diagnostics;
namespace Discord.Commands
diff --git a/src/Discord.Net.Commands/Results/IResult.cs b/src/Discord.Net.Commands/Results/IResult.cs
index d5b9ffe0f..eacea3cfe 100644
--- a/src/Discord.Net.Commands/Results/IResult.cs
+++ b/src/Discord.Net.Commands/Results/IResult.cs
@@ -1,6 +1,6 @@
namespace Discord.Commands
{
- /// Represents the information of command execution result.
+ /// Represents information of the command execution result.
public interface IResult
{
/// Describes the error type that may have occurred during the operation.
diff --git a/src/Discord.Net.Core/Audio/AudioStream.cs b/src/Discord.Net.Core/Audio/AudioStream.cs
index 97820ea73..532a6bb7f 100644
--- a/src/Discord.Net.Core/Audio/AudioStream.cs
+++ b/src/Discord.Net.Core/Audio/AudioStream.cs
@@ -11,10 +11,8 @@ namespace Discord.Audio
public override bool CanSeek => false;
public override bool CanWrite => false;
- public virtual void WriteHeader(ushort seq, uint timestamp, bool missed)
- {
- throw new InvalidOperationException("This stream does not accept headers");
- }
+ public virtual void WriteHeader(ushort seq, uint timestamp, bool missed) =>
+ throw new InvalidOperationException("This stream does not accept headers.");
public override void Write(byte[] buffer, int offset, int count)
{
WriteAsync(buffer, offset, count, CancellationToken.None).GetAwaiter().GetResult();
@@ -30,11 +28,13 @@ namespace Discord.Audio
public virtual Task ClearAsync(CancellationToken cancellationToken) { return Task.Delay(0); }
- public override long Length { get { throw new NotSupportedException(); } }
+ public override long Length =>
+ throw new NotSupportedException();
+
public override long Position
{
- get { throw new NotSupportedException(); }
- set { throw new NotSupportedException(); }
+ get => throw new NotSupportedException();
+ set => throw new NotSupportedException();
}
public override int Read(byte[] buffer, int offset, int count) { throw new NotSupportedException(); }
diff --git a/src/Discord.Net.Core/Commands/ICommandContext.cs b/src/Discord.Net.Core/Commands/ICommandContext.cs
index 2df18c748..8b682ba1c 100644
--- a/src/Discord.Net.Core/Commands/ICommandContext.cs
+++ b/src/Discord.Net.Core/Commands/ICommandContext.cs
@@ -1,17 +1,29 @@
namespace Discord.Commands
{
- /// Represents the context of a command. This may include the client, guild, channel, user, and message.
+ ///
+ /// Represents the context of a command. This may include the client, guild, channel, user, and message.
+ ///
public interface ICommandContext
{
- /// Gets the that the command is executed with.
+ ///
+ /// Gets the that the command is executed with.
+ ///
IDiscordClient Client { get; }
- /// Gets the that the command is executed in.
+ ///
+ /// Gets the that the command is executed in.
+ ///
IGuild Guild { get; }
- /// Gets the that the command is executed in.
+ ///
+ /// Gets the that the command is executed in.
+ ///
IMessageChannel Channel { get; }
- /// Gets the who executed the command.
+ ///
+ /// Gets the who executed the command.
+ ///
IUser User { get; }
- /// Gets the that the command is interpreted from.
+ ///
+ /// Gets the that the command is interpreted from.
+ ///
IUserMessage Message { get; }
}
}
diff --git a/src/Discord.Net.Core/Entities/Activities/ActivityType.cs b/src/Discord.Net.Core/Entities/Activities/ActivityType.cs
index 62831f165..67235c499 100644
--- a/src/Discord.Net.Core/Entities/Activities/ActivityType.cs
+++ b/src/Discord.Net.Core/Entities/Activities/ActivityType.cs
@@ -1,15 +1,25 @@
namespace Discord
{
- /// Specifies a Discord user's activity type.
+ ///
+ /// Specifies a Discord user's activity type.
+ ///
public enum ActivityType
{
- /// The user is playing a game.
+ ///
+ /// The user is playing a game.
+ ///
Playing = 0,
- /// The user is streaming online.
+ ///
+ /// The user is streaming online.
+ ///
Streaming = 1,
- /// The user is listening to a song.
+ ///
+ /// The user is listening to a song.
+ ///
Listening = 2,
- /// The user is watching a media.
+ ///
+ /// The user is watching a media.
+ ///
Watching = 3
}
}
diff --git a/src/Discord.Net.Core/Entities/Activities/Game.cs b/src/Discord.Net.Core/Entities/Activities/Game.cs
index c75d96969..2d23e8b4c 100644
--- a/src/Discord.Net.Core/Entities/Activities/Game.cs
+++ b/src/Discord.Net.Core/Entities/Activities/Game.cs
@@ -2,7 +2,9 @@ using System.Diagnostics;
namespace Discord
{
- /// A user's game activity.
+ ///
+ /// A user's game activity.
+ ///
[DebuggerDisplay(@"{DebuggerDisplay,nq}")]
public class Game : IActivity
{
@@ -12,9 +14,11 @@ namespace Discord
public ActivityType Type { get; internal set; }
internal Game() { }
- /// Creates a with the provided name and .
+ ///
+ /// Creates a with the provided and .
+ ///
/// The name of the game.
- /// The type of activity. Default is .
+ /// The type of activity. Default is .
public Game(string name, ActivityType type = ActivityType.Playing)
{
Name = name;
diff --git a/src/Discord.Net.Core/Entities/Activities/GameAsset.cs b/src/Discord.Net.Core/Entities/Activities/GameAsset.cs
index 78560ebe3..815967ce3 100644
--- a/src/Discord.Net.Core/Entities/Activities/GameAsset.cs
+++ b/src/Discord.Net.Core/Entities/Activities/GameAsset.cs
@@ -1,18 +1,26 @@
namespace Discord
{
- /// An asset for a object.
+ ///
+ /// An asset for a object.
+ ///
public class GameAsset
{
internal GameAsset() { }
internal ulong? ApplicationId { get; set; }
- /// The description of the asset.
+ ///
+ /// Gets the description of the asset.
+ ///
public string Text { get; internal set; }
- /// The image ID of the asset.
+ ///
+ /// Gets the image ID of the asset.
+ ///
public string ImageId { get; internal set; }
- /// The image URL of the asset; may return null when the application ID does not exist.
+ ///
+ /// Returns the image URL of the asset, or when the application ID does not exist.
+ ///
public string GetImageUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128)
=> ApplicationId.HasValue ? CDN.GetRichAssetUrl(ApplicationId.Value, ImageId, size, format) : null;
}
diff --git a/src/Discord.Net.Core/Entities/Activities/GameParty.cs b/src/Discord.Net.Core/Entities/Activities/GameParty.cs
index 54e6deef4..c070176f0 100644
--- a/src/Discord.Net.Core/Entities/Activities/GameParty.cs
+++ b/src/Discord.Net.Core/Entities/Activities/GameParty.cs
@@ -4,8 +4,14 @@ namespace Discord
{
internal GameParty() { }
+ ///
+ /// Gets the id of the party.
+ ///
public string Id { get; internal set; }
public long Members { get; internal set; }
+ ///
+ /// Gets the party's current and maximum size.
+ ///
public long Capacity { get; internal set; }
}
}
diff --git a/src/Discord.Net.Core/Entities/Activities/GameSecrets.cs b/src/Discord.Net.Core/Entities/Activities/GameSecrets.cs
index e9d988ba9..f2daeffee 100644
--- a/src/Discord.Net.Core/Entities/Activities/GameSecrets.cs
+++ b/src/Discord.Net.Core/Entities/Activities/GameSecrets.cs
@@ -1,9 +1,18 @@
-namespace Discord
+namespace Discord
{
public class GameSecrets
{
+ ///
+ /// Gets the secret for a specific instanced match.
+ ///
public string Match { get; }
+ ///
+ /// Gets the secret for joining a party.
+ ///
public string Join { get; }
+ ///
+ /// Gets the secret for spectating a game.
+ ///
public string Spectate { get; }
internal GameSecrets(string match, string join, string spectate)
@@ -13,4 +22,4 @@
Spectate = spectate;
}
}
-}
\ No newline at end of file
+}
diff --git a/src/Discord.Net.Core/Entities/Activities/GameTimestamps.cs b/src/Discord.Net.Core/Entities/Activities/GameTimestamps.cs
index 572547d6e..a41388afb 100644
--- a/src/Discord.Net.Core/Entities/Activities/GameTimestamps.cs
+++ b/src/Discord.Net.Core/Entities/Activities/GameTimestamps.cs
@@ -2,10 +2,18 @@ using System;
namespace Discord
{
- /// Timestamps for a object.
+ ///
+ /// Timestamps for a object.
+ ///
public class GameTimestamps
{
+ ///
+ /// Gets when the activity started.
+ ///
public DateTimeOffset? Start { get; }
+ ///
+ /// Gets when the activity ends.
+ ///
public DateTimeOffset? End { get; }
internal GameTimestamps(DateTimeOffset? start, DateTimeOffset? end)
diff --git a/src/Discord.Net.Core/Entities/Activities/IActivity.cs b/src/Discord.Net.Core/Entities/Activities/IActivity.cs
index 1b2ebc540..37f058c2b 100644
--- a/src/Discord.Net.Core/Entities/Activities/IActivity.cs
+++ b/src/Discord.Net.Core/Entities/Activities/IActivity.cs
@@ -1,11 +1,17 @@
namespace Discord
{
- /// A Discord activity.
+ ///
+ /// A Discord activity, typically a game.
+ ///
public interface IActivity
{
- /// Gets the name of the activity.
+ ///
+ /// Gets the name of the activity.
+ ///
string Name { get; }
- /// Gets the type of the activity.
+ ///
+ /// Gets the type of the activity.
+ ///
ActivityType Type { get; }
}
}
diff --git a/src/Discord.Net.Core/Entities/Activities/RichGame.cs b/src/Discord.Net.Core/Entities/Activities/RichGame.cs
index fc3f68cf0..c6e141482 100644
--- a/src/Discord.Net.Core/Entities/Activities/RichGame.cs
+++ b/src/Discord.Net.Core/Entities/Activities/RichGame.cs
@@ -7,15 +7,42 @@ namespace Discord
{
internal RichGame() { }
+ ///
+ /// Gets what the player is currently doing.
+ ///
public string Details { get; internal set; }
+ ///
+ /// Gets the user's current party status.
+ ///
public string State { get; internal set; }
+ ///
+ /// Gets the application ID for the game.
+ ///
public ulong ApplicationId { get; internal set; }
+ ///
+ /// Gets the small image for the presence and their hover texts.
+ ///
public GameAsset SmallAsset { get; internal set; }
+ ///
+ /// Gets the large image for the presence and their hover texts.
+ ///
public GameAsset LargeAsset { get; internal set; }
+ ///
+ /// Gets the information for the current party of the player.
+ ///
public GameParty Party { get; internal set; }
+ ///
+ /// Gets the secrets for Rich Presence joining and spectating.
+ ///
public GameSecrets Secrets { get; internal set; }
+ ///
+ /// Gets the timestamps for start and/or end of the game.
+ ///
public GameTimestamps Timestamps { get; internal set; }
-
+
+ ///
+ /// Returns the name of the Rich Presence.
+ ///
public override string ToString() => Name;
private string DebuggerDisplay => $"{Name} (Rich)";
}
diff --git a/src/Discord.Net.Core/Entities/Activities/SpotifyGame.cs b/src/Discord.Net.Core/Entities/Activities/SpotifyGame.cs
index 1db816037..ef75d7678 100644
--- a/src/Discord.Net.Core/Entities/Activities/SpotifyGame.cs
+++ b/src/Discord.Net.Core/Entities/Activities/SpotifyGame.cs
@@ -4,23 +4,39 @@ using System.Diagnostics;
namespace Discord
{
- /// A user's activity for listening to a song on Spotify.
+ ///
+ /// A user's activity for listening to a song on Spotify.
+ ///
[DebuggerDisplay(@"{DebuggerDisplay,nq}")]
public class SpotifyGame : Game
{
- /// Gets the song's artist(s).
+ ///
+ /// Gets the song's artist(s).
+ ///
public IEnumerable Artists { get; internal set; }
- /// Gets the Spotify album art for the song.
+ ///
+ /// Gets the Spotify album art of the song.
+ ///
public string AlbumArt { get; internal set; }
- /// Gets the Spotify album title for the song.
+ ///
+ /// Gets the Spotify album title of the song.
+ ///
public string AlbumTitle { get; internal set; }
- /// Gets the track title for the song.
+ ///
+ /// Gets the track title of the song.
+ ///
public string TrackTitle { get; internal set; }
- /// Gets the synchronization ID for the song.
+ ///
+ /// Gets the synchronization ID of the song.
+ ///
public string SyncId { get; internal set; }
- /// Gets the session ID for the song.
+ ///
+ /// Gets the session ID of the song.
+ ///
public string SessionId { get; internal set; }
- /// Gets the duration for the song.
+ ///
+ /// Gets the duration of the song.
+ ///
public TimeSpan? Duration { get; internal set; }
internal SpotifyGame() { }
diff --git a/src/Discord.Net.Core/Entities/Activities/StreamingGame.cs b/src/Discord.Net.Core/Entities/Activities/StreamingGame.cs
index a50e4686b..127ae0b7f 100644
--- a/src/Discord.Net.Core/Entities/Activities/StreamingGame.cs
+++ b/src/Discord.Net.Core/Entities/Activities/StreamingGame.cs
@@ -2,13 +2,22 @@ using System.Diagnostics;
namespace Discord
{
- /// A user's activity for streaming on services such as Twitch.
+ ///
+ /// A user's activity for streaming on services such as Twitch.
+ ///
[DebuggerDisplay(@"{DebuggerDisplay,nq}")]
public class StreamingGame : Game
{
- /// Gets the URL of the stream.
+ ///
+ /// Gets the URL of the stream.
+ ///
public string Url { get; internal set; }
+ ///
+ /// Creates a new based on the on the stream URL.
+ ///
+ /// The name of the stream.
+ /// The URL of the stream.
public StreamingGame(string name, string url)
{
Name = name;
@@ -16,7 +25,9 @@ namespace Discord
Type = ActivityType.Streaming;
}
- /// Gets the name of the stream.
+ ///
+ /// Gets the name of the stream.
+ ///
public override string ToString() => Name;
private string DebuggerDisplay => $"{Name} ({Url})";
}
diff --git a/src/Discord.Net.Core/Entities/CacheMode.cs b/src/Discord.Net.Core/Entities/CacheMode.cs
index a68a89174..503a80479 100644
--- a/src/Discord.Net.Core/Entities/CacheMode.cs
+++ b/src/Discord.Net.Core/Entities/CacheMode.cs
@@ -1,11 +1,17 @@
namespace Discord
{
- /// Specifies the cache mode that should be used.
+ ///
+ /// Specifies the cache mode that should be used.
+ ///
public enum CacheMode
{
- /// Allows the object to be downloaded if it does not exist in the current cache.
+ ///
+ /// Allows the object to be downloaded if it does not exist in the current cache.
+ ///
AllowDownload,
- /// Only allows the object to be pulled from the existing cache.
+ ///
+ /// Only allows the object to be pulled from the existing cache.
+ ///
CacheOnly
}
}
diff --git a/src/Discord.Net.Core/Entities/Channels/GuildChannelProperties.cs b/src/Discord.Net.Core/Entities/Channels/GuildChannelProperties.cs
index 09703bd65..be1bac363 100644
--- a/src/Discord.Net.Core/Entities/Channels/GuildChannelProperties.cs
+++ b/src/Discord.Net.Core/Entities/Channels/GuildChannelProperties.cs
@@ -1,33 +1,35 @@
namespace Discord
{
///
- /// Properties that are used to modify an with the specified changes.
+ /// Properties that are used to modify an with the specified changes.
///
///
- ///
- /// await (Context.Channel as ITextChannel)?.ModifyAsync(x =>
- /// {
- /// x.Name = "do-not-enter";
- /// });
- ///
+ ///
+ /// await (Context.Channel as ITextChannel)?.ModifyAsync(x =>
+ /// {
+ /// x.Name = "do-not-enter";
+ /// });
+ ///
///
public class GuildChannelProperties
{
///
- /// Sets the channel to this name.
+ /// Gets or sets the channel to this name.
///
///
- /// When modifying an ITextChannel, the Name MUST be alphanumeric with dashes.
- /// It must match the following RegEx: [a-z0-9-_]{2,100}
+ /// When modifying an , the
+ /// MUST be alphanumeric with dashes. It must match the following RegEx: [a-z0-9-_]{2,100}
///
- /// A BadRequest will be thrown if the name does not match the above RegEx.
+ ///
+ /// A BadRequest will be thrown if the name does not match the above RegEx.
+ ///
public Optional Name { get; set; }
///
- /// Moves the channel to the following position. This is 0-based!
+ /// Moves the channel to the following position. This is 0-based!
///
public Optional Position { get; set; }
///
- /// Sets the category for this channel.
+ /// Gets or sets the category for this channel.
///
public Optional CategoryId { get; set; }
}
diff --git a/src/Discord.Net.Core/Entities/Channels/IAudioChannel.cs b/src/Discord.Net.Core/Entities/Channels/IAudioChannel.cs
index afb81d92f..6295a6829 100644
--- a/src/Discord.Net.Core/Entities/Channels/IAudioChannel.cs
+++ b/src/Discord.Net.Core/Entities/Channels/IAudioChannel.cs
@@ -1,12 +1,17 @@
-using Discord.Audio;
+using Discord.Audio;
using System;
using System.Threading.Tasks;
namespace Discord
{
+ ///
+ /// Represents a generic audio channel.
+ ///
public interface IAudioChannel : IChannel
{
- /// Connects to this audio channel.
+ ///
+ /// Connects to this audio channel.
+ ///
Task ConnectAsync(Action configAction = null);
}
}
diff --git a/src/Discord.Net.Core/Entities/Channels/ICategoryChannel.cs b/src/Discord.Net.Core/Entities/Channels/ICategoryChannel.cs
index 0f7f5aa62..c47318823 100644
--- a/src/Discord.Net.Core/Entities/Channels/ICategoryChannel.cs
+++ b/src/Discord.Net.Core/Entities/Channels/ICategoryChannel.cs
@@ -1,11 +1,8 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
namespace Discord
{
+ ///
+ /// Represents a generic category channel.
+ ///
public interface ICategoryChannel : IGuildChannel
{
}
diff --git a/src/Discord.Net.Core/Entities/Channels/IChannel.cs b/src/Discord.Net.Core/Entities/Channels/IChannel.cs
index ce1d859a9..85138ad60 100644
--- a/src/Discord.Net.Core/Entities/Channels/IChannel.cs
+++ b/src/Discord.Net.Core/Entities/Channels/IChannel.cs
@@ -3,16 +3,24 @@ using System.Threading.Tasks;
namespace Discord
{
- /// Represents a generic Discord channel.
+ ///
+ /// Represents a generic Discord channel.
+ ///
public interface IChannel : ISnowflakeEntity
{
- /// Gets the name of this channel.
+ ///
+ /// Gets the name of this channel.
+ ///
string Name { get; }
- /// Gets a collection of all users in this channel.
+ ///
+ /// Gets a collection of all users in this channel.
+ ///
IAsyncEnumerable> GetUsersAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
- /// Gets a user in this channel with the provided id.
+ ///
+ /// Gets a user in this channel with the provided ID.
+ ///
Task GetUserAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
}
}
diff --git a/src/Discord.Net.Core/Entities/Channels/IDMChannel.cs b/src/Discord.Net.Core/Entities/Channels/IDMChannel.cs
index 1608d1543..bde44b2ed 100644
--- a/src/Discord.Net.Core/Entities/Channels/IDMChannel.cs
+++ b/src/Discord.Net.Core/Entities/Channels/IDMChannel.cs
@@ -1,13 +1,20 @@
-using System.Threading.Tasks;
+using System.Threading.Tasks;
namespace Discord
{
+ ///
+ /// Represents a generic DM channel.
+ ///
public interface IDMChannel : IMessageChannel, IPrivateChannel
{
- /// Gets the recipient of all messages in this channel.
+ ///
+ /// Gets the recipient of all messages in this channel.
+ ///
IUser Recipient { get; }
- /// Closes this private channel, removing it from your channel list.
+ ///
+ /// Closes this private channel, removing it from your channel list.
+ ///
Task CloseAsync(RequestOptions options = null);
}
-}
\ No newline at end of file
+}
diff --git a/src/Discord.Net.Core/Entities/Channels/IGroupChannel.cs b/src/Discord.Net.Core/Entities/Channels/IGroupChannel.cs
index d6cb2c182..2c329f896 100644
--- a/src/Discord.Net.Core/Entities/Channels/IGroupChannel.cs
+++ b/src/Discord.Net.Core/Entities/Channels/IGroupChannel.cs
@@ -1,10 +1,15 @@
-using System.Threading.Tasks;
+using System.Threading.Tasks;
namespace Discord
{
+ ///
+ /// Represents a generic group channel.
+ ///
public interface IGroupChannel : IMessageChannel, IPrivateChannel, IAudioChannel
{
- /// Leaves this group.
+ ///
+ /// Leaves this group.
+ ///
Task LeaveAsync(RequestOptions options = null);
}
-}
\ No newline at end of file
+}
diff --git a/src/Discord.Net.Core/Entities/Channels/IGuildChannel.cs b/src/Discord.Net.Core/Entities/Channels/IGuildChannel.cs
index c66662ef1..9a2651dfa 100644
--- a/src/Discord.Net.Core/Entities/Channels/IGuildChannel.cs
+++ b/src/Discord.Net.Core/Entities/Channels/IGuildChannel.cs
@@ -4,50 +4,95 @@ using System.Threading.Tasks;
namespace Discord
{
- /// Represents a guild channel (text, voice, category).
+ ///
+ /// Represents a guild channel (text, voice, category).
+ ///
public interface IGuildChannel : IChannel, IDeletable
{
- /// Gets the position of this channel in the guild's channel list, relative to others of the same type.
+ ///
+ /// Gets the position of this channel in the guild's channel list, relative to others of the same type.
+ ///
int Position { get; }
- /// Gets the parent ID (category) of this channel in the guild's channel list.
+ ///
+ /// Gets the parent ID (category) of this channel in the guild's channel list.
+ ///
ulong? CategoryId { get; }
- /// Gets the parent channel (category) of this channel.
+ ///
+ /// Gets the parent channel (category) of this channel.
+ ///
Task GetCategoryAsync();
- /// Gets the guild this channel is a member of.
+ ///
+ /// Gets the guild this channel is a member of.
+ ///
IGuild Guild { get; }
- /// Gets the id of the guild this channel is a member of.
+ ///
+ /// Gets the id of the guild this channel is a member of.
+ ///
ulong GuildId { get; }
- /// Gets a collection of permission overwrites for this channel.
+ ///
+ /// Gets a collection of permission overwrites for this channel.
+ ///
IReadOnlyCollection PermissionOverwrites { get; }
- /// Creates a new invite to this channel.
- /// The time (in seconds) until the invite expires. Set to null to never expire.
- /// The max amount of times this invite may be used. Set to null to have unlimited uses.
- /// If true, a user accepting this invite will be kicked from the guild after closing their client.
+ ///
+ /// Creates a new invite to this channel.
+ ///
+ ///
+ /// The time (in seconds) until the invite expires. Set to to never expire.
+ ///
+ ///
+ /// The max amount of times this invite may be used. Set to to have unlimited uses.
+ ///
+ ///
+ /// If , a user accepting this invite will be kicked from the guild after closing their client.
+ ///
+ ///
+ /// If , don't try to reuse a similar invite (useful for creating many unique one time use invites).
+ ///
Task CreateInviteAsync(int? maxAge = 86400, int? maxUses = default(int?), bool isTemporary = false, bool isUnique = false, RequestOptions options = null);
- /// Returns a collection of all invites to this channel.
+ ///
+ /// Returns a collection of all invites to this channel.
+ ///
Task> GetInvitesAsync(RequestOptions options = null);
- /// Modifies this guild channel.
+ ///
+ /// Modifies this guild channel.
+ ///
Task ModifyAsync(Action func, RequestOptions options = null);
- /// Gets the permission overwrite for a specific role, or null if one does not exist.
+ ///
+ /// Gets the permission overwrite for a specific role, or if one does not exist.
+ ///
OverwritePermissions? GetPermissionOverwrite(IRole role);
- /// Gets the permission overwrite for a specific user, or null if one does not exist.
+ ///
+ /// Gets the permission overwrite for a specific user, or if one does not exist.
+ ///
OverwritePermissions? GetPermissionOverwrite(IUser user);
- /// Removes the permission overwrite for the given role, if one exists.
+ ///
+ /// Removes the permission overwrite for the given role, if one exists.
+ ///
Task RemovePermissionOverwriteAsync(IRole role, RequestOptions options = null);
- /// Removes the permission overwrite for the given user, if one exists.
+ ///
+ /// Removes the permission overwrite for the given user, if one exists.
+ ///
Task RemovePermissionOverwriteAsync(IUser user, RequestOptions options = null);
- /// Adds or updates the permission overwrite for the given role.
+ ///
+ /// Adds or updates the permission overwrite for the given role.
+ ///
Task AddPermissionOverwriteAsync(IRole role, OverwritePermissions permissions, RequestOptions options = null);
- /// Adds or updates the permission overwrite for the given user.
+ ///
+ /// Adds or updates the permission overwrite for the given user.
+ ///
Task AddPermissionOverwriteAsync(IUser user, OverwritePermissions permissions, RequestOptions options = null);
- /// Gets a collection of all users in this channel.
+ ///
+ /// Gets a collection of all users in this channel.
+ ///
new IAsyncEnumerable> GetUsersAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
- /// Gets a user in this channel with the provided id.
+ ///
+ /// Gets a user in this channel with the provided ID.
+ ///
new Task GetUserAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
}
}
diff --git a/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs b/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs
index 5a6e5df59..906f00179 100644
--- a/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs
+++ b/src/Discord.Net.Core/Entities/Channels/IMessageChannel.cs
@@ -5,34 +5,58 @@ using System.Threading.Tasks;
namespace Discord
{
+ ///
+ /// Represents a generic channel that can send and receive messages.
+ ///
public interface IMessageChannel : IChannel
{
- /// Sends a message to this message channel.
+ ///
+ /// Sends a message to this message channel.
+ ///
Task SendMessageAsync(string text, bool isTTS = false, Embed embed = null, RequestOptions options = null);
#if FILESYSTEM
- /// Sends a file to this text channel, with an optional caption.
+ ///
+ /// Sends a file to this channel, with an optional caption.
+ ///
Task SendFileAsync(string filePath, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null);
#endif
- /// Sends a file to this text channel, with an optional caption.
+ ///
+ /// Sends a file to this channel, with an optional caption.
+ ///
Task SendFileAsync(Stream stream, string filename, string text = null, bool isTTS = false, Embed embed = null, RequestOptions options = null);
- /// Gets a message from this message channel with the given id, or null if not found.
+ ///
+ /// Gets a message from this message channel with the given id, or if not found.
+ ///
Task GetMessageAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
- /// Gets the last N messages from this message channel.
+ ///
+ /// Gets the last N messages from this message channel.
+ ///
IAsyncEnumerable> GetMessagesAsync(int limit = DiscordConfig.MaxMessagesPerBatch,
CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
- /// Gets a collection of messages in this channel.
+ ///
+ /// Gets a collection of messages in this channel.
+ ///
IAsyncEnumerable> GetMessagesAsync(ulong fromMessageId, Direction dir, int limit = DiscordConfig.MaxMessagesPerBatch,
CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
- /// Gets a collection of messages in this channel.
+ ///
+ /// Gets a collection of messages in this channel.
+ ///
IAsyncEnumerable> GetMessagesAsync(IMessage fromMessage, Direction dir, int limit = DiscordConfig.MaxMessagesPerBatch,
CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
- /// Gets a collection of pinned messages in this channel.
+ ///
+ /// Gets a collection of pinned messages in this channel.
+ ///
Task> GetPinnedMessagesAsync(RequestOptions options = null);
- /// Broadcasts the "user is typing" message to all users in this channel, lasting 10 seconds.
+ ///
+ /// Broadcasts the "user is typing" message to all users in this channel, lasting 10 seconds.
+ ///
Task TriggerTypingAsync(RequestOptions options = null);
- /// Continuously broadcasts the "user is typing" message to all users in this channel until the returned object is disposed.
+ ///
+ /// Continuously broadcasts the "user is typing" message to all users in this channel until the returned
+ /// object is disposed.
+ ///
IDisposable EnterTypingState(RequestOptions options = null);
}
}
diff --git a/src/Discord.Net.Core/Entities/Channels/IPrivateChannel.cs b/src/Discord.Net.Core/Entities/Channels/IPrivateChannel.cs
index 9a3289794..fecb4fc19 100644
--- a/src/Discord.Net.Core/Entities/Channels/IPrivateChannel.cs
+++ b/src/Discord.Net.Core/Entities/Channels/IPrivateChannel.cs
@@ -1,9 +1,15 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace Discord
{
+ ///
+ /// Represents a generic channel that is private to select recipients.
+ ///
public interface IPrivateChannel : IChannel
{
+ ///
+ /// Users that can access this channel.
+ ///
IReadOnlyCollection Recipients { get; }
}
}
diff --git a/src/Discord.Net.Core/Entities/Channels/ITextChannel.cs b/src/Discord.Net.Core/Entities/Channels/ITextChannel.cs
index 7c6ec3908..1998083af 100644
--- a/src/Discord.Net.Core/Entities/Channels/ITextChannel.cs
+++ b/src/Discord.Net.Core/Entities/Channels/ITextChannel.cs
@@ -1,31 +1,50 @@
-using System;
+using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
namespace Discord
{
+ ///
+ /// Represents a generic channel in a guild that can send and receive messages.
+ ///
public interface ITextChannel : IMessageChannel, IMentionable, IGuildChannel
{
- /// Checks if the channel is NSFW.
+ ///
+ /// Gets whether the channel is NSFW.
+ ///
bool IsNsfw { get; }
- /// Gets the current topic for this text channel.
+ ///
+ /// Gets the current topic for this text channel.
+ ///
string Topic { get; }
- /// Bulk deletes multiple messages.
+ ///
+ /// Bulk deletes multiple messages.
+ ///
Task DeleteMessagesAsync(IEnumerable messages, RequestOptions options = null);
- /// Bulk deletes multiple messages.
+ ///
+ /// Bulk deletes multiple messages.
+ ///
Task DeleteMessagesAsync(IEnumerable messageIds, RequestOptions options = null);
- /// Modifies this text channel.
+ ///
+ /// Modifies this text channel.
+ ///
Task ModifyAsync(Action func, RequestOptions options = null);
- /// Creates a webhook in this text channel.
+ ///
+ /// Creates a webhook in this text channel.
+ ///
Task CreateWebhookAsync(string name, Stream avatar = null, RequestOptions options = null);
- /// Gets the webhook in this text channel with the provided id, or null if not found.
+ ///
+ /// Gets the webhook in this text channel with the provided ID, or if not found.
+ ///
Task GetWebhookAsync(ulong id, RequestOptions options = null);
- /// Gets the webhooks for this text channel.
+ ///
+ /// Gets the webhooks for this text channel.
+ ///
Task> GetWebhooksAsync(RequestOptions options = null);
}
-}
\ No newline at end of file
+}
diff --git a/src/Discord.Net.Core/Entities/Channels/IVoiceChannel.cs b/src/Discord.Net.Core/Entities/Channels/IVoiceChannel.cs
index e2a2ad8eb..e6e589235 100644
--- a/src/Discord.Net.Core/Entities/Channels/IVoiceChannel.cs
+++ b/src/Discord.Net.Core/Entities/Channels/IVoiceChannel.cs
@@ -1,16 +1,26 @@
-using System;
+using System;
using System.Threading.Tasks;
namespace Discord
{
+ ///
+ /// Represents a voice channel in a guild.
+ ///
public interface IVoiceChannel : IGuildChannel, IAudioChannel
{
- /// Gets the bitrate, in bits per second, clients in this voice channel are requested to use.
+ ///
+ /// Gets the bitrate, in bits per second, clients in this voice channel are requested to use.
+ ///
int Bitrate { get; }
- /// Gets the max amount of users allowed to be connected to this channel at one time.
+ ///
+ /// Gets the max amount of users allowed to be connected to this channel at one time, or
+ /// if none is set.
+ ///
int? UserLimit { get; }
- /// Modifies this voice channel.
+ ///
+ /// Modifies this voice channel.
+ ///
Task ModifyAsync(Action func, RequestOptions options = null);
}
-}
\ No newline at end of file
+}
diff --git a/src/Discord.Net.Core/Entities/Channels/ReorderChannelProperties.cs b/src/Discord.Net.Core/Entities/Channels/ReorderChannelProperties.cs
index 62d35a15f..02cb2547c 100644
--- a/src/Discord.Net.Core/Entities/Channels/ReorderChannelProperties.cs
+++ b/src/Discord.Net.Core/Entities/Channels/ReorderChannelProperties.cs
@@ -1,11 +1,17 @@
namespace Discord
{
- /// Properties that are used to reorder an .
+ ///
+ /// Properties that are used to reorder an .
+ ///
public class ReorderChannelProperties
{
- /// Gets the ID of the channel to apply this position to.
+ ///
+ /// Gets the ID of the channel to apply this position to.
+ ///
public ulong Id { get; }
- /// Gets the new zero-based position of this channel.
+ ///
+ /// Gets the new zero-based position of this channel.
+ ///
public int Position { get; }
/// Creates a used to reorder a channel.
diff --git a/src/Discord.Net.Core/Entities/Channels/TextChannelProperties.cs b/src/Discord.Net.Core/Entities/Channels/TextChannelProperties.cs
index b7b568133..b68c416b7 100644
--- a/src/Discord.Net.Core/Entities/Channels/TextChannelProperties.cs
+++ b/src/Discord.Net.Core/Entities/Channels/TextChannelProperties.cs
@@ -1,14 +1,16 @@
-namespace Discord
+namespace Discord
{
- ///
+ ///
+ /// Properties that are used to modify an with the specified changes.
+ ///
public class TextChannelProperties : GuildChannelProperties
{
///
- /// What the topic of the channel should be set to.
+ /// Gets or sets the topic of the channel.
///
public Optional Topic { get; set; }
///
- /// Should this channel be flagged as NSFW?
+ /// Gets or sets whether this channel should be flagged as NSFW.
///
public Optional IsNsfw { get; set; }
}
diff --git a/src/Discord.Net.Core/Entities/Channels/VoiceChannelProperties.cs b/src/Discord.Net.Core/Entities/Channels/VoiceChannelProperties.cs
index 81dd8063e..c285560df 100644
--- a/src/Discord.Net.Core/Entities/Channels/VoiceChannelProperties.cs
+++ b/src/Discord.Net.Core/Entities/Channels/VoiceChannelProperties.cs
@@ -1,14 +1,16 @@
-namespace Discord
+namespace Discord
{
- ///
+ ///
+ /// Properties that are used to modify an with the specified changes.
+ ///
public class VoiceChannelProperties : GuildChannelProperties
{
///
- /// The bitrate of the voice connections in this channel. Must be greater than 8000
+ /// Gets or sets the bitrate of the voice connections in this channel. Must be greater than 8000.
///
public Optional Bitrate { get; set; }
///
- /// The maximum number of users that can be present in a channel.
+ /// Gets or sets the maximum number of users that can be present in a channel, or if none.
///
public Optional UserLimit { get; set; }
}
diff --git a/src/Discord.Net.Core/Entities/Emotes/Emoji.cs b/src/Discord.Net.Core/Entities/Emotes/Emoji.cs
index 2315ae90f..a68702dbd 100644
--- a/src/Discord.Net.Core/Entities/Emotes/Emoji.cs
+++ b/src/Discord.Net.Core/Entities/Emotes/Emoji.cs
@@ -1,17 +1,25 @@
namespace Discord
{
- /// A Unicode emoji.
+ ///
+ /// A Unicode emoji.
+ ///
public class Emoji : IEmote
{
// TODO: need to constrain this to Unicode-only emojis somehow
- /// Gets the Unicode representation of this emote.
+ ///
+ /// Gets the Unicode representation of this emote.
+ ///
public string Name { get; }
- /// Gets the Unicode representation of this emote.
+ ///
+ /// Gets the Unicode representation of this emote.
+ ///
public override string ToString() => Name;
- /// Creates a Unicode emoji.
- /// The pure UTF-8 encoding of an emoji
+ ///
+ /// Creates a Unicode emoji.
+ ///
+ /// The pure UTF-8 encoding of an emoji.
public Emoji(string unicode)
{
Name = unicode;
diff --git a/src/Discord.Net.Core/Entities/Emotes/Emote.cs b/src/Discord.Net.Core/Entities/Emotes/Emote.cs
index 762e8cec7..682ca33b7 100644
--- a/src/Discord.Net.Core/Entities/Emotes/Emote.cs
+++ b/src/Discord.Net.Core/Entities/Emotes/Emote.cs
@@ -3,18 +3,30 @@ using System.Globalization;
namespace Discord
{
- /// A custom image-based emote.
+ ///
+ /// A custom image-based emote.
+ ///
public class Emote : IEmote, ISnowflakeEntity
{
- /// Gets the display name (tooltip) of this emote.
+ ///
+ /// Gets the display name (tooltip) of this emote.
+ ///
public string Name { get; }
- /// Gets the ID of this emote.
+ ///
+ /// Gets the ID of this emote.
+ ///
public ulong Id { get; }
- /// Gets whether this emote animated?
+ ///
+ /// Gets whether this emote is animated.
+ ///
public bool Animated { get; }
- /// Gets the date when this emote is created.
+ ///
+ /// Gets the date when this emote is created.
+ ///
public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id);
- /// Gets the image URL of this emote.
+ ///
+ /// Gets the image URL of this emote.
+ ///
public string Url => CDN.GetEmojiUrl(Id, Animated);
internal Emote(ulong id, string name, bool animated)
diff --git a/src/Discord.Net.Core/Entities/Emotes/GuildEmote.cs b/src/Discord.Net.Core/Entities/Emotes/GuildEmote.cs
index 7a6d3ac59..126fe0fd3 100644
--- a/src/Discord.Net.Core/Entities/Emotes/GuildEmote.cs
+++ b/src/Discord.Net.Core/Entities/Emotes/GuildEmote.cs
@@ -3,7 +3,9 @@ using System.Diagnostics;
namespace Discord
{
- /// An image-based emote that is attached to a guild.
+ ///
+ /// An image-based emote that is attached to a guild.
+ ///
[DebuggerDisplay(@"{DebuggerDisplay,nq}")]
public class GuildEmote : Emote
{
diff --git a/src/Discord.Net.Core/Entities/Emotes/IEmote.cs b/src/Discord.Net.Core/Entities/Emotes/IEmote.cs
index c4f3c2dfe..e39601852 100644
--- a/src/Discord.Net.Core/Entities/Emotes/IEmote.cs
+++ b/src/Discord.Net.Core/Entities/Emotes/IEmote.cs
@@ -1,9 +1,13 @@
-namespace Discord
+namespace Discord
{
- /// Represents a general container for any type of emote in a message.
+ ///
+ /// Represents a general container for any type of emote in a message.
+ ///
public interface IEmote
{
- /// Gets the display name or Unicode representation of this emote.
+ ///
+ /// Gets the display name or Unicode representation of this emote.
+ ///
string Name { get; }
}
}
diff --git a/src/Discord.Net.Core/Entities/Guilds/DefaultMessageNotifications.cs b/src/Discord.Net.Core/Entities/Guilds/DefaultMessageNotifications.cs
index 4cefa0e0a..ffcd28cee 100644
--- a/src/Discord.Net.Core/Entities/Guilds/DefaultMessageNotifications.cs
+++ b/src/Discord.Net.Core/Entities/Guilds/DefaultMessageNotifications.cs
@@ -1,11 +1,17 @@
namespace Discord
{
- /// Specifies the default message notification behavior the guild uses.
+ ///
+ /// Specifies the default message notification behavior the guild uses.
+ ///
public enum DefaultMessageNotifications
{
- /// By default, all messages will trigger notifications.
+ ///
+ /// By default, all messages will trigger notifications.
+ ///
AllMessages = 0,
- /// By default, only mentions will trigger notifications.
+ ///
+ /// By default, only mentions will trigger notifications.
+ ///
MentionsOnly = 1
}
}
diff --git a/src/Discord.Net.Core/Entities/Guilds/GuildEmbedProperties.cs b/src/Discord.Net.Core/Entities/Guilds/GuildEmbedProperties.cs
index 5c1deb91e..68925b103 100644
--- a/src/Discord.Net.Core/Entities/Guilds/GuildEmbedProperties.cs
+++ b/src/Discord.Net.Core/Entities/Guilds/GuildEmbedProperties.cs
@@ -1,20 +1,20 @@
namespace Discord
{
///
- /// Properties that are used to modify the widget of an with the specified changes.
+ /// Properties that are used to modify the widget of an with the specified changes.
///
public class GuildEmbedProperties
{
///
- /// Should the widget be enabled?
+ /// Sets whether the widget should be enabled.
///
public Optional Enabled { get; set; }
///
- /// What channel should the invite place users in, if not null.
+ /// Sets the channel that the invite should place its users in, if not .
///
public Optional Channel { get; set; }
///
- /// What channel should the invite place users in, if not null.
+ /// Sets the channel the invite should place its users in, if not .
///
public Optional ChannelId { get; set; }
}
diff --git a/src/Discord.Net.Core/Entities/Guilds/GuildIntegrationProperties.cs b/src/Discord.Net.Core/Entities/Guilds/GuildIntegrationProperties.cs
index 588a99eaf..c8b5b3072 100644
--- a/src/Discord.Net.Core/Entities/Guilds/GuildIntegrationProperties.cs
+++ b/src/Discord.Net.Core/Entities/Guilds/GuildIntegrationProperties.cs
@@ -1,13 +1,21 @@
namespace Discord
{
- /// Properties used to modify an with the specified changes.
+ ///
+ /// Properties used to modify an with the specified changes.
+ ///
public class GuildIntegrationProperties
{
- /// Gets or sets the behavior when an integration subscription lapses.
+ ///
+ /// Gets or sets the behavior when an integration subscription lapses.
+ ///
public Optional ExpireBehavior { get; set; }
- /// Gets or sets the period (in seconds) where the integration will ignore lapsed subscriptions.
+ ///
+ /// Gets or sets the period (in seconds) where the integration will ignore lapsed subscriptions.
+ ///
public Optional ExpireGracePeriod { get; set; }
- /// Gets or sets whether emoticons should be synced for this integration.
+ ///
+ /// Gets or sets whether emoticons should be synced for this integration.
+ ///
public Optional EnableEmoticons { get; set; }
}
}
diff --git a/src/Discord.Net.Core/Entities/Guilds/GuildProperties.cs b/src/Discord.Net.Core/Entities/Guilds/GuildProperties.cs
index d98d7815a..fc33f3fe4 100644
--- a/src/Discord.Net.Core/Entities/Guilds/GuildProperties.cs
+++ b/src/Discord.Net.Core/Entities/Guilds/GuildProperties.cs
@@ -1,78 +1,79 @@
namespace Discord
{
///
- /// Properties that are used to modify an with the specified changes.
+ /// Properties that are used to modify an with the specified changes.
///
///
- ///
- /// await Context.Guild.ModifyAsync(async x =>
- /// {
- /// x.Name = "aaaaaah";
- /// x.RegionId = (await Context.Client.GetOptimalVoiceRegionAsync()).Id;
- /// });
+ ///
+ /// await Context.Guild.ModifyAsync(async x =>
+ /// {
+ /// x.Name = "aaaaaah";
+ /// x.RegionId = (await Context.Client.GetOptimalVoiceRegionAsync()).Id;
+ /// });
///
///
- ///
+ ///
public class GuildProperties
{
public Optional Username { get; set; }
///
- /// The name of the Guild.
+ /// Gets or sets the name of the Guild.
///
public Optional Name { get; set; }
///
- /// The region for the Guild's voice connections.
+ /// Gets or sets the region for the Guild's voice connections.
///
public Optional Region { get; set; }
///
- /// The ID of the region for the Guild's voice connections.
+ /// Gets or sets the ID of the region for the Guild's voice connections.
///
public Optional RegionId { get; set; }
///
- /// What verification level new users need to achieve before speaking.
+ /// Gets or sets the verification level new users need to achieve before speaking.
///
public Optional VerificationLevel { get; set; }
///
- /// The default message notification state for the guild.
+ /// Gets or sets the default message notification state for the guild.
///
public Optional DefaultMessageNotifications { get; set; }
///
- /// How many seconds before a user is sent to AFK. This value MUST be one of: (60, 300, 900, 1800, 3600).
+ /// Gets or sets how many seconds before a user is sent to AFK. This value MUST be one of: (60, 300, 900,
+ /// 1800, 3600).
///
public Optional AfkTimeout { get; set; }
///
- /// The icon of the guild.
+ /// Gets or sets the icon of the guild.
///
public Optional Icon { get; set; }
///
- /// The guild's splash image.
+ /// Gets or sets the guild's splash image.
///
///
- /// The guild must be partnered for this value to have any effect.
+ /// The guild must be partnered for this value to have any effect.
///
public Optional Splash { get; set; }
///
- /// The IVoiceChannel where AFK users should be sent.
+ /// Gets or sets the where AFK users should be sent.
///
public Optional AfkChannel { get; set; }
///
- /// The ID of the IVoiceChannel where AFK users should be sent.
+ /// Gets or sets the ID of the where AFK users should be sent.
///
public Optional AfkChannelId { get; set; }
///
- /// The ITextChannel where System messages should be sent.
+ /// Gets or sets the where System messages should be sent.
///
public Optional SystemChannel { get; set; }
///
- /// The ID of the ITextChannel where System messages should be sent.
+ /// Gets or sets the ID of the where System messages should be sent.
///
public Optional SystemChannelId { get; set; }
///
- /// The owner of this guild.
+ /// Gets or sets the owner of this guild.
///
public Optional Owner { get; set; }
///
- /// The ID of the owner of this guild.
+ /// Gets or sets the ID of the owner of this guild.
///
public Optional OwnerId { get; set; }
}
diff --git a/src/Discord.Net.Core/Entities/Guilds/IBan.cs b/src/Discord.Net.Core/Entities/Guilds/IBan.cs
index 05ab0c00f..3ce76d29b 100644
--- a/src/Discord.Net.Core/Entities/Guilds/IBan.cs
+++ b/src/Discord.Net.Core/Entities/Guilds/IBan.cs
@@ -1,8 +1,17 @@
-namespace Discord
+namespace Discord
{
+ ///
+ /// Represents a generic ban object.
+ ///
public interface IBan
{
+ ///
+ /// Gets the banned user.
+ ///
IUser User { get; }
+ ///
+ /// Gets the reason why the user is banned.
+ ///
string Reason { get; }
}
}
diff --git a/src/Discord.Net.Core/Entities/Guilds/IGuild.cs b/src/Discord.Net.Core/Entities/Guilds/IGuild.cs
index 8ac539ef7..87104f1c9 100644
--- a/src/Discord.Net.Core/Entities/Guilds/IGuild.cs
+++ b/src/Discord.Net.Core/Entities/Guilds/IGuild.cs
@@ -7,166 +7,310 @@ namespace Discord
{
public interface IGuild : IDeletable, ISnowflakeEntity
{
- /// Gets the name of this guild.
+ ///
+ /// Gets the name of this guild.
+ ///
string Name { get; }
- /// Gets the amount of time (in seconds) a user must be inactive in a voice channel for until they are automatically moved to the AFK voice channel, if one is set.
+ ///
+ /// Gets the amount of time (in seconds) a user must be inactive in a voice channel for until they are
+ /// automatically moved to the AFK voice channel, if one is set.
+ ///
int AFKTimeout { get; }
- /// Returns true if this guild is embeddable (e.g. widget)
+ ///
+ /// Returns if this guild is embeddable (e.g. widget)
+ ///
bool IsEmbeddable { get; }
- /// Gets the default message notifications for users who haven't explicitly set their notification settings.
+ ///
+ /// Gets the default message notifications for users who haven't explicitly set their notification settings.
+ ///
DefaultMessageNotifications DefaultMessageNotifications { get; }
- /// Gets the level of Multi-Factor Authentication requirements a user must fulfill before being allowed to perform administrative actions in this guild.
+ ///
+ /// Gets the level of Multi-Factor Authentication requirements a user must fulfill before being allowed to
+ /// perform administrative actions in this guild.
+ ///
MfaLevel MfaLevel { get; }
- /// Gets the level of requirements a user must fulfill before being allowed to post messages in this guild.
+ ///
+ /// Gets the level of requirements a user must fulfill before being allowed to post messages in this guild.
+ ///
VerificationLevel VerificationLevel { get; }
- /// Returns the ID of this guild's icon, or null if one is not set.
+ ///
+ /// Returns the ID of this guild's icon, or if one is not set.
+ ///
string IconId { get; }
- /// Returns the url to this guild's icon, or null if one is not set.
+ ///
+ /// Returns the URL of this guild's icon, or if one is not set.
+ ///
string IconUrl { get; }
- /// Returns the ID of this guild's splash image, or null if one is not set.
+ ///
+ /// Returns the ID of this guild's splash image, or if one is not set.
+ ///
string SplashId { get; }
- /// Returns the url to this guild's splash image, or null if one is not set.
+ ///
+ /// Returns the URL of this guild's splash image, or if one is not set.
+ ///
string SplashUrl { get; }
- /// Returns true if this guild is currently connected and ready to be used. Only applies to the WebSocket client.
+ ///
+ /// Returns if this guild is currently connected and ready to be used. Only applies
+ /// to the WebSocket client.
+ ///
bool Available { get; }
- /// Gets the ID of the AFK voice channel for this guild if set, or null if not.
+ ///
+ /// Gets the ID of the AFK voice channel for this guild if set, or if not.
+ ///
ulong? AFKChannelId { get; }
- /// Gets the ID of the the default channel for this guild.
+ ///
+ /// Gets the ID of the the default channel for this guild.
+ ///
ulong DefaultChannelId { get; }
- /// Gets the ID of the embed channel for this guild if set, or null if not.
+ ///
+ /// Gets the ID of the embed channel for this guild if set, or if not.
+ ///
ulong? EmbedChannelId { get; }
- /// Gets the ID of the channel where randomized welcome messages are sent, or null if not.
+ ///
+ /// Gets the ID of the channel where randomized welcome messages are sent, or if not.
+ ///
ulong? SystemChannelId { get; }
- /// Gets the ID of the user that created this guild.
+ ///
+ /// Gets the ID of the user that created this guild.
+ ///
ulong OwnerId { get; }
- /// Gets the ID of the region hosting this guild's voice channels.
+ ///
+ /// Gets the ID of the region hosting this guild's voice channels.
+ ///
string VoiceRegionId { get; }
- /// Gets the currently associated with this guild.
+ ///
+ /// Gets the currently associated with this guild.
+ ///
IAudioClient AudioClient { get; }
- /// Gets the built-in role containing all users in this guild.
+ ///
+ /// Gets the built-in role containing all users in this guild.
+ ///
IRole EveryoneRole { get; }
- /// Gets a collection of all custom emojis for this guild.
+ ///
+ /// Gets a collection of all custom emotes for this guild.
+ ///
IReadOnlyCollection Emotes { get; }
- /// Gets a collection of all extra features added to this guild.
+ ///
+ /// Gets a collection of all extra features added to this guild.
+ ///
IReadOnlyCollection Features { get; }
- /// Gets a collection of all roles in this guild.
+ ///
+ /// Gets a collection of all roles in this guild.
+ ///
IReadOnlyCollection Roles { get; }
- /// Modifies this guild.
+ ///
+ /// Modifies this guild.
+ ///
Task ModifyAsync(Action func, RequestOptions options = null);
- /// Modifies this guild's embed.
+ ///
+ /// Modifies this guild's embed channel.
+ ///
Task ModifyEmbedAsync(Action func, RequestOptions options = null);
- /// Bulk modifies the channels of this guild.
+ ///
+ /// Bulk modifies the order of channels in this guild.
+ ///
Task ReorderChannelsAsync(IEnumerable args, RequestOptions options = null);
- /// Bulk modifies the roles of this guild.
+ ///
+ /// Bulk modifies the order of roles in this guild.
+ ///
Task ReorderRolesAsync(IEnumerable args, RequestOptions options = null);
- /// Leaves this guild. If you are the owner, use Delete instead.
+ ///
+ /// Leaves this guild. If you are the owner, use
+ /// instead.
+ ///
Task LeaveAsync(RequestOptions options = null);
- /// Gets a collection of all users banned on this guild.
+ ///
+ /// Gets a collection of all users banned on this guild.
+ ///
Task> GetBansAsync(RequestOptions options = null);
- /// Bans the provided user from this guild and optionally prunes their recent messages.
- /// The user to ban.
- /// The number of days to remove messages from this user for - must be between [0, 7]
- /// The reason of the ban to be written in the audit log.
+ ///
+ /// Bans the provided from this guild and optionally prunes their recent messages.
+ ///
+ ///
+ /// The user to ban.
+ ///
+ ///
+ /// The number of days to remove messages from this for - must be between [0, 7]
+ ///
+ ///
+ /// The reason of the ban to be written in the audit log.
+ ///
Task AddBanAsync(IUser user, int pruneDays = 0, string reason = null, RequestOptions options = null);
- /// Bans the provided user ID from this guild and optionally prunes their recent messages.
- /// The ID of the user to ban.
- /// The number of days to remove messages from this user for - must be between [0, 7]
- /// The reason of the ban to be written in the audit log.
+ ///
+ /// Bans the provided user ID from this guild and optionally prunes their recent messages.
+ ///
+ ///
+ /// The ID of the user to ban.
+ ///
+ ///
+ /// The number of days to remove messages from this user for - must be between [0, 7]
+ ///
+ ///
+ /// The reason of the ban to be written in the audit log.
+ ///
Task AddBanAsync(ulong userId, int pruneDays = 0, string reason = null, RequestOptions options = null);
- /// Unbans the provided user if it is currently banned.
+ ///
+ /// Unbans the provided if they are currently banned.
+ ///
Task RemoveBanAsync(IUser user, RequestOptions options = null);
- /// Unbans the provided user ID if it is currently banned.
+ ///
+ /// Unbans the provided user ID if it is currently banned.
+ ///
Task RemoveBanAsync(ulong userId, RequestOptions options = null);
- /// Gets a collection of all channels in this guild.
+ ///
+ /// Gets a collection of all channels in this guild.
+ ///
Task> GetChannelsAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
- /// Gets the channel in this guild with the provided ID, or null if not found.
- /// The channel ID.
+ ///
+ /// Gets the channel in this guild with the provided ID, or if not found.
+ ///
+ /// The channel ID.
Task GetChannelAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
- /// Gets a collection of all text channels in this guild.
+ ///
+ /// Gets a collection of all text channels in this guild.
+ ///
Task> GetTextChannelsAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
- /// Gets a text channel in this guild with the provided ID, or null if not found.
- /// The text channel ID.
+ ///
+ /// Gets a text channel in this guild with the provided ID, or if not found.
+ ///
+ /// The text channel ID.
Task GetTextChannelAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
- /// Gets a collection of all voice channels in this guild.
+ ///
+ /// Gets a collection of all voice channels in this guild.
+ ///
Task> GetVoiceChannelsAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
- /// Gets a collection of all category channels in this guild.
+ ///
+ /// Gets a collection of all category channels in this guild.
+ ///
Task> GetCategoriesAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
- /// Gets the voice channel in this guild with the provided ID, or null if not found.
- /// The text channel ID.
+ ///
+ /// Gets the voice channel in this guild with the provided ID, or if not found.
+ ///
+ /// The text channel ID.
Task GetVoiceChannelAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
- /// Gets the voice AFK channel in this guild with the provided ID, or null if not found.
+ ///
+ /// Gets the voice AFK channel in this guild with the provided ID, or if not found.
+ ///
Task GetAFKChannelAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
- /// Gets the default system text channel in this guild with the provided ID, or null if none is set.
+ ///
+ /// Gets the default system text channel in this guild with the provided ID, or if
+ /// none is set.
+ ///
Task GetSystemChannelAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
- /// Gets the top viewable text channel in this guild with the provided ID, or null if not found.
+ ///
+ /// Gets the top viewable text channel in this guild with the provided ID, or if not
+ /// found.
+ ///
Task GetDefaultChannelAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
- /// Gets the embed channel in this guild.
+ ///
+ /// Gets the embed channel in this guild.
+ ///
Task GetEmbedChannelAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
- /// Creates a new text channel.
- /// The new name for the text channel.
+ ///
+ /// Creates a new text channel.
+ ///
+ /// The new name for the text channel.
Task CreateTextChannelAsync(string name, RequestOptions options = null);
- /// Creates a new voice channel.
- /// The new name for the voice channel.
+ ///
+ /// Creates a new voice channel.
+ ///
+ /// The new name for the voice channel.
Task CreateVoiceChannelAsync(string name, RequestOptions options = null);
- /// Creates a new channel category.
- /// The new name for the category.
+ ///
+ /// Creates a new channel category.
+ ///
+ /// The new name for the category.
Task CreateCategoryAsync(string name, RequestOptions options = null);
Task> GetIntegrationsAsync(RequestOptions options = null);
Task CreateIntegrationAsync(ulong id, string type, RequestOptions options = null);
- /// Gets a collection of all invites to this guild.
+ ///
+ /// Gets a collection of all invites to this guild.
+ ///
Task> GetInvitesAsync(RequestOptions options = null);
- /// Gets the role in this guild with the provided ID, or null if not found.
- /// The role ID.
+ ///
+ /// Gets the role in this guild with the provided ID, or if not found.
+ ///
+ /// The role ID.
IRole GetRole(ulong id);
- /// Creates a new role with the provided name.
- /// The new name for the role.
- /// The guild permission that the role should possess.
- /// The color of the role.
- /// Whether the role is separated from others on the sidebar.
+ ///
+ /// Creates a new role with the provided name.
+ ///
+ /// The new name for the role.
+ /// The guild permission that the role should possess.
+ /// The color of the role.
+ /// Whether the role is separated from others on the sidebar.
Task CreateRoleAsync(string name, GuildPermissions? permissions = null, Color? color = null, bool isHoisted = false, RequestOptions options = null);
- /// Gets a collection of all users in this guild.
+ ///
+ /// Gets a collection of all users in this guild.
+ ///
Task> GetUsersAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null); //TODO: shouldnt this be paged?
- /// Gets the user in this guild with the provided ID, or null if not found.
- /// The user ID.
+ ///
+ /// Gets the user in this guild with the provided ID, or if not found.
+ ///
+ /// The user ID.
Task GetUserAsync(ulong id, CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
- /// Gets the current user for this guild.
+ ///
+ /// Gets the current user for this guild.
+ ///
Task GetCurrentUserAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
- /// Gets the owner of this guild.
+ ///
+ /// Gets the owner of this guild.
+ ///
Task GetOwnerAsync(CacheMode mode = CacheMode.AllowDownload, RequestOptions options = null);
- /// Downloads all users for this guild if the current list is incomplete.
+ ///
+ /// Downloads all users for this guild if the current list is incomplete.
+ ///
Task DownloadUsersAsync();
- /// Removes all users from this guild if they have not logged on in a provided number of days or, if simulate is true, returns the number of users that would be removed.
- /// The number of days required for the users to be kicked.
- /// Whether this prune action is a simulation.
- /// The number of users removed from this guild.
+ ///
+ /// Removes all users from this guild if they have not logged on in a provided number of
+ /// or, if is true, returns the number of users that
+ /// would be removed.
+ ///
+ /// The number of days required for the users to be kicked.
+ /// Whether this prune action is a simulation.
+ ///
+ /// The number of users removed from this guild.
+ ///
Task PruneUsersAsync(int days = 30, bool simulate = false, RequestOptions options = null);
- /// Gets the webhook in this guild with the provided ID, or null if not found.
- /// The webhook ID.
+ ///
+ /// Gets the webhook in this guild with the provided ID, or if not found.
+ ///
+ /// The webhook ID.
Task GetWebhookAsync(ulong id, RequestOptions options = null);
- /// Gets a collection of all webhooks for this guild.
+ ///
+ /// Gets a collection of all webhooks from this guild.
+ ///
Task> GetWebhooksAsync(RequestOptions options = null);
- /// Gets a specific emote from this guild.
- /// The guild emote ID.
+ ///
+ /// Gets a specific emote from this guild.
+ ///
+ /// The guild emote ID.
Task GetEmoteAsync(ulong id, RequestOptions options = null);
- /// Creates a new emote in this guild.
- /// The name of the guild emote.
- /// The image of the new emote.
- /// The roles to limit the emote usage to.
+ ///
+ /// Creates a new emote in this guild.
+ ///
+ /// The name of the guild emote.
+ /// The image of the new emote.
+ /// The roles to limit the emote usage to.
Task CreateEmoteAsync(string name, Image image, Optional> roles = default(Optional>), RequestOptions options = null);
- /// Modifies an existing emote in this guild.
+ ///
+ /// Modifies an existing in this guild.
+ ///
Task ModifyEmoteAsync(GuildEmote emote, Action func, RequestOptions options = null);
- /// Deletes an existing emote from this guild.
- /// The guild emote to delete.
+ ///
+ /// Deletes an existing from this guild.
+ ///
+ /// The guild emote to delete.
Task DeleteEmoteAsync(GuildEmote emote, RequestOptions options = null);
}
}
diff --git a/src/Discord.Net.Core/Entities/Guilds/IVoiceRegion.cs b/src/Discord.Net.Core/Entities/Guilds/IVoiceRegion.cs
index 1a76287d8..98e6c92df 100644
--- a/src/Discord.Net.Core/Entities/Guilds/IVoiceRegion.cs
+++ b/src/Discord.Net.Core/Entities/Guilds/IVoiceRegion.cs
@@ -1,18 +1,33 @@
-namespace Discord
+namespace Discord
{
+ ///
+ /// Represents a region of which the user connects to when using voice.
+ ///
public interface IVoiceRegion
{
- /// Gets the unique identifier for this voice region.
+ ///
+ /// Gets the unique identifier for this voice region.
+ ///
string Id { get; }
- /// Gets the name of this voice region.
+ ///
+ /// Gets the name of this voice region.
+ ///
string Name { get; }
- /// Returns true if this voice region is exclusive to VIP accounts.
+ ///
+ /// Returns if this voice region is exclusive to VIP accounts.
+ ///
bool IsVip { get; }
- /// Returns true if this voice region is the closest to your machine.
+ ///
+ /// Returns if this voice region is the closest to your machine.
+ ///
bool IsOptimal { get; }
- /// Gets an example hostname for this voice region.
+ ///
+ /// Gets an example hostname for this voice region.
+ ///
string SampleHostname { get; }
- /// Gets an example port for this voice region.
+ ///
+ /// Gets an example port for this voice region.
+ ///
int SamplePort { get; }
}
-}
\ No newline at end of file
+}
diff --git a/src/Discord.Net.Core/Entities/Guilds/MfaLevel.cs b/src/Discord.Net.Core/Entities/Guilds/MfaLevel.cs
index 0f590a9cc..57edac2b0 100644
--- a/src/Discord.Net.Core/Entities/Guilds/MfaLevel.cs
+++ b/src/Discord.Net.Core/Entities/Guilds/MfaLevel.cs
@@ -1,11 +1,17 @@
namespace Discord
{
- /// Specifies the guild's Multi-Factor Authentication (MFA) level requirement.
+ ///
+ /// Specifies the guild's Multi-Factor Authentication (MFA) level requirement.
+ ///
public enum MfaLevel
{
- /// Users have no additional MFA restriction on this guild.
+ ///
+ /// Users have no additional MFA restriction on this guild.
+ ///
Disabled = 0,
- /// Users must have MFA enabled on their account to perform administrative actions.
+ ///
+ /// Users must have MFA enabled on their account to perform administrative actions.
+ ///
Enabled = 1
}
}
diff --git a/src/Discord.Net.Core/Entities/Guilds/PermissionTarget.cs b/src/Discord.Net.Core/Entities/Guilds/PermissionTarget.cs
index 448abaf86..3da2fb147 100644
--- a/src/Discord.Net.Core/Entities/Guilds/PermissionTarget.cs
+++ b/src/Discord.Net.Core/Entities/Guilds/PermissionTarget.cs
@@ -1,11 +1,17 @@
namespace Discord
{
- /// Specifies the target of the permission.
+ ///
+ /// Specifies the target of the permission.
+ ///
public enum PermissionTarget
{
- /// The target of the permission is a role.
+ ///
+ /// The target of the permission is a role.
+ ///
Role,
- /// The target of the permission is a user.
+ ///
+ /// The target of the permission is a user.
+ ///
User
}
}
diff --git a/src/Discord.Net.Core/Entities/Guilds/VerificationLevel.cs b/src/Discord.Net.Core/Entities/Guilds/VerificationLevel.cs
index 22e8305c3..3a5ae0468 100644
--- a/src/Discord.Net.Core/Entities/Guilds/VerificationLevel.cs
+++ b/src/Discord.Net.Core/Entities/Guilds/VerificationLevel.cs
@@ -1,17 +1,29 @@
namespace Discord
{
- /// Specifies the verification level the guild uses.
+ ///
+ /// Specifies the verification level the guild uses.
+ ///
public enum VerificationLevel
{
- /// Users have no additional restrictions on sending messages to this guild.
+ ///
+ /// Users have no additional restrictions on sending messages to this guild.
+ ///
None = 0,
- /// Users must have a verified email on their account.
+ ///
+ /// Users must have a verified email on their account.
+ ///
Low = 1,
- /// Users must fulfill the requirements of Low, and be registered on Discord for at least 5 minutes.
+ ///
+ /// Users must fulfill the requirements of Low and be registered on Discord for at least 5 minutes.
+ ///
Medium = 2,
- /// Users must fulfill the requirements of Medium, and be a member of this guild for at least 10 minutes.
+ ///
+ /// Users must fulfill the requirements of Medium and be a member of this guild for at least 10 minutes.
+ ///
High = 3,
- /// Users must fulfill the requirements of High, and must have a verified phone on their Discord account.
+ ///
+ /// Users must fulfill the requirements of High and must have a verified phone on their Discord account.
+ ///
Extreme = 4
}
}
diff --git a/src/Discord.Net.Core/Entities/IDeletable.cs b/src/Discord.Net.Core/Entities/IDeletable.cs
index 0269b19f5..ce019edcf 100644
--- a/src/Discord.Net.Core/Entities/IDeletable.cs
+++ b/src/Discord.Net.Core/Entities/IDeletable.cs
@@ -2,10 +2,14 @@ using System.Threading.Tasks;
namespace Discord
{
- /// Represents whether the object is deletable or not.
+ ///
+ /// Represents whether the object is deletable or not.
+ ///
public interface IDeletable
{
- /// Deletes this object and all its children.
+ ///
+ /// Deletes this object and all its children.
+ ///
Task DeleteAsync(RequestOptions options = null);
}
}
diff --git a/src/Discord.Net.Core/Entities/IEntity.cs b/src/Discord.Net.Core/Entities/IEntity.cs
index 711fd0555..0cd692a41 100644
--- a/src/Discord.Net.Core/Entities/IEntity.cs
+++ b/src/Discord.Net.Core/Entities/IEntity.cs
@@ -8,7 +8,9 @@ namespace Discord
///// Gets the IDiscordClient that created this object.
//IDiscordClient Discord { get; }
- /// Gets the unique identifier for this object.
+ ///
+ /// Gets the unique identifier for this object.
+ ///
TId Id { get; }
}
diff --git a/src/Discord.Net.Core/Entities/IMentionable.cs b/src/Discord.Net.Core/Entities/IMentionable.cs
index 87235fb6e..1fd9400b3 100644
--- a/src/Discord.Net.Core/Entities/IMentionable.cs
+++ b/src/Discord.Net.Core/Entities/IMentionable.cs
@@ -1,9 +1,13 @@
namespace Discord
{
- /// Represents whether the object is mentionable or not.
+ ///
+ /// Represents whether the object is mentionable or not.
+ ///
public interface IMentionable
{
- /// Returns a special string used to mention this object.
+ ///
+ /// Returns a special string used to mention this object.
+ ///
string Mention { get; }
}
}
diff --git a/src/Discord.Net.Core/Entities/ISnowflakeEntity.cs b/src/Discord.Net.Core/Entities/ISnowflakeEntity.cs
index 2287c56f3..f5dd2ab07 100644
--- a/src/Discord.Net.Core/Entities/ISnowflakeEntity.cs
+++ b/src/Discord.Net.Core/Entities/ISnowflakeEntity.cs
@@ -5,6 +5,7 @@ namespace Discord
/// Represents a Discord snowflake entity.
public interface ISnowflakeEntity : IEntity
{
+ /// Gets when the snowflake is created.
DateTimeOffset CreatedAt { get; }
}
}
diff --git a/src/Discord.Net.Core/Entities/IUpdateable.cs b/src/Discord.Net.Core/Entities/IUpdateable.cs
index 303db25c0..b4bbe169a 100644
--- a/src/Discord.Net.Core/Entities/IUpdateable.cs
+++ b/src/Discord.Net.Core/Entities/IUpdateable.cs
@@ -2,10 +2,14 @@ using System.Threading.Tasks;
namespace Discord
{
- /// Represents whether the object is updatable or not.
+ ///
+ /// Represents whether the object is updatable or not.
+ ///
public interface IUpdateable
{
- /// Updates this object's properties with its current state.
+ ///
+ /// Updates this object's properties with its current state.
+ ///
Task UpdateAsync(RequestOptions options = null);
}
}
diff --git a/src/Discord.Net.Core/Entities/Image.cs b/src/Discord.Net.Core/Entities/Image.cs
index c2c997365..cc126c2b8 100644
--- a/src/Discord.Net.Core/Entities/Image.cs
+++ b/src/Discord.Net.Core/Entities/Image.cs
@@ -2,25 +2,29 @@
namespace Discord
{
///
- /// An image that will be uploaded to Discord.
+ /// An image that will be uploaded to Discord.
///
public struct Image
{
public Stream Stream { get; }
///
- /// Create the image with a Stream.
+ /// Create the image with a .
///
- /// This must be some type of stream with the contents of a file in it.
+ ///
+ /// The to create the image with. Note that this must be some type of stream
+ /// with the contents of a file in it.
+ ///
public Image(Stream stream)
{
Stream = stream;
}
#if FILESYSTEM
///
- /// Create the image from a file path.
+ /// Create the image from a file path.
///
///
- /// This file path is NOT validated, and is passed directly into a
+ /// This file is NOT validated, and is passed directly into a
+ ///
///
/// The path to the file.
public Image(string path)
diff --git a/src/Discord.Net.Core/Entities/ImageFormat.cs b/src/Discord.Net.Core/Entities/ImageFormat.cs
index e6f80110d..9c04328f4 100644
--- a/src/Discord.Net.Core/Entities/ImageFormat.cs
+++ b/src/Discord.Net.Core/Entities/ImageFormat.cs
@@ -1,12 +1,29 @@
namespace Discord
{
- /// Specifies the type of format the image should return in.
+ ///
+ /// Specifies the type of format the image should return in.
+ ///
public enum ImageFormat
{
+ ///
+ /// Use automatically detected format.
+ ///
Auto,
+ ///
+ /// Use Google's WebP image format.
+ ///
WebP,
+ ///
+ /// Use PNG.
+ ///
Png,
+ ///
+ /// Use JPEG.
+ ///
Jpeg,
+ ///
+ /// Use GIF.
+ ///
Gif,
}
}
diff --git a/src/Discord.Net.Core/Entities/Invites/IInvite.cs b/src/Discord.Net.Core/Entities/Invites/IInvite.cs
index 73555e453..e8b683292 100644
--- a/src/Discord.Net.Core/Entities/Invites/IInvite.cs
+++ b/src/Discord.Net.Core/Entities/Invites/IInvite.cs
@@ -1,29 +1,47 @@
-using System.Threading.Tasks;
+using System.Threading.Tasks;
namespace Discord
{
public interface IInvite : IEntity, IDeletable
{
- /// Gets the unique identifier for this invite.
+ ///
+ /// Gets the unique identifier for this invite.
+ ///
string Code { get; }
- /// Gets the url used to accept this invite, using Code.
+ ///
+ /// Gets the URL used to accept this invite, using Code.
+ ///
string Url { get; }
- /// Gets the channel this invite is linked to.
+ ///
+ /// Gets the channel this invite is linked to.
+ ///
IChannel Channel { get; }
- /// Gets the id of the channel this invite is linked to.
+ ///
+ /// Gets the ID of the channel this invite is linked to.
+ ///
ulong ChannelId { get; }
- /// Gets the name of the channel this invite is linked to.
+ ///
+ /// Gets the name of the channel this invite is linked to.
+ ///
string ChannelName { get; }
- /// Gets the guild this invite is linked to.
+ ///
+ /// Gets the guild this invite is linked to.
+ ///
IGuild Guild { get; }
- /// Gets the id of the guild this invite is linked to.
+ ///
+ /// Gets the ID of the guild this invite is linked to.
+ ///
ulong GuildId { get; }
- /// Gets the name of the guild this invite is linked to.
+ ///
+ /// Gets the name of the guild this invite is linked to.
+ ///
string GuildName { get; }
- /// Accepts this invite and joins the target guild. This will fail on bot accounts.
+ ///
+ /// Accepts this invite and joins the target guild. This will fail on bot accounts.
+ ///
Task AcceptAsync(RequestOptions options = null);
}
}
diff --git a/src/Discord.Net.Core/Entities/Invites/IInviteMetadata.cs b/src/Discord.Net.Core/Entities/Invites/IInviteMetadata.cs
index 1136e1678..f311e25b7 100644
--- a/src/Discord.Net.Core/Entities/Invites/IInviteMetadata.cs
+++ b/src/Discord.Net.Core/Entities/Invites/IInviteMetadata.cs
@@ -1,22 +1,38 @@
-using System;
+using System;
namespace Discord
{
+ /// Represents additional information regarding the invite object.
public interface IInviteMetadata : IInvite
{
- /// Gets the user that created this invite.
+ ///
+ /// Gets the user that created this invite.
+ ///
IUser Inviter { get; }
- /// Returns true if this invite was revoked.
+ ///
+ /// Returns if this invite was revoked.
+ ///
bool IsRevoked { get; }
- /// Returns true if users accepting this invite will be removed from the guild when they log off.
+ ///
+ /// Returns if users accepting this invite will be removed from the guild when they
+ /// log off.
+ ///
bool IsTemporary { get; }
- /// Gets the time (in seconds) until the invite expires, or null if it never expires.
+ ///
+ /// Gets the time (in seconds) until the invite expires, or if it never expires.
+ ///
int? MaxAge { get; }
- /// Gets the max amount of times this invite may be used, or null if there is no limit.
+ ///
+ /// Gets the max amount of times this invite may be used, or if there is no limit.
+ ///
int? MaxUses { get; }
- /// Gets the amount of times this invite has been used.
+ ///
+ /// Gets the amount of times this invite has been used.
+ ///
int Uses { get; }
- /// Gets when this invite was created.
+ ///
+ /// Gets when this invite was created.
+ ///
DateTimeOffset CreatedAt { get; }
}
-}
\ No newline at end of file
+}
diff --git a/src/Discord.Net.Core/Entities/Messages/ISystemMessage.cs b/src/Discord.Net.Core/Entities/Messages/ISystemMessage.cs
index 2dfaf8f2d..1ef6df3c1 100644
--- a/src/Discord.Net.Core/Entities/Messages/ISystemMessage.cs
+++ b/src/Discord.Net.Core/Entities/Messages/ISystemMessage.cs
@@ -1,5 +1,6 @@
-namespace Discord
+namespace Discord
{
+ /// Represents a message sent by the system.
public interface ISystemMessage : IMessage
{
}
diff --git a/src/Discord.Net.Core/Entities/Messages/IUserMessage.cs b/src/Discord.Net.Core/Entities/Messages/IUserMessage.cs
index 7c7c3d212..652846d8c 100644
--- a/src/Discord.Net.Core/Entities/Messages/IUserMessage.cs
+++ b/src/Discord.Net.Core/Entities/Messages/IUserMessage.cs
@@ -23,7 +23,7 @@ namespace Discord
Task RemoveReactionAsync(IEmote emote, IUser user, RequestOptions options = null);
/// Removes all reactions from this message.
Task RemoveAllReactionsAsync(RequestOptions options = null);
- /// Gets all users that reacted to a message with a given emote
+ /// Gets all users that reacted to a message with a given emote.
Task> GetReactionUsersAsync(IEmote emoji, int limit = 100, ulong? afterUserId = null, RequestOptions options = null);
/// Transforms this message's text into a human-readable form by resolving its tags.
diff --git a/src/Discord.Net.Core/Entities/Permissions/ChannelPermission.cs b/src/Discord.Net.Core/Entities/Permissions/ChannelPermission.cs
index 5f9bacbdd..d683bd36b 100644
--- a/src/Discord.Net.Core/Entities/Permissions/ChannelPermission.cs
+++ b/src/Discord.Net.Core/Entities/Permissions/ChannelPermission.cs
@@ -7,54 +7,97 @@ namespace Discord
public enum ChannelPermission : ulong
{
// General
- /// Allows creation of instant invites.
- CreateInstantInvite = 0x00_00_00_01,
- /// Allows management and editing of channels.
- ManageChannels = 0x00_00_00_10,
+ ///
+ /// Allows creation of instant invites.
+ ///
+ CreateInstantInvite = 0x00_00_00_01,
+ ///
+ /// Allows management and editing of channels.
+ ///
+ ManageChannels = 0x00_00_00_10,
// Text
- /// Allows for the addition of reactions to messages.
- AddReactions = 0x00_00_00_40,
- /// Allows for reading of message.
+ ///
+ /// Allows for the addition of reactions to messages.
+ ///
+ AddReactions = 0x00_00_00_40,
+ ///
+ /// Allows for reading of message.
+ ///
[Obsolete("Use ViewChannel instead.")]
- ReadMessages = ViewChannel,
- /// Allows guild members to view a channel, which includes reading messages in text channels.
- ViewChannel = 0x00_00_04_00,
- /// Allows for sending messages in a channel.
- SendMessages = 0x00_00_08_00,
- /// Allows for sending of text-to-speech messages.
- SendTTSMessages = 0x00_00_10_00,
- /// Allows for deletion of other users messages.
- ManageMessages = 0x00_00_20_00,
- /// Allows links sent by users with this permission will be auto-embedded.
- EmbedLinks = 0x00_00_40_00,
- /// Allows for uploading images and files.
- AttachFiles = 0x00_00_80_00,
- /// Allows for reading of message history.
- ReadMessageHistory = 0x00_01_00_00,
- /// Allows for using the @everyone tag to notify all users in a channel, and the @here tag to notify all online users in a channel.
- MentionEveryone = 0x00_02_00_00,
- /// Allows the usage of custom emojis from other servers.
- UseExternalEmojis = 0x00_04_00_00,
+ ReadMessages = ViewChannel,
+ ///
+ /// Allows guild members to view a channel, which includes reading messages in text channels.
+ ///
+ ViewChannel = 0x00_00_04_00,
+ ///
+ /// Allows for sending messages in a channel.
+ ///
+ SendMessages = 0x00_00_08_00,
+ ///
+ /// Allows for sending of text-to-speech messages.
+ ///
+ SendTTSMessages = 0x00_00_10_00,
+ ///
+ /// Allows for deletion of other users messages.
+ ///
+ ManageMessages = 0x00_00_20_00,
+ ///
+ /// Allows links sent by users with this permission will be auto-embedded.
+ ///
+ EmbedLinks = 0x00_00_40_00,
+ ///
+ /// Allows for uploading images and files.
+ ///
+ AttachFiles = 0x00_00_80_00,
+ ///
+ /// Allows for reading of message history.
+ ///
+ ReadMessageHistory = 0x00_01_00_00,
+ ///
+ /// Allows for using the @everyone tag to notify all users in a channel, and the @here tag to notify all
+ /// online users in a channel.
+ ///
+ MentionEveryone = 0x00_02_00_00,
+ ///
+ /// Allows the usage of custom emojis from other servers.
+ ///
+ UseExternalEmojis = 0x00_04_00_00,
// Voice
- /// Allows for joining of a voice channel.
- Connect = 0x00_10_00_00,
- /// Allows for speaking in a voice channel.
- Speak = 0x00_20_00_00,
- /// Allows for muting members in a voice channel.
- MuteMembers = 0x00_40_00_00,
- /// Allows for deafening of members in a voice channel.
- DeafenMembers = 0x00_80_00_00,
- /// Allows for moving of members between voice channels.
- MoveMembers = 0x01_00_00_00,
- /// Allows for using voice-activity-detection in a voice channel.
- UseVAD = 0x02_00_00_00,
+ ///
+ /// Allows for joining of a voice channel.
+ ///
+ Connect = 0x00_10_00_00,
+ ///
+ /// Allows for speaking in a voice channel.
+ ///
+ Speak = 0x00_20_00_00,
+ ///
+ /// Allows for muting members in a voice channel.
+ ///
+ MuteMembers = 0x00_40_00_00,
+ ///
+ /// Allows for deafening of members in a voice channel.
+ ///
+ DeafenMembers = 0x00_80_00_00,
+ ///
+ /// Allows for moving of members between voice channels.
+ ///
+ MoveMembers = 0x01_00_00_00,
+ ///
+ /// Allows for using voice-activity-detection in a voice channel.
+ ///
+ UseVAD = 0x02_00_00_00,
// More General
- /// Allows management and editing of roles.
- ManageRoles = 0x10_00_00_00,
- /// Allows management and editing of webhooks.
- ManageWebhooks = 0x20_00_00_00,
+ ///
+ /// Allows management and editing of roles.
+ ///
+ ManageRoles = 0x10_00_00_00,
+ ///
+ /// Allows management and editing of webhooks.
+ ///
+ ManageWebhooks = 0x20_00_00_00,
}
}
diff --git a/src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs b/src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs
index f94ff121e..663c7fc6c 100644
--- a/src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs
+++ b/src/Discord.Net.Core/Entities/Permissions/GuildPermission.cs
@@ -3,43 +3,129 @@ using System;
namespace Discord
{
/// Defines the available permissions for a channel.
- [FlagsAttribute]
+ [Flags]
public enum GuildPermission : ulong
{
// General
+ ///
+ /// Allows creation of instant invites.
+ ///
CreateInstantInvite = 0x00_00_00_01,
- KickMembers = 0x00_00_00_02,
- BanMembers = 0x00_00_00_04,
- Administrator = 0x00_00_00_08,
- ManageChannels = 0x00_00_00_10,
- ManageGuild = 0x00_00_00_20,
+ ///
+ /// Allows kicking members.
+ ///
+ KickMembers = 0x00_00_00_02,
+ ///
+ /// Allows banning members.
+ ///
+ BanMembers = 0x00_00_00_04,
+ ///
+ /// Allows all permissions and bypasses channel permission overwrites.
+ ///
+ Administrator = 0x00_00_00_08,
+ ///
+ /// Allows management and editing of channels.
+ ///
+ ManageChannels = 0x00_00_00_10,
+ ///
+ /// Allows management and editing of the guild.
+ ///
+ ManageGuild = 0x00_00_00_20,
// Text
+ ///
+ /// Allows for the addition of reactions to messages.
+ ///
AddReactions = 0x00_00_00_40,
+ ///
+ /// Allows for viewing of audit logs.
+ ///
ViewAuditLog = 0x00_00_00_80,
- ReadMessages = 0x00_00_04_00,
+ ///
+ /// Allows for reading of message.
+ ///
+ ReadMessages = 0x00_00_04_00,
+ ///
+ /// Allows for sending messages in a channel.
+ ///
SendMessages = 0x00_00_08_00,
+ ///
+ /// Allows for sending of text-to-speech messages.
+ ///
SendTTSMessages = 0x00_00_10_00,
- ManageMessages = 0x00_00_20_00,
- EmbedLinks = 0x00_00_40_00,
- AttachFiles = 0x00_00_80_00,
- ReadMessageHistory = 0x00_01_00_00,
- MentionEveryone = 0x00_02_00_00,
- UseExternalEmojis = 0x00_04_00_00,
+ ///
+ /// Allows for deletion of other users messages.
+ ///
+ ManageMessages = 0x00_00_20_00,
+ ///
+ /// Allows links sent by users with this permission will be auto-embedded.
+ ///
+ EmbedLinks = 0x00_00_40_00,
+ ///
+ /// Allows for uploading images and files.
+ ///
+ AttachFiles = 0x00_00_80_00,
+ ///
+ /// Allows for reading of message history.
+ ///
+ ReadMessageHistory = 0x00_01_00_00,
+ ///
+ /// Allows for using the @everyone tag to notify all users in a channel, and the @here tag to notify all
+ /// online users in a channel.
+ ///
+ MentionEveryone = 0x00_02_00_00,
+ ///
+ /// Allows the usage of custom emojis from other servers.
+ ///
+ UseExternalEmojis = 0x00_04_00_00,
+
// Voice
- Connect = 0x00_10_00_00,
- Speak = 0x00_20_00_00,
- MuteMembers = 0x00_40_00_00,
- DeafenMembers = 0x00_80_00_00,
- MoveMembers = 0x01_00_00_00,
- UseVAD = 0x02_00_00_00,
+ ///
+ /// Allows for joining of a voice channel.
+ ///
+ Connect = 0x00_10_00_00,
+ ///
+ /// Allows for speaking in a voice channel.
+ ///
+ Speak = 0x00_20_00_00,
+ ///
+ /// Allows for muting members in a voice channel.
+ ///
+ MuteMembers = 0x00_40_00_00,
+ ///
+ /// Allows for deafening of members in a voice channel.
+ ///
+ DeafenMembers = 0x00_80_00_00,
+ ///
+ /// Allows for moving of members between voice channels.
+ ///
+ MoveMembers = 0x01_00_00_00,
+ ///
+ /// Allows for using voice-activity-detection in a voice channel.
+ ///
+ UseVAD = 0x02_00_00_00,
// General 2
- ChangeNickname = 0x04_00_00_00,
+ ///
+ /// Allows for modification of own nickname.
+ ///
+ ChangeNickname = 0x04_00_00_00,
+ ///
+ /// Allows for modification of other users nicknames.
+ ///
ManageNicknames = 0x08_00_00_00,
+ ///
+ /// Allows management and editing of roles.
+ ///
ManageRoles = 0x10_00_00_00,
+ ///
+ /// Allows management and editing of webhooks.
+ ///
ManageWebhooks = 0x20_00_00_00,
+ ///
+ /// Allows management and editing of emojis.
+ ///
ManageEmojis = 0x40_00_00_00
}
}
diff --git a/src/Discord.Net.Core/Entities/Permissions/Overwrite.cs b/src/Discord.Net.Core/Entities/Permissions/Overwrite.cs
index bda67a870..790e7ea72 100644
--- a/src/Discord.Net.Core/Entities/Permissions/Overwrite.cs
+++ b/src/Discord.Net.Core/Entities/Permissions/Overwrite.cs
@@ -1,15 +1,23 @@
-namespace Discord
+namespace Discord
{
public struct Overwrite
{
- /// Gets the unique identifier for the object this overwrite is targeting.
+ ///
+ /// Gets the unique identifier for the object this overwrite is targeting.
+ ///
public ulong TargetId { get; }
- /// Gets the type of object this overwrite is targeting.
+ ///
+ /// Gets the type of object this overwrite is targeting.
+ ///
public PermissionTarget TargetType { get; }
- /// Gets the permissions associated with this overwrite entry.
+ ///
+ /// Gets the permissions associated with this overwrite entry.
+ ///
public OverwritePermissions Permissions { get; }
- /// Creates a new Overwrite with provided target information and modified permissions.
+ ///
+ /// Creates a new with provided target information and modified permissions.
+ ///
public Overwrite(ulong targetId, PermissionTarget targetType, OverwritePermissions permissions)
{
TargetId = targetId;
diff --git a/src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs b/src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs
index 108b67273..bcc34b98a 100644
--- a/src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs
+++ b/src/Discord.Net.Core/Entities/Permissions/OverwritePermissions.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Diagnostics;
@@ -7,18 +7,28 @@ namespace Discord
[DebuggerDisplay(@"{DebuggerDisplay,nq}")]
public struct OverwritePermissions
{
- /// Gets a blank OverwritePermissions that inherits all permissions.
+ ///
+ /// Gets a blank that inherits all permissions.
+ ///
public static OverwritePermissions InheritAll { get; } = new OverwritePermissions();
- /// Gets a OverwritePermissions that grants all permissions for a given channelType.
+ ///
+ /// Gets a that grants all permissions for the given channel.
+ ///
public static OverwritePermissions AllowAll(IChannel channel)
=> new OverwritePermissions(ChannelPermissions.All(channel).RawValue, 0);
- /// Gets a OverwritePermissions that denies all permissions for a given channelType.
+ ///
+ /// Gets a that denies all permissions for the given channel.
+ ///
public static OverwritePermissions DenyAll(IChannel channel)
=> new OverwritePermissions(0, ChannelPermissions.All(channel).RawValue);
- /// Gets a packed value representing all the allowed permissions in this OverwritePermissions.
+ ///
+ /// Gets a packed value representing all the allowed permissions in this .
+ ///
public ulong AllowValue { get; }
- /// Gets a packed value representing all the denied permissions in this OverwritePermissions.
+ ///
+ /// Gets a packed value representing all the denied permissions in this .
+ ///
public ulong DenyValue { get; }
/// If Allowed, a user may create invites.
@@ -62,7 +72,7 @@ namespace Discord
/// If Allowed, a user may use voice-activity-detection rather than push-to-talk.
public PermValue UseVAD => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.UseVAD);
- /// If Allowed, a user may adjust role permissions. This also implictly grants all other permissions.
+ /// If Allowed, a user may adjust role permissions. This also implicitly grants all other permissions.
public PermValue ManageRoles => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.ManageRoles);
/// If True, a user may edit the webhooks for this channel.
public PermValue ManageWebhooks => Permissions.GetValue(AllowValue, DenyValue, ChannelPermission.ManageWebhooks);
@@ -107,7 +117,9 @@ namespace Discord
DenyValue = denyValue;
}
- /// Creates a new ChannelPermissions with the provided permissions.
+ ///
+ /// Creates a new with the provided permissions.
+ ///
public OverwritePermissions(PermValue createInstantInvite = PermValue.Inherit, PermValue manageChannel = PermValue.Inherit,
PermValue addReactions = PermValue.Inherit,
PermValue readMessages = PermValue.Inherit, PermValue sendMessages = PermValue.Inherit, PermValue sendTTSMessages = PermValue.Inherit, PermValue manageMessages = PermValue.Inherit,
@@ -118,7 +130,10 @@ namespace Discord
embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, speak, muteMembers, deafenMembers,
moveMembers, useVoiceActivation, manageRoles, manageWebhooks) { }
- /// Creates a new OverwritePermissions from this one, changing the provided non-null permissions.
+ ///
+ /// Creates a new from this one, changing the provided non-null
+ /// permissions.
+ ///
public OverwritePermissions Modify(PermValue? createInstantInvite = null, PermValue? manageChannel = null,
PermValue? addReactions = null,
PermValue? readMessages = null, PermValue? sendMessages = null, PermValue? sendTTSMessages = null, PermValue? manageMessages = null,
diff --git a/src/Discord.Net.Core/Entities/Roles/Color.cs b/src/Discord.Net.Core/Entities/Roles/Color.cs
index aace303b5..014949bde 100644
--- a/src/Discord.Net.Core/Entities/Roles/Color.cs
+++ b/src/Discord.Net.Core/Entities/Roles/Color.cs
@@ -3,7 +3,9 @@ using System.Diagnostics;
namespace Discord
{
- /// A color object that Discord uses.
+ ///
+ /// A color object that Discord uses.
+ ///
[DebuggerDisplay(@"{DebuggerDisplay,nq}")]
public struct Color
{
diff --git a/src/Discord.Net.Core/Entities/Roles/IRole.cs b/src/Discord.Net.Core/Entities/Roles/IRole.cs
index c40e0d716..9aa509cd4 100644
--- a/src/Discord.Net.Core/Entities/Roles/IRole.cs
+++ b/src/Discord.Net.Core/Entities/Roles/IRole.cs
@@ -1,29 +1,50 @@
-using System;
+using System;
using System.Threading.Tasks;
namespace Discord
{
+ ///
+ /// Represents a generic role object.
+ ///
public interface IRole : ISnowflakeEntity, IDeletable, IMentionable, IComparable
{
- /// Gets the guild owning this role.
+ ///
+ /// Gets the guild owning this role.
+ ///
IGuild Guild { get; }
- /// Gets the color given to users of this role.
+ ///
+ /// Gets the color given to users of this role.
+ ///
Color Color { get; }
- /// Returns true if users of this role are separated in the user list.
+ ///
+ /// Returns if users of this role are separated in the user list.
+ ///
bool IsHoisted { get; }
- /// Returns true if this role is automatically managed by Discord.
+ ///
+ /// Returns if this role is automatically managed by Discord.
+ ///
bool IsManaged { get; }
- /// Returns true if this role may be mentioned in messages.
+ ///
+ /// Returns if this role may be mentioned in messages.
+ ///
bool IsMentionable { get; }
- /// Gets the name of this role.
+ ///
+ /// Gets the name of this role.
+ ///
string Name { get; }
- /// Gets the permissions granted to members of this role.
+ ///
+ /// Gets the permissions granted to members of this role.
+ ///
GuildPermissions Permissions { get; }
- /// Gets this role's position relative to other roles in the same guild.
+ ///
+ /// Gets this role's position relative to other roles in the same guild.
+ ///
int Position { get; }
- ///// Modifies this role.
+ ///
+ /// Modifies this role.
+ ///
Task ModifyAsync(Action func, RequestOptions options = null);
}
}
diff --git a/src/Discord.Net.Core/Entities/Roles/ReorderRoleProperties.cs b/src/Discord.Net.Core/Entities/Roles/ReorderRoleProperties.cs
index 852651beb..5359d8e9e 100644
--- a/src/Discord.Net.Core/Entities/Roles/ReorderRoleProperties.cs
+++ b/src/Discord.Net.Core/Entities/Roles/ReorderRoleProperties.cs
@@ -1,11 +1,17 @@
namespace Discord
{
- /// Properties that are used to reorder an .
+ ///
+ /// Properties that are used to reorder an .
+ ///
public class ReorderRoleProperties
{
- /// Gets the ID of the role to be edited.
+ ///
+ /// Gets the ID of the role to be edited.
+ ///
public ulong Id { get; }
- /// Gets the new zero-based position of the role.
+ ///
+ /// Gets the new zero-based position of the role.
+ ///
public int Position { get; }
public ReorderRoleProperties(ulong id, int pos)
diff --git a/src/Discord.Net.Core/Entities/Roles/RoleProperties.cs b/src/Discord.Net.Core/Entities/Roles/RoleProperties.cs
index 82d57ffa9..7769a2a04 100644
--- a/src/Discord.Net.Core/Entities/Roles/RoleProperties.cs
+++ b/src/Discord.Net.Core/Entities/Roles/RoleProperties.cs
@@ -1,57 +1,57 @@
namespace Discord
{
///
- /// Properties that are used to modify an with the specified changes.
+ /// Properties that are used to modify an with the specified changes.
///
///
- ///
- /// await role.ModifyAsync(x =>
- /// {
- /// x.Color = new Color(180, 15, 40);
- /// x.Hoist = true;
- /// });
+ ///
+ /// await role.ModifyAsync(x =>
+ /// {
+ /// x.Color = new Color(180, 15, 40);
+ /// x.Hoist = true;
+ /// });
///
///
- ///
+ ///
public class RoleProperties
{
///
- /// Gets or sets the name of the role.
+ /// Gets or sets the name of the role.
///
///
- /// If this role is the EveryoneRole, this value may not be set.
+ /// If this role is the EveryoneRole, this value may not be set.
///
public Optional Name { get; set; }
///
- /// Gets or sets the role's .
+ /// Gets or sets the role's .
///
public Optional Permissions { get; set; }
///
- /// Gets or sets the position of the role. This is 0-based!
+ /// Gets or sets the position of the role. This is 0-based!
///
///
- /// If this role is the EveryoneRole, this value may not be set.
+ /// If this role is the EveryoneRole, this value may not be set.
///
public Optional Position { get; set; }
///
- /// Gets or sets the color of the Role.
+ /// Gets or sets the color of the role.
///
///
- /// If this role is the EveryoneRole, this value may not be set.
+ /// If this role is the EveryoneRole, this value may not be set.
///
public Optional Color { get; set; }
///
- /// Gets or sets whether or not this role should be displayed independently in the userlist.
+ /// Gets or sets whether or not this role should be displayed independently in the user list.
///
///
- /// If this role is the EveryoneRole, this value may not be set.
+ /// If this role is the EveryoneRole, this value may not be set.
///
public Optional Hoist { get; set; }
///
- /// Gets or sets whether or not this role can be mentioned.
+ /// Gets or sets whether or not this role can be mentioned.
///
///
- /// If this role is the EveryoneRole, this value may not be set.
+ /// If this role is the EveryoneRole, this value may not be set.
///
public Optional Mentionable { get; set; }
}
diff --git a/src/Discord.Net.Core/Entities/Users/GuildUserProperties.cs b/src/Discord.Net.Core/Entities/Users/GuildUserProperties.cs
index 32d892e96..c9722d515 100644
--- a/src/Discord.Net.Core/Entities/Users/GuildUserProperties.cs
+++ b/src/Discord.Net.Core/Entities/Users/GuildUserProperties.cs
@@ -3,68 +3,81 @@ using System.Collections.Generic;
namespace Discord
{
///
- /// Properties that are used to modify an with the following parameters.
+ /// Properties that are used to modify an with the following parameters.
///
///
- ///
- /// await (Context.User as IGuildUser)?.ModifyAsync(x =>
+ ///
+ /// await (Context.User as IGuildUser)?.ModifyAsync(x =>
/// {
/// x.Nickname = $"festive {Context.User.Username}";
/// });
///
///
- ///
+ ///
public class GuildUserProperties
{
///
- /// Should the user be guild-muted in a voice channel?
+ /// Sets whether the user should be muted in a voice channel.
///
///
- /// If this value is set to true, no user will be able to hear this user speak in the guild.
+ /// If this value is set to , no user will be able to hear this user speak in the guild.
///
public Optional Mute { get; set; }
///
- /// Should the user be guild-deafened in a voice channel?
+ /// Sets whether the user should be deafened in a voice channel.
///
///
- /// If this value is set to true, this user will not be able to hear anyone speak in the guild.
+ /// If this value is set to , this user will not be able to hear anyone speak in the guild.
///
public Optional Deaf { get; set; }
///
- /// Should the user have a nickname set?
+ /// Sets the user's nickname.
///
///
- /// To clear the user's nickname, this value can be set to or .
+ /// To clear the user's nickname, this value can be set to or
+ /// .
///
public Optional Nickname { get; set; }
///
- /// What roles should the user have?
+ /// Sets the roles the user should have.
///
///
- /// To add a role to a user:
- /// To remove a role from a user:
+ ///
+ /// To add a role to a user:
+ ///
+ ///
+ ///
+ /// To remove a role from a user:
+ ///
+ ///
///
public Optional> Roles { get; set; }
///
- /// What roles should the user have?
+ /// Sets the roles the user should have.
///
///
- /// To add a role to a user:
- /// To remove a role from a user:
+ ///
+ /// To add a role to a user:
+ ///
+ ///
+ ///
+ /// To remove a role from a user:
+ ///
+ ///
///
public Optional> RoleIds { get; set; }
///
- /// Moves a user to a voice channel.
+ /// Moves a user to a voice channel.
///
///
- /// This user MUST already be in a Voice Channel for this to work.
+ /// This user MUST already be in a for this to work.
///
public Optional Channel { get; set; }
///
- /// Moves a user to a voice channel.
+ /// Moves a user to a voice channel.
///
///
- /// This user MUST already be in a Voice Channel for this to work.
+ /// This user MUST already be in a for this to work.
///
public Optional ChannelId { get; set; }
}
diff --git a/src/Discord.Net.Core/Entities/Users/IGroupUser.cs b/src/Discord.Net.Core/Entities/Users/IGroupUser.cs
index f3d44b583..ecf01f721 100644
--- a/src/Discord.Net.Core/Entities/Users/IGroupUser.cs
+++ b/src/Discord.Net.Core/Entities/Users/IGroupUser.cs
@@ -1,6 +1,8 @@
namespace Discord
{
- /// Represents a Discord user that is in a group.
+ ///
+ /// Represents a Discord user that is in a group.
+ ///
public interface IGroupUser : IUser, IVoiceState
{
///// Kicks this user from this group.
diff --git a/src/Discord.Net.Core/Entities/Users/IGuildUser.cs b/src/Discord.Net.Core/Entities/Users/IGuildUser.cs
index c6c9fabd5..57093b3fd 100644
--- a/src/Discord.Net.Core/Entities/Users/IGuildUser.cs
+++ b/src/Discord.Net.Core/Entities/Users/IGuildUser.cs
@@ -4,44 +4,73 @@ using System.Threading.Tasks;
namespace Discord
{
- /// Represents a Discord user that is in a guild.
+ ///
+ /// Represents a Discord user that is in a guild.
+ ///
public interface IGuildUser : IUser, IVoiceState
{
- /// Gets when this user joined this guild.
+ ///
+ /// Gets when this user joined this guild.
+ ///
DateTimeOffset? JoinedAt { get; }
- /// Gets the nickname for this user.
+ ///
+ /// Gets the nickname for this user.
+ ///
string Nickname { get; }
- /// Gets the guild-level permissions for this user.
+ ///
+ /// Gets the guild-level permissions for this user.
+ ///
GuildPermissions GuildPermissions { get; }
- /// Gets the guild for this user.
+ ///
+ /// Gets the guild for this user.
+ ///
IGuild Guild { get; }
- /// Gets the id of the guild for this user.
+ ///
+ /// Gets the ID of the guild for this user.
+ ///
ulong GuildId { get; }
- /// Returns a collection of the ids of the roles this user is a member of in this guild, including the guild's @everyone role.
+ ///
+ /// Returns a collection of the ids of the roles this user is a member of in this guild, including the
+ /// guild's @everyone role.
+ ///
IReadOnlyCollection RoleIds { get; }
- /// Gets the level permissions granted to this user to a given channel.
- /// The channel to get the permission from.
+ ///
+ /// Gets the level permissions granted to this user to a given channel.
+ ///
+ /// The channel to get the permission from.
ChannelPermissions GetPermissions(IGuildChannel channel);
- /// Kicks this user from this guild.
- /// The reason for the kick which will be recorded in the audit log.
+ ///
+ /// Kicks this user from this guild.
+ ///
+ /// The reason for the kick which will be recorded in the audit log.
Task KickAsync(string reason = null, RequestOptions options = null);
- /// Modifies this user's properties in this guild.
+ ///
+ /// Modifies this user's properties in this guild.
+ ///
Task ModifyAsync(Action func, RequestOptions options = null);
- /// Adds a role to this user in this guild.
- /// The role to be added to the user.
+ ///
+ /// Adds a to this user in this guild.
+ ///
+ /// The role to be added to the user.
Task AddRoleAsync(IRole role, RequestOptions options = null);
- /// Adds roles to this user in this guild.
- /// The roles to be added to the user.
+ ///
+ /// Adds to this user in this guild.
+ ///
+ /// The roles to be added to the user.
Task AddRolesAsync(IEnumerable roles, RequestOptions options = null);
- /// Removes a role from this user in this guild.
- /// The role to be removed from the user.
+ ///
+ /// Removes a from this user in this guild.
+ ///
+ /// The role to be removed from the user.
Task RemoveRoleAsync(IRole role, RequestOptions options = null);
- /// Removes roles from this user in this guild.
- /// The roles to be removed from the user.
+ ///
+ /// Removes from this user in this guild.
+ ///
+ /// The roles to be removed from the user.
Task RemoveRolesAsync(IEnumerable roles, RequestOptions options = null);
}
}
diff --git a/src/Discord.Net.Core/Entities/Users/IPresence.cs b/src/Discord.Net.Core/Entities/Users/IPresence.cs
index 9d3a5ecb9..d40d47251 100644
--- a/src/Discord.Net.Core/Entities/Users/IPresence.cs
+++ b/src/Discord.Net.Core/Entities/Users/IPresence.cs
@@ -1,11 +1,17 @@
namespace Discord
{
- /// Represents a Discord user's presence status.
+ ///
+ /// Represents a Discord user's presence status.
+ ///
public interface IPresence
{
- /// Gets the activity this user is currently doing.
+ ///
+ /// Gets the activity this user is currently doing.
+ ///
IActivity Activity { get; }
- /// Gets the current status of this user.
+ ///
+ /// Gets the current status of this user.
+ ///
UserStatus Status { get; }
}
}
diff --git a/src/Discord.Net.Core/Entities/Users/ISelfUser.cs b/src/Discord.Net.Core/Entities/Users/ISelfUser.cs
index a1078dd35..4a97c86ef 100644
--- a/src/Discord.Net.Core/Entities/Users/ISelfUser.cs
+++ b/src/Discord.Net.Core/Entities/Users/ISelfUser.cs
@@ -3,16 +3,27 @@ using System.Threading.Tasks;
namespace Discord
{
- /// Represents a logged-in Discord user.
+ ///
+ /// Represents the logged-in Discord user.
+ ///
public interface ISelfUser : IUser
{
- /// Gets the email associated with this user.
+ ///
+ /// Gets the email associated with this user.
+ ///
string Email { get; }
- /// Returns true if this user's email has been verified.
+ ///
+ /// Returns if this user's email has been verified.
+ ///
bool IsVerified { get; }
- /// Returns true if this user has enabled MFA on their account.
+ ///
+ /// Returns if this user has enabled MFA on their account.
+ ///
bool IsMfaEnabled { get; }
+ ///
+ /// Modifies the user's properties.
+ ///
Task ModifyAsync(Action func, RequestOptions options = null);
}
}
diff --git a/src/Discord.Net.Core/Entities/Users/IUser.cs b/src/Discord.Net.Core/Entities/Users/IUser.cs
index deb22746a..9b62be362 100644
--- a/src/Discord.Net.Core/Entities/Users/IUser.cs
+++ b/src/Discord.Net.Core/Entities/Users/IUser.cs
@@ -2,27 +2,48 @@ using System.Threading.Tasks;
namespace Discord
{
- /// Represents a Discord user.
+ ///
+ /// Represents a Discord user.
+ ///
public interface IUser : ISnowflakeEntity, IMentionable, IPresence
{
- /// Gets the id of this user's avatar.
+ ///
+ /// Gets the ID of this user's avatar.
+ ///
string AvatarId { get; }
- /// Gets the url to this user's avatar.
+ ///
+ /// Gets the URL to this user's avatar.
+ ///
string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128);
- /// Gets the url to this user's default avatar.
+ ///
+ /// Gets the URL to this user's default avatar.
+ ///
string GetDefaultAvatarUrl();
- /// Gets the per-username unique id for this user.
+ ///
+ /// Gets the per-username unique ID for this user.
+ ///
string Discriminator { get; }
- /// Gets the per-username unique id for this user.
+ ///
+ /// Gets the per-username unique ID for this user.
+ ///
ushort DiscriminatorValue { get; }
- /// Returns true if this user is a bot user.
+ ///
+ /// Returns if this user is a bot user.
+ ///
bool IsBot { get; }
- /// Returns true if this user is a webhook user.
+ ///
+ /// Returns if this user is a webhook user.
+ ///
bool IsWebhook { get; }
- /// Gets the username for this user.
+ ///
+ /// Gets the username for this user.
+ ///
string Username { get; }
- /// Returns a private message channel to this user, creating one if it does not already exist.
+ ///
+ /// Returns a private message channel to this user, creating one if it does not already
+ /// exist.
+ ///
Task GetOrCreateDMChannelAsync(RequestOptions options = null);
}
}
diff --git a/src/Discord.Net.Core/Entities/Users/IVoiceState.cs b/src/Discord.Net.Core/Entities/Users/IVoiceState.cs
index fc7855975..ee1f74bae 100644
--- a/src/Discord.Net.Core/Entities/Users/IVoiceState.cs
+++ b/src/Discord.Net.Core/Entities/Users/IVoiceState.cs
@@ -1,20 +1,37 @@
namespace Discord
{
+ ///
+ /// Represents a user's voice connection status.
+ ///
public interface IVoiceState
{
- /// Returns if the guild has deafened this user.
+ ///
+ /// Returns if the guild has deafened this user.
+ ///
bool IsDeafened { get; }
- /// Returns if the guild has muted this user.
+ ///
+ /// Returns if the guild has muted this user.
+ ///
bool IsMuted { get; }
- /// Returns if this user has marked themselves as deafened.
+ ///
+ /// Returns if this user has marked themselves as deafened.
+ ///
bool IsSelfDeafened { get; }
- /// Returns if this user has marked themselves as muted.
+ ///
+ /// Returns if this user has marked themselves as muted.
+ ///
bool IsSelfMuted { get; }
- /// Returns if the guild is temporarily blocking audio to/from this user.
+ ///
+ /// Returns if the guild is temporarily blocking audio to/from this user.
+ ///
bool IsSuppressed { get; }
- /// Gets the voice channel this user is currently in, if any.
+ ///
+ /// Gets the voice channel this user is currently in, if any.
+ ///
IVoiceChannel VoiceChannel { get; }
- /// Gets the unique identifier for this user's voice session.
+ ///
+ /// Gets the unique identifier for this user's voice session.
+ ///
string VoiceSessionId { get; }
}
}
diff --git a/src/Discord.Net.Core/Entities/Users/IWebhookUser.cs b/src/Discord.Net.Core/Entities/Users/IWebhookUser.cs
index a29debf0f..7a10c6b6b 100644
--- a/src/Discord.Net.Core/Entities/Users/IWebhookUser.cs
+++ b/src/Discord.Net.Core/Entities/Users/IWebhookUser.cs
@@ -3,6 +3,7 @@ namespace Discord
/// Represents a Webhook Discord user.
public interface IWebhookUser : IGuildUser
{
+ /// Gets the ID of a webhook.
ulong WebhookId { get; }
}
}
diff --git a/src/Discord.Net.Core/Entities/Users/SelfUserProperties.cs b/src/Discord.Net.Core/Entities/Users/SelfUserProperties.cs
index 9245a3616..0e6a854f6 100644
--- a/src/Discord.Net.Core/Entities/Users/SelfUserProperties.cs
+++ b/src/Discord.Net.Core/Entities/Users/SelfUserProperties.cs
@@ -1,25 +1,25 @@
namespace Discord
{
///
- /// Properties that are used to modify the with the specified changes.
+ /// Properties that are used to modify the with the specified changes.
///
///
- ///
- /// await Context.Client.CurrentUser.ModifyAsync(x =>
- /// {
- /// x.Avatar = new Image(File.OpenRead("avatar.jpg"));
- /// });
- ///
+ ///
+ /// await Context.Client.CurrentUser.ModifyAsync(x =>
+ /// {
+ /// x.Avatar = new Image(File.OpenRead("avatar.jpg"));
+ /// });
+ ///
///
- ///
+ ///
public class SelfUserProperties
{
///
- /// Your username
+ /// Sets the username.
///
public Optional Username { get; set; }
///
- /// Your avatar
+ /// Sets the avatar.
///
public Optional Avatar { get; set; }
}
diff --git a/src/Discord.Net.Core/Entities/Users/UserStatus.cs b/src/Discord.Net.Core/Entities/Users/UserStatus.cs
index f999bf068..09033261e 100644
--- a/src/Discord.Net.Core/Entities/Users/UserStatus.cs
+++ b/src/Discord.Net.Core/Entities/Users/UserStatus.cs
@@ -1,19 +1,33 @@
namespace Discord
{
- /// Defines the available Discord user status.
+ ///
+ /// Defines the available Discord user status.
+ ///
public enum UserStatus
{
- /// The user is offline.
+ ///
+ /// The user is offline.
+ ///
Offline,
- /// The user is online.
+ ///
+ /// The user is online.
+ ///
Online,
- /// The user is idle.
+ ///
+ /// The user is idle.
+ ///
Idle,
- /// The user is AFK.
+ ///
+ /// The user is AFK.
+ ///
AFK,
- /// The user is busy.
+ ///
+ /// The user is busy.
+ ///
DoNotDisturb,
- /// The user is invisible.
+ ///
+ /// The user is invisible.
+ ///
Invisible,
}
}
diff --git a/src/Discord.Net.Core/Entities/Webhooks/IWebhook.cs b/src/Discord.Net.Core/Entities/Webhooks/IWebhook.cs
index ef56f72b9..b2d017316 100644
--- a/src/Discord.Net.Core/Entities/Webhooks/IWebhook.cs
+++ b/src/Discord.Net.Core/Entities/Webhooks/IWebhook.cs
@@ -3,32 +3,55 @@ using System.Threading.Tasks;
namespace Discord
{
+ ///
+ /// Represents a webhook object on Discord.
+ ///
public interface IWebhook : IDeletable, ISnowflakeEntity
{
- /// Gets the token of this webhook.
+ ///
+ /// Gets the token of this webhook.
+ ///
string Token { get; }
- /// Gets the default name of this webhook.
+ ///
+ /// Gets the default name of this webhook.
+ ///
string Name { get; }
- /// Gets the id of this webhook's default avatar.
+ ///
+ /// Gets the ID of this webhook's default avatar.
+ ///
string AvatarId { get; }
- /// Gets the url to this webhook's default avatar.
+ ///
+ /// Gets the URL to this webhook's default avatar.
+ ///
string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128);
- /// Gets the channel for this webhook.
+ ///
+ /// Gets the channel for this webhook.
+ ///
ITextChannel Channel { get; }
- /// Gets the id of the channel for this webhook.
+ ///
+ /// Gets the ID of the channel for this webhook.
+ ///
ulong ChannelId { get; }
- /// Gets the guild owning this webhook.
+ ///
+ /// Gets the guild owning this webhook.
+ ///
IGuild Guild { get; }
- /// Gets the id of the guild owning this webhook.
+ ///
+ /// Gets the ID of the guild owning this webhook.
+ ///
ulong? GuildId { get; }
- /// Gets the user that created this webhook.
+ ///
+ /// Gets the user that created this webhook.
+ ///
IUser Creator { get; }
- /// Modifies this webhook.
+ ///
+ /// Modifies this webhook.
+ ///
Task ModifyAsync(Action func, RequestOptions options = null);
}
}
diff --git a/src/Discord.Net.Core/Entities/Webhooks/WebhookProperties.cs b/src/Discord.Net.Core/Entities/Webhooks/WebhookProperties.cs
index 8edec02cd..52adbe99a 100644
--- a/src/Discord.Net.Core/Entities/Webhooks/WebhookProperties.cs
+++ b/src/Discord.Net.Core/Entities/Webhooks/WebhookProperties.cs
@@ -1,40 +1,40 @@
namespace Discord
{
///
- /// Properties used to modify an with the specified changes.
+ /// Properties used to modify an with the specified changes.
///
///
- ///
- /// await webhook.ModifyAsync(x =>
+ ///
+ /// await webhook.ModifyAsync(x =>
/// {
/// x.Name = "Bob";
/// x.Avatar = new Image("avatar.jpg");
/// });
///
///
- ///
+ ///
public class WebhookProperties
{
///
- /// Gets or sets the default name of the webhook.
+ /// Gets or sets the default name of the webhook.
///
public Optional Name { get; set; }
///
- /// Gets or sets the default avatar of the webhook.
+ /// Gets or sets the default avatar of the webhook.
///
public Optional Image { get; set; }
///
- /// Gets or sets the channel for this webhook.
+ /// Gets or sets the channel for this webhook.
///
///
- /// This field is not used when authenticated with .
+ /// This field is not used when authenticated with .
///
public Optional Channel { get; set; }
///
- /// Gets or sets the channel ID for this webhook.
+ /// Gets or sets the channel ID for this webhook.
///
///
- /// This field is not used when authenticated with .
+ /// This field is not used when authenticated with .
///
public Optional ChannelId { get; set; }
}
diff --git a/src/Discord.Net.Core/Net/HttpException.cs b/src/Discord.Net.Core/Net/HttpException.cs
index d0ee65b23..3fabe0fa8 100644
--- a/src/Discord.Net.Core/Net/HttpException.cs
+++ b/src/Discord.Net.Core/Net/HttpException.cs
@@ -3,13 +3,31 @@ using System.Net;
namespace Discord.Net
{
+ ///
+ /// Describes an exception that occurred during the processing of Discord HTTP requests.
+ ///
public class HttpException : Exception
{
+ ///
+ /// Gets the HTTP status code returned by Discord.
+ ///
public HttpStatusCode HttpCode { get; }
+ ///
+ /// Gets the JSON error code returned by Discord, or if none.
+ ///
public int? DiscordCode { get; }
+ ///
+ /// Gets the reason of the exception.
+ ///
public string Reason { get; }
+ ///
+ /// Gets the request object used to send the request.
+ ///
public IRequest Request { get; }
+ ///
+ /// Initializes a new instance of the class.
+ ///
public HttpException(HttpStatusCode httpCode, IRequest request, int? discordCode = null, string reason = null)
: base(CreateMessage(httpCode, discordCode, reason))
{
diff --git a/src/Discord.Net.Core/Net/RateLimitedException.cs b/src/Discord.Net.Core/Net/RateLimitedException.cs
index 2d34d7bc2..969c0eafc 100644
--- a/src/Discord.Net.Core/Net/RateLimitedException.cs
+++ b/src/Discord.Net.Core/Net/RateLimitedException.cs
@@ -2,10 +2,20 @@ using System;
namespace Discord.Net
{
+ ///
+ /// An exception that indicates the user is being rate limited by Discord.
+ ///
public class RateLimitedException : TimeoutException
{
+ ///
+ /// Gets the request object used to send the request.
+ ///
public IRequest Request { get; }
+ ///
+ /// Initializes a new instance of the class using the
+ /// sent.
+ ///
public RateLimitedException(IRequest request)
: base("You are being rate limited.")
{
diff --git a/src/Discord.Net.Core/Net/WebSocketClosedException.cs b/src/Discord.Net.Core/Net/WebSocketClosedException.cs
index d647b6c8c..2936c01a9 100644
--- a/src/Discord.Net.Core/Net/WebSocketClosedException.cs
+++ b/src/Discord.Net.Core/Net/WebSocketClosedException.cs
@@ -1,11 +1,24 @@
-using System;
+using System;
namespace Discord.Net
{
+ ///
+ /// Describes an exception that causes the WebSocket to close during a session.
+ ///
public class WebSocketClosedException : Exception
{
+ ///
+ /// Gets the close code sent by Discord.
+ ///
public int CloseCode { get; }
+ ///
+ /// Gets the reason of the interruption.
+ ///
public string Reason { get; }
+ ///
+ /// Initializes a new instance of the using the Discord close code
+ /// and the optional reason.
+ ///
public WebSocketClosedException(int closeCode, string reason = null)
: base($"The server sent close {closeCode}{(reason != null ? $": \"{reason}\"" : "")}")
{
diff --git a/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs b/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs
index 5070d1b6e..bee4892fe 100644
--- a/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs
+++ b/src/Discord.Net.Rest/Entities/Users/RestWebhookUser.cs
@@ -55,36 +55,28 @@ namespace Discord.Rest
///
ChannelPermissions IGuildUser.GetPermissions(IGuildChannel channel) => Permissions.ToChannelPerms(channel, GuildPermissions.Webhook.RawValue);
///
- Task IGuildUser.KickAsync(string reason, RequestOptions options)
- {
+ Task IGuildUser.KickAsync(string reason, RequestOptions options) =>
throw new NotSupportedException("Webhook users cannot be kicked.");
- }
+
///
- Task IGuildUser.ModifyAsync(Action func, RequestOptions options)
- {
+ Task IGuildUser.ModifyAsync(Action func, RequestOptions options) =>
throw new NotSupportedException("Webhook users cannot be modified.");
- }
///
- Task IGuildUser.AddRoleAsync(IRole role, RequestOptions options)
- {
+ Task IGuildUser.AddRoleAsync(IRole role, RequestOptions options) =>
throw new NotSupportedException("Roles are not supported on webhook users.");
- }
+
///
- Task IGuildUser.AddRolesAsync(IEnumerable roles, RequestOptions options)
- {
+ Task IGuildUser.AddRolesAsync(IEnumerable roles, RequestOptions options) =>
throw new NotSupportedException("Roles are not supported on webhook users.");
- }
+
///
- Task IGuildUser.RemoveRoleAsync(IRole role, RequestOptions options)
- {
+ Task IGuildUser.RemoveRoleAsync(IRole role, RequestOptions options) =>
throw new NotSupportedException("Roles are not supported on webhook users.");
- }
+
///
- Task IGuildUser.RemoveRolesAsync(IEnumerable roles, RequestOptions options)
- {
+ Task IGuildUser.RemoveRolesAsync(IEnumerable roles, RequestOptions options) =>
throw new NotSupportedException("Roles are not supported on webhook users.");
- }
//IVoiceState
///
diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs
index 78a29639b..d4ddb4fa8 100644
--- a/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs
+++ b/src/Discord.Net.WebSocket/Entities/Users/SocketWebhookUser.cs
@@ -10,18 +10,26 @@ namespace Discord.WebSocket
[DebuggerDisplay(@"{DebuggerDisplay,nq}")]
public class SocketWebhookUser : SocketUser, IWebhookUser
{
+ /// Gets the guild of this webhook.
public SocketGuild Guild { get; }
+ ///
public ulong WebhookId { get; }
+ ///
public override string Username { get; internal set; }
+ ///
public override ushort DiscriminatorValue { get; internal set; }
+ ///
public override string AvatarId { get; internal set; }
+ ///
public override bool IsBot { get; internal set; }
+ ///
public override bool IsWebhook => true;
internal override SocketPresence Presence { get { return new SocketPresence(UserStatus.Offline, null); } set { } }
- internal override SocketGlobalUser GlobalUser { get { throw new NotSupportedException(); } }
+ internal override SocketGlobalUser GlobalUser =>
+ throw new NotSupportedException();
internal SocketWebhookUser(SocketGuild guild, ulong id, ulong webhookId)
: base(guild.Discord, id)
@@ -39,47 +47,59 @@ namespace Discord.WebSocket
//IGuildUser
+ ///
IGuild IGuildUser.Guild => Guild;
+ ///
ulong IGuildUser.GuildId => Guild.Id;
+ ///
IReadOnlyCollection IGuildUser.RoleIds => ImmutableArray.Create();
+ ///
DateTimeOffset? IGuildUser.JoinedAt => null;
+ ///
string IGuildUser.Nickname => null;
+ ///
GuildPermissions IGuildUser.GuildPermissions => GuildPermissions.Webhook;
+ ///
ChannelPermissions IGuildUser.GetPermissions(IGuildChannel channel) => Permissions.ToChannelPerms(channel, GuildPermissions.Webhook.RawValue);
- Task IGuildUser.KickAsync(string reason, RequestOptions options)
- {
+ ///
+ Task IGuildUser.KickAsync(string reason, RequestOptions options) =>
throw new NotSupportedException("Webhook users cannot be kicked.");
- }
- Task IGuildUser.ModifyAsync(Action func, RequestOptions options)
- {
+
+ ///
+ Task IGuildUser.ModifyAsync(Action func, RequestOptions options) =>
throw new NotSupportedException("Webhook users cannot be modified.");
- }
- Task IGuildUser.AddRoleAsync(IRole role, RequestOptions options)
- {
+ ///
+ Task IGuildUser.AddRoleAsync(IRole role, RequestOptions options) =>
throw new NotSupportedException("Roles are not supported on webhook users.");
- }
- Task IGuildUser.AddRolesAsync(IEnumerable roles, RequestOptions options)
- {
+
+ ///
+ Task IGuildUser.AddRolesAsync(IEnumerable roles, RequestOptions options) =>
throw new NotSupportedException("Roles are not supported on webhook users.");
- }
- Task IGuildUser.RemoveRoleAsync(IRole role, RequestOptions options)
- {
+
+ ///
+ Task IGuildUser.RemoveRoleAsync(IRole role, RequestOptions options) =>
throw new NotSupportedException("Roles are not supported on webhook users.");
- }
- Task IGuildUser.RemoveRolesAsync(IEnumerable roles, RequestOptions options)
- {
+
+ ///
+ Task IGuildUser.RemoveRolesAsync(IEnumerable roles, RequestOptions options) =>
throw new NotSupportedException("Roles are not supported on webhook users.");
- }
//IVoiceState
+ ///
bool IVoiceState.IsDeafened => false;
+ ///
bool IVoiceState.IsMuted => false;
+ ///
bool IVoiceState.IsSelfDeafened => false;
+ ///
bool IVoiceState.IsSelfMuted => false;
+ ///
bool IVoiceState.IsSuppressed => false;
+ ///
IVoiceChannel IVoiceState.VoiceChannel => null;
+ ///
string IVoiceState.VoiceSessionId => null;
}
}