f912b9db8f
Fixed async naming scheme Added webhook for every channel Added colorful logging
27 lines
1.3 KiB
C#
27 lines
1.3 KiB
C#
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<ResponseType> FallbackHandler(SocketUserMessage message, string method, string[] parameters, CancellationToken ct)
|
|
=> throw new ReplyException($"The chat box cannot do '{method}'!");
|
|
|
|
private Task<T> Method<T>(string methodName, Func<string, T> parser, CancellationToken ct, Dictionary<string, object>? parameters = null)
|
|
=> RootCommandService.Method(_taskSource, methodName, parser, ct, parameters);
|
|
|
|
public Task<bool> SendMessageAsync(string message, string prefix, CancellationToken ct) => Method("send", RootCommandService.Deserialize<bool>(), ct, new() {
|
|
["message"] = message,
|
|
["prefix"] = prefix
|
|
});
|
|
public Task<bool> SendMessageToPlayerAsync(string message, string username, string prefix, CancellationToken ct) => Method("send", RootCommandService.Deserialize<bool>(), ct, new() {
|
|
["message"] = message,
|
|
["username"] = username,
|
|
["prefix"] = prefix
|
|
});
|
|
}
|