public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax) { var posterId = command.Args[0]; var poster = PosterRepository.Read(posterId); return(CommandResult.AsSucceed(string.Empty, photoId: poster.FileId)); }
private CommandResult ShowOne(Command command, CommandMeta meta, ICommandSyntax syntax) { var personId = command.Args[0]; var person = PersonRepository.Read(personId); return(CommandResult.AsSucceed(GetPersonString(person), inlineMenu: CreateMenu(syntax, personId), update: true)); }
public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax) { var args = command.Args[0].Split(" ", 2); var personId = args[0]; var text = args[1]; var person = PersonRepository.Read(personId); var letter = new Letter { Id = text.GetHashCode().ToString(), Text = text, PersonId = personId, SenderId = meta.UserId, SenderUserName = meta.NickName }; letterRepository.Write(letter); var response = $"Письмо для {person.Name} от [{meta.NickName}](tg://user?id={meta.UserId}) \n\n{text}"; var result = CommandResult.AsSucceed("Отправлено"); result.AdditionalMessage = CommandResult.AsSucceed(response, useMarkdown: true, inlineMenu: CreateMenu(syntax, letter.Id), chatId: UnprocessedLettersChatId); return(result); }
public CommandManager( ITokenizer tokenizer, ICommandSyntax commandSyntax) { this.tokenizer = tokenizer; this.commandSyntax = commandSyntax; }
private static InlineMenu CreateMenu(ICommandSyntax commandSyntax, string letterId) { var processCommandName = commandSyntax.GetCommandName <ProcessLetterCommandExecutor>(); var builder = InlineMenu.Build(); builder.AddRow().WithCell("Обработано", processCommandName, letterId); return(builder.Create()); }
public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax) { var exportAll = command.Args[0] == "all"; var export = exporter.Export(exportAll ? null : command.Args[0]); var fileName = exportAll ? "Все" : command.Args[0]; return(CommandResult.AsSucceed(string.Empty, fileContent: export, fileName: $"{fileName}.csv")); }
public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax1) { var commands = syntax .GetCommands() .Select(c => $"/{c.Name} {c.Help}") .ToArray(); return(CommandResult.AsSucceed(string.Join(Environment.NewLine, commands))); }
public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax) { switch (command.Args.Length) { case 1: return(ShowOne(command, meta, syntax)); default: throw new ArgumentException(); } }
private static InlineMenu CreateMenu(ICommandSyntax commandSyntax) { var organizeCommandName = commandSyntax.GetCommandName <OrganizeCommandExecutor>(); var findCommandName = commandSyntax.GetCommandName <FindCommandExecutor>(); var builder = InlineMenu.Build(); builder.AddRow().WithCell("Организовать", organizeCommandName); builder.AddRow().WithCell("Узнать", findCommandName); return(builder.Create()); }
public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax) { var letterId = command.Args[0]; var letter = letterRepository.Read(letterId); var person = PersonRepository.Read(letter.PersonId); letter.IsProcessed = true; letterRepository.Write(letter); var response = $"Письмо для {person.Name} от [{letter.SenderUserName}](tg://user?id={letter.SenderId}) обработано\n\n{letter.Text}"; return(CommandResult.AsSucceed(response, useMarkdown: true, chatId: ProcessedLettersChatId)); }
private CommandResult ShowList(Command command, CommandMeta meta, ICommandSyntax syntax) { var query = command.Args[0]; var persons = query == "all" ? PersonRepository.ReadAll() : PersonRepository.Select(query).Concat(PersonRepository.SelectByLawsuit(query)).GroupBy(x => x.Id) .Select(x => x.First()).ToList(); var personsString = string.Join("\n", persons.Select((p, i) => $"{i + 1}. {p.Name} /show_{p.Id}")); return(CommandResult.AsSucceed($"Найдено {persons.Count}:\n{personsString}", inlineMenu: CreateMenu(syntax, query), update: meta.FromInlineMenu)); }
public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax) { switch (command.Args.Length) { case 0: return(SelectLawsuit(meta, syntax)); case 1: return(CreateDocument(command, meta, syntax)); default: throw new ArgumentException(); } }
protected InlineMenu CreateLawsuitsMenu(ICommandSyntax syntax, IEnumerable <string> lawsuits) { var commandName = syntax.GetCommandName(GetType()); var beginCommandName = syntax.GetCommandName <DefaultStartSuperCommandExecutor>(); var builder = InlineMenu.Build(); foreach (var lawsuit in lawsuits.OrderBy(x => x)) { builder.AddRow().WithCell(lawsuit, commandName, CreateCommandArg(lawsuit)); } builder.AddRow().WithCell("Все", commandName, "all"); builder.AddRow().WithCell("В начало", beginCommandName); return(builder.Create()); }
private InlineMenu CreateMenu(ICommandSyntax commandSyntax, string lawsuit) { var startCommandName = commandSyntax.GetCommandName <DefaultStartSuperCommandExecutor>(); var findCommandName = commandSyntax.GetCommandName <FindCommandExecutor>(); var downloadPosterCommandName = commandSyntax.GetCommandName <DownloadPosterCommandExecutor>(); var lawsuitPosters = GetLawsuitPosterIds(lawsuit).ToArray(); var builder = InlineMenu.Build(); builder.AddRow().WithCell("Найти другого узника совести", findCommandName); if (lawsuitPosters.Any()) { builder.AddRow().WithCell("Скачать плакат для печати", downloadPosterCommandName, lawsuitPosters[0]); } builder.AddRow().WithCell("В начало", startCommandName); return(builder.Create()); }
protected InlineMenu CreateMenu(Command command, ICommandSyntax commandSyntax) { var startCommandName = commandSyntax.GetCommandName <DefaultStartSuperCommandExecutor>(); var organizeCommandName = commandSyntax.GetCommandName <OrganizeCommandExecutor>(); var downloadListCommandName = commandSyntax.GetCommandName <DownloadListCommandExecutor>(); var downloadPosterCommandName = commandSyntax.GetCommandName <DownloadPosterCommandExecutor>(); var lawsuit = command.Args[0]; var lawsuitPosters = GetLawsuitPosterIds(lawsuit).ToArray(); var builder = InlineMenu.Build(); builder.AddRow().WithCell("Найти другую группу", organizeCommandName); builder.AddRow().WithCell("Скачать cписок для печати", downloadListCommandName, lawsuit); if (lawsuitPosters.Any()) { builder.AddRow().WithCell("Скачать плакат для печати", downloadPosterCommandName, lawsuitPosters[0]); } builder.AddRow().WithCell("В начало", startCommandName); return(builder.Create()); }
protected InlineMenu CreateMenu(ICommandSyntax commandSyntax, string personId) { var startCommandName = commandSyntax.GetCommandName <DefaultStartSuperCommandExecutor>(); var findCommandName = commandSyntax.GetCommandName <FindCommandExecutor>(); var downloadCardCommandName = commandSyntax.GetCommandName <DownloadCardCommandExecutor>(); var downloadPosterCommandName = commandSyntax.GetCommandName <DownloadPosterCommandExecutor>(); var personPosters = GetPersonPosters(personId).ToArray(); var builder = InlineMenu.Build(); builder.AddRow().WithCell("Найти другого узника совести", findCommandName); builder.AddRow().WithCell("Скачать карточку для печати", downloadCardCommandName); if (personPosters.Any()) { builder.AddRow().WithCell("Скачать плакат для печати", downloadPosterCommandName, personPosters[0]); } builder.AddRow().WithCell("В начало", startCommandName); return(builder.Create()); }
public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax) { try { var person = personParser.Parse(command.Args[0], meta.PhotoId); PersonRepository.Write(person); return(CommandResult.AsSucceed("Карточка добавлена")); } catch { try { var poster = posterParser.Parse(command.Args[0], meta.PhotoId); PosterRepository.Write(poster); return(CommandResult.AsSucceed("Плакат добавлен")); } catch { return(CommandResult.AsFailed( "Ожидаемый формат карточки:\n\n[Фото]\nФИО\nДело\nАдрес\n[День рождения]\n[Информация]\n[Тип]\n[Статус]\n\nОжидаемый формат плаката:\n\nФото\nФИО|Дело")); } } }
public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax1) { return(CommandResult.AsSucceed($"Unknown command. Type '/{syntax.HelpCommandName}' for help")); }
public ICommandExecutor UseSyntax(ICommandSyntax syntax) { this.syntax = syntax; return(this); }
private CommandResult SelectLawsuit(CommandMeta meta, ICommandSyntax syntax) => CommandResult.AsSucceed("Выберите дело", inlineMenu: CreateLawsuitsMenu(syntax, GetLawsuits(meta)), update: meta.FromInlineMenu);
private CommandResult CreateDocument(Command command, CommandMeta meta, ICommandSyntax syntax) => CommandResult.AsSucceed("Выберите действие", inlineMenu: CreateMenu(command, syntax), update: meta.FromInlineMenu);
public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax) { return(CommandResult.AsSucceed("Карточка")); }
public CommandResult Execute(Command command, CommandMeta meta, ICommandSyntax syntax) => CommandResult.AsSucceed("Вы хотите организовать вечер писем узникам совести или написать одному из них?", inlineMenu: CreateMenu(syntax), update: meta.FromInlineMenu);
public CandidatesGenerator(ICommandSyntax syntax) { Contract.Requires(syntax != null); _syntax = syntax; }
private CommandResult Start(CommandMeta meta, ICommandSyntax syntax) => CommandResult.AsSucceed("Отправьте боту фамилию узника совести или посмотрите список по делам", inlineMenu: CreateLawsuitsMenu(syntax, GetLawsuits(meta)), update: meta.FromInlineMenu);
public CommandParser(ICommandSyntax syntax) { Contract.Requires(syntax != null); _syntax = syntax; }