public Response OnMessage(string _message)
        {
            WorkCompleteEventHandler?.Invoke(m_userId);

            return(new Response("/register - чтобы зарегистрироваться \n" +
                                "/manage - для управления аккаунтом \n" +
                                "исходники бота можно найти тут https://github.com/mrGoner/VkToTelegramGrabber"));
        }
Exemple #2
0
        public Response OnMessage(string _message)
        {
            try
            {
                var user = m_userManager.GetUser(m_userId.ToString());

                if (user == null)
                {
                    return(new Response("Ты еще не зарегистрирован!"));
                }

                if (_message == Command)
                {
                    return(new Response("Выбирай команду:", m_generalMarkup));
                }

                if (_message == "Добавить группу")
                {
                    var builder = new StringBuilder();

                    builder.AppendLine("Пришли мне ID группы для добавления из списка ниже");

                    m_rawGroups = m_vkApi.GetGroups(user.Token, 100);

                    foreach (var userGroup in user.Groups)
                    {
                        var existed = m_rawGroups.FirstOrDefault(_rawGroup => _rawGroup.Id == userGroup.GroupId);

                        if (existed != null)
                        {
                            m_rawGroups.Remove(existed);
                        }
                    }

                    for (int i = 0; i < m_rawGroups.Count; i++)
                    {
                        var group = m_rawGroups[i];
                        builder.AppendLine($"ID: {i}. Имя: {group.Name}");
                    }

                    m_waitingGroupNum    = true;
                    m_waitingGroupPeriod = false;
                    m_waitingGroupRemove = false;


                    return(new Response(builder.ToString()));
                }

                if (_message == "Удалить группу")
                {
                    var builder = new StringBuilder();

                    builder.AppendLine("Пришли мне ID группы для удаления из списка ниже");

                    if (user.Groups.Any())
                    {
                        for (int i = 0; i < user.Groups.Length; i++)
                        {
                            var group = user.Groups[i];
                            builder.AppendLine($"ID: {i}. Имя: {group.Name}");
                        }

                        m_waitingGroupNum    = false;
                        m_waitingGroupPeriod = false;
                        m_waitingGroupRemove = true;

                        return(new Response(builder.ToString()));
                    }

                    return(new Response("Список групп пуст!", m_generalMarkup));
                }

                if (m_waitingGroupRemove)
                {
                    m_waitingGroupRemove = false;

                    if (int.TryParse(_message, out var removeIndex) && removeIndex >= 0 && user.Groups.Length - 1 >= removeIndex)
                    {
                        m_userManager.RemoveGroupFromUser(user.Key, user.Groups[removeIndex]);

                        return(new Response("Удалено!", m_generalMarkup));
                    }

                    return(new Response("Некорректный ID", m_generalMarkup));
                }

                if (m_waitingGroupNum)
                {
                    m_waitingGroupNum = false;

                    if (int.TryParse(_message, out var groupNum) && groupNum >= 0 && m_rawGroups.Count - 1 >= groupNum)
                    {
                        m_selectedGroup = m_rawGroups[groupNum];

                        m_waitingGroupPeriod = true;

                        return(new Response("Почти все! Выбери период обновления",
                                            KeyBoardBuilder.BuildMarkupKeyboard(new string[] { "00:15:00", "00:30:00", "01:00:00", "01:30:00", "02:00:00" })));
                    }

                    return(new Response("Некорректный ID", m_generalMarkup));
                }

                if (m_waitingGroupPeriod)
                {
                    m_waitingGroupPeriod = false;

                    if (TimeSpan.TryParse(_message, out var span) &&
                        span >= TimeSpan.FromMinutes(15))
                    {
                        m_userManager.AddGroupToUser(user.Key,
                                                     new VkGrabber.Group(m_selectedGroup.Id, span, m_selectedGroup.Name));

                        return(new Response("Добавлено!", m_generalMarkup));
                    }

                    return(new Response("Некорректный период обновления!", m_generalMarkup));
                }

                return(null);
            }
            catch
            {
                WorkCompleteEventHandler?.Invoke(m_userId);

                return(new Response("Что-то пошло не так"));
            }
        }
Exemple #3
0
        public Response OnMessage(string _message)
        {
            if (_message == Command)
            {
                if (m_userManager.GetUser(m_userId.ToString()) == null)
                {
                    m_waitingForId = true;
                    return(new Response("Для регистрации необходимо выполнить следующие шаги: \n" +
                                        "1) Перейти по ссылке https://vk.com/apps?act=manage и создать новое standalone приложение \n" +
                                        "2) Прислать id приложения (находится в настройках созданного приложения) \n" +
                                        "3) В ответ я сгенерирую ссылку, перейдя по которой необходимо будет прислать мне access token \n \n" +
                                        "Кажется сложным? Исходники бота можно найти по ссылке https://github.com/mrGoner/VkToTelegramGrabber и развернуть своего собственного! \n" +
                                        "Если же готов продолжить - присылай id созданного приложения"));
                }

                WorkCompleteEventHandler?.Invoke(m_userId);

                return(new Response("Ты уже зарегистрирован, если хочешь ввести другой токен - необходимо удалить текущую учетную запись"));
            }

            if (m_waitingForId)
            {
                m_waitingForId = false;

                if (int.TryParse(_message, out var id))
                {
                    m_waitingForToken = true;

                    var url = m_vkApi.GetAuthUrl(id, VkApi.Requests.Permissions.Offline |
                                                 VkApi.Requests.Permissions.Wall |
                                                 VkApi.Requests.Permissions.Groups |
                                                 VkApi.Requests.Permissions.Friends |
                                                 VkApi.Requests.Permissions.Video);

                    return(new Response($"Перейди по данной ссылке {url}, после чего пришли мне access_token из строки браузера"));
                }

                return(new Response("Id не распознан"));
            }

            if (m_waitingForToken)
            {
                m_waitingForToken = false;

                if (!string.IsNullOrWhiteSpace(_message) && _message.Length > 60)
                {
                    m_waitingForToken = false;
                    m_userManager.AddUser(m_userId.ToString(), _message);

                    WorkCompleteEventHandler?.Invoke(m_userId);

                    return(new Response("Успешно зарегистрировано!"));
                }

                return(new Response("Токен не распознан как действительный"));
            }

            WorkCompleteEventHandler?.Invoke(m_userId);

            return(null);
        }