public override OutputUserMessage GetResponseTo(Message inputMessage, User user) { if (inputMessage.Text == TgBotText.Cancel) { return(FailWithText(inputMessage, user, "Ну передумал и передумал.")); } if (!inputMessage.Text.Contains("(id: ")) { return(FailWithText(inputMessage, user, "Не удалось получить id группы")); } var idStr = inputMessage.Text.Split("(id: ", StringSplitOptions.RemoveEmptyEntries).Last(); idStr = idStr.Split(")", StringSplitOptions.RemoveEmptyEntries).First(); idStr = new string(idStr.Where(char.IsDigit).ToArray()); if (!long.TryParse(idStr, out long groupId)) { return(FailWithText(inputMessage, user, "Не удалось получить id группы")); } user.CurrentGroupId = groupId; user.State = ChatState.NewWordToGroupAdd; var currentText = _db.Preferences.Where(pref => pref.User.Id == user.Id && pref.GroupId == groupId).FirstOrDefault(); return(new OutputUserMessage() { ChatId = inputMessage.Chat.Id, Text = $"Текущие ключевые слова группы: _{currentText.Keyword}_. Укажите новые ключевые слова у группы:", ReplyMarkup = new ReplyKeyboardRemove() }); }
public override OutputUserMessage GetResponseTo(Message inputMessage, User user) { if (string.IsNullOrEmpty(inputMessage.Text)) { return(FailWithText(inputMessage, user, "Введено пустое слово")); } var inputText = inputMessage.Text; if (!Uri.TryCreate(inputText, UriKind.Absolute, out Uri uriResult)) { return(FailWithText(inputMessage, user, "Введён некорректный URL")); } var getGroupIdResult = _vk.GetGroupIdByLink(uriResult); if (!getGroupIdResult.Success) { return(FailWithText(inputMessage, user, "Не удалось получть id группы")); } user.CurrentGroupId = getGroupIdResult.GroupId; user.CurrentGroupName = getGroupIdResult.GroupName; user.State = ChatState.NewWordToGroupAdd; _db.SaveChanges(); return(new OutputUserMessage() { ChatId = inputMessage.Chat.Id, Text = @"Введите слова или фразы через запятую, какие следует искать в этой группе. Например _однушка, однушку, перекопка, торты, аренда_", ReplyMarkup = new ReplyKeyboardRemove() }); }
public override OutputUserMessage GetResponseTo(Message inputMessage, User user) { user.State = ChatState.NewGroupToAdd; _db.SaveChanges(); return(new OutputUserMessage() { ChatId = inputMessage.Chat.Id, Text = TgBotText.ReplyInputIdOrLink, ReplyMarkup = new ReplyKeyboardRemove() }); }
public override OutputUserMessage GetResponseTo(Message inputMessage, User user) { if (string.IsNullOrEmpty(inputMessage.Text)) { return(GetDefaultResponse(inputMessage.Chat.Id, "Пустой текст не является ключевым словом")); } if (user.CurrentGroupId == null) { user.CurrentGroupId = null; user.CurrentGroupName = null; user.State = ChatState.Standrard; _db.SaveChanges(); return(GetDefaultResponse(inputMessage.Chat.Id, @"Что-то пошло не так\. Попробуйте ещё раз")); } var userPrefs = _db.Preferences.Where(pref => pref.User.Id == user.Id && pref.GroupId == user.CurrentGroupId).FirstOrDefault(); if (userPrefs == null) { userPrefs = new UserPreference() { User = user, GroupId = user.CurrentGroupId.Value, GroupName = user.CurrentGroupName, Keyword = inputMessage.Text }; _db.Preferences.Add(userPrefs); } else { userPrefs.Keyword = inputMessage.Text; } user.CurrentGroupId = null; user.CurrentGroupName = null; user.State = ChatState.Standrard; _db.SaveChanges(); return(new OutputUserMessage() { ChatId = inputMessage.Chat.Id, Text = @$ "Отлично. Слова записаны. Когда в группе *{userPrefs.GroupName}* (id:_{userPrefs.GroupId}_) появятся новые посты со следюующими словами: _{inputMessage.Text}_ Вы получите уведомление сюда", ReplyMarkup = MessageMarkupUtilities.GetDefaultMarkup() }); }
public override OutputUserMessage GetResponseTo(Message inputMessage, User user) { var currentSubscriptions = _db.Preferences.Where(pref => pref.User.Id == user.Id); var keyboard = MessageMarkupUtilities.GetReplyKeyboardForGroups(currentSubscriptions); keyboard.Add(new List <KeyboardButton> { new KeyboardButton(TgBotText.Cancel) }); user.State = ChatState.EditExistingGroup; _db.SaveChanges(); var replyMarkup = new ReplyKeyboardMarkup(keyboard, resizeKeyboard: true, oneTimeKeyboard: true); return(new OutputUserMessage() { ChatId = inputMessage.Chat.Id, Text = TgBotText.EditCurrentSubscriptionsLink, ReplyMarkup = replyMarkup }); }
public override OutputUserMessage GetResponseTo(Message inputMessage, User user) { if (inputMessage.Text == TgBotText.Cancel) { return(FailWithText(inputMessage, user, "Ну передумал и передумал.")); } if (!inputMessage.Text.Contains("(id: ")) { return(FailWithText(inputMessage, user, "Не удалось получить id группы")); } var idStr = inputMessage.Text.Split("(id: ", StringSplitOptions.RemoveEmptyEntries).Last(); idStr = idStr.Split(")", StringSplitOptions.RemoveEmptyEntries).First(); idStr = new string(idStr.Where(char.IsDigit).ToArray()); if (!long.TryParse(idStr, out long groupId)) { return(FailWithText(inputMessage, user, "Не удалось получить id группы")); } var groupsToRemove = _db.Preferences.Where(pref => pref.User.Id == user.Id && pref.GroupId == groupId); if (groupsToRemove == null || !groupsToRemove.Any()) { return(FailWithText(inputMessage, user, $"Группа с указанным id:{groupId} не найдена в подписках")); } _db.Preferences.RemoveRange(groupsToRemove); user.State = ChatState.Standrard; _db.SaveChanges(); return(new OutputUserMessage() { ChatId = inputMessage.Chat.Id, Text = "Подписки на ключевые слова групп успешно удалены", ReplyMarkup = MessageMarkupUtilities.GetDefaultMarkup() }); }
protected OutputUserMessage FailWithText(Message inputMessage, User user, string text) { user.State = ChatState.Standrard; _db.SaveChanges(); return(GetDefaultResponse(inputMessage.Chat.Id, text)); }
public abstract OutputUserMessage GetResponseTo(Message inputMessage, User user);