public async Task <int> SaveSubsAsync(ForceSubscription forceSubscription) { int affectedRows = 0; var chatId = forceSubscription.ChatId; var channelId = forceSubscription.ChannelId; await DB.Find <ForceSubscription>() .ManyAsync( subscription => subscription.ChatId == chatId && subscription.ChannelId == channelId ) .ContinueWith( async task => { affectedRows = task.Result.Count; if (task.Result.Count == 0) { await DB.InsertAsync <ForceSubscription>(forceSubscription); } } ); return(affectedRows); }
public static async Task AddForceSubsChannelAsync(this TelegramService telegramService) { if (!await telegramService.CheckFromAdminOrAnonymous()) { await telegramService.DeleteSenderMessageAsync(); return; } var fSubsService = telegramService.GetRequiredService <ForceSubsService>(); var chatService = telegramService.GetRequiredService <ChatService>(); var channelId = telegramService.GetCommandParamAt <long>(0); if (channelId == 0) { await telegramService.SendTextMessageAsync( sendText : "Silakan masukkan ID Channel yang ingin ditambahkan", scheduleDeleteAt : DateTime.UtcNow.AddMinutes(1), includeSenderMessage : true ); return; } await telegramService.AppendTextAsync("<b>Force Subscription</b>"); await telegramService.AppendTextAsync($"Channel ID: {channelId}"); try { await telegramService.AppendTextAsync("Sedang memeriksa.."); var chat = await chatService.GetChatAsync(channelId); if (chat.Type != ChatType.Channel) { await telegramService.AppendTextAsync("ID diatas bukan sebuah Channel", reappendText : true); return; } await telegramService.AppendTextAsync($"Title: {chat.Title}", reappendText : true); var fSubData = new ForceSubscription() { ChatId = telegramService.ChatId, UserId = telegramService.FromId, ChannelId = channelId, ChannelTitle = chat.Title, InviteLink = chat.InviteLink, }; var save = await fSubsService.SaveSubsAsync(fSubData); var saveMessage = save == 1 ? "Sudah disimpan" : "Berhasil disimpan"; await telegramService.AppendTextAsync( sendText : saveMessage, scheduleDeleteAt : DateTime.UtcNow.AddMinutes(1), includeSenderMessage : true ); } catch (Exception e) { var errorMessage = e.Message switch { {} a when a.Contains("not found") => $"Channel tidak ditemukan", _ => "Terjadi kesalahan ketika menyimpan data" }; await telegramService.AppendTextAsync( errorMessage, reappendText : true, scheduleDeleteAt : DateTime.UtcNow.AddMinutes(1), includeSenderMessage : true ); } }