Merge pull request #893 from 13xforever/vnext

Kick users if they ignore warning about invite links
This commit is contained in:
clienthax 2022-08-02 19:20:33 +01:00 committed by GitHub
commit 5ee0d8d490
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 37 additions and 25 deletions

View File

@ -11,7 +11,7 @@
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Http" Version="6.0.0" />
<PackageReference Include="StrawberryShake.CodeGeneration.CSharp.Analyzers" Version="12.11.1" />
<PackageReference Include="StrawberryShake.Transport.Http" Version="12.11.1" />
<PackageReference Include="StrawberryShake.CodeGeneration.CSharp.Analyzers" Version="12.12.1" />
<PackageReference Include="StrawberryShake.Transport.Http" Version="12.12.1" />
</ItemGroup>
</Project>

View File

@ -6,7 +6,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="6.0.1" />
<PackageReference Include="Octokit" Version="0.52.0" />
<PackageReference Include="Octokit" Version="1.0.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\CompatApiClient\CompatApiClient.csproj" />

View File

@ -39,35 +39,35 @@
<AdditionalFiles Include="..\win32_error_codes.txt" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="DSharpPlus" Version="4.3.0-nightly-01146" />
<PackageReference Include="DSharpPlus.CommandsNext" Version="4.3.0-nightly-01146" />
<PackageReference Include="DSharpPlus.Interactivity" Version="4.3.0-nightly-01146" />
<PackageReference Include="DSharpPlus.SlashCommands" Version="4.3.0-nightly-01146" />
<PackageReference Include="Google.Apis.Drive.v3" Version="1.57.0.2684" />
<PackageReference Include="DSharpPlus" Version="4.3.0-nightly-01160" />
<PackageReference Include="DSharpPlus.CommandsNext" Version="4.3.0-nightly-01160" />
<PackageReference Include="DSharpPlus.Interactivity" Version="4.3.0-nightly-01160" />
<PackageReference Include="DSharpPlus.SlashCommands" Version="4.3.0-nightly-01160" />
<PackageReference Include="Google.Apis.Drive.v3" Version="1.57.0.2746" />
<PackageReference Include="ksemenenko.ColorThief" Version="1.1.1.4" />
<PackageReference Include="MathParser.org-mXparser" Version="5.0.6" />
<PackageReference Include="MegaApiClient" Version="1.10.2" />
<PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.20.0" />
<PackageReference Include="Microsoft.ApplicationInsights.PerfCounterCollector" Version="2.20.0" />
<PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.21.0" />
<PackageReference Include="Microsoft.ApplicationInsights.PerfCounterCollector" Version="2.21.0" />
<PackageReference Include="Microsoft.Azure.CognitiveServices.Vision.ComputerVision" Version="7.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.6" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.6">
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.7" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.7">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.6" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.7" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="6.0.1" />
<PackageReference Include="Microsoft.IO.RecyclableMemoryStream" Version="2.2.0" />
<PackageReference Include="Microsoft.TeamFoundationServer.Client" Version="16.170.0" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.16.1" />
<PackageReference Include="Nerdbank.Streams" Version="2.8.57" />
<PackageReference Include="Nerdbank.Streams" Version="2.8.61" />
<PackageReference Include="NLog" Version="5.0.1" />
<PackageReference Include="NLog.Extensions.Logging" Version="5.0.1" />
<PackageReference Include="NReco.Text.AhoCorasickDoubleArrayTrie" Version="1.0.2" />
<PackageReference Include="SharpCompress" Version="0.32.1" />
<PackageReference Include="SixLabors.ImageSharp.Drawing" Version="1.0.0-beta14" />
<PackageReference Include="NReco.Text.AhoCorasickDoubleArrayTrie" Version="1.1.1" />
<PackageReference Include="SharpCompress" Version="0.32.2" />
<PackageReference Include="SixLabors.ImageSharp.Drawing" Version="1.0.0-beta15" />
<PackageReference Include="System.Drawing.Common" Version="6.0.0" />
</ItemGroup>
<ItemGroup>

View File

@ -26,14 +26,10 @@ internal static class DiscordInviteFilter
private static readonly TimeSpan CacheDuration = TimeSpan.FromHours(24);
public static async Task OnMessageCreated(DiscordClient c, MessageCreateEventArgs args)
{
args.Handled = !await CheckMessageForInvitesAsync(c, args.Message).ConfigureAwait(false);
}
=> args.Handled = !await CheckMessageForInvitesAsync(c, args.Message).ConfigureAwait(false);
public static async Task OnMessageUpdated(DiscordClient c, MessageUpdateEventArgs args)
{
args.Handled = !await CheckMessageForInvitesAsync(c, args.Message).ConfigureAwait(false);
}
=> args.Handled = !await CheckMessageForInvitesAsync(c, args.Message).ConfigureAwait(false);
public static async Task CheckBacklogAsync(DiscordClient client, DiscordGuild guild)
{
@ -134,8 +130,9 @@ internal static class DiscordInviteFilter
if (!await InviteWhitelistProvider.IsWhitelistedAsync(invite).ConfigureAwait(false))
{
if (!InviteCodeCache.TryGetValue(message.Author.Id, out HashSet<string> recentInvites))
recentInvites = new HashSet<string>();
var circumventionAttempt = !recentInvites.Add(invite.Code) && attemptedWorkaround; //do not flip, must add to cache always
recentInvites = new();
var repeatedInvitePost = !recentInvites.Add(invite.Code);
var circumventionAttempt = repeatedInvitePost && attemptedWorkaround;
InviteCodeCache.Set(message.Author.Id, recentInvites, CacheDuration);
var removed = false;
try
@ -166,6 +163,21 @@ internal static class DiscordInviteFilter
userMsg += "Please remove it and refrain from posting it again until you have received an approval from a moderator.";
}
await client.ReportAsync("🛃 An unapproved discord invite", message, reportMsg, null, null, null, ReportSeverity.Low).ConfigureAwait(false);
if (repeatedInvitePost || recentInvites.Count > 1)
try
{
var member = client.GetMember(message.Channel.Guild, message.Author);
if (member is not null)
{
await member.RemoveAsync("Multiple invites after being warned").ConfigureAwait(false);
return false;
}
}
catch (Exception e)
{
Config.Log.Warn(e, $"Failed to kick user {message.Author.GetUsernameWithNickname(client)} for repeated invite spam");
}
await message.Channel.SendMessageAsync(userMsg).ConfigureAwait(false);
if (circumventionAttempt)
await Warnings.AddAsync(client, message, message.Author.Id, message.Author.Username, client.CurrentUser, "Attempted to circumvent discord invite filter", codeResolveMsg);