示例#1
0
        private async Task CheckUsernameAsync(SocketGuildUser orig, SocketGuildUser updated)
        {
            string oldName = orig.Nickname ?? orig.Username;
            string newName = updated.Nickname ?? updated.Username;

            Task <bool>[] isZalgo =
            {
                Zalgo.IsZalgoAsync(newName),
                configDatabase.AntiZalgo.GetAntiZalgoAsync(updated.Guild)
            };

            if ((await Task.WhenAll(isZalgo)).All(x => x))
            {
                try
                {
                    await updated.ModifyAsync(x => x.Nickname = oldName);
                }
                catch { }
            }
        }
示例#2
0
        private async Task SendWelcomeMessage(SocketGuildUser u)
        {
            if (await raidModeDatabase.RaidMode.GetVerificationLevelAsync(u.Guild) != null && !u.IsBot)
            {
                await Task.WhenAll
                (
                    u.SendMessageAsync($":rotating_light: :rotating_light: The FBI of {u.Guild.Name} is currently in Raid Mode. As a result, you may not join the server at this time. :rotating_light: :rotating_light:"),
                    raidModeDatabase.UsersBlocked.AddBlockedUserAsync(u)
                );

                await u.KickAsync("FBI RAID MODE");

                return;
            }

            SocketTextChannel channel = await modLogsDatabase.WelcomeChannel.GetWelcomeChannelAsync(u.Guild);

            if (channel != null)
            {
                List <string> messages = new()
                {
                    "Don't even think about it.",
                    "**FBI OPEN U**...wait...we'll be back shortly with a warrant.",
                    "Where do you think you're going?",
                    "Ladies and gentlemen, we got 'em.",
                    "Give us a moment while we send a representative into your camera...",
                    "You thought it was a normal server, but it was me! THE FBI!",
                    "Walk out slowly with your arms i...wait, wrong person.",
                    "You want to know how we figured it out?"
                };
                int index = Program.rng.Next(messages.Count);
                await channel.SendMessageAsync($"{u.Mention} {messages[index]}");
            }

            if (await verificationDatabase.Verified.GetVerifiedAsync(u))
            {
                SocketRole role = await verificationDatabase.Roles.GetVerificationRoleAsync(u.Guild);

                if (role != null && u.Guild.CurrentUser.GetPermissions(u.Guild.DefaultChannel).ManageRoles)
                {
                    await u.AddRoleAsync(role);
                }
            }
            else if (!u.IsBot && await verificationDatabase.Roles.GetVerificationRoleAsync(u.Guild) != null)
            {
                await Verify.SendCaptchaAsync(u);
            }

            string name = u.Nickname ?? u.Username;

            Task <bool>[] isZalgo =
            {
                Zalgo.IsZalgoAsync(name),
                configDatabase.AntiZalgo.GetAntiZalgoAsync(u.Guild)
            };

            if ((await Task.WhenAll(isZalgo)).All(x => x))
            {
                try
                {
                    await u.ModifyAsync(async x => x.Nickname = await Zalgo.RemoveZalgoAsync(name));
                }
                catch { }
            }
        }
示例#3
0
        private static async Task AutoModAsync(SocketCommandContext Context, bool isCommand)
        {
            Task <bool>[] isZalgo =
            {
                Zalgo.IsZalgoAsync(Context),
                configDatabase.AntiZalgo.GetAntiZalgoAsync(Context.Guild)
            };
            Task <bool>[] isSpam =
            {
                Spam.IsSpamAsync(Context),
                configDatabase.AntiSpam.GetAntiSpamAsync(Context.Guild)
            };
            Task <bool>[] isSingleSpam =
            {
                Spam.IsSingleSpamAsync(Context),
                configDatabase.AntiSingleSpam.GetAntiSingleSpamAsync(Context.Guild)
            };
            Task <bool>[] isMassMention =
            {
                MassMention.IsMassMentionAsync(Context),
                configDatabase.AntiMassMention.GetAntiMassMentionAsync(Context.Guild)
            };
            Task <bool>[] isCaps =
            {
                CAPS.ISCAPSASYNC(Context),
                configDatabase.AntiCaps.GetAntiCapsAsync(Context.Guild)
            };
            Task <bool>[] isInvite =
            {
                Invite.HasInviteAsync(Context),
                configDatabase.AntiInvite.GetAntiInviteAsync(Context.Guild)
            };
            Task <bool>[] isLink =
            {
                Link.IsLinkAsync(Context),
                configDatabase.AntiLink.GetAntiLinkAsync(Context.Guild)
            };

            if (await configDatabase.AutoSurveillance.GetAutoSurveillanceAsync(Context.Guild))
            {
                if (await AutoSurveillanceAsync(Context))
                {
                    return;
                }
            }

            if ((await Task.WhenAll(isZalgo)).All(x => x))
            {
                await new Zalgo(Context).WarnAsync();
            }
            else if (((await Task.WhenAll(isSpam)).All(x => x) || (await Task.WhenAll(isSingleSpam)).All(x => x)) && !isCommand)
            {
                await new Spam(Context).WarnAsync();
            }
            else if ((await Task.WhenAll(isMassMention)).All(x => x))
            {
                await new MassMention(Context).WarnAsync();
            }
            else if ((await Task.WhenAll(isCaps)).All(x => x))
            {
                await new CAPS(Context).WARNASYNC();
            }
            else if ((await Task.WhenAll(isInvite)).All(x => x))
            {
                await new Invite(Context).RemoveAsync();
            }
            else if ((await Task.WhenAll(isLink)).All(x => x))
            {
                await new Link(Context).RemoveAsync();
            }
        }