Ejemplo n.º 1
0
        /// <summary>
        /// Метод, где возвращается ответ только для не авторизованных пользователей
        /// </summary>
        /// <param name="message">Команда бота</param>
        /// <returns>Ответ которую получит пользователь</returns>
        public async static Task <string> GetAnswerAnonymousUser(string message, EcampusClient clientECampus)
        {
            switch (message.ToLower())
            {
            case var text when message.Contains(":") && message.Split(':').Length == 2:
            {
                var login = await clientECampus.LoginAsync(message.Split(':')[0], message.Split(':')[1]);

                if (login.IsSuccess)
                {
                    return("Вы успешно авторизовались в систему");
                }
                else
                {
                    return("Неверное имя пользователя или пароль");
                }
            }

            case var text when message.ToLower().Contains("начать"):
            {
                return("Здравствуйте, я Ваш помощник ECampusBot &#129302;\n" +
                       "Для дальнейшей работы со мной, Вам нужно авторизоваться в \"Электронный кампус СКФУ\"&#128104;&#8205;&#128187;\n" +
                       "Пример: login:password");
            }
            }
            return("Неверная команда");
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Метод, где возвращается ответ только для авторизованных пользователей
        /// </summary>
        /// <param name="message">Команда бота</param>
        /// <returns>Ответ которую получит пользователь</returns>
        public async static Task <string> GetAnswerForAuthorizeUser(string message, EcampusClient clientECampus)
        {
            switch (message.ToLower())
            {
            case var text when message.ToLower() == ("расписание"):
            {
                var schedules = await clientECampus.GetScheduleAsync();

                if (schedules.Count <= 0)
                {
                    return("Для данной недели расписание не предоставлено.");
                }
                var schedule = buildSchedule.GetAllSchedule(schedules);
                return(schedule);
            }

            case var text when message.ToLower().Contains("неделю"):
                var schedulesNextWeek = await clientECampus.GetScheduleOnNextWeekAsync();

                if (schedulesNextWeek.Count <= 0)
                {
                    return("Для данной недели расписание не предоставлено.");
                }
                var scheduleNextWeek = buildSchedule.GetAllSchedule(schedulesNextWeek);
                return(scheduleNextWeek);

            case var text when message.ToLower().Contains("пропуск"):
                var passImage = await clientECampus.StudentPass();

                var passName = $"ImgPasses/{Guid.NewGuid().ToString()}";
                await passImage.SaveAsync(passName + ".jpg");

                return(passName + ".jpg");
            }

            return("Я не понимаю что вы говорите");
        }
Ejemplo n.º 3
0
        public void RunVkBot()
        {
            messageManager.OnNewMessage += async(message) =>
            {
                var userId = message.FromId;
                var fdd    = message.Payload;
                var text   = message.Text;

                var           sheduleKeyboard = Commands.GetOptionalKeyboard();
                EcampusClient clientECampus   = new EcampusClient();
                var           isExist         = db.GetUserById(userId);
                try
                {
                    if (isExist == null && !text.Contains(":") && text.Split(':').Length != 2)
                    {
                        await messageManager.SendMessageAsync("Здравствуйте, я Ваш помощник ECampusBot &#129302;\n" +
                                                              "Для дальнейшей работы со мной, Вам нужно авторизоваться в \"Электронный кампус СКФУ\"&#128104;&#8205;&#128187;\n" +
                                                              "Пример: login:password", userId);

                        return;
                    }
                    if (text.ToLower() == "начать")
                    {
                        if (isExist == null)
                        {
                            await messageManager.SendMessageAsync("Здравствуйте, я Ваш помощник ECampusBot &#129302;\n" +
                                                                  "Для дальнейшей работы со мной, Вам нужно авторизоваться в \"Электронный кампус СКФУ\"&#128104;&#8205;&#128187;\n" +
                                                                  "Пример: login:password", userId);

                            return;
                        }
                        else
                        {
                            await messageManager.SendMessageAsync("Функционал бота", userId);
                        }
                    }
                }
                catch (Exception ex)
                {
                    await messageManager.SendMessageAsync("Упс! Что-то пошло не так &#129301;\n" +
                                                          "Мы найдем и исправим эту ошибку &#128373; \n" + ex.Message, userId);
                }



                // ДЛЯ АВТОРИЗОВАННЫХ ЮЗЕРОВ
                try
                {
                    if (isExist != null)
                    {
                        var login = await clientECampus.LoginAsync(isExist.Split(':')[0], isExist.Split(':')[1]);

                        if (login.IsSuccess)
                        {
                            //TODO
                            //Ответы бота должны иметь класс, где мы можем увидеть тип ответа(txt,img,video and etc)
                            string answer = await Commands.GetAnswerForAuthorizeUser(text, clientECampus);

                            if (answer.Contains(".jpg"))
                            {
                                await messageManager.SendMessagePhotoAsync(answer, userId);

                                return;
                            }
                            await messageManager.SendMessageAsync(answer, userId, sheduleKeyboard);

                            return;
                        }
                        else
                        {
                            await messageManager.SendMessageAsync("Сервер вернул ошибку", userId, sheduleKeyboard);
                        }
                    }
                    else
                    {
                        var answer = await Commands.GetAnswerAnonymousUser(text, clientECampus);

                        if (answer.Contains("успешно"))
                        {
                            var login            = text.Split(':')[0];
                            var password         = text.Split(':')[1];
                            var resultAddingUser = db.AddUser(new Authorization
                            {
                                Login    = login,
                                Password = password,
                                UserId   = userId
                            });
                            await messageManager.SendMessageAsync(answer, userId, sheduleKeyboard);

                            return;
                        }
                        await messageManager.SendMessageAsync(answer, userId);
                    }
                }
                catch (Exception ex)
                {
                    await messageManager.SendMessageAsync("Упс! Что-то пошло не так &#129301;\n" +
                                                          "Мы найдем и исправим эту ошибку &#128373; \n" + ex.Message, userId);
                }
            };
        }