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 { /// <summary> /// Channel from the which the command is invoked /// </summary> public abstract IMessageChannel Channel { get; } /// <summary> /// Message which triggered the command /// </summary> public abstract IUserMessage Message { get; } /// <summary> /// The user who invoked the command /// </summary> public abstract IUser User { get; } /// <summary> /// Bot user /// </summary> public abstract ISelfUser Bot { get; } /// <summary> /// Provides access to strings used by this marmalade /// </summary> public abstract IMarmaladeStrings Strings { get; } /// <summary> /// Gets a formatted localized string using a key and arguments which should be formatted in /// </summary> /// <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); }