From 86aa430394a1735d53106268b6767fbc46e1da2c Mon Sep 17 00:00:00 2001 From: Mohammad Mahdi Mohammadi Date: Wed, 25 Sep 2024 23:06:18 +0330 Subject: [PATCH] Added additional logging and implemented post handling if the message is already approved --- Services/HandlePostAction.cs | 8 ++++++++ Services/ProcessPosts.cs | 24 ++++++++++++++++++------ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/Services/HandlePostAction.cs b/Services/HandlePostAction.cs index 291ec42..736c920 100755 --- a/Services/HandlePostAction.cs +++ b/Services/HandlePostAction.cs @@ -37,9 +37,17 @@ namespace mstdnCats.Services var mediaAttachment = post.MediaAttachments.FirstOrDefault(m => m.MediaId == mediaId); if (mediaAttachment != null) { + // Check if the media attachment is already approved + bool isAlreadyApproved = mediaAttachment.Approved; + if (isAlreadyApproved){ + await _bot.AnswerCallbackQueryAsync(callbackQuery.Id, "Media attachment is already approved.",true); + return; + } + mediaAttachment.Approved = true; bool updated = await _db.UpdateOneAsync(p => p.mstdnPostId == post.mstdnPostId, post); + if (updated) { diff --git a/Services/ProcessPosts.cs b/Services/ProcessPosts.cs index 3a334f6..841543f 100755 --- a/Services/ProcessPosts.cs +++ b/Services/ProcessPosts.cs @@ -11,6 +11,7 @@ namespace mstdnCats.Services { public static async Task> checkAndInsertPostsAsync(IDocumentCollection _db, TelegramBotClient _bot, List fetchedPosts, ILogger? logger) { + // Get existing posts var existingPosts = _db.AsQueryable().Select(x => x.mstdnPostId).ToArray(); logger?.LogInformation($"Recieved posts to proccess: {fetchedPosts.Count} - total existing posts: {existingPosts.Length}"); @@ -21,13 +22,24 @@ namespace mstdnCats.Services // Check if post already exists if (!existingPosts.Contains(post.mstdnPostId) && post.MediaAttachments.Count > 0) { - // Send approve or reject message to admin - foreach (var media in post.MediaAttachments) - { - await _bot.SendPhotoAsync(DotNetEnv.Env.GetString("ADMIN_NUMID"), media.PreviewUrl, caption: $" Mastodon ", parseMode: ParseMode.Html - , replyMarkup: new InlineKeyboardMarkup().AddButton("Approve", $"approve-{media.MediaId}").AddButton("Reject", $"reject-{media.MediaId}")); - } + // Send approve or reject message to admin + foreach (var media in post.MediaAttachments) + { + try + { + await _bot.SendPhotoAsync(DotNetEnv.Env.GetString("ADMIN_NUMID"), media.PreviewUrl, caption: $" Mastodon ", parseMode: ParseMode.Html + , replyMarkup: new InlineKeyboardMarkup().AddButton("Approve", $"approve-{media.MediaId}").AddButton("Reject", $"reject-{media.MediaId}")); + + } + catch (System.Exception ex) + { + logger?.LogError("Error while sending message to admin: " + ex.Message + " - Media URL: " + media.PreviewUrl); + } + + } + + // Insert post await _db.InsertOneAsync(post); newPosts++;