Ejemplo n.º 1
0
        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()
            });
        }
Ejemplo n.º 2
0
        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()
            });
        }
Ejemplo n.º 3
0
        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()
            });
        }
Ejemplo n.º 4
0
        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()
            });
        }
Ejemplo n.º 5
0
        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);