public static void AssingTicket(User user, Issue issue, Message message, string assignee, TelegramBot bot, Jira jiraConn)
        {
            int state = user.State - 1; //безумный костыль для того, чтобы вычислять статус, который нужно перевсети пользоваетля. Так получилось, что это 3 для 4 статуса, и 5 для 6 статуса.
            string keyboard = null;
            if (state == 3)
            {
                keyboard =
                    "{\"keyboard\": [[\"Проверь тикеты\"], [\"Кто сейчас дежурит?\"], [\"Помоги с дежурством\"], [\"Пока ничего\"]],\"resize_keyboard\":true,\"one_time_keyboard\":true}";
            }
            try
            {
                issue.Refresh();
                if (issue.Assignee == null & issue.Key.Value.Equals(user.TicketNumber))
                {
                    if (issue.Status.ToString() == "10050")
                    {
                        issue.WorkflowTransition("Распределить");
                    }

                    issue.Assignee = assignee;
                    issue.SaveChanges();

                    user.State = state;
                    user.TicketNumber = "";
                    bot.SendMessage(message.chat.id, "Готово.", keyboard);
                }
                else
                {
                    user.State = state;
                    user.TicketNumber = "";
                    bot.SendMessage(message.chat.id, "Тикет уже распределён", keyboard);
                }
            }
            catch (Exception ex)
            {
                using (var repository = new Repository<DutyBotDbContext>())
                {
                    var logReccord = new Log
                    {
                        Date = DateTime.Now,
                        MessageTipe = "error",
                        UserId = message.chat.id,
                        Operation = "AssingTicket",
                        Exception = ex.GetType() + ": " + ex.Message,
                        AddInfo = issue.Key.Value
                    };
                    repository.Create(logReccord);
                }

                user.State = 3;
                user.TicketNumber = "";
                bot.SendMessage(message.chat.id, "Что-то пошло не так.", "{\"keyboard\": [[\"Проверь тикеты\"], [\"Кто сейчас дежурит?\"], [\"Помоги с дежурством\"], [\"Пока ничего\"]],\"resize_keyboard\":true,\"one_time_keyboard\":true}");

            }
        }
Exemple #2
0
        private Parametr _botParam; //с каким ботом телеграмма работаем

        public void Start() //метод вызывается при старте службы
        {
            try
            {
                Sender.Send(
                    "https://api.telegram.org/bot179261100:AAGqaQ8Fum0xK8JQL0FE_N4LugS_MmO36zM/sendmessage?chat_id=38651047&text=" +
                    "Запущен сервис DutyBot");
                try
                {
                    using (var repository = new Repository<DutyBotDbContext>())
                    {
                        var logReccord = new Log
                        {
                            Date = DateTime.Now,
                            MessageTipe = "info",
                            UserId = 0,
                            Operation = "StartService",
                            Exception = "",
                            AddInfo = ""
                        };
                        repository.Create(logReccord);
                    }
                }
                catch (Exception ex)
                {
                    Thread.Sleep(30000); // еcли не доступна БД и не получается залогировать запуск, ждём 30 секунд и пробуем еще раз.
                    try
                    {
                        using (var repository = new Repository<DutyBotDbContext>())
                        {
                            var exReccord = new Log
                            {
                                Date = DateTime.Now,
                                MessageTipe = "error",
                                UserId = 0,
                                Operation = "StartService",
                                Exception = ex.GetType() + ": " + ex.Message,
                                AddInfo = ""
                            };
                            repository.Create(exReccord);
                            var logReccord = new Log
                            {
                                Date = DateTime.Now,
                                MessageTipe = "info",
                                UserId = 0,
                                Operation = "StartService2",
                                Exception = "",
                                AddInfo = ""
                            };
                            repository.Create(logReccord);
                        }
                    }
                    catch
                    {
                        Sender.Send(
                            "https://api.telegram.org/bot179261100:AAGqaQ8Fum0xK8JQL0FE_N4LugS_MmO36zM/sendmessage?chat_id=38651047&text=Произошла ошибка при запуске службы. Подождал 10 секунд, попробовал еще раз, но ошибка осталась: " +
                            ex);
                    }
                }

                using (var repository = new Repository<DutyBotDbContext>()) //инициализирую парамтры приложения
                {
                    _botParam = repository.Get<Parametr>(p => p.Name == "TelegramBot");
                    _jiraParam = repository.Get<Parametr>(p => p.Name == "jira");
                    _userLoginParam = repository.Get<Parametr>(p => p.Name == "dafaultuserlogin");
                    _userPasswordParam = repository.Get<Parametr>(p => p.Name == "dafaultuserpassword");
                    _filterParam = repository.Get<Parametr>(p => p.Name == "Filter");
                }
                _bot = new TelegramBot(_botParam.Value);
                BufferBlock<Message> queue = new BufferBlock<Message>();
                Task.WhenAll(ReadMessages(queue), ProcessMessages(queue), Checkjira(), queue.Completion); //запускаю задачи по считыванию и обработке сообщений из telegramm
            }
            catch (Exception ex)
            {
                Sender.Send(
                    "https://api.telegram.org/bot179261100:AAGqaQ8Fum0xK8JQL0FE_N4LugS_MmO36zM/sendmessage?chat_id=38651047&text=" +
                    ex.Message);
                using (var repository = new Repository<DutyBotDbContext>())
                {
                    var logReccord = new Log
                    {
                        Date = DateTime.Now,
                        MessageTipe = "fatal",
                        UserId = 0,
                        Operation = "StartService",
                        Exception = ex.GetType() + ": " + ex.Message,
                        AddInfo = ""
                    };
                    repository.Create(logReccord);
                }
            }
        }