Merge branch 'develop' into master

This commit is contained in:
Daniel_I_Am 2020-08-13 21:11:32 +02:00
commit d32973e7ba
No known key found for this signature in database
GPG Key ID: 80C428FCC9743E84
4 changed files with 54 additions and 4 deletions

View File

@ -20,6 +20,7 @@ namespace ChaosBot.Discord.Modules.User
[Command("level")] [Command("level")]
[Alias("xp", "exp", "experience", "lvl")] [Alias("xp", "exp", "experience", "lvl")]
[CheckCommandPerm("User")] [CheckCommandPerm("User")]
[CheckModuleEnabled("Experience")]
public async Task XpShowInfo() public async Task XpShowInfo()
{ {
try try

View File

@ -0,0 +1,45 @@
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"));
}
}
}

View File

@ -1,6 +1,7 @@
using System; using System;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using ChaosBot.Discord.PreConditions;
using ChaosBot.Models; using ChaosBot.Models;
using ChaosBot.Repositories; using ChaosBot.Repositories;
using Discord; using Discord;
@ -19,6 +20,8 @@ namespace ChaosBot.Discord.Services
{ {
try try
{ {
if (!CheckModuleEnabled.GetResult(context, "Experience")) return;
using (ChaosbotContext dbContext = new ChaosbotContext()) using (ChaosbotContext dbContext = new ChaosbotContext())
{ {
IQueryable<Experience> ctxUser = dbContext.ExperiencePoints; IQueryable<Experience> ctxUser = dbContext.ExperiencePoints;

View File

@ -16,12 +16,13 @@ namespace ChaosBot.Services
public static async Task<Boolean> IsAllowed(string key) public static async Task<Boolean> IsAllowed(string key)
{ {
List<string> restrictedCfg = new List<string> {"Database:Host", "Database:Port", "Database:Name", "Database:User", "Database:Pass", "Bot:Version", "NLog", "WebServer", "Discord:Token"}; // TODO: List populated from DB
List<string> restrictedCfg = new List<string> {"Database:Host", "Database:Port", "Database:Name", "Database:User", "Database:Pass", "Bot:Version", "NLog", "WebServer", "Discord:Token"};
if (restrictedCfg.Contains(key)) if (restrictedCfg.Contains(key))
return false; return false;
return true; return true;
} }
} }
} }