Reorganizing module and submodule folders

This commit is contained in:
Kwoth
2022-01-01 16:25:00 +01:00
parent 9b4eb21321
commit 9c590668df
69 changed files with 17 additions and 41 deletions

View File

@@ -1,6 +1,5 @@
#nullable disable
using NadekoBot.Common.TypeReaders.Models;
using NadekoBot.Modules.Administration.Common;
using NadekoBot.Modules.Administration.Services;
using NadekoBot.Services.Database.Models;

View File

@@ -1,7 +1,6 @@
#nullable disable
using Microsoft.EntityFrameworkCore;
using NadekoBot.Db;
using NadekoBot.Modules.Administration.Common;
using NadekoBot.Services.Database.Models;
using System.Threading.Channels;
@@ -25,7 +24,7 @@ public class ProtectionService : INService
private readonly DbService _db;
private readonly UserPunishService _punishService;
private readonly Channel<PunishQueueItem> PunishUserQueue =
private readonly Channel<PunishQueueItem> _punishUserQueue =
Channel.CreateUnbounded<PunishQueueItem>(new() { SingleReader = true, SingleWriter = false });
public ProtectionService(
@@ -68,7 +67,7 @@ public class ProtectionService : INService
{
while (true)
{
var item = await PunishUserQueue.Reader.ReadAsync();
var item = await _punishUserQueue.Reader.ReadAsync();
var muteTime = item.MuteTime;
var gu = item.User;
@@ -253,7 +252,7 @@ public class ProtectionService : INService
gus[0].Guild.Name);
foreach (var gu in gus)
await PunishUserQueue.Writer.WriteAsync(new()
await _punishUserQueue.Writer.WriteAsync(new()
{
Action = action,
Type = pt,

View File

@@ -0,0 +1,52 @@
#nullable disable
using NadekoBot.Services.Database.Models;
namespace NadekoBot.Modules.Administration;
public enum ProtectionType
{
Raiding,
Spamming,
Alting
}
public class AntiRaidStats
{
public AntiRaidSetting AntiRaidSettings { get; set; }
public int UsersCount { get; set; }
public ConcurrentHashSet<IGuildUser> RaidUsers { get; set; } = new();
}
public class AntiSpamStats
{
public AntiSpamSetting AntiSpamSettings { get; set; }
public ConcurrentDictionary<ulong, UserSpamStats> UserStats { get; set; } = new();
}
public class AntiAltStats
{
public PunishmentAction Action
=> _setting.Action;
public int ActionDurationMinutes
=> _setting.ActionDurationMinutes;
public ulong? RoleId
=> _setting.RoleId;
public TimeSpan MinAge
=> _setting.MinAge;
public int Counter
=> _counter;
private readonly AntiAltSetting _setting;
private int _counter;
public AntiAltStats(AntiAltSetting setting)
=> _setting = setting;
public void Increment()
=> Interlocked.Increment(ref _counter);
}

View File

@@ -1,7 +1,7 @@
#nullable disable
using NadekoBot.Services.Database.Models;
namespace NadekoBot.Modules.Administration.Common;
namespace NadekoBot.Modules.Administration;
public class PunishQueueItem
{

View File

@@ -0,0 +1,52 @@
#nullable disable
namespace NadekoBot.Modules.Administration;
public sealed class UserSpamStats : IDisposable
{
public int Count
=> timers.Count;
public string LastMessage { get; set; }
private ConcurrentQueue<Timer> timers;
private readonly object _applyLock = new();
public UserSpamStats(IUserMessage msg)
{
LastMessage = msg.Content.ToUpperInvariant();
timers = new();
ApplyNextMessage(msg);
}
public void ApplyNextMessage(IUserMessage message)
{
lock (_applyLock)
{
var upperMsg = message.Content.ToUpperInvariant();
if (upperMsg != LastMessage || (string.IsNullOrWhiteSpace(upperMsg) && message.Attachments.Any()))
{
LastMessage = upperMsg;
while (timers.TryDequeue(out var old))
old.Change(Timeout.Infinite, Timeout.Infinite);
}
var t = new Timer(_ =>
{
if (timers.TryDequeue(out var old))
old.Change(Timeout.Infinite, Timeout.Infinite);
},
null,
TimeSpan.FromMinutes(30),
TimeSpan.FromMinutes(30));
timers.Enqueue(t);
}
}
public void Dispose()
{
while (timers.TryDequeue(out var old))
old.Change(Timeout.Infinite, Timeout.Infinite);
}
}