45 lines
1.7 KiB
C#
45 lines
1.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using ChaosBot.Models;
|
|
using ChaosBot.Repositories;
|
|
using Discord.Commands;
|
|
using Discord.WebSocket;
|
|
using NLog;
|
|
|
|
namespace ChaosBot.Discord.PreConditions
|
|
{
|
|
public class CheckModuleEnabled : PreconditionAttribute
|
|
{
|
|
private static ILogger _logger = Program.Logger;
|
|
private readonly string _moduleName;
|
|
public CheckModuleEnabled(string moduleName) => _moduleName = moduleName;
|
|
|
|
public override Task<PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo command, IServiceProvider services)
|
|
{
|
|
// Debug information
|
|
_logger.Trace($"CheckModuleEnabled.CheckPermissionsAsync|Checking module enabled for module: {_moduleName}");
|
|
|
|
if (context.Guild == null) return Task.FromResult(PreconditionResult.FromError("This must be run in a guild."));
|
|
|
|
// Check if module enabled in database
|
|
bool isModuleEnabled = GetResult(context, _moduleName);
|
|
|
|
if (isModuleEnabled)
|
|
return Task.FromResult(PreconditionResult.FromSuccess());
|
|
|
|
// Permission denied
|
|
return Task.FromResult(PreconditionResult.FromError($"You do not have access to this command."));
|
|
}
|
|
|
|
public static bool GetResult(ICommandContext context, string moduleName)
|
|
{
|
|
if (context.Guild == null) throw new Exception("This must be run in a guild");
|
|
|
|
// Check if module enabled in database
|
|
return Convert.ToBoolean(ConfigurationRepository.GetValue<string>($"Module:{moduleName}:Enabled",
|
|
context.Guild.Id, "true"));
|
|
}
|
|
}
|
|
} |