Пример #1
0
        async Task ProcessMessage(SocketMessage socketMsg)
        {
            if (!(socketMsg is SocketUserMessage message))
            {
                return;
            }

            if (message.Author.IsBot)
            {
                return;
            }

            if (Settings.App.MaintenanceMode && !RiftBot.IsDeveloper(message.Author) &&
                !RiftBot.IsAdmin(message.Author) &&
                !await RiftBot.IsModeratorAsync(message.Author))
            {
                return;
            }

            if (await DB.Toxicity.HasBlockingAsync(message.Author.Id))
            {
                return;
            }

            var context = new CommandContext(client, message);

            if (context.IsPrivate)
            {
                return;
            }

            if (await HandleCommand(context))
            {
                return;
            }

            await HandlePlainText(context);
        }
Пример #2
0
        static async Task HandlePlainText(CommandContext context)
        {
            if (context.Message.Channel.Id != Settings.ChannelId.Chat)
            {
                return;
            }

            if (Settings.Chat.AttachmentFilterEnabled && !RiftBot.IsAdmin(context.Message.Author))
            {
                if (context.Message.Attachments != null && context.Message.Attachments.Count > 0)
                {
                    await context.Message.DeleteAsync();
                }
            }

            if (Settings.Chat.CapsFilterEnabled && await HasCaps(context.Message.Content))
            {
                await context.Message.DeleteAsync();

                var eb = new EmbedBuilder()
                         .WithDescription($":no_entry_sign: {context.Message.Author.Mention} капсить на сервере запрещено!");

                await context.User.SendEmbedAsync(eb);

                return;
            }

            if (Settings.Chat.UrlFilterEnabled && HasUrl(context.Message.Content))
            {
                await context.Message.DeleteAsync();

                var eb = new EmbedBuilder()
                         .WithDescription($":no_entry_sign: {context.Message.Author.Mention} ссылки на сервере запрещены!");

                await context.User.SendEmbedAsync(eb);

                return;
            }

            if (Settings.Chat.ProcessUserNames)
            {
                if (context.User is SocketGuildUser sgUser)
                {
                    var name = string.IsNullOrWhiteSpace(sgUser.Nickname) ? sgUser.Username : sgUser.Nickname;

                    if (IsIncorrectName(name, out var editedName))
                    {
                        if (string.IsNullOrWhiteSpace(editedName))
                        {
                            editedName = $"tempname{DateTime.UtcNow.Millisecond.ToString()}";
                        }

                        await sgUser.ModifyAsync(x => { x.Nickname = editedName; });
                    }
                }
            }

            await DB.Statistics.AddAsync(context.User.Id, new StatisticData { MessagesSent = 1u });

            if (HasMinimumLength(context.Message.Content) && IsEligibleForEconomy(context.User.Id))
            {
                await dailyService.CheckAsync(context.User.Id);

                await economyService.ProcessMessageAsync(context.User.Id).ConfigureAwait(false);
            }
        }