예제 #1
0
        private async Task <Db.Bot> InstallBot(Db.Bot Bot, Service service, ProxyServer ProxyServer, BotResponse Response)
        {
            if (Response.Ok && ProxyServer.CreateConfigFile(Bot.ReserveWebHookUrl.WebHookUrl.Dns.Name,
                                                            Bot.ReserveWebApp.WebApp.ToString(),
                                                            Convert.ToInt32(Bot.ReserveWebHookUrl.WebHookUrl.Port.PortNumber)))
            {
                //Если все хорошо вызываем метод SetWebhook
                await TelegramFunction.SetWebHook(Bot.Token,
                                                  Bot.ReserveWebHookUrl.WebHookUrl.Dns.PublicKeyPathOnMainServer(),
                                                  Bot.ReserveWebHookUrl.WebHookUrl.ToString());

                InsertServiceBotHistory(Bot, service);
                InsertWebAppHistory(Bot, Bot.ReserveWebApp.WebApp);
                InsertWebHookHistory(Bot, Bot.ReserveWebHookUrl.WebHookUrl);

                DbContext.Remove <ReserveWebApp>(Bot.ReserveWebApp);
                DbContext.Remove <ReserveWebHookUrl>(Bot.ReserveWebHookUrl);

                service.IsStart        = true;
                service.StartTimeStamp = DateTime.Now;
                service.EndTimeStamp   = DateTime.Now.Add(new TimeSpan(Convert.ToInt32(service.DayDuration), 0, 0, 0));
                Bot.WebAppId           = Bot.ReserveWebApp.WebAppId;
                Bot.WebHookUrlId       = Bot.ReserveWebHookUrl.WebHookUrlId;
                Bot.Launched           = true;
                Bot.Visable            = true;
                Bot.ProxyServeId       = ProxyServer.Id;
                Bot.ServiceId          = service.Id;

                DbContext.Update <Db.Bot>(Bot);

                DbContext.SaveChanges();

                Bot.SendMessageToOwner("Добро пожаловать. Нажмите сюда /admin");

                Bot.Service = service;
                return(Bot);
            }

            else // Ошибка во время установки бота на вебприложение
            {
                throw new Exception(Response.Result);
            }
        }