コード例 #1
0
        public override async Task <PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo command, IServiceProvider services)
        {
            if (await RiftBot.IsModeratorAsync(context.User) || RiftBot.IsAdmin(context.User))
            {
                return(PreconditionResult.FromSuccess());
            }

            return(PreconditionResult.FromError(RiftBot.CommandDenyMessage));
        }
コード例 #2
0
        public async Task BanAsync(IUser target, string reason, IUser moderator)
        {
            (var passed, var sgTarget) = await ValidateAsync(target, reason, moderator);

            if (!passed)
            {
                return;
            }

            if (RiftBot.IsAdmin(sgTarget) || await RiftBot.IsModeratorAsync(sgTarget))
            {
                await messageService.SendMessageAsync("mod-friendly-fire", Settings.ChannelId.Commands, new FormatData(moderator.Id));

                return;
            }

            if (!IonicHelper.GetGuild(Settings.App.MainGuildId, out var guild))
            {
                return;
            }

            await DB.ModerationLogs.AddAsync(sgTarget.Id, moderator.Id, "Ban", reason, DateTime.UtcNow, TimeSpan.Zero);

            (var oldToxicity, var newToxicity) = await GetNewToxicityAsync(sgTarget.Id, ToxicitySource.Ban);

            await DB.Toxicity.UpdatePercentAsync(sgTarget.Id, newToxicity.Percent);

            var data = new FormatData(target.Id)
            {
                Moderation = new ModerationData
                {
                    ModeratorId = moderator.Id,
                    TargetId    = sgTarget.Id,
                    Reason      = reason,
                }
            };

            await messageService.SendMessageAsync("mod-ban-success", Settings.ChannelId.Chat, data);

            await guild.AddBanAsync(sgTarget, 1, $"Banned by {moderator}: {reason}");
        }
コード例 #3
0
        protected override void BeforeExecute(CommandInfo command)
        {
            if (moduleState == RiftModuleState.Disabled)
            {
                Task.Run(async() =>
                {
                    await base.ReplyAsync("В настоящий момент эта команда отключена администратором.");
                });
                return;
            }

            if (moduleState == RiftModuleState.AdminOnly && !RiftBot.IsAdmin(Context.User))
            {
                Task.Run(async() =>
                {
                    await base.ReplyAsync(
                        "В настоящий момент эта команда доступна только для администраторов.");
                });
                return;
            }
        }
コード例 #4
0
        public async Task MuteAsync(IUser target, string reason, string time, IUser moderator)
        {
            (var passed, var sgTarget) = await ValidateAsync(target, reason, moderator);

            if (!passed)
            {
                return;
            }

            if (RiftBot.IsAdmin(sgTarget) || await RiftBot.IsModeratorAsync(sgTarget))
            {
                await messageService.SendMessageAsync("mod-friendly-fire", Settings.ChannelId.Commands, new FormatData(moderator.Id));

                return;
            }

            if (!int.TryParse(time.Remove(time.Length - 1), out var timeInt))
            {
                await messageService.SendMessageAsync("mod-wrong-time-format", Settings.ChannelId.Commands, new FormatData(moderator.Id));

                return;
            }

            TimeSpan ts;

            var timeMod = time.Last();

            switch (timeMod)
            {
            case 's':
                ts = TimeSpan.FromSeconds(timeInt);
                break;

            case 'm':
                ts = TimeSpan.FromMinutes(timeInt);
                break;

            case 'h':
                ts = TimeSpan.FromHours(timeInt);
                break;

            case 'd':
                ts = TimeSpan.FromDays(timeInt);
                break;

            default:
                await messageService.SendMessageAsync("mod-wrong-time-format", Settings.ChannelId.Commands, new FormatData(moderator.Id));

                return;
            }

            var muted = await DB.Roles.GetAsync(40);

            await roleService.AddTempRoleAsync(sgTarget.Id, muted.RoleId, ts,
                                               $"Muted by {moderator}|{moderator.Id.ToString()} with reason: {reason}");

            await DB.ModerationLogs.AddAsync(sgTarget.Id, moderator.Id, "Mute", reason, DateTime.UtcNow, ts);

            (var oldToxicity, var newToxicity) = await GetNewToxicityAsync(sgTarget.Id, ToxicitySource.Mute);

            await DB.Toxicity.UpdatePercentAsync(sgTarget.Id, newToxicity.Percent);

            if (newToxicity.Level > oldToxicity.Level)
            {
                await messageService.SendMessageAsync("mod-toxicity-increased", Settings.ChannelId.Chat, new FormatData(sgTarget.Id));
            }

            var data = new FormatData(sgTarget.Id)
            {
                Moderation = new ModerationData
                {
                    TargetId    = sgTarget.Id,
                    ModeratorId = moderator.Id,
                    Reason      = reason,
                    Duration    = ts
                }
            };

            await messageService.SendMessageAsync("mod-mute-success", Settings.ChannelId.Chat, data);
        }
コード例 #5
0
        public override async Task <PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo command, IServiceProvider services)
        {
            var role = await DB.Roles.GetAsync(173);

            if (IonicHelper.HasRolesAny(Settings.App.MainGuildId, context.User.Id, role.RoleId) || RiftBot.IsAdmin(context.User))
            {
                return(PreconditionResult.FromSuccess());
            }

            return(PreconditionResult.FromError(RiftBot.CommandDenyMessage));
        }