Exemple #1
0
        /// <summary>
        /// Ответ на начало оформления нового заказа
        /// </summary>
        /// <param name="message">Сообщение пользователя с товаром для начала заказа</param>
        private void NewOrderResponse(Message message)
        {
            message.Text = "оформить";
            var userId = message.FromId.Value;

            if (!AllUserSessions.ContainsKey(userId))
            {
                AllUserSessions.Add(userId, new UserSession(userId, this));
            }
            AllUserSessions[message.FromId.Value].ProductsAsAttachments.AddRange(message.Attachments.Where(at => at.Type.Name == "Market"));//
            MessageResponse(message);
        }
Exemple #2
0
 /// <summary>
 /// Обычный ответ бота на сообщение пользователя
 /// </summary>
 /// <param name="message">Сообщение пользователя</param>
 private void RegularResponse(Message message)
 {
     if (message.Attachments.Count > 0 && message.Attachments[0].Type.Name == "Market" &&
         (!AllUserSessions.ContainsKey(message.FromId.Value) ||
          AllUserSessions[message.FromId.Value].OrderData.OrderStage == OrderStage.NoOrder)) //проверить на повторное начинание заказа
     {
         NewOrderResponse(message);
     }
     else
     {
         MessageResponse(message);
     }
 }
Exemple #3
0
        /// <summary>
        /// Отслеживание ботом всех событий сообщества
        /// </summary>
        public Task Listen()
        {
            var task = Task.Run(() =>
            {
                try
                {
                    while (true)
                    {
                        var poll = GetLongPollHistory();
                        if (poll?.Updates == null)
                        {
                            continue;                        // Проверка на новые события
                        }
                        foreach (var update in poll.Updates)
                        {
                            if (update.Type == GroupUpdateType.MessageNew)
                            {
                                var userId = update.Message.FromId.Value;
                                if (update.Message.Text != "")
                                {
                                    Logger.Info($"id{update.Message.FromId.Value}: {update.Message.Text}");
                                }
                                if (AllUserSessions.ContainsKey(userId) && AllUserSessions[userId].OrderData.OrderStage != OrderStage.NoOrder)
                                {
                                    CollectOrderData(update.Message);
                                }
                                else
                                {
                                    RegularResponse(update.Message);
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.Error(ex);
                    PermanentValues.BotStatus = BotStatus.ReadyForRestart;
                    Logger.Info("Бот остановлен");
                }
            });

            return(task);
        }
Exemple #4
0
        /// <summary>
        /// Ответ бота на сообщение пользователя
        /// </summary>
        /// <param name="message">Сообщение пользователя</param>
        private void MessageResponse(Message message)
        {
            var command = message.Text.ToLower();
            var userId  = message.FromId.Value;

            if (!AllUserSessions.ContainsKey(userId))
            {
                AllUserSessions.Add(userId, new UserSession(userId, this));
            }
            if ((command == "таблица" || command == "принять" || command == "отклонить") &&
                !AdminIds.Contains(userId))
            {
                command = "unknown";
            }
            if (!CommandsPhrases.Commands.ContainsKey(command))
            {
                command = "unknown";
            }
            CommandsPhrases.CommandsActions[CommandsPhrases.Commands[command]].Invoke(this, message);
        }
Exemple #5
0
        /// <summary>
        /// Написать пользователю сообщение
        /// </summary>
        /// <param name="userId">Id получателя</param>
        /// <param name="message">Сообщение</param>
        /// <param name="keyboard">Клавиатура бота (null - сообщение без клавиатуры)</param>
        public void WriteToSelectedUser(long userId, string message, MessageKeyboard keyboard = null)
        {
            if (keyboard == null)
            {
                keyboard = MessageKeyboardSchemes.SetEmptyKeyboard;
            }
            var messageSendParams = new MessagesSendParams
            {
                UserId   = userId,
                Message  = message,
                RandomId = new Random().Next(999999),
                Keyboard = keyboard
            };

            vk.Messages.Send(messageSendParams);
            if (!AllUserSessions.ContainsKey(userId))
            {
                AllUserSessions.Add(userId, new UserSession(userId, this));
            }
            AllUserSessions[userId].PrevKeyboard   = keyboard;
            AllUserSessions[userId].LastBotMessage = messageSendParams;
        }