public override async Task HandleAsync( IUpdateContext context, UpdateDelegate next, string[] args ) { await _telegramService.AddUpdateContext(context); var fromNameLink = _telegramService.FromNameLink; var fromId = _telegramService.FromId; var chatId = _telegramService.ChatId; var afkReason = _telegramService.MessageOrEditedText.GetTextWithoutCmd(); if (_telegramService.CheckFromAnonymous() || _telegramService.CheckSenderChannel()) { await _telegramService.SendTextMessageAsync("Mode AFK dimatikan untuk Pengguna Anonymous"); return; } var settings = await _settingsService.GetSettingsByGroup(chatId); if (!settings.EnableAfkStatus) { await _telegramService.DeleteSenderMessageAsync(); return; } var data = new Dictionary <string, object>() { { "user_id", fromId }, { "chat_id", chatId }, { "is_afk", 1 }, { "afk_start", DateTime.Now }, { "afk_end", DateTime.Now } }; var sendText = $"{fromNameLink} Sedang afk."; if (afkReason.IsNotNullOrEmpty()) { data.Add("afk_reason", afkReason); sendText += $"\n<i>{afkReason}</i>"; } await _telegramService.SendTextMessageAsync(sendText); await _afkService.SaveAsync(data); await _afkService.UpdateAfkByIdCacheAsync(fromId); }
public static async Task <AntiSpamResult> AntiSpamCheckAsync(this TelegramService telegramService) { var fromId = telegramService.FromId; var chatId = telegramService.ChatId; var defaultResult = new AntiSpamResult { UserId = fromId, MessageResult = string.Empty, IsAnyBanned = false, IsEs2Banned = false, IsCasBanned = false, IsSpamWatched = false }; if (telegramService.IsPrivateChat || telegramService.MessageOrEdited == null || telegramService.CheckFromAnonymous() || telegramService.CheckSenderChannel()) { return(defaultResult); } if (await telegramService.CheckFromAdminOrAnonymous()) { return(defaultResult); } var message = telegramService.MessageOrEdited; var antiSpamResult = await telegramService.AntiSpamService.CheckSpam(chatId, fromId); if (antiSpamResult == null) { return(null); } var messageBan = antiSpamResult.MessageResult; if (!antiSpamResult.IsAnyBanned) { return(antiSpamResult); } await Task.WhenAll( telegramService.KickMemberAsync( userId: fromId, unban: false, untilDate: DateTime.Now.AddMinutes(1) ), telegramService.SendTextMessageAsync( sendText: messageBan, replyToMsgId: 0, disableWebPreview: true, scheduleDeleteAt: DateTime.UtcNow.AddDays(1), preventDuplicateSend: true, messageFlag: MessageFlag.GBan ), telegramService.EventLogService.SendEventLogAsync( text: messageBan, chatId: chatId, message: message, messageFlag: MessageFlag.GBan, forwardMessageId: message.MessageId, deleteForwardedMessage: true ) ); await telegramService.DeleteMessageManyAsync(); return(antiSpamResult); }