using System.Reflection; using System.Text.RegularExpressions; using KfChatDotNetBot.Models; using KfChatDotNetBot.Models.DbModels; using KfChatDotNetWsClient.Models.Events; namespace KfChatDotNetBot.Commands; public class TempSuppressGambaMessages : ICommand { public List Patterns => [ new Regex("^nogamba$") ]; public string? HelpText => null; public UserRight RequiredRight => UserRight.Guest; public TimeSpan Timeout => TimeSpan.FromSeconds(10); public RateLimitOptionsModel? RateLimitOptions => null; public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx) { botInstance.BotServices.TemporarilySuppressGambaMessages = true; await botInstance.SendChatMessageAsync("No more gamba notifs", true); } } public class EnableGambaMessages : ICommand { public List Patterns => [ new Regex("^yesgamba") ]; public string? HelpText => null; public UserRight RequiredRight => UserRight.Guest; public TimeSpan Timeout => TimeSpan.FromSeconds(10); public RateLimitOptionsModel? RateLimitOptions => null; public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx) { botInstance.BotServices.TemporarilySuppressGambaMessages = false; await botInstance.SendChatMessageAsync("Gamba notifs back on the menu", true); } } public class GetVersionCommand : ICommand { public List Patterns => [ new Regex("^version$") ]; public string? HelpText => null; public UserRight RequiredRight => UserRight.Loser; public TimeSpan Timeout => TimeSpan.FromSeconds(10); public RateLimitOptionsModel? RateLimitOptions => null; public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx) { var version = Assembly.GetEntryAssembly()? .GetCustomAttribute()?.InformationalVersion; if (version == null) { await botInstance.SendChatMessageAsync($"Caught a null when trying to retrieve the bot's assembly version.", true); return; } await botInstance.SendChatMessageAsync($"Bot compiled against {version.Split('+')[1]}", true); } }