public override async Task Execute(ModelContainer db, TelegramBotService botService, Message message)
        {
            var chatId = message.Chat.Id;

            var alertTypes        = Enum.GetValues(typeof(AlertType)).Cast <AlertType>().ToList();
            var alertTypesStrings = new List <string>();

            foreach (var alertType in alertTypes)
            {
                alertTypesStrings.Add(Extensions.GetEnumDescription(alertType));
            }

            var keyboard = new List <List <KeyboardButton> >();

            foreach (string str in alertTypesStrings)
            {
                keyboard.Add(new List <KeyboardButton>
                {
                    new KeyboardButton()
                    {
                        Text = str
                    }
                });
            }

            var markup = new ReplyKeyboardMarkup()
            {
                Keyboard        = keyboard,
                ResizeKeyboard  = true,
                OneTimeKeyboard = true
            };

            await botService.SendTextMessageAsync(chatId, "Выберите тип уведомлений который хотите настроить.", replyMarkup : markup);
        }
Esempio n. 2
0
        public override async Task Execute(ModelContainer db, TelegramBotService client, Message message)
        {
            var chatId   = message.Chat.Id;
            var text     = message.Text;
            int interval = 0;
            var chat     = db.TelegramChats.FirstOrDefault(x => x.ChatId == chatId);

            if (chat == null)
            {
                await client.SendTextMessageAsync(chatId, "Вы не подписаны на уведомления!");
            }

            switch (text)
            {
            case "\xD83D\xDD50 5 минут": interval = 5 * 60; break;

            case "\xD83D\xDD51 10 минут": interval = 10 * 60; break;

            case "\xD83D\xDD52 15 минут": interval = 15 * 60; break;

            case "\xD83D\xDD55 30 минут": interval = 30 * 60; break;
            }

            var telegramChatSetting = db.TelegramChatSettings.FirstOrDefault(x => x.TelegramChatId == chat.Id);

            if (telegramChatSetting == null)
            {
                await client.SendTextMessageAsync(chatId, "Вы не подписаны на уведомления!");

                return;
            }
            await client.SetInterval(db, chat, telegramChatSetting.Type, interval);

            var           carTypes   = Enum.GetValues(typeof(CarType)).Cast <CarType>().ToList();
            List <string> stringList = new List <string>();

            foreach (var carType in carTypes)
            {
                stringList.Add(Extensions.GetEnumDescription(carType));
            }

            var keyboard           = new List <IEnumerable <KeyboardButton> >();
            var keyboardButtonList = new List <KeyboardButton>();

            foreach (string str in stringList)
            {
                keyboardButtonList.Add(new KeyboardButton {
                    Text = str
                });
            }
            keyboard.Add(keyboardButtonList);

            var markup = new ReplyKeyboardMarkup {
                ResizeKeyboard = true, OneTimeKeyboard = true, Keyboard = keyboard
            };

            await client.SendTextMessageAsync(chatId, "Интервал уведомлении установлено! " + Environment.NewLine + Environment.NewLine +
                                              "Выберите тип машин", replyMarkup : markup);
        }
        public override async Task Execute(ModelContainer db, TelegramBotService client, Message message)
        {
            var chatId = message.Chat.Id;
            var text   = message.Text;
            var chat   = db.TelegramChats.FirstOrDefault(x => x.ChatId == chatId);

            if (chat == null)
            {
                await client.SendTextMessageAsync(chatId, "Вы не подписаны на уведомления!");
            }

            var type = new AlertType();

            switch (text)
            {
            case "Нарушение скоростного режима":
                type = AlertType.SpeedViolation;
                break;

            case "Работа без плана":
                type = AlertType.NoAssignment;
                break;

            case "Длинные остановки":
                type = AlertType.Stop;
                break;

            case "Аудит GPS Провайдера":
                type = AlertType.GpsProviderAudit;
                break;
            }

            if (await client.CreateChatSettings(db, chat, type))
            {
                await client.SendTextMessageAsync(chatId, "Вы не подписаны на уведомления!");
            }

            var keyboard = new List <List <KeyboardButton> >
            {
                new List <KeyboardButton> {
                    new KeyboardButton("\xD83D\xDD50 5 минут")
                },
                new List <KeyboardButton> {
                    new KeyboardButton("\xD83D\xDD51 10 минут")
                },
                new List <KeyboardButton> {
                    new KeyboardButton("\xD83D\xDD52 15 минут")
                },
                new List <KeyboardButton> {
                    new KeyboardButton("\xD83D\xDD55 30 минут")
                },
            };
            var markup = new ReplyKeyboardMarkup {
                ResizeKeyboard = true, OneTimeKeyboard = true, Keyboard = keyboard
            };

            await client.SendTextMessageAsync(chatId, "Тип уведомлении установлено! Выберите интервал.",
                                              replyMarkup : markup);
        }
Esempio n. 4
0
 public Task ProcessCommand(Message message, string arguments, TelegramBotService telegramBotService)
 {
     return(telegramBotService.SendTextMessageAsync(message.Chat.Id,
                                                    "Ощущение, по определению В. И. Ленина, «есть превращение энрегии внешнего раздражения в факт сознания». " +
                                                    "Таким образом, источник звука, звуковые волны и работа слухового аппарата существуют объективно.",
                                                    replyToMessageId: message.MessageId,
                                                    parseMode: ParseMode.Markdown));
 }
Esempio n. 5
0
        public MessageController(ApplicationContext context, EventLoggerService eventLogger, TelegramBotService telegramBot,
                                 TelegramMarkupsService markups)
        {
            _eventLogger = eventLogger;
            _context     = context;
            _telegramBot = telegramBot;
            _markups     = markups;

            _eventLogger.AddClass <MessageController>();
            _eventLogger.LogDebug("Initialization MessageController");
        }
Esempio n. 6
0
        public TelegramWorker(TelegramBotService bot,
                              IBackgroundQueue <TelegramMessage> incomingQueue,
                              IBackgroundQueue <TelegramReplyMessage> outgoingQueue,
                              ILogger <TelegramWorker> logger)
        {
            _bot                  = bot;
            _bot.OnMessage       += BotOnMessage;
            _bot.OnMessageEdited += BotOnMessage;

            _incomingQueue = incomingQueue;
            _outgoingQueue = outgoingQueue;
            _logger        = logger;
        }
Esempio n. 7
0
        public override async Task Execute(ModelContainer db, TelegramBotService botService, Message message)
        {
            var chatId      = message.Chat.Id;
            var phoneNumber = message.Contact.PhoneNumber;
            var repMsg      = "Вы уже подписаны";

            if (await botService.RegisterChat(db, chatId, phoneNumber))
            {
                repMsg = "Поздравляем! Вы подписались";
            }

            await botService.SendTextMessageAsync(chatId, repMsg);
        }
        public override async Task Execute(ModelContainer db, TelegramBotService client, Message message)
        {
            var chatId = message.Chat.Id;
            var text   = message.Text;
            var chat   = db.TelegramChats.FirstOrDefault(x => x.ChatId == chatId);

            if (chat == null)
            {
                await client.SendTextMessageAsync(chatId, "Вы не подписаны на уведомления!");

                return;
            }
            var carType = new CarType();

            switch (text)
            {
            case "Грузовой автомобиль": carType = CarType.Truck; break;

            case "Жатка самоходная": carType = CarType.ZhatkaSamokhodnaya; break;

            case "Комбайн": carType = CarType.Combine; break;

            case "Легковой автомобиль": carType = CarType.PassengerCar; break;

            case "Опрыскиватель": carType = CarType.Sprayer; break;

            case "Топливозаправщик": carType = CarType.Refueller; break;

            case "Трактор": carType = CarType.Tractor; break;
            }
            var telegramChatSetting = db.TelegramChatSettings.FirstOrDefault(x => x.TelegramChatId == chat.Id);

            if (telegramChatSetting == null)
            {
                await client.SendTextMessageAsync(chatId, "Вы не подписаны на уведомления!");

                return;
            }
            await client.SetCarType(db, chat, telegramChatSetting.Type, carType);

            var cars = db.Cars
                       .Where(x => x.CarType == carType)
                       .ToDictionary(x => x.Id, y => y.Name);

            var keyboard = Extensions.GetInlineKeyboard(cars, 0, null);
            var markup   = new InlineKeyboardMarkup(keyboard);

            await client.SendTextMessageAsync(chatId, "Тип машин выбрано! Выберите машины", replyMarkup : markup);
        }
        public CommandsCollection(IEventsApiClient apiClient, TelegramBotService telegramService)
        {
            commands = new Dictionary <string, ICommand>();
            var types = typeof(Startup).Assembly.GetTypes()
                        .Where(type => typeof(ICommand).IsAssignableFrom(type) && !type.IsAbstract && type.IsClass);

            foreach (var type in types)
            {
                var instance = (ICommand)Activator.CreateInstance(type, apiClient, telegramService);

                var name = instance.GetType().GetProperty("CommandName").GetValue(instance).ToString();

                commands.TryAdd(name, instance);
            }
        }
Esempio n. 10
0
        public void Constructor_should_create_client()
        {
            var fakeOptions = new Mock <IOptions <TelegramBotConfiguration> >();
            var fakeConfig  = new TelegramBotConfiguration
            {
                BotToken = "1234567:4TT8bAc8GHUspu3ERYn-KGcvsvGB9u_n4ddy"
            };

            fakeOptions.SetupGet(x => x.Value).Returns(fakeConfig);


            var service = new TelegramBotService(fakeOptions.Object);

            service.Client.Should().NotBeNull();
        }
Esempio n. 11
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            //inicia o Bot do telegram:
            TelegramBotService.Startup();

            // configure strongly typed settings objects
            var appSettingsSection = Configuration.GetSection("AppSettings");

            services.Configure <AppSettings>(appSettingsSection);

            // configure jwt authentication
            var appSettings = appSettingsSection.Get <AppSettings>();
            var key         = Encoding.ASCII.GetBytes(appSettings.Secret);

            services.AddAuthentication(x =>
            {
                x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                x.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(x =>
            {
                x.RequireHttpsMetadata      = false;
                x.SaveToken                 = true;
                x.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey         = new SymmetricSecurityKey(key),
                    ValidateIssuer           = false,
                    ValidateAudience         = false
                };
            });

            // configure DI for application services
            services.AddScoped <IUsuarioService, UsuarioService>();

            // Ativa o uso do token como forma de autorizar o acesso
            // a recursos deste projeto
            services.AddAuthorization(auth =>
            {
                auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
                               .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
                               .RequireAuthenticatedUser().Build());
            });

            services.AddMvc();
        }
        public async Task <OkResult> Post([FromBody] Update update)
        {
            MessageController  messageController = this;
            ModelContainer     db     = new ModelContainer();
            TelegramBotService client = await Bot.Get();

            try
            {
                await client.ProcessCmd(db, update);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex);
                await client.SendTextMessageAsync(update.Message.Chat.Id, ex.Message);
            }
            return(messageController.Ok());
        }
        public Task ProcessCommand(Message message, string arguments, TelegramBotService telegramBotService)
        {
            if (string.IsNullOrWhiteSpace(arguments))
            {
                return(telegramBotService.SendTextMessageAsync(message.Chat.Id, Resources.ScaleCommand_Hints,
                                                               replyToMessageId: message.MessageId,
                                                               parseMode: ParseMode.Markdown));
            }

            var key = arguments.Replace(" ", string.Empty).Replace("w", "2").Replace("h", "1");

            var scales = _scales.IanringScalesByStepsCyclic.Where(k => k.Key.Contains(key)).ToArray();

            if (scales.Length == 0)
            {
                return(telegramBotService.SendTextMessageAsync(message.Chat.Id, Resources.NoScalesFound,
                                                               replyToMessageId: message.MessageId,
                                                               parseMode: ParseMode.Markdown));
            }

            var builder = new StringBuilder();

            var topScales = scales.OrderByDescending(s => s.Value.Names.Sum(n => n.Length)).Take(5);

            foreach (var scale in topScales)
            {
                var name = string.Join(", ", scale.Value.Names);

                if (string.IsNullOrWhiteSpace(name))
                {
                    name = Resources.UntitledScale;
                }

                builder.AppendLine($"{scale.Key} : *{name}*");
            }

            if (scales.Length > 5)
            {
                builder.AppendLine("...");
            }

            return(telegramBotService.SendTextMessageAsync(message.Chat.Id, builder.ToString(),
                                                           replyToMessageId: message.MessageId,
                                                           parseMode: ParseMode.Markdown));
        }
Esempio n. 14
0
        public override async Task Execute(ModelContainer db, TelegramBotService botService, Message message)
        {
            var chatId    = message.Chat.Id;
            int messageId = message.MessageId;

            if (message.Chat.Type != ChatType.Private)
            {
                await botService.SendTextMessageAsync(chatId, "Only private chat is supported.", messageId);
            }
            var keyboard = new List <List <KeyboardButton> >
            {
                new List <KeyboardButton> {
                    new KeyboardButton("✉ Подписаться на уведомления")
                    {
                        RequestContact = true
                    }
                },
                new List <KeyboardButton> {
                    new KeyboardButton("⚙️ Настроить уведомления")
                },
                new List <KeyboardButton> {
                    new KeyboardButton("\xD83D\xDEAB Отписаться от уведомлений")
                }
            };
            var markup = new ReplyKeyboardMarkup {
                ResizeKeyboard = true, OneTimeKeyboard = true, Keyboard = keyboard
            };

            await botService.SendTextMessageAsync(
                chatId,
                $"Отправьте ваш номер ,чтобы подписаться на уведомления{Environment.NewLine}{Environment.NewLine}" +
                $"Алгоритм определения остановок следующий: Каждое утро в 9.00 Система Agrostream запрашивает информацию у провайдера, кто имел ПОСЛЕДНЮЮ остановку длительностью: свыше 10 минут, 30 минут, 1 час, 6 часов,12 часов, 24 часов. В последующем до 00.00, каждые 20 минут Система Agrostream уведомляет о длительности ПОСЛЕДНИХ остановок до 6 часов с момента получения последнего сигнала до момента запроса у провайдера. Если провайдер по каким либо причинам не передал данные по технике, в уведомление техника не попадет. Время обработки данных и отправки уведомления может достигать до 5 минут.",
                replyToMessageId : messageId,
                replyMarkup : markup
                );
        }
Esempio n. 15
0
 public EventChangesController(ILogger <EventChangesService> logger, TelegramBotService telegramBotService, IMapper mapper)
 {
     this.logger             = logger;
     this.telegramBotService = telegramBotService;
     this.mapper             = mapper;
 }
 public GetEventsCommand(IEventsApiClient apiClient, TelegramBotService telegramService)
 {
     this.apiClient       = apiClient;
     this.telegramService = telegramService;
 }
Esempio n. 17
0
 private static async Task AttachTelegramServiceAsync(IBot bot)
 {
     var teleService = new TelegramBotService(ConfigManager <TelegramBotConfig> .Instance);
     await bot.AttachAsync(teleService).ConfigureAwait(false);
 }
Esempio n. 18
0
 public BotMessageHandler(TelegramBotService botService, YoutubeDlService youtubeDlService)
 {
     _botService       = botService;
     _youtubeDlService = youtubeDlService;
 }
Esempio n. 19
0
 public abstract Task Execute(ModelContainer db, TelegramBotService botService, Message message);