using System; using System.Linq; using System.Threading.Tasks; using BotFramework; using BotFramework.Attributes; using BotFramework.Enums; using BotFramework.Setup; using Kruzya.TelegramBot.Core.Cache; using Kruzya.TelegramBot.Core.Data; using Kruzya.TelegramBot.Core.Extensions; using Microsoft.Extensions.Logging; using Telegram.Bot; using Telegram.Bot.Types; using Telegram.Bot.Types.Enums; namespace Kruzya.TelegramBot.UrlLimitations { public class MessageHandler : BotEventHandler { protected ILogger Logger; protected readonly CoreContext dbCtx; public MessageHandler(ILogger logger, CoreContext coreContext) { Logger = logger; dbCtx = coreContext; } [Message(InChat.Public, MessageFlag.HasText)] public async Task OnMessageReceived() { var option = await dbCtx.UserValues.FindOption(Chat.Id, From.Id, "urlLimitations.messagesAfterJoin"); if (option == null) { return; } var messageCount = option.GetValue(); if (messageCount > 10) { dbCtx.UserValues.Remove(option); return; } option.SetValue(messageCount + 1); var message = RawUpdate.Message; if (message.Entities.Count(e => e.Type == MessageEntityType.Url || e.Type == MessageEntityType.TextLink) > 0 || await message.HasUnknownMention(Bot)) { var targetChat = new ChatId(Chat.Id); Task.WaitAll(new Task[] { Bot.BanChatMemberAsync(new ChatId(Chat.Id), From.Id, DateTime.Now.AddDays(1)), Bot.DeleteMessageAsync(targetChat, message.MessageId), Bot.SendTextMessageAsync(targetChat, $"Member {From.ToHtml()} has been banned.\nReason:
Spam suspicion
", ParseMode.Html) }); } } } }