Exemplo n.º 1
0
        /// <summary>
        /// Принимает входящие сообщения и обрабатывает их.
        /// </summary>
        public IActionResult Callback([FromBody] Updates updates)
        {
            // Тип события
            switch (updates.Type)
            {
            // Ключ-подтверждение
            case "confirmation":
            {
                return(Ok(configuration["Config:Confirmation"]));
            }

            // Новое сообщение
            case "message_new":
            {
                var msg = Message.FromJson(new VkResponse(updates.Object));
                //Добавление нового пользователя.
                if (!Tasker.allUsers.Users.ContainsKey(msg.FromId.Value))
                {
                    Tasker.allUsers.Users.Add(msg.FromId.Value, new VkUser(msg.FromId.Value));
                    Tasker.SaveAll();
                    VKSendMsg(msg.PeerId.Value, MsgTexts.HelloNewUser);
                }
                else
                {
                    MsgReceiver(msg);
                }
                break;
            }
            }
            return(Ok("ok"));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Обработчик входящих сообщений.
        /// </summary>
        private void MsgReceiver(Message msg)
        {
            string mess = msg.Text.ToLower();                                                                 //Переводим всё в нижний регистр.

            mess = mess.Replace(".", "").Replace(",", "").Replace(")", "").Replace("(", "").Replace("?", ""); //Убираем лишние символы.
            //Отменяем выполнение операции, если в процессе её выполнения пользователь написал слово "отмена".
            if (mess == "отмена" && Tasker.allUsers.Users[msg.FromId.Value].IsTaskChangingInProgress == true)
            {
                Tasker.allUsers.Users[msg.FromId.Value].IsTaskChangingInProgress = false;
                //Удаляем последнюю запись, если уже был добавлен текст, иначе просто выходим из операции.
                if (Tasker.TaskProcces == Tasker.AddTaskDate)
                {
                    Tasker.allUsers.Users[msg.FromId.Value].Tasks.RemoveAt(Tasker.allUsers.Users[msg.FromId.Value].Tasks.Count - 1);
                }
                Tasker.SaveAll();
                VKSendMsg(msg.PeerId.Value, MsgTexts.Cancel);
                return;
            }
            //Если выполняется какая-либо операция, то продолжаем её выполнять.
            if (Tasker.allUsers.Users[msg.FromId.Value].IsTaskChangingInProgress == true)
            {
                Tasker.TaskProcces(msg);
                return;
            }
            //Выбираем нужное действие в зависимости от того, что написал пользователь.
            switch (mess)
            {
            case "напомни":
            {
                Tasker.StartTaskAdding(msg);
                break;
            }

            case "покажи":
            {
                Tasker.ShowTasks(msg);
                break;
            }

            case "очистить":
            {
                Tasker.ClearTasks(msg.FromId.Value);
                break;
            }

            case "пользователи":
            {
                if (Tasker.allUsers.Users.Count > 0)
                {
                    string users = "Пользователи:\n";
                    foreach (var user in Tasker.allUsers.Users)
                    {
                        users += user.Value.VkId + "\n";
                    }
                    VKSendMsg(msg.PeerId.Value, users);
                }
                else
                {
                    VKSendMsg(msg.PeerId.Value, MsgTexts.NoUsers);
                }
                break;
            }

            case "id":    //Для тестов.
            {
                VKSendMsg(msg.PeerId.Value, msg.FromId.Value.ToString());
                break;
            }

            case "спасибо":
            {
                VKSendMsg(msg.PeerId.Value, MsgTexts.Thanks);
                break;
            }

            default:
            {
                string Answer;
                try
                {
                    Answer = MsgTexts.Answers[mess];
                }
                catch (System.Exception)
                {
                    Answer = MsgTexts.DontUnderstand;
                }
                VKSendMsg(msg.PeerId.Value, Answer);
                break;
            }
            }
        }