Exemple #1
0
        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);
 }
Exemple #4
0
 public abstract Task ExecuteAsync(ParsedCommandString cmd);
Exemple #5
0
 public bool IsHelpRequest(ParsedCommandString cmd) =>
 cmd.SplitMessage.Length > 1 && cmd.SplitMessage[1]?.ToLower() == "help";