using Discord;
namespace EllieBot.Marmalade;
/// <summary>
/// Commands which take this class as a first parameter can be executed in both DMs and Servers
/// </summary>
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 marmalade
public abstract IMarmaladeStrings Strings { get; }
/// Gets a formatted localized string using a key and arguments which should be formatted in
/// <param name="key">The key of the string as specified in localization files</param>
/// <param name="args">Arguments (if any) to format in</param>
/// <returns>A formatted localized string</returns>
public abstract string GetText(string key, object[]? args = null);
}