示例#1
0
    public override async Task HandleAsync(
        IUpdateContext context,
        UpdateDelegate next,
        string[] args
        )
    {
        await _telegramService.AddUpdateContext(context);

        var message = _telegramService.MessageOrEdited;

        if (message.ReplyToMessage != null)
        {
            message = message.ReplyToMessage;
        }

        var userId   = message.From.Id;
        var nameLink = message.GetFromNameLink();

        if (await _telegramService.CheckFromAdmin(userId))
        {
            await _telegramService.SendTextMessageAsync($"{nameLink} sudah menjadi Admin");

            return;
        }

        var sendText = $"{nameLink} berhasil menjadi Admin";

        var promote = await _telegramService.PromoteChatMemberAsync(userId);

        if (!promote.IsSuccess)
        {
            var errorCode    = promote.ErrorCode;
            var errorMessage = promote.ErrorMessage;

            sendText = $"Promote {nameLink} gagal" +
                       $"\nPesan: {errorMessage}";
        }

        await _telegramService.SendTextMessageAsync(sendText);
    }
    public override async Task HandleAsync(
        IUpdateContext context,
        UpdateDelegate next,
        string[] args
        )
    {
        await _telegramService.AddUpdateContext(context);

        var message = _telegramService.Message;
        var userId  = message.From.Id;

        if (!await _telegramService.IsBeta())
        {
            return;
        }

        await _telegramService.SendTextMessageAsync("Sedang memeriksa persyaratan");

        if (_telegramService.IsPrivateChat)
        {
            await _telegramService.EditMessageTextAsync("Register Fed ES2 tidak dapat dilakukan di Private Chat.");

            return;
        }

        if (!await _telegramService.CheckFromAdmin())
        {
            await _telegramService.EditMessageTextAsync("Hanya admin yang dapat register ke Fed ES2.");

            return;
        }

        var memberCount = await _telegramService.GetMemberCount();

        if (memberCount < 197)
        {
            await _telegramService.EditMessageTextAsync("Jumlah member di Grup ini kurang dari persyaratan minimum.");

            return;
        }

        if (message.ReplyToMessage != null)
        {
            var repMsg = message.ReplyToMessage;
            if (repMsg.From.IsBot)
            {
                await _telegramService.EditMessageTextAsync("Tidak dapat meregister Bot menjadi admin ES2");

                return;
            }

            userId = message.ReplyToMessage.From.Id;
        }

        var adminItem = new GlobalBanAdminItem()
        {
            Username     = message.From.Username,
            UserId       = userId,
            PromotedBy   = message.From.Id,
            PromotedFrom = message.Chat.Id,
            CreatedAt    = DateTime.Now,
            IsBanned     = false
        };

        var isRegistered = await _globalBanService.IsGBanAdminAsync(userId);

        if (isRegistered)
        {
            await _telegramService.EditMessageTextAsync($"Sepertinya UserID {adminItem.UserId} sudah menjadi Admin Fed");

            return;
        }

        await _telegramService.EditMessageTextAsync("Sedang meregister ke GBan Admin");

        await _globalBanService.SaveAdminBan(adminItem);

        await _telegramService.EditMessageTextAsync("Selesai");
    }
    public static async Task AddGlobalBanUserAsync(this TelegramService telegramService)
    {
        long   userId;
        string reason;

        var message = telegramService.Message;

        var chatId     = telegramService.ChatId;
        var fromId     = telegramService.FromId;
        var partedText = telegramService.MessageTextParts;
        var param0     = partedText.ElementAtOrDefault(0) ?? "";
        var param1     = partedText.ElementAtOrDefault(1) ?? "";

        await telegramService.DeleteSenderMessageAsync();

        if (!telegramService.IsFromSudo)
        {
            return;
        }

        if (telegramService.ReplyToMessage != null)
        {
            var replyToMessage = telegramService.ReplyToMessage;
            userId = replyToMessage.From.Id;
            reason = message.Text;

            if (replyToMessage.ForwardFrom != null)
            {
                userId = replyToMessage.ForwardFrom.Id;
            }

            if (reason.IsNotNullOrEmpty())
            {
                reason = partedText.Skip(1).JoinStr(" ").Trim();
            }
        }
        else
        {
            if (param1.IsNullOrEmpty())
            {
                await telegramService.SendTextMessageAsync(
                    sendText : "Balas seseorang yang mau di ban",
                    scheduleDeleteAt : DateTime.UtcNow.AddMinutes(1),
                    includeSenderMessage : true
                    );

                return;
            }

            userId = param1.ToInt64();
            reason = message.Text;

            if (reason.IsNotNullOrEmpty())
            {
                reason = partedText.Skip(2).JoinStr(" ").Trim();
            }
        }

        Log.Information("Execute Global Ban");
        await telegramService.AppendTextAsync($"<b>Global Ban</b>", replyToMsgId : 0);

        await telegramService.AppendTextAsync($"Telegram UserId: <code>{userId}</code>");

        if (await telegramService.CheckFromAdmin(userId))
        {
            await telegramService.AppendTextAsync($"Tidak dapat melakukan Global Ban kepada Admin");

            return;
        }

        reason = reason.IsNullOrEmpty() ? "General SpamBot" : reason;

        var banData = new GlobalBanItem()
        {
            UserId     = userId,
            BannedBy   = fromId,
            BannedFrom = chatId,
            ReasonBan  = reason
        };

        var globalBanService = telegramService.GetRequiredService <GlobalBanService>();
        var eventLogService  = telegramService.GetRequiredService <EventLogService>();

        var isGlobalBanned = await globalBanService.IsExist(userId);

        if (isGlobalBanned)
        {
            await telegramService.AppendTextAsync(
                sendText : "Pengguna sudah di ban",
                scheduleDeleteAt : DateTime.UtcNow.AddMinutes(2),
                includeSenderMessage : true
                );

            return;
        }

        if (telegramService.ReplyToMessage?.ForwardFrom == null)
        {
            var messageId = telegramService.ReplyToMessage?.MessageId ?? -1;

            if (telegramService.ReplyToMessage == null)
            {
                messageId = -1;
            }
            else
            {
                await telegramService.KickMemberAsync(userId, untilDate : DateTime.Now.AddSeconds(30));// Kick and Unban after 8 hours
            }

            var messageLog = HtmlMessage.Empty
                             .TextBr("Global Ban di tambahkan baru")
                             .Bold("UserId: ").CodeBr(userId.ToString());

            await Task.WhenAll(
                eventLogService.SendEventLogAsync(
                    chatId: chatId,
                    message: message,
                    text: messageLog.ToString(),
                    forwardMessageId: messageId,
                    deleteForwardedMessage: true,
                    messageFlag: MessageFlag.GBan
                    )
                );
        }

        var save = await globalBanService.SaveBanAsync(banData);

        await telegramService.AppendTextAsync($"Alasan: {reason}");

        Log.Information("SaveBan: {Save}", save);

        await globalBanService.UpdateCache(userId);

        await telegramService.AppendTextAsync(
            sendText : "Pengguna berhasil di tambahkan",
            scheduleDeleteAt : DateTime.UtcNow.AddMinutes(2),
            includeSenderMessage : true
            );
    }