using Discord.WebSocket; using MinecraftDiscordBot.Commands; namespace MinecraftDiscordBot.Services; public class ChatBoxService : CommandRouter { private readonly ITaskWaitSource _taskSource; public ChatBoxService(ITaskWaitSource taskSource) => _taskSource = taskSource; public override string HelpTextPrefix => "!chat "; public override Task FallbackHandler(SocketUserMessage message, string method, string[] parameters, CancellationToken ct) => throw new ReplyException($"The chat box cannot do '{method}'!"); private Task Method(string methodName, Func parser, CancellationToken ct, Dictionary? parameters = null) => RootCommandService.Method(_taskSource, methodName, parser, ct, parameters); public Task SendMessageAsync(string message, string prefix, CancellationToken ct) => Method("send", RootCommandService.Deserialize(), ct, new() { ["message"] = message, ["prefix"] = prefix }); public Task SendMessageToPlayerAsync(string message, string username, string prefix, CancellationToken ct) => Method("send", RootCommandService.Deserialize(), ct, new() { ["message"] = message, ["username"] = username, ["prefix"] = prefix }); }