Antispam can now take an extra parameter at the end which is the time of the mute. It will be ignored if punishment type isn't mute
This commit is contained in:
parent
fe3770270e
commit
03a86b0be9
1713
src/NadekoBot/Migrations/20170815222316_mute-time-antispam.Designer.cs
generated
Normal file
1713
src/NadekoBot/Migrations/20170815222316_mute-time-antispam.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,25 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
namespace NadekoBot.Migrations
|
||||||
|
{
|
||||||
|
public partial class mutetimeantispam : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<int>(
|
||||||
|
name: "MuteTime",
|
||||||
|
table: "AntiSpamSetting",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "MuteTime",
|
||||||
|
table: "AntiSpamSetting");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -70,6 +70,8 @@ namespace NadekoBot.Migrations
|
|||||||
|
|
||||||
b.Property<int>("MessageThreshold");
|
b.Property<int>("MessageThreshold");
|
||||||
|
|
||||||
|
b.Property<int>("MuteTime");
|
||||||
|
|
||||||
b.HasKey("Id");
|
b.HasKey("Id");
|
||||||
|
|
||||||
b.HasIndex("GuildConfigId")
|
b.HasIndex("GuildConfigId")
|
||||||
|
@ -33,9 +33,17 @@ namespace NadekoBot.Modules.Administration
|
|||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(ignoredString))
|
if (string.IsNullOrWhiteSpace(ignoredString))
|
||||||
ignoredString = "none";
|
ignoredString = "none";
|
||||||
|
|
||||||
|
string add = "";
|
||||||
|
if (stats.AntiSpamSettings.Action == PunishmentAction.Mute
|
||||||
|
&& stats.AntiSpamSettings.MuteTime > 0)
|
||||||
|
{
|
||||||
|
add = " (" + stats.AntiSpamSettings.MuteTime + "s)";
|
||||||
|
}
|
||||||
|
|
||||||
return GetText("spam_stats",
|
return GetText("spam_stats",
|
||||||
Format.Bold(stats.AntiSpamSettings.MessageThreshold.ToString()),
|
Format.Bold(stats.AntiSpamSettings.MessageThreshold.ToString()),
|
||||||
Format.Bold(stats.AntiSpamSettings.Action.ToString()),
|
Format.Bold(stats.AntiSpamSettings.Action.ToString() + add),
|
||||||
ignoredString);
|
ignoredString);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -162,6 +170,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
{
|
{
|
||||||
Action = action,
|
Action = action,
|
||||||
MessageThreshold = messageCount,
|
MessageThreshold = messageCount,
|
||||||
|
MuteTime = time,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -169,6 +178,7 @@ namespace NadekoBot.Modules.Administration
|
|||||||
{
|
{
|
||||||
stats.AntiSpamSettings.MessageThreshold = messageCount;
|
stats.AntiSpamSettings.MessageThreshold = messageCount;
|
||||||
stats.AntiSpamSettings.Action = action;
|
stats.AntiSpamSettings.Action = action;
|
||||||
|
stats.AntiSpamSettings.MuteTime = time;
|
||||||
return stats;
|
return stats;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ namespace NadekoBot.Modules.Administration.Services
|
|||||||
if (spamSettings.UserStats.TryRemove(msg.Author.Id, out stats))
|
if (spamSettings.UserStats.TryRemove(msg.Author.Id, out stats))
|
||||||
{
|
{
|
||||||
stats.Dispose();
|
stats.Dispose();
|
||||||
await PunishUsers(spamSettings.AntiSpamSettings.Action, ProtectionType.Spamming, (IGuildUser)msg.Author)
|
await PunishUsers(spamSettings.AntiSpamSettings.Action, ProtectionType.Spamming, spamSettings.AntiSpamSettings.MuteTime, (IGuildUser)msg.Author)
|
||||||
.ConfigureAwait(false);
|
.ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -111,7 +111,7 @@ namespace NadekoBot.Modules.Administration.Services
|
|||||||
var users = settings.RaidUsers.ToArray();
|
var users = settings.RaidUsers.ToArray();
|
||||||
settings.RaidUsers.Clear();
|
settings.RaidUsers.Clear();
|
||||||
|
|
||||||
await PunishUsers(settings.AntiRaidSettings.Action, ProtectionType.Raiding, users).ConfigureAwait(false);
|
await PunishUsers(settings.AntiRaidSettings.Action, ProtectionType.Raiding, 0, users).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
await Task.Delay(1000 * settings.AntiRaidSettings.Seconds).ConfigureAwait(false);
|
await Task.Delay(1000 * settings.AntiRaidSettings.Seconds).ConfigureAwait(false);
|
||||||
|
|
||||||
@ -129,7 +129,7 @@ namespace NadekoBot.Modules.Administration.Services
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private async Task PunishUsers(PunishmentAction action, ProtectionType pt, params IGuildUser[] gus)
|
private async Task PunishUsers(PunishmentAction action, ProtectionType pt, int muteTime, params IGuildUser[] gus)
|
||||||
{
|
{
|
||||||
_log.Info($"[{pt}] - Punishing [{gus.Length}] users with [{action}] in {gus[0].Guild.Name} guild");
|
_log.Info($"[{pt}] - Punishing [{gus.Length}] users with [{action}] in {gus[0].Guild.Name} guild");
|
||||||
foreach (var gu in gus)
|
foreach (var gu in gus)
|
||||||
@ -139,7 +139,10 @@ namespace NadekoBot.Modules.Administration.Services
|
|||||||
case PunishmentAction.Mute:
|
case PunishmentAction.Mute:
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
if (muteTime <= 0)
|
||||||
await _mute.MuteUser(gu).ConfigureAwait(false);
|
await _mute.MuteUser(gu).ConfigureAwait(false);
|
||||||
|
else
|
||||||
|
await _mute.TimedMute(gu, TimeSpan.FromSeconds(muteTime)).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
catch (Exception ex) { _log.Warn(ex, "I can't apply punishement"); }
|
catch (Exception ex) { _log.Warn(ex, "I can't apply punishement"); }
|
||||||
break;
|
break;
|
||||||
|
@ -18,6 +18,7 @@ namespace NadekoBot.Services.Database.Models
|
|||||||
|
|
||||||
public PunishmentAction Action { get; set; }
|
public PunishmentAction Action { get; set; }
|
||||||
public int MessageThreshold { get; set; } = 3;
|
public int MessageThreshold { get; set; } = 3;
|
||||||
|
public int MuteTime { get; set; } = 0;
|
||||||
public HashSet<AntiSpamIgnore> IgnoredChannels { get; set; } = new HashSet<AntiSpamIgnore>();
|
public HashSet<AntiSpamIgnore> IgnoredChannels { get; set; } = new HashSet<AntiSpamIgnore>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user