You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
2.4 KiB

using Discord.WebSocket;
namespace Discord.Commands
{
/// <summary>
/// Represents a WebSocket-based context of a command. This may include the client, guild, channel, user, and message.
/// </summary>
public class SocketCommandContext : ICommandContext
{
/// <summary>
/// Gets the <see cref="DiscordSocketClient" /> that the command is executed with.
/// </summary>
public DiscordSocketClient Client { get; }
/// <summary>
/// Gets the <see cref="SocketGuild" /> that the command is executed in.
/// </summary>
public SocketGuild Guild { get; }
/// <summary>
/// Gets the <see cref="ISocketMessageChannel" /> that the command is executed in.
/// </summary>
public ISocketMessageChannel Channel { get; }
/// <summary>
/// Gets the <see cref="SocketUser" /> who executed the command.
/// </summary>
public SocketUser User { get; }
/// <summary>
/// Gets the <see cref="SocketUserMessage" /> that the command is interpreted from.
/// </summary>
public SocketUserMessage Message { get; }
/// <summary>
/// Indicates whether the channel that the command is executed in is a private channel.
/// </summary>
public bool IsPrivate => Channel is IPrivateChannel;
/// <summary>
/// Initializes a new <see cref="SocketCommandContext" /> class with the provided client and message.
/// </summary>
/// <param name="client">The underlying client.</param>
/// <param name="msg">The underlying message.</param>
public SocketCommandContext(DiscordSocketClient client, SocketUserMessage msg)
{
Client = client;
Guild = (msg.Channel as SocketGuildChannel)?.Guild;
Channel = msg.Channel;
User = msg.Author;
Message = msg;
}
//ICommandContext
/// <inheritdoc/>
IDiscordClient ICommandContext.Client => Client;
/// <inheritdoc/>
IGuild ICommandContext.Guild => Guild;
/// <inheritdoc/>
IMessageChannel ICommandContext.Channel => Channel;
/// <inheritdoc/>
IUser ICommandContext.User => User;
/// <inheritdoc/>
IUserMessage ICommandContext.Message => Message;
}
}