mirror of
https://github.com/Bubuni-Team/telegram-bot.git
synced 2026-07-31 00:29:24 +03:00
Migrate to database storage in UrlLimitations
This commit is contained in:
@@ -5,6 +5,7 @@ using BotFramework;
|
||||
using BotFramework.Attributes;
|
||||
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.Types;
|
||||
@@ -15,35 +16,34 @@ namespace Kruzya.TelegramBot.UrlLimitations
|
||||
public class MessageHandler : BotEventHandler
|
||||
{
|
||||
protected ILogger Logger;
|
||||
protected MemoryCache<ChatMember, UInt16> ChatMembersCache;
|
||||
protected readonly CoreContext dbCtx;
|
||||
|
||||
public MessageHandler(ILogger<MessageHandler> logger, MemoryCache<ChatMember, UInt16> chatMembersCache)
|
||||
public MessageHandler(ILogger<MessageHandler> logger, CoreContext coreContext)
|
||||
{
|
||||
Logger = logger;
|
||||
ChatMembersCache = chatMembersCache;
|
||||
dbCtx = coreContext;
|
||||
}
|
||||
|
||||
[TextMessage(InChat.Public)]
|
||||
public void OnMessageReceived()
|
||||
public async Task OnMessageReceived()
|
||||
{
|
||||
UInt16 messageCount;
|
||||
var chatMember = ChatMember.From(Chat.Id, From.Id);
|
||||
if (!ChatMembersCache.TryGetValue(chatMember, out messageCount))
|
||||
var option = await dbCtx.UserValues.FindOption(Chat.Id, From.Id, "urlLimitations.messagesAfterJoin");
|
||||
if (option == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var messageCount = option.GetValue<UInt16>();
|
||||
if (messageCount > 10)
|
||||
{
|
||||
ChatMembersCache.SetValue(chatMember, 0, 0);
|
||||
dbCtx.UserValues.Remove(option);
|
||||
return;
|
||||
}
|
||||
|
||||
messageCount++;
|
||||
ChatMembersCache.SetValue(chatMember, messageCount);
|
||||
option.SetValue(messageCount + 1);
|
||||
var message = RawUpdate.Message;
|
||||
if (message.Entities.Count(e => e.Type == MessageEntityType.Url || e.Type == MessageEntityType.TextLink) >
|
||||
0)
|
||||
0 || await message.HasUnknownMention(Bot))
|
||||
{
|
||||
var targetChat = new ChatId(Chat.Id);
|
||||
Task.WaitAll(new Task[] {
|
||||
|
||||
Reference in New Issue
Block a user