using System.Threading.Tasks;
using Discord;
using Discord.WebSocket;

namespace NadekoBot.Common.ModuleBehaviors
{
    /// <summary>
    /// Implemented by modules which can execute something and prevent further commands from being executed.
    /// </summary>
    public interface IEarlyBlockingExecutor
    {
        /// <summary>
        /// Try to execute some logic within some module's service.
        /// </summary>
        /// <returns>Whether it should block other command executions after it.</returns>
        Task<bool> TryExecuteEarly(DiscordSocketClient client, IGuild guild, IUserMessage msg);
    }
}