public void SendShowsNotifications() { using (AppDbContext db = new AppDbContext()) { var showNotifications = db.ShowNotifications .Where(n => !n.Notified) .ToList(); if (showNotifications.Count == 0) { return; } Logger.Debug("SendShowsNotifications: Sending new notifications"); foreach (var notification in showNotifications) { string text = $"{notification.Show.Title} ({notification.Show.SiteType.Title}) {string.Format(SubscribeCommand.SubscribeCommandFormat, notification.ShowId)}\n{notification.Show.Description}"; try { telegramApi.SendMessage(notification.User.TelegramUserId, text); } catch (Exception e) { Logger.Error(e, "SendShowsNotifications: An error occurred while sending new notifications"); } notification.Notified = true; } Logger.Trace("SendShowsNotifications: Saving changes to database"); db.SaveChanges(); } }
public override void Execute() { using (AppDbContext db = new AppDbContext()) { Program.Logger.Debug($"{GetType().Name}: Searching user with TelegramId: {Message.From.Id} in database"); var user = db.GetUserByTelegramId(Message.From.Id); if (user == null) { user = new User { TelegramUserId = Message.From.Id, FirstName = Message.From.FirstName, LastName = Message.From.LastName, Username = Message.From.Username }; Program.Logger.Info($"{GetType().Name}: {user} is new User"); Program.Logger.Debug($"{GetType().Name}: Adding user {user} to database"); db.Users.Add(user); } else { Program.Logger.Debug($"{GetType().Name}: User {user} is already exist"); } Program.Logger.Debug($"{GetType().Name}: Subscribing {user} to all shows"); var subscriptions = user.Subscriptions.ToList(); foreach (Show show in db.Shows) { Subscription subscription = new Subscription { User = user, Show = show, SubscriptionDate = DateTime.Now }; if (subscriptions.Any(s => Equals(s.Show, show))) { continue; } db.Subscriptions.Add(subscription); } Program.Logger.Debug($"{GetType().Name}: Saving changes to database"); db.SaveChanges(); } Program.Logger.Debug($"{GetType().Name}: Sending response to {Message.From}"); try { TelegramApi.SendMessage(Message.From, "Вы, братишка, подписаны на все сериалы"); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while sending response to {Message.From}", e); } Status = true; }
static void Notify(string message) { Console.WriteLine(message); TelegramApi.SendMessage( Environment.GetEnvironmentVariable("TELEGRAM_KEY"), Environment.GetEnvironmentVariable("TELEGRAM_CHAT"), message ); }
private async void metroButton10_Click(object sender, EventArgs e) { if (_chatId == 0) { return; } metroButton10.Enabled = false; await TelegramApi.SendMessage(_chatId.ToString(), "Wenn du diese Nachricht erhälst hast du alles richtig Konfiguriert ;-)"); metroButton10.Enabled = true; }
private async void metroButton10_Click(object sender, EventArgs e) { if (String.IsNullOrWhiteSpace(metroTextBox9.Text)) { return; } metroButton10.Enabled = false; await TelegramApi.SendMessage(metroTextBox9.Text, "Wenn du diese Nachricht erhälst hast du alles richtig Konfiguriert ;-)"); metroButton10.Enabled = true; }
private void SendResponse(string response) { Program.Logger.Debug($"{GetType().Name}: Sending response to {Message.From}"); try { TelegramApi.SendMessage(Message.From, response); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while sending response to {Message.From}", e); } }
public override void Execute() { Program.Logger.Debug($"{GetType().Name}: Sending help message to {Message.From}"); try { TelegramApi.SendMessage(Message.From, string.Format(HelpTemplate, Message.From.FirstName)); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while sending help message to {Message.From}", e); } Status = true; }
public override void Execute() { Program.Logger.Debug($"{GetType().Name}: Sending message to {Message.From}"); try { TelegramApi.SendMessage(Message.From, "Пощади, братишка"); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while sending message to {Message.From}", e); } Status = true; }
private bool RequestShow(out string showTitle) { if (string.IsNullOrEmpty(Arguments)) { Program.Logger.Debug($"{GetType().Name}: Sending 'Enter show title' prompt"); try { TelegramApi.SendMessage(Message.From, "Введите название сериала"); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while sending prompt", e); } Program.Logger.Debug($"{GetType().Name}: Waiting for a message that contains show title"); try { showTitle = TelegramApi.WaitForMessage(Message.From).Text; } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while waiting for a message that contains show title", e); } } else { showTitle = Arguments; } using (AppDbContext db = new AppDbContext()) { Program.Logger.Debug($"{GetType().Name}: Searching show {showTitle} in database"); var shows = db.GetShowsByTitle(showTitle); if (shows == null || shows.Count == 0) { return(false); } var subscriptionCommands = string.Join("; ", shows.Select(s => $"{s.SiteType.Title}: {string.Format(SubscribeCommandFormat, s.Id)}")); TelegramApi.SendMessage(Message.From, subscriptionCommands); return(true); } }
protected void SendPages(List <string> pagesList) { try { Program.Logger.Debug($"{GetType().Name}: Sending shows list"); for (int i = 0; i < pagesList.Count; i++) { string page = pagesList[i]; if (i != pagesList.Count - 1) { page += "\n/next or /stop"; } TelegramApi.SendMessage(Message.From, page); if (i == pagesList.Count - 1) { break; } Message message; do { message = TelegramApi.WaitForMessage(Message.From); if (message?.Text != "/stop" && message?.Text != "/next") { TelegramApi.SendMessage(Message.From, "\n/next or /stop"); } }while (message?.Text != "/stop" && message?.Text != "/next"); if (message.Text == "/stop") { break; } } } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while sending shows list", e); } }
public override void Execute() { List <Show> userShows = null; using (var db = new AppDbContext()) { Program.Logger.Debug($"{GetType().Name}: Searching user with TelegramId: {Message.From.Id} in database"); var user = db.GetUserByTelegramId(Message.From.Id); if (user == null) { Program.Logger.Debug($"{GetType().Name}: User {Message.From} is not exists"); } else { Program.Logger.Debug($"{GetType().Name}: Retrieving user's subscriptions"); userShows = user.Subscriptions.Select(s => s.Show).ToList(); } if (userShows == null || userShows.Count == 0) { Program.Logger.Debug($"{GetType().Name}: Sending response to {Message.From}"); try { TelegramApi.SendMessage(Message.From, "Вы не подписаны ни на один сериал"); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while sending response to {Message.From}", e); } Status = true; } else { List <string> pages = GetPages(userShows.Select(s => $"- {s.Title} ({s.OriginalTitle}) {s.SiteType.Title}").ToList(), MaxPageSize); SendPages(pages); Status = true; } } }
public override void Execute() { Program.Logger.Debug($"{GetType().Name}: Sending help message to {Message.From}"); try { TelegramApi.SendMessage( Message.From, "Список команд: \n" + "/shows - вывести список всех сериалов \n" + "/subscribe - подписаться на сериал \n" + "/unsubscribe - отписаться от сериала \n" + "/unsubscribe_all - отписаться от всех сериалов \n" + "/help - справка"); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while sending help messge to {Message.From}", e); } Status = true; }
private void SetSetting(Settings settings, Message msg) { switch (msg.Text) { case WebUiUrlSetCommand: Program.Logger.Debug($"{GetType().Name}: {WebUiUrlSetCommand} command received"); settings.WebUiUrl = TelegramApi.WaitForMessage(Message.From).Text; break; case WebUiPasswordSetCommand: Program.Logger.Debug($"{GetType().Name}: {WebUiPasswordSetCommand} command received"); settings.WebUiPassword = TelegramApi.WaitForMessage(Message.From).Text; break; case SiteLoginSetCommand: Program.Logger.Debug($"{GetType().Name}: {SiteLoginSetCommand} command received"); settings.SiteLogin = TelegramApi.WaitForMessage(Message.From).Text; break; case SitePasswordSetCommand: Program.Logger.Debug($"{GetType().Name}: {SitePasswordSetCommand} command received"); settings.SitePassword = TelegramApi.WaitForMessage(Message.From).Text; break; case SaveSettingsCommand: Program.Logger.Debug($"{GetType().Name}: {SaveSettingsCommand} command received"); break; case CancelCommand: Program.Logger.Debug($"{GetType().Name}: {CancelCommand} command received"); break; default: Program.Logger.Debug($"{GetType().Name}: Unknown command received"); TelegramApi.SendMessage(Message.From, "Пощади, братишка"); break; } }
public static async Task DoRemindWhenPossible(string productid) { Database.OpenConnection(); var getReminderEntrys = new SQLiteCommand("SELECT * FROM Reminders INNER JOIN Products ON Products.ID = Reminders.ProductID WHERE Reminders.ProductID = @productid AND (Reminders.[Erinnerung Gesendet] IS NULL OR Reminders.[Erinnerung Gesendet] < @datetime)", Database.Connection); getReminderEntrys.Parameters.AddWithValue("@productid", productid); getReminderEntrys.Parameters.AddWithValue("@datetime", DateTime.Now.AddMinutes(-Settings.Get <int>("RemindResendAfterMinutes")).ToString("yyyy-MM-dd HH:mm:ss")); using (SQLiteDataReader remind = getReminderEntrys.ExecuteReader()) { List <string> remindsToSend = new List <string>(); while (remind.Read()) { Logger.Write("Erinnerungen gefunden für ProductID: " + productid + " mit dem Erinnerungspreis: " + remind["Preis"], LogLevel.Debug); List <string> conditions = new List <string>(); Convert.ToString(remind["Zustand"]).TrimEnd().Split(',') .ToList() .ForEach(item => { if (String.IsNullOrWhiteSpace(Convert.ToString(remind["Preis: " + item])) || Convert.ToDecimal(remind["Preis: " + item]) > Convert.ToDecimal(remind["Preis"])) { return; } remindsToSend.Add(item + ": " + Convert.ToString(remind["Preis: " + item])); conditions.Add(item); Logger.Write("Treffer zur Erinnerung hinzugefügt: " + item + ": " + Convert.ToString(remind["Preis: " + item]), LogLevel.Debug); }); if (remindsToSend.Any()) { /* Erstellt einen neuen Warenkorb * var catInfo = AmazonApi.CreateCart("DE", "B00YUIM2J0"); * if (catInfo?.Cart.PurchaseURL != null) * { * Debug.WriteLine(catInfo?.Cart.PurchaseURL); * } */ string shortUrl = Settings.Get <bool>("ShowOnlyDealConditions") ? await URLShortener.Generate(Amazon.MakeReferralLink(Convert.ToString(remind["Store"]), Convert.ToString(remind["ASIN / ISBN"]), conditions)) : null; shortUrl = shortUrl ?? Convert.ToString(remind["URL"]); string notificationText = remind["Name"] + "\n" + "Store: " + remind["Store"] + " - ASIN/ISBN: " + remind["ASIN / ISBN"] + "\n\n" + "Erinnerungs Preis: " + remind["Preis"] + "\n\n" + "Aktuelle Amazon Preise:\n"; remindsToSend.ForEach(i => notificationText += i + "\n"); notificationText += "\nLink: " + shortUrl; if (!String.IsNullOrWhiteSpace(Convert.ToString(remind["Telegram"]))) { await TelegramApi.SendMessage(Convert.ToString(remind["Telegram"]), notificationText); } if (!String.IsNullOrWhiteSpace(Convert.ToString(remind["Email"]))) { await Mail.NotificationSend(Convert.ToString(remind["Email"]), notificationText, Convert.ToString(remind["Name"])); } Database.OpenConnection(); SQLiteCommand updateRemind = new SQLiteCommand( "UPDATE Reminders SET [Erinnerung Gesendet] = @lastsend WHERE ID = @id", Database.Connection); updateRemind.Parameters.AddWithValue("@id", remind["ID"]); updateRemind.Parameters.AddWithValue("@lastsend", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); updateRemind.ExecuteNonQuery(); Display(); } } } }
public override void Execute() { using (AppDbContext db = new AppDbContext()) { Program.Logger.Debug($"{GetType().Name}: Retrieving notification with id: {NotificationId}"); var notification = db.GetNotificationById(NotificationId); if (notification == null) { Program.Logger.Debug($"{GetType().Name}: Notification with specified Id was not found"); Status = false; return; } Program.Logger.Debug($"{GetType().Name}: Retrieving settings of {notification.Subscription.User}"); var settings = db.GetSettingsByUser(notification.Subscription.User); if (settings == null) { Program.Logger.Debug($"{GetType().Name}: User's settings were not found"); Status = false; return; } ITorrentGetter torrentGetter = new LostFilmTorrentGetter(); List <TorrentDescription> torrents = null; Program.Logger.Debug($"{GetType().Name}: Retrieving torrents for {notification.Episode.Show} - {notification.Episode.Title}"); try { torrents = torrentGetter.GetEpisodeTorrents(notification.Episode, settings.SiteLogin, settings.SitePassword); } catch (Exception e) { Program.Logger.Error(e, $"An error occured while retrieving torrents for {notification.Episode.Show.Title} - {notification.Episode.Title}"); TelegramApi.SendMessage(Message.From, "(Не удалось получить список торрентов. Возможно указан неверный логин/пароль)"); Status = false; return; } Program.Logger.Debug($"{GetType().Name}: Number of torrents: {torrents?.Count() ?? 0}"); TorrentDescription torrent = null; if (torrents != null && torrents.Count() != 0) { Program.Logger.Debug($"{GetType().Name}: Retrieving torrent with required quality ({Quality})"); torrent = torrents.FirstOrDefault(t => t.Quality == Quality); } if (torrent == null) { Program.Logger.Debug($"{GetType().Name}: Torrent with required quality was not found"); Status = false; return; } Program.Logger.Debug($"{GetType().Name}: Creating new download task"); db.DownloadTasks.Add(new DownloadTask() { Episode = notification.Episode, User = notification.Subscription.User, TorrentUrl = torrent.TorrentUri.ToString() }); Program.Logger.Debug($"{GetType().Name}: Saving changes to database"); db.SaveChanges(); Status = true; } }
public override void Execute() { using (AppDbContext db = new AppDbContext()) { Program.Logger.Debug($"{GetType().Name}: Searching user's settings in database"); var settings = db.GetSettingsByUser(db.GetUserByTelegramId(Message.From.Id)); var text = GetMessageContent(settings); Program.Logger.Debug($"{GetType().Name}: Sending commands list"); try { TelegramApi.SendMessage(Message.From, text); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while sending commands list", e); } bool newSettings = false; if (settings == null) { Program.Logger.Debug($"{GetType().Name}: Creating new settings for {Message.From}"); newSettings = true; settings = new Settings { User = db.GetUserByTelegramId(Message.From.Id) }; } Message msg; do { Program.Logger.Debug($"{GetType().Name}: Waiting for a command"); try { msg = TelegramApi.WaitForMessage(Message.From); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while waiting for a command", e); } SetSetting(settings, msg); }while (msg.Text != SaveSettingsCommand && msg.Text != CancelCommand); if (msg.Text == SaveSettingsCommand) { Program.Logger.Debug($"{GetType().Name}: Saving changes to database"); if (newSettings) { db.Settings.Add(settings); } db.SaveChanges(); } else { Program.Logger.Debug($"{GetType().Name}: Exiting without saving changes to database"); } } Status = true; }
public override void Execute() { Show show; string showTitle = string.Empty; bool subscribeById = ShowId != null; if (ShowId == null) { bool showFound = RequestShow(out showTitle); if (!showFound) { SendShowList(showTitle, GetMessageSize()); } Status = true; return; } string response; Program.Logger.Info($"{GetType().Name}: {Message.From} is trying to subscribe to '{(subscribeById ? $"Id = {ShowId}" : showTitle)}'"); using (AppDbContext db = new AppDbContext()) { show = db.GetShowById(ShowId.Value); if (show == null) { Program.Logger.Info($"{GetType().Name}: Show '{(subscribeById ? $"Id = {ShowId}" : showTitle)}' was not found"); response = $"Сериал '{(subscribeById ? $"Id = {ShowId}" : showTitle)}' не найден"; Program.Logger.Debug($"{GetType().Name}: Sending response to {Message.From}"); try { TelegramApi.SendMessage(Message.From, response); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while sending response to {Message.From}", e); } Status = true; return; } Program.Logger.Debug($"{GetType().Name}: Searching user with TelegramId: {Message.From.Id} in database"); var user = db.GetUserByTelegramId(Message.From.Id); bool newUser = false; if (user == null) { user = new User { TelegramUserId = Message.From.Id, FirstName = Message.From.FirstName, LastName = Message.From.LastName, Username = Message.From.Username }; newUser = true; } Program.Logger.Debug($"{GetType().Name}: Checking for subscription existence"); var subscriptionExists = user.Subscriptions.Any(s => s.Show.Id == show.Id); if (subscriptionExists) { Program.Logger.Info($"{GetType().Name}: User {Message.From} is already subscribed to {show.OriginalTitle}"); response = $"Вы уже подписаны на сериал \"{show.Title}\" ({show.SiteType.Title})"; } else { Subscribe(db, user, show, newUser); response = $"Вы подписались на сериал \"{show.Title}\" ({show.SiteType.Title})"; } Program.Logger.Debug($"{GetType().Name}: Saving changes to database"); db.SaveChanges(); } Program.Logger.Debug($"{GetType().Name}: Sending response to {Message.From}"); try { TelegramApi.SendMessage(Message.From, response); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while sending response to {Message.From}", e); } Status = true; }
public override void Execute() { string response; using (var db = new AppDbContext()) { do { Program.Logger.Debug($"{GetType().Name}: Searching user with TelegramId: {Message.From.Id} in database"); var user = db.GetUserByTelegramId(Message.From.Id); if (user == null) { Program.Logger.Debug($"{GetType().Name}: User with TelegramId: {Message.From.Id} is not found"); response = "Вы не подписаны ни на один сериал"; break; } var subscriptions = user.Subscriptions; if (!subscriptions.Any()) { Program.Logger.Debug($"{GetType().Name}: {user} has no subscriptions"); response = "Вы не подписаны ни на один сериал"; break; } Program.Logger.Debug($"{GetType().Name}: Sending the confirmation message to {user}"); try { TelegramApi.SendMessage(Message.From, "Вы действительно хотите отписаться от всех сериалов?\n/yes /no"); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while sending the confirmation message to {user}", e); } Program.Logger.Debug($"{GetType().Name}: Waiting for a message that contains confirmation"); Message msg; try { msg = TelegramApi.WaitForMessage(Message.From); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while waiting for a message that contains confirmation", e); } if (msg.Text.ToLower() != "/yes") { Program.Logger.Debug($"{GetType().Name}: {user} cancel command"); Status = true; } Program.Logger.Debug($"{GetType().Name}: Deleting notifications for all subscriptions"); foreach (var subscription in subscriptions) { db.Notifications.RemoveRange(db.Notifications.Where(n => n.Subscription.Id == subscription.Id)); } Program.Logger.Debug($"{GetType().Name}: Deleting all subscriptions"); db.Subscriptions.RemoveRange(subscriptions); response = "Вы отписались от всех сериалов"; } while (false); Program.Logger.Debug($"{GetType().Name}: Saving changes to database"); db.SaveChanges(); } Program.Logger.Debug($"{GetType().Name}: Sending response to {Message.From}"); try { TelegramApi.SendMessage(Message.From, response); } catch (Exception e) { throw new Exception($"{GetType().Name}: An error occurred while sending response to {Message.From}", e); } Status = true; }