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