private InlineKeyboardMarkup getWeekDaysKeyboard(WeekDays wd)
        {
            List <IEnumerable <InlineKeyboardButton> > buttons = new List <IEnumerable <InlineKeyboardButton> >();

            List <InlineKeyboardButton> daysButtonsRow = new List <InlineKeyboardButton>();

            foreach (WeekDays day in Enum.GetValues(typeof(WeekDays)))
            {
                string dayName    = Enum.GetName(typeof(WeekDays), day);
                bool   dayChecked = (wd & day) > 0;
                string buttonText = (dayChecked ? "+" : "-") + dayName;
                daysButtonsRow.Add(new InlineKeyboardButton()
                {
                    Text = buttonText, CallbackData = dayName
                });
            }
            buttons.Add(daysButtonsRow);

            buttons.Add(new List <InlineKeyboardButton>()
            {
                new InlineKeyboardButton()
                {
                    Text = "Done", CallbackData = SelectDaysDone
                }
            });

            buttons.Add(TelegramHelper.GetHomeButton());

            return(new InlineKeyboardMarkup(buttons));
        }
Esempio n. 2
0
        public ActionResult OnPost()
        {
            base.Init();

            JsonResult result = new JsonResult("Error sending Telegram message.");

            MemoryStream stream = new MemoryStream();

            Request.Body.CopyTo(stream);
            stream.Position = 0;
            using (StreamReader reader = new StreamReader(stream)) {
                string requestBody = reader.ReadToEnd();
                if (requestBody.Length > 0)
                {
                    TestTelegramForm tf = JsonConvert.DeserializeObject <TestTelegramForm>(requestBody);
                    if (tf != null)
                    {
                        TelegramHelper.SendMessage(tf.Telegram_BotToken.Trim(), tf.Telegram_ChatId, "PT Magic Telegram test message.", tf.Telegram_SilentMode.Equals("on"), Log);

                        result = new JsonResult("Success");
                    }
                }
            }

            return(result);
        }
        public async Task ProcessUpdate(ITelegramBotClient client, Update update)
        {
            long chatId = update.GetChatId();

            if (this.state == State.WaitingForMessageText)
            {
                if (update.Type == UpdateType.Message)
                {
                    this.reminder.MessageText = update.Message.Text;
                    this.state = State.WaitingForTime;
                    await client.SendTextMessageAsync(chatId, $"Reminder text:\n{this.reminder.MessageText}\n\nEnter redinder time. Use 24-hour HHmm format.", replyMarkup : TelegramHelper.GetHomeButtonKeyboard());
                }
            }
            else if (this.state == State.WaitingForTime)
            {
                if (update.Type == UpdateType.Message)
                {
                    string   timeText = update.Message.Text;
                    TimeSpan time;
                    if (TelegramHelper.TryParseTime(timeText, out time))
                    {
                        this.reminder.DayTime = time;
                        this.state            = State.WaitingForWeekDays;
                        await client.SendTextMessageAsync(chatId, "Select reminder week days", replyMarkup : getWeekDaysKeyboard(this.reminder.WeekDays));
                    }
                    else
                    {
                        await client.SendTextMessageAsync(chatId, "Could not parse time. Use 24-hour HHmm format.", replyMarkup : TelegramHelper.GetHomeButtonKeyboard());
                    }
                }
            }
            else if (this.state == State.WaitingForWeekDays)
            {
                if (update.Type == UpdateType.CallbackQuery)
                {
                    if (update.CallbackQuery.Data == SelectDaysDone)
                    {
                        await client.AnswerCallbackQueryAsync(update.CallbackQuery.Id);

                        await client.EditMessageReplyMarkupAsync(chatId, update.CallbackQuery.Message.MessageId, TelegramHelper.GetHomeButtonKeyboard());

                        Program.RemindersRepository.StoreReminder(this.reminder);
                        this.Finished = true;
                        await client.SendDefaultMessageAsync(chatId);
                    }
                    else if (Enum.TryParse(typeof(WeekDays), update.CallbackQuery.Data, out object parsed))
                    {
                        await client.AnswerCallbackQueryAsync(update.CallbackQuery.Id);

                        WeekDays wdSelected = (WeekDays)parsed;
                        this.reminder.WeekDays ^= wdSelected;
                        await client.EditMessageReplyMarkupAsync(chatId, update.CallbackQuery.Message.MessageId, getWeekDaysKeyboard(this.reminder.WeekDays));
                    }
                }
            }
        }
Esempio n. 4
0
 public TelegramLoginProvider(
     TelegramHelper telegramHelper,
     TenantManager tenantManager,
     CoreBaseSettings coreBaseSettings,
     CoreSettings coreSettings,
     IConfiguration configuration,
     ICacheNotify <ConsumerCacheItem> cache,
     ConsumerFactory consumerFactory,
     string name, int order, Dictionary <string, string> props, Dictionary <string, string> additional = null)
     : base(tenantManager, coreBaseSettings, coreSettings, configuration, cache, consumerFactory, name, order, props, additional)
 {
     TelegramHelper = telegramHelper;
 }
Esempio n. 5
0
        public void Execute()
        {
            if (CheckMessagingWorks() == false)
            {
                throw new Exception("Watch previous error.");
            }

            while (true)
            {
                DebugHelper.LogInfo("Search termin.");

                var hasTermin = false;

                try
                {
                    hasTermin = _terminChecker.HasTermin();
                }
                catch (Exception ex)
                {
                    DebugHelper.LogError(ex.Message);
                }

                if (hasTermin)
                {
                    DebugHelper.LogSuccess("Termin finded!");
                    DebugHelper.LogInfo($"Sending info...");

                    if (!string.IsNullOrEmpty(_config.ToEmail))
                    {
                        EmailHelper.SendEmail(_emailConfig,
                                              _config.ToEmail,
                                              MessageText.TerminFindedSubject,
                                              MessageText.TerminFindedMessage(_config.TerminUri));
                    }

                    if (!string.IsNullOrEmpty(_config.ToTelegram))
                    {
                        TelegramHelper.SendMessage(_telegramConfig,
                                                   _config.ToTelegram,
                                                   MessageText.TerminFindedMessage(_config.TerminUri));
                    }
                }
                else
                {
                    DebugHelper.LogInfo("Termin not finded.");
                }

                Task.Delay(TimeSpan.FromMinutes(_config.PeriodInMinutes)).Wait();
            }
        }
Esempio n. 6
0
        private bool CheckMessagingWorks()
        {
            var isValid = true;

            if (string.IsNullOrEmpty(_config.ToEmail.Trim()) &&
                string.IsNullOrEmpty(_config.ToTelegram.Trim()))
            {
                DebugHelper.LogError("Not found email or telegram info.\n" +
                                     "Please, input needed information in appSettings.json file.");

                isValid = false;
            }

            if (!string.IsNullOrEmpty(_config.ToEmail))
            {
                var emailWorks = EmailHelper.SendEmail(_emailConfig,
                                                       _config.ToEmail,
                                                       MessageText.TestMessageSubject,
                                                       MessageText.TestMailMessage);

                if (emailWorks == false)
                {
                    DebugHelper.LogError($"Failed to send test message to email: {_config.ToEmail}.");

                    isValid = false;
                }
            }

            if (!string.IsNullOrEmpty(_config.ToTelegram))
            {
                var telegaWorks = TelegramHelper.SendMessage(_telegramConfig,
                                                             _config.ToTelegram,
                                                             MessageText.TestTelegramMessage);

                if (telegaWorks == false)
                {
                    DebugHelper.LogError($"Failed to send test message to telegram: {_config.ToTelegram}.");

                    isValid = false;
                }
            }

            return(isValid);
        }
        public async Task Initialize(ITelegramBotClient client, Update update)
        {
            long chatId = update.GetChatId();
            List <IEnumerable <InlineKeyboardButton> > buttons = new List <IEnumerable <InlineKeyboardButton> >();

            Repository.Model.Chat chat;
            if (Program.RemindersRepository.TryGetChat(chatId, out chat))
            {
                foreach (Reminder reminder in chat.Reminders.OrderBy(r => r.DayTime))
                {
                    buttons.Add(new List <InlineKeyboardButton>()
                    {
                        new InlineKeyboardButton()
                        {
                            Text = reminder.MessageText, CallbackData = reminder.ReminderId.ToString()
                        }
                    });
                }
            }
            buttons.Add(TelegramHelper.GetHomeButton());
            await client.SendTextMessageAsync(chatId, "Select reminder to remove", replyMarkup : new InlineKeyboardMarkup(buttons));
        }
Esempio n. 8
0
 public async Task ProcessUpdate(ITelegramBotClient client, Update update)
 {
     if (update.Type == UpdateType.Message)
     {
         string   timeText = update.Message.Text;
         TimeSpan time;
         if (TelegramHelper.TryParseTime(timeText, out time))
         {
             long chatId  = update.Message.Chat.Id;
             int  minutes = Convert.ToInt32((time - update.Message.Date.TimeOfDay).TotalMinutes / 15) * 15;
             minutes = minutes > 720 ? minutes - 1440 : minutes < -720 ? minutes + 1440 : minutes;
             TimeSpan timeZone = TimeSpan.FromMinutes(minutes);
             Program.RemindersRepository.SetTimeZone(chatId, timeZone);
             this.Finished = true;
             await client.SendDefaultMessageAsync(chatId);
         }
         else
         {
             await client.SendTextMessageAsync(update.GetChatId(), "Could not parse time. Use 24-hour HHmm format.");
         }
     }
 }
Esempio n. 9
0
 public TelegramSender(IOptionsMonitor <ILog> options, TelegramHelper telegramHelper)
 {
     log            = options.Get("ASC");
     TelegramHelper = telegramHelper;
 }
Esempio n. 10
0
        public async Task Initialize(ITelegramBotClient client, Update update)
        {
            long chatId = update.GetChatId();

            if (Program.RemindersRepository.ChatExists(chatId))
            {
                this.reminder        = new Reminder();
                this.reminder.ChatId = chatId;
                await client.SendTextMessageAsync(chatId, "Enter new reminder name", replyMarkup : TelegramHelper.GetHomeButtonKeyboard());
            }
        }
        public async Task ProcessUpdate(ITelegramBotClient client, Update update)
        {
            if (update.Type == UpdateType.CallbackQuery)
            {
                long reminderId;
                if (long.TryParse(update.CallbackQuery.Data, out reminderId))
                {
                    await client.AnswerCallbackQueryAsync(update.CallbackQuery.Id);

                    long chatId = update.CallbackQuery.Message.Chat.Id;
                    await client.EditMessageReplyMarkupAsync(chatId, update.CallbackQuery.Message.MessageId, TelegramHelper.GetHomeButtonKeyboard());

                    Program.RemindersRepository.RemoveReminder(chatId, reminderId);
                    this.Finished = true;
                    await client.SendDefaultMessageAsync(chatId);
                }
            }
        }
        private void Menu_Callbacks(object sender, CallbackQueryEventArgs e)
        {
            Task.Run(() =>
            {
                string callbackData           = e.CallbackQuery.Data;
                string[] callbackDataSplitted = callbackData.Split(" ");

                var rssUser = _userService.Get(x => x.TelegramId == e.CallbackQuery.From.Id);

                if (callbackData == TelegramBotCommands.CALLBACK_SUBSCRIBE)
                {
                    //will be rearanged with mongodb aggregation in order to query one time.
                    var userRssList       = _userRssService.GetList(x => x.UserId == rssUser.Id);
                    var userGroupCount    = _telegramGroupService.GetCollection().Count(x => x.UserId == rssUser.Id);
                    var userSubscribeList = _userSubscribeService.GetList(x => x.UserId == rssUser.Id);

                    userRssList = userRssList.Where(x => (userSubscribeList.Count(y => y.RssId == x.Id) < userGroupCount)).ToList();

                    var customRssMenu = userRssList.ToMenu(TelegramBotCommands.KEY_RSS_SUBSCRIBE);

                    _telegramBotClient.EditMessageTextAsync(e.CallbackQuery.From.Id, e.CallbackQuery.Message.MessageId, TelegramBotCommands.SUBSCRIBE_INFORMATION,
                                                            replyMarkup: customRssMenu);
                }
                else if (callbackData == TelegramBotCommands.CALLBACK_UNSUBSCRIBE)
                {
                    //will be rearanged with mongodb aggregation in order to query one time.
                    var userRssList       = _userRssService.GetList(x => x.UserId == rssUser.Id);
                    var userSubscribeList = _userSubscribeService.GetList(x => x.UserId == rssUser.Id);

                    userRssList = userRssList.Where(x => userSubscribeList.Any(y => y.RssId == x.Id)).ToList();

                    var customRssMenu = userRssList.ToMenu(TelegramBotCommands.KEY_RSS_UNSUBSCRIBE);

                    _telegramBotClient.EditMessageTextAsync(e.CallbackQuery.From.Id, e.CallbackQuery.Message.MessageId, TelegramBotCommands.UNSUBSCRIBE_INFORMATION,
                                                            replyMarkup: customRssMenu);
                }
                else if (callbackData == TelegramBotCommands.CALLBACK_HOME)
                {
                    _telegramBotClient.SendStartMenu(e.CallbackQuery.From.Id, e.CallbackQuery.Message.MessageId);
                }
                else if (callbackDataSplitted.CallbackIsEqualTo(TelegramBotCommands.KEY_RSS_SUBSCRIBE))
                {
                    //will be rearanged with mongodb aggregation in order to query one time.
                    var userGroupList     = _telegramGroupService.GetList(x => x.UserId == rssUser.Id);
                    var userSubscribeList = _userSubscribeService.GetList(x => x.UserId == rssUser.Id);
                    string rssId          = callbackData.RemoveFirstChar().RemoveFirstChar();

                    userGroupList = userGroupList.Where(x => !userSubscribeList.Any(y => y.GroupId == x.Id && y.RssId == rssId)).ToList();

                    var customGroupMenu = userGroupList.ToMenu(string.Concat(TelegramBotCommands.KEY_RSS_SUBSCRIBE_GROUP, callbackData.RemoveFirstChar()));

                    _telegramBotClient.EditMessageTextAsync(e.CallbackQuery.From.Id, e.CallbackQuery.Message.MessageId, TelegramBotCommands.SUBSCRIBE_GROUP_INFORMATION,
                                                            replyMarkup: customGroupMenu, parseMode: ParseMode.Html);
                }
                else if (callbackDataSplitted.CallbackIsEqualTo(TelegramBotCommands.KEY_RSS_UNSUBSCRIBE))
                {
                    //will be rearanged with mongodb aggregation in order to query one time.
                    var userGroupList     = _telegramGroupService.GetList(x => x.UserId == rssUser.Id);
                    var userSubscribeList = _userSubscribeService.GetList(x => x.UserId == rssUser.Id);
                    string rssId          = callbackData.RemoveFirstChar().RemoveFirstChar();

                    userGroupList = userGroupList.Where(x => userSubscribeList.Any(y => y.GroupId == x.Id && y.RssId == rssId)).ToList();

                    var customGroupMenu = userGroupList.ToMenu(string.Concat(TelegramBotCommands.KEY_RSS_UNSUBSCRIBE_GROUP, " ", callbackData.RemoveFirstChar()));

                    _telegramBotClient.EditMessageTextAsync(e.CallbackQuery.From.Id, e.CallbackQuery.Message.MessageId, TelegramBotCommands.UNSUBSCRIBE_GROUP_INFORMATION,
                                                            replyMarkup: customGroupMenu);
                }
                else if (callbackDataSplitted.CallbackIsEqualTo(TelegramBotCommands.KEY_RSS_SUBSCRIBE_GROUP))
                {
                    string[] Ids = callbackData.RemoveFirstChar().Split(" ", StringSplitOptions.RemoveEmptyEntries);
                    //Index 0: RSS
                    //Index 1: GROUP
                    _userSubscribeService.Save(new dal.entities.UserSubscribe
                    {
                        UserId  = rssUser.Id,
                        GroupId = Ids[1],
                        RssId   = Ids[0],
                    });

                    _telegramBotClient.EditMessageTextAsync(e.CallbackQuery.From.Id, e.CallbackQuery.Message.MessageId, TelegramBotCommands.USER_SUBSCRIBE_INFORMATION
                                                            , replyMarkup: TelegramHelper.CreateMenu(TelegramMenu.BUTTONS_SUBSCRIBE_UNSUBSCRIBE));
                }
                else if (callbackDataSplitted.CallbackIsEqualTo(TelegramBotCommands.KEY_RSS_UNSUBSCRIBE_GROUP))
                {
                    string[] Ids = callbackData.RemoveFirstChar().Split(" ", StringSplitOptions.RemoveEmptyEntries);
                    //Index 0: RSS
                    //Index 1: GROUP
                    _userSubscribeService.Delete(x => x.RssId == Ids[0] && x.UserId == rssUser.Id && x.GroupId == Ids[1]);
                    _telegramBotClient.EditMessageTextAsync(e.CallbackQuery.From.Id, e.CallbackQuery.Message.MessageId, TelegramBotCommands.USER_UNSUBSCRIBE_INFORMATION
                                                            , replyMarkup: TelegramHelper.CreateMenu(TelegramMenu.BUTTONS_SUBSCRIBE_UNSUBSCRIBE));
                }
            });
        }
Esempio n. 13
0
 public async Task Initialize(ITelegramBotClient client, Update update)
 {
     await client.SendTextMessageAsync(update.GetChatId(),
                                       "Enter your current local time to detect your timezone. Use 24-hour HHmm format.",
                                       replyMarkup : TelegramHelper.GetHomeButtonKeyboard());
 }