Example #1
0
        public async Task CmdGetSettingsInPrivate()
        {
            var payload = $"start=settings_{ChatId}";

            var startSettings = await _botService.GetUrlStart(payload);

            var inlineKeyboard = new InlineKeyboardMarkup(
                new[]
            {
                new[]
                {
                    InlineKeyboardButton.WithUrl("Pengaturan", startSettings)
                }
            }
                );

            await SendMessageTextAsync("Tekan tombol di bawha ini untuk mengubah pengaturan", replyMarkup : inlineKeyboard);
        }
    public async Task AdminCheckerJobAsync(long chatId)
    {
        try
        {
            var sw = Stopwatch.StartNew();
            Log.Information("Starting check Admin in ChatID '{ChatId}'", chatId);

            var me = await _botClient.GetMeAsync();

            var isAdminChat = await this.IsAdminAsync(chatId, me.Id);

            if (isAdminChat)
            {
                await Task.Delay(5000);

                return;
            }

            Log.Debug("Doing leave chat from {ChatId}", chatId);

            var urlAddTo = await _botService.GetUrlStart("startgroup=new");

            var msgLeave = "Sepertinya saya bukan admin di grup ini, saya akan meninggalkan grup. Sampai jumpa!" +
                           "\n\nTerima kasih sudah menggunakan @MissZiziBot, silakan undang saya kembali jika diperlukan.";

            var inlineKeyboard = new InlineKeyboardMarkup
                                 (
                new[]
            {
                new[]
                {
                    InlineKeyboardButton.WithUrl("👥 Dukungan", "https://t.me/WinTenDev"),
                },
                new[]
                {
                    InlineKeyboardButton.WithUrl("âž• Tambahkan ke Grup", urlAddTo)
                }
            }
                                 );

            await _botClient.SendTextMessageAsync(
                chatId,
                msgLeave,
                ParseMode.Html,
                replyMarkup : inlineKeyboard
                );

            await _botClient.LeaveChatAsync(chatId);

            Log.Debug(
                "Checking Admin in ChatID '{ChatId}' job complete in {Elapsed}",
                chatId,
                sw.Elapsed
                );
            sw.Stop();

            await Task.Delay(5000);
        }
        catch (ApiRequestException requestException)
        {
            Log.Error(
                requestException,
                "Error when Check Admin on ChatID: '{ChatId}'",
                chatId
                );
            var setting = await _settingsService.GetSettingsByGroupCore(chatId);

            var exMessage = requestException.Message.ToLower();

            if (exMessage.IsContains("forbidden"))
            {
                var dateNow  = DateTime.UtcNow;
                var diffDays = (dateNow - setting.UpdatedAt).TotalDays;
                Log.Debug(
                    "Last activity days in '{ChatId}' is {DiffDays:N2} days",
                    chatId,
                    diffDays
                    );

                if (diffDays > AfterLeaveLimit)
                {
                    Log.Debug("This time is cleanup this chat!");
                    await _settingsService.DeleteSettings(chatId);
                }
            }
        }
        catch (Exception e)
        {
            Log.Error(
                e,
                "Error when Check Admin in ChatID: '{ChatId}'",
                chatId
                );
        }
    }