Beispiel #1
0
 public CallbackController(IVkApi _vkApi, IConfiguration configuration)
 {
     this.configuration = configuration;
     vkApi           = _vkApi;
     tasker          = new Tasker(vkApi);
     Tasker.allUsers = Tasker.OpenAll(); //Открывем файл с данными пользователей.
 }
Beispiel #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;
            }
            }
        }