From d3d9ee6d8605a4851181ca789944c2482b3e4ef2 Mon Sep 17 00:00:00 2001 From: Ayrat Hudaygulov Date: Tue, 3 Oct 2023 21:29:21 +0100 Subject: [PATCH] less verbose happy path --- src/VahterBanBot/Bot.fs | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/VahterBanBot/Bot.fs b/src/VahterBanBot/Bot.fs index 28b9007..d948e53 100644 --- a/src/VahterBanBot/Bot.fs +++ b/src/VahterBanBot/Bot.fs @@ -75,23 +75,35 @@ let aggregateBanResultInLogMsg let vahterUserId = message.From.Id let vahterUsername = message.From.Username + let chatName = message.Chat.Username + let chatId = message.Chat.Id let targetUserId = message.ReplyToMessage.From.Id let targetUsername = message.ReplyToMessage.From.Username let logMsgBuilder = StringBuilder() - %logMsgBuilder.AppendLine($"Vahter {prependUsername vahterUsername}({vahterUserId}) banned {prependUsername targetUsername} ({targetUserId})") - %logMsgBuilder.AppendLine($"Deleted {deletedUserMessages} messages in chats:") + %logMsgBuilder.Append($"Vahter {prependUsername vahterUsername}({vahterUserId}) banned {prependUsername targetUsername} ({targetUserId}) in chat ${chatName}({chatId})") + + // we don't want to spam logs channel if all is good + let allChatsOk = banResults |> Array.forall Result.isOk + if allChatsOk then + %logMsgBuilder.AppendLine " in all chats" + logMsgBuilder.AppendLine $"Deleted {deletedUserMessages} messages" + |> string + else + + %logMsgBuilder.AppendLine "" + %logMsgBuilder.AppendLine $"Deleted {deletedUserMessages} messages in chats:" - (logMsgBuilder, banResults) - ||> Array.fold (fun (sb: StringBuilder) result -> - match result with - | Ok (chatUsername, chatId) -> - sb.AppendLine($"{prependUsername chatUsername} ({chatId}) - OK") - | Error (chatUsername, chatId, e) -> - logger.LogError($"Failed to ban user {prependUsername targetUsername} ({targetUserId}) in chat {prependUsername chatUsername} ({chatId})", e) - sb.AppendLine($"{prependUsername chatUsername} ({chatId}) - FAILED. {e.Message}") - ) - |> string + (logMsgBuilder, banResults) + ||> Array.fold (fun (sb: StringBuilder) result -> + match result with + | Ok (chatUsername, chatId) -> + sb.AppendLine($"{prependUsername chatUsername} ({chatId}) - OK") + | Error (chatUsername, chatId, e) -> + logger.LogError($"Failed to ban user {prependUsername targetUsername} ({targetUserId}) in chat {prependUsername chatUsername} ({chatId})", e) + sb.AppendLine($"{prependUsername chatUsername} ({chatId}) - FAILED. {e.Message}") + ) + |> string let onUpdate (botClient: ITelegramBotClient)