using System; using System.Linq; using System.Threading.Tasks; using BotFramework; using BotFramework.Attributes; using BotFramework.Setup; using Kruzya.TelegramBot.Core.Cache; using Kruzya.TelegramBot.Core.Extensions; using Microsoft.Extensions.Logging; using Telegram.Bot.Types; using Telegram.Bot.Types.Enums; namespace Kruzya.TelegramBot.UrlLimitations { public class MessageHandler : BotEventHandler { protected ILogger Logger; protected MemoryCache ChatMembersCache; public MessageHandler(ILogger logger, MemoryCache chatMembersCache) { Logger = logger; ChatMembersCache = chatMembersCache; } [TextMessage(InChat.Public)] public void OnMessageReceived() { UInt16 messageCount; var chatMember = ChatMember.From(Chat.Id, From.Id); if (!ChatMembersCache.TryGetValue(chatMember, out messageCount)) { return; } if (messageCount > 10) { ChatMembersCache.SetValue(chatMember, 0, 0); return; } messageCount++; ChatMembersCache.SetValue(chatMember, messageCount); var message = RawUpdate.Message; if (message.Entities.Count(e => e.Type == MessageEntityType.Url || e.Type == MessageEntityType.TextLink) > 0) { var targetChat = new ChatId(Chat.Id); Task.WaitAll(new Task[] { Bot.KickChatMemberAsync(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) }); } } } }