public override Task ExecuteAsync(ParsedCommandString cmd) { var types = Assembly.GetExecutingAssembly().GetTypes() .Where(t => t.Namespace == "Emicord.Client.Commands" && t.Name.EndsWith("Command") && (!t.IsInterface || !t.IsAbstract)) .Select(t => t.Name.Replace("Command", "").ToLower()); var stringBuilder = new StringBuilder(); var commands = stringBuilder .AppendLine("Potential commands are:") .Append($"\t/{string.Join(", /", types)}") .ToString(); _logger.LogInfo(commands); return(Task.CompletedTask); }
public override async Task ExecuteAsync(ParsedCommandString cmd) { try { _displaySelector = new DisplaySelector(string.Join(" ", cmd.SplitMessage.Skip(1))); } catch { _displaySelector = null; } if (!IsValidCommand()) { _logger.LogError("Invalid command parameters!"); return; } var guild = _client.Guilds.FirstOrDefault(g => g.Name.ToLower() == _displaySelector.Guild); if (guild == default(SocketGuild)) { _logger.LogError("Invalid guild selection!"); return; } var channel = string.IsNullOrWhiteSpace(_displaySelector.Channel) ? guild.DefaultChannel : guild.Channels.FirstOrDefault(c => c is ITextChannel && c.Name.ToLower() == _displaySelector.Channel); if (channel == default(SocketGuildChannel)) { _logger.LogError("Invalid channel selection!"); return; } MessageItem[] messageItems; messageItems = (await new GetMessagesQuery(channel.Id, _displaySelector.Take + _displaySelector.Skip, _messageNetwork, _logger).ExecuteAsync()).ToArray(); if (!messageItems.Any()) { messageItems = (await new GetMessagesQuery(channel.Id, _displaySelector.Take + _displaySelector.Skip, _messageCache, _logger).ExecuteAsync()).ToArray(); } foreach (var item in messageItems.OrderBy(m => m.Message.Timestamp).Skip(_displaySelector.Skip)) { _logger.Log($"{item.Message.Author} ({DateTime.FromBinary(item.Message.Timestamp):g})\n\t{item.Message.Content}"); } }
public override Task ExecuteAsync(ParsedCommandString cmd) { _logger.LogInfo($"Current mem usage: {GC.GetTotalMemory(false) / 1024 / 1024}M"); return(Task.CompletedTask); }
public abstract Task ExecuteAsync(ParsedCommandString cmd);
public bool IsHelpRequest(ParsedCommandString cmd) => cmd.SplitMessage.Length > 1 && cmd.SplitMessage[1]?.ToLower() == "help";