using Discord;
using NadekoBot;
namespace Nadeko.Snake;
///
/// Commands which take this class as a first parameter can be executed in both DMs and Servers
///
public abstract class AnyContext
{
///
/// Channel from the which the command is invoked
///
public abstract IMessageChannel Channel { get; }
///
/// Message which triggered the command
///
public abstract IUserMessage Message { get; }
///
/// The user who invoked the command
///
public abstract IUser User { get; }
///
/// Bot user
///
public abstract ISelfUser Bot { get; }
///
/// Provides access to strings used by this medusa
///
public abstract IMedusaStrings Strings { get; }
///
/// Gets a formatted localized string using a key and arguments which should be formatted in
///
/// The key of the string as specified in localization files
/// Arguments (if any) to format in
/// A formatted localized string
public abstract string GetText(string key, object[]? args = null);
///
/// Creates a context-aware instance
/// (future feature for guild-based embed colors)
/// Any code dealing with embeds should use it for future-proofness
/// instead of manually creating embedbuilder instances
///
/// A context-aware instance
public abstract IEmbedBuilder Embed();
}