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
                );
        }
    }