only addchecks left to have a functional system, but not polished one
This commit is contained in:
parent
faa9a0eab7
commit
c1fb5397ce
@ -1,58 +0,0 @@
|
|||||||
using Discord.Commands;
|
|
||||||
using Discord.Modules;
|
|
||||||
using NadekoBot.Extensions;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
|
|
||||||
namespace NadekoBot.Classes
|
|
||||||
{
|
|
||||||
static class PermissionHelper
|
|
||||||
{
|
|
||||||
public static bool ValidateBool(string passedArg)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(passedArg.Trim()))
|
|
||||||
{
|
|
||||||
throw new System.ArgumentException("No value supplied! Missing argument");
|
|
||||||
}
|
|
||||||
switch (passedArg.ToLower())
|
|
||||||
{
|
|
||||||
case "t":
|
|
||||||
case "true":
|
|
||||||
case "enable":
|
|
||||||
return true;
|
|
||||||
case "f":
|
|
||||||
case "false":
|
|
||||||
case "disable":
|
|
||||||
return false;
|
|
||||||
default:
|
|
||||||
throw new System.ArgumentException("Did not receive a valid boolean value");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static bool ValidateModule(string mod)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrWhiteSpace(mod))
|
|
||||||
throw new ArgumentNullException(nameof(mod));
|
|
||||||
foreach (var m in NadekoBot.client.Modules().Modules) {
|
|
||||||
if(m.Name.ToLower().Equals(mod))
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static bool ValidateCommand(string commandText)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrWhiteSpace(commandText))
|
|
||||||
throw new ArgumentNullException(nameof(commandText));
|
|
||||||
foreach (var com in NadekoBot.client.Commands().AllCommands) {
|
|
||||||
if (com.Text == commandText)
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
86
NadekoBot/Classes/Permissions/PermissionHelper.cs
Normal file
86
NadekoBot/Classes/Permissions/PermissionHelper.cs
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
using Discord.Commands;
|
||||||
|
using Discord.Modules;
|
||||||
|
using NadekoBot.Extensions;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Discord;
|
||||||
|
|
||||||
|
namespace NadekoBot.Classes {
|
||||||
|
static class PermissionHelper {
|
||||||
|
public static bool ValidateBool(string passedArg) {
|
||||||
|
if (string.IsNullOrWhiteSpace(passedArg)) {
|
||||||
|
throw new ArgumentException("No value supplied! Missing argument");
|
||||||
|
}
|
||||||
|
switch (passedArg.ToLower()) {
|
||||||
|
case "1":
|
||||||
|
case "t":
|
||||||
|
case "true":
|
||||||
|
case "enable":
|
||||||
|
case "allow":
|
||||||
|
case "unban":
|
||||||
|
return true;
|
||||||
|
case "0":
|
||||||
|
case "f":
|
||||||
|
case "false":
|
||||||
|
case "disable":
|
||||||
|
case "disallow":
|
||||||
|
case "ban":
|
||||||
|
return false;
|
||||||
|
default:
|
||||||
|
throw new ArgumentException("Did not receive a valid boolean value");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static string ValidateModule(string mod) {
|
||||||
|
if (string.IsNullOrWhiteSpace(mod))
|
||||||
|
throw new ArgumentNullException(nameof(mod));
|
||||||
|
|
||||||
|
foreach (var m in NadekoBot.client.Modules().Modules) {
|
||||||
|
if (m.Name.ToLower().Equals(mod.ToLower()))
|
||||||
|
return m.Name;
|
||||||
|
}
|
||||||
|
throw new ArgumentException("That module does not exist.");
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static string ValidateCommand(string commandText) {
|
||||||
|
if (string.IsNullOrWhiteSpace(commandText))
|
||||||
|
throw new ArgumentNullException(nameof(commandText));
|
||||||
|
|
||||||
|
foreach (var com in NadekoBot.client.Commands().AllCommands) {
|
||||||
|
if (com.Text.ToLower().Equals(commandText.ToLower()))
|
||||||
|
return com.Text;
|
||||||
|
}
|
||||||
|
throw new NullReferenceException("That command does not exist.");
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static Role ValidateRole(Server server, string roleName) {
|
||||||
|
if (string.IsNullOrWhiteSpace(roleName))
|
||||||
|
throw new ArgumentNullException(nameof(roleName));
|
||||||
|
var role = server.FindRoles(roleName).FirstOrDefault();
|
||||||
|
if (role == null)
|
||||||
|
throw new NullReferenceException("That role does not exist.");
|
||||||
|
return role;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static Channel ValidateChannel(Server server, string channelName) {
|
||||||
|
if (string.IsNullOrWhiteSpace(channelName))
|
||||||
|
throw new ArgumentNullException(nameof(channelName));
|
||||||
|
var channel = server.FindChannels(channelName).FirstOrDefault();
|
||||||
|
if (channel == null)
|
||||||
|
throw new NullReferenceException("That channel does not exist.");
|
||||||
|
return channel;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static User ValidateUser(Server server, string userName) {
|
||||||
|
if (string.IsNullOrWhiteSpace(userName))
|
||||||
|
throw new ArgumentNullException(nameof(userName));
|
||||||
|
var user = server.FindUsers(userName).FirstOrDefault();
|
||||||
|
if (user == null)
|
||||||
|
throw new NullReferenceException("That user does not exist.");
|
||||||
|
return user;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -14,6 +14,26 @@ namespace NadekoBot.Classes.Permissions {
|
|||||||
public static ConcurrentDictionary<Server, ServerPermissions> _permissionsDict =
|
public static ConcurrentDictionary<Server, ServerPermissions> _permissionsDict =
|
||||||
new ConcurrentDictionary<Server, ServerPermissions>();
|
new ConcurrentDictionary<Server, ServerPermissions>();
|
||||||
|
|
||||||
|
public static void Initialize() {
|
||||||
|
Console.WriteLine("Reading from the permission files.");
|
||||||
|
Directory.CreateDirectory("data/permissions");
|
||||||
|
foreach (var file in Directory.EnumerateFiles("data/permissions/")) {
|
||||||
|
try {
|
||||||
|
var strippedFileName = file.Substring(file.LastIndexOf('/') + 1, file.LastIndexOf(".json") - file.LastIndexOf('/') - 1);
|
||||||
|
var id = ulong.Parse(strippedFileName);
|
||||||
|
var server = NadekoBot.client.GetServer(id);
|
||||||
|
if (server == null)
|
||||||
|
throw new ArgumentException("Server does not exist");
|
||||||
|
|
||||||
|
var data = Newtonsoft.Json.JsonConvert.DeserializeObject<ServerPermissions>(File.ReadAllText(file));
|
||||||
|
_permissionsDict.TryAdd(server, data);
|
||||||
|
} catch (Exception ex){
|
||||||
|
Console.WriteLine($"Failed getting server with id: {file}\nReason: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Console.WriteLine("Permission initialization complete.");
|
||||||
|
}
|
||||||
|
|
||||||
private static void WriteServerToJson(Server server) {
|
private static void WriteServerToJson(Server server) {
|
||||||
string pathToFile = $"data/permissions/{server.Id}.json";
|
string pathToFile = $"data/permissions/{server.Id}.json";
|
||||||
File.WriteAllText(pathToFile, Newtonsoft.Json.JsonConvert.SerializeObject(_permissionsDict[server], Newtonsoft.Json.Formatting.Indented));
|
File.WriteAllText(pathToFile, Newtonsoft.Json.JsonConvert.SerializeObject(_permissionsDict[server], Newtonsoft.Json.Formatting.Indented));
|
||||||
@ -28,7 +48,7 @@ namespace NadekoBot.Classes.Permissions {
|
|||||||
|
|
||||||
public static void SetServerModulePermission(Server server, string moduleName, bool value) {
|
public static void SetServerModulePermission(Server server, string moduleName, bool value) {
|
||||||
if (!_permissionsDict.ContainsKey(server)) {
|
if (!_permissionsDict.ContainsKey(server)) {
|
||||||
_permissionsDict.TryAdd(server, new ServerPermissions(server.Id.ToString(), server.Name));
|
_permissionsDict.TryAdd(server, new ServerPermissions(server.Id, server.Name));
|
||||||
}
|
}
|
||||||
var modules = _permissionsDict[server].Permissions.modules;
|
var modules = _permissionsDict[server].Permissions.modules;
|
||||||
if (modules.ContainsKey(moduleName))
|
if (modules.ContainsKey(moduleName))
|
||||||
@ -40,7 +60,7 @@ namespace NadekoBot.Classes.Permissions {
|
|||||||
|
|
||||||
public static void SetServerCommandPermission(Server server, string commandName, bool value) {
|
public static void SetServerCommandPermission(Server server, string commandName, bool value) {
|
||||||
if (!_permissionsDict.ContainsKey(server)) {
|
if (!_permissionsDict.ContainsKey(server)) {
|
||||||
_permissionsDict.TryAdd(server, new ServerPermissions(server.Id.ToString(), server.Name));
|
_permissionsDict.TryAdd(server, new ServerPermissions(server.Id, server.Name));
|
||||||
}
|
}
|
||||||
var commands = _permissionsDict[server].Permissions.commands;
|
var commands = _permissionsDict[server].Permissions.commands;
|
||||||
if (commands.ContainsKey(commandName))
|
if (commands.ContainsKey(commandName))
|
||||||
@ -53,12 +73,12 @@ namespace NadekoBot.Classes.Permissions {
|
|||||||
public static void SetChannelModulePermission(Channel channel, string moduleName, bool value) {
|
public static void SetChannelModulePermission(Channel channel, string moduleName, bool value) {
|
||||||
var server = channel.Server;
|
var server = channel.Server;
|
||||||
if (!_permissionsDict.ContainsKey(server)) {
|
if (!_permissionsDict.ContainsKey(server)) {
|
||||||
_permissionsDict.TryAdd(server, new ServerPermissions(server.Id.ToString(), server.Name));
|
_permissionsDict.TryAdd(server, new ServerPermissions(server.Id, server.Name));
|
||||||
}
|
}
|
||||||
if(!_permissionsDict[server].ChannelPermissions.ContainsKey(channel.Id.ToString()))
|
if(!_permissionsDict[server].ChannelPermissions.ContainsKey(channel.Id))
|
||||||
_permissionsDict[server].ChannelPermissions.Add(channel.Id.ToString(), new Permissions(channel.Name));
|
_permissionsDict[server].ChannelPermissions.Add(channel.Id, new Permissions(channel.Name));
|
||||||
|
|
||||||
var modules = _permissionsDict[server].ChannelPermissions[channel.Id.ToString()].modules;
|
var modules = _permissionsDict[server].ChannelPermissions[channel.Id].modules;
|
||||||
|
|
||||||
if (modules.ContainsKey(moduleName))
|
if (modules.ContainsKey(moduleName))
|
||||||
modules[moduleName] = value;
|
modules[moduleName] = value;
|
||||||
@ -70,12 +90,12 @@ namespace NadekoBot.Classes.Permissions {
|
|||||||
public static void SetChannelCommandPermission(Channel channel, string commandName, bool value) {
|
public static void SetChannelCommandPermission(Channel channel, string commandName, bool value) {
|
||||||
var server = channel.Server;
|
var server = channel.Server;
|
||||||
if (!_permissionsDict.ContainsKey(server)) {
|
if (!_permissionsDict.ContainsKey(server)) {
|
||||||
_permissionsDict.TryAdd(server, new ServerPermissions(server.Id.ToString(), server.Name));
|
_permissionsDict.TryAdd(server, new ServerPermissions(server.Id, server.Name));
|
||||||
}
|
}
|
||||||
if (!_permissionsDict[server].ChannelPermissions.ContainsKey(channel.Id.ToString()))
|
if (!_permissionsDict[server].ChannelPermissions.ContainsKey(channel.Id))
|
||||||
_permissionsDict[server].ChannelPermissions.Add(channel.Id.ToString(), new Permissions(channel.Name));
|
_permissionsDict[server].ChannelPermissions.Add(channel.Id, new Permissions(channel.Name));
|
||||||
|
|
||||||
var commands = _permissionsDict[server].ChannelPermissions[channel.Id.ToString()].commands;
|
var commands = _permissionsDict[server].ChannelPermissions[channel.Id].commands;
|
||||||
|
|
||||||
if (commands.ContainsKey(commandName))
|
if (commands.ContainsKey(commandName))
|
||||||
commands[commandName] = value;
|
commands[commandName] = value;
|
||||||
@ -87,12 +107,12 @@ namespace NadekoBot.Classes.Permissions {
|
|||||||
public static void SetRoleModulePermission(Role role, string moduleName, bool value) {
|
public static void SetRoleModulePermission(Role role, string moduleName, bool value) {
|
||||||
var server = role.Server;
|
var server = role.Server;
|
||||||
if (!_permissionsDict.ContainsKey(server)) {
|
if (!_permissionsDict.ContainsKey(server)) {
|
||||||
_permissionsDict.TryAdd(server, new ServerPermissions(server.Id.ToString(), server.Name));
|
_permissionsDict.TryAdd(server, new ServerPermissions(server.Id, server.Name));
|
||||||
}
|
}
|
||||||
if (!_permissionsDict[server].RolePermissions.ContainsKey(role.Id.ToString()))
|
if (!_permissionsDict[server].RolePermissions.ContainsKey(role.Id))
|
||||||
_permissionsDict[server].RolePermissions.Add(role.Id.ToString(), new Permissions(role.Name));
|
_permissionsDict[server].RolePermissions.Add(role.Id, new Permissions(role.Name));
|
||||||
|
|
||||||
var modules = _permissionsDict[server].RolePermissions[role.Id.ToString()].modules;
|
var modules = _permissionsDict[server].RolePermissions[role.Id].modules;
|
||||||
|
|
||||||
if (modules.ContainsKey(moduleName))
|
if (modules.ContainsKey(moduleName))
|
||||||
modules[moduleName] = value;
|
modules[moduleName] = value;
|
||||||
@ -104,12 +124,12 @@ namespace NadekoBot.Classes.Permissions {
|
|||||||
public static void SetRoleCommandPermission(Role role, string commandName, bool value) {
|
public static void SetRoleCommandPermission(Role role, string commandName, bool value) {
|
||||||
var server = role.Server;
|
var server = role.Server;
|
||||||
if (!_permissionsDict.ContainsKey(server)) {
|
if (!_permissionsDict.ContainsKey(server)) {
|
||||||
_permissionsDict.TryAdd(server, new ServerPermissions(server.Id.ToString(), server.Name));
|
_permissionsDict.TryAdd(server, new ServerPermissions(server.Id, server.Name));
|
||||||
}
|
}
|
||||||
if (!_permissionsDict[server].RolePermissions.ContainsKey(role.Id.ToString()))
|
if (!_permissionsDict[server].RolePermissions.ContainsKey(role.Id))
|
||||||
_permissionsDict[server].RolePermissions.Add(role.Id.ToString(), new Permissions(role.Name));
|
_permissionsDict[server].RolePermissions.Add(role.Id, new Permissions(role.Name));
|
||||||
|
|
||||||
var commands = _permissionsDict[server].RolePermissions[role.Id.ToString()].commands;
|
var commands = _permissionsDict[server].RolePermissions[role.Id].commands;
|
||||||
|
|
||||||
if (commands.ContainsKey(commandName))
|
if (commands.ContainsKey(commandName))
|
||||||
commands[commandName] = value;
|
commands[commandName] = value;
|
||||||
@ -121,12 +141,12 @@ namespace NadekoBot.Classes.Permissions {
|
|||||||
public static void SetUserModulePermission(User user, string moduleName, bool value) {
|
public static void SetUserModulePermission(User user, string moduleName, bool value) {
|
||||||
var server = user.Server;
|
var server = user.Server;
|
||||||
if (!_permissionsDict.ContainsKey(server)) {
|
if (!_permissionsDict.ContainsKey(server)) {
|
||||||
_permissionsDict.TryAdd(server, new ServerPermissions(server.Id.ToString(), server.Name));
|
_permissionsDict.TryAdd(server, new ServerPermissions(server.Id, server.Name));
|
||||||
}
|
}
|
||||||
if (!_permissionsDict[server].UserPermissions.ContainsKey(user.Id.ToString()))
|
if (!_permissionsDict[server].UserPermissions.ContainsKey(user.Id))
|
||||||
_permissionsDict[server].UserPermissions.Add(user.Id.ToString(), new Permissions(user.Name));
|
_permissionsDict[server].UserPermissions.Add(user.Id, new Permissions(user.Name));
|
||||||
|
|
||||||
var modules = _permissionsDict[server].UserPermissions[user.Id.ToString()].modules;
|
var modules = _permissionsDict[server].UserPermissions[user.Id].modules;
|
||||||
|
|
||||||
if (modules.ContainsKey(moduleName))
|
if (modules.ContainsKey(moduleName))
|
||||||
modules[moduleName] = value;
|
modules[moduleName] = value;
|
||||||
@ -138,12 +158,12 @@ namespace NadekoBot.Classes.Permissions {
|
|||||||
public static void SetUserCommandPermission(User user, string commandName, bool value) {
|
public static void SetUserCommandPermission(User user, string commandName, bool value) {
|
||||||
var server = user.Server;
|
var server = user.Server;
|
||||||
if (!_permissionsDict.ContainsKey(server)) {
|
if (!_permissionsDict.ContainsKey(server)) {
|
||||||
_permissionsDict.TryAdd(server, new ServerPermissions(server.Id.ToString(), server.Name));
|
_permissionsDict.TryAdd(server, new ServerPermissions(server.Id, server.Name));
|
||||||
}
|
}
|
||||||
if (!_permissionsDict[server].UserPermissions.ContainsKey(user.Id.ToString()))
|
if (!_permissionsDict[server].UserPermissions.ContainsKey(user.Id))
|
||||||
_permissionsDict[server].UserPermissions.Add(user.Id.ToString(), new Permissions(user.Name));
|
_permissionsDict[server].UserPermissions.Add(user.Id, new Permissions(user.Name));
|
||||||
|
|
||||||
var commands = _permissionsDict[server].UserPermissions[user.Id.ToString()].commands;
|
var commands = _permissionsDict[server].UserPermissions[user.Id].commands;
|
||||||
|
|
||||||
if (commands.ContainsKey(commandName))
|
if (commands.ContainsKey(commandName))
|
||||||
commands[commandName] = value;
|
commands[commandName] = value;
|
||||||
@ -159,7 +179,7 @@ namespace NadekoBot.Classes.Permissions {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Name of the parent object whose permissions these are
|
/// Name of the parent object whose permissions these are
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string ParentName { get; set; }
|
public string Name { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Module name with allowed/disallowed
|
/// Module name with allowed/disallowed
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -170,7 +190,7 @@ namespace NadekoBot.Classes.Permissions {
|
|||||||
public Dictionary<string, bool> commands { get; set; }
|
public Dictionary<string, bool> commands { get; set; }
|
||||||
|
|
||||||
public Permissions(string name) {
|
public Permissions(string name) {
|
||||||
ParentName = name;
|
Name = name;
|
||||||
modules = new Dictionary<string, bool>();
|
modules = new Dictionary<string, bool>();
|
||||||
commands = new Dictionary<string, bool>();
|
commands = new Dictionary<string, bool>();
|
||||||
}
|
}
|
||||||
@ -188,25 +208,25 @@ namespace NadekoBot.Classes.Permissions {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// The id of the thing (user/server/channel)
|
/// The id of the thing (user/server/channel)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Id { get; set; } //a string because of the role name.
|
public ulong Id { get; set; } //a string because of the role name.
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Permission object bound to the id of something/role name
|
/// Permission object bound to the id of something/role name
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Permissions Permissions { get; set; }
|
public Permissions Permissions { get; set; }
|
||||||
|
|
||||||
public Dictionary<string, Permissions> UserPermissions { get; set; }
|
public Dictionary<ulong, Permissions> UserPermissions { get; set; }
|
||||||
public Dictionary<string, Permissions> ChannelPermissions { get; set; }
|
public Dictionary<ulong, Permissions> ChannelPermissions { get; set; }
|
||||||
public Dictionary<string, Permissions> RolePermissions { get; set; }
|
public Dictionary<ulong, Permissions> RolePermissions { get; set; }
|
||||||
|
|
||||||
public ServerPermissions(string id, string name) {
|
public ServerPermissions(ulong id, string name) {
|
||||||
Id = id;
|
Id = id;
|
||||||
PermissionsControllerRoleName = "PermissionsKing";
|
PermissionsControllerRoleName = "PermissionsKing";
|
||||||
Verbose = true;
|
Verbose = true;
|
||||||
|
|
||||||
Permissions = new Permissions(name);
|
Permissions = new Permissions(name);
|
||||||
UserPermissions = new Dictionary<string, Permissions>();
|
UserPermissions = new Dictionary<ulong, Permissions>();
|
||||||
ChannelPermissions = new Dictionary<string, Permissions>();
|
ChannelPermissions = new Dictionary<ulong, Permissions>();
|
||||||
RolePermissions = new Dictionary<string, Permissions>();
|
RolePermissions = new Dictionary<ulong, Permissions>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,6 +3,7 @@ using Discord.Modules;
|
|||||||
using Discord.Commands;
|
using Discord.Commands;
|
||||||
using NadekoBot.Extensions;
|
using NadekoBot.Extensions;
|
||||||
using NadekoBot.Classes;
|
using NadekoBot.Classes;
|
||||||
|
using PermsHandler = NadekoBot.Classes.Permissions.PermissionsHandler;
|
||||||
|
|
||||||
namespace NadekoBot.Modules {
|
namespace NadekoBot.Modules {
|
||||||
class PermissionModule : DiscordModule
|
class PermissionModule : DiscordModule
|
||||||
@ -29,9 +30,10 @@ namespace NadekoBot.Modules {
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
PermissionHelper.ValidateModule(e.GetArg("module"));
|
string module = PermissionHelper.ValidateModule(e.GetArg("module"));
|
||||||
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
||||||
|
|
||||||
|
PermsHandler.SetServerModulePermission(e.Server, module, state);
|
||||||
await e.Send("I'm setting " + e.GetArg("module") + " to " + state);
|
await e.Send("I'm setting " + e.GetArg("module") + " to " + state);
|
||||||
}
|
}
|
||||||
catch (ArgumentException exArg)
|
catch (ArgumentException exArg)
|
||||||
@ -53,9 +55,10 @@ namespace NadekoBot.Modules {
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
PermissionHelper.ValidateCommand(e.GetArg("command"));
|
string command = PermissionHelper.ValidateCommand(e.GetArg("command"));
|
||||||
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
||||||
|
|
||||||
|
PermsHandler.SetServerCommandPermission(e.Server, command, state);
|
||||||
await e.Send("I'm setting " + e.GetArg("command") + " to " + state);
|
await e.Send("I'm setting " + e.GetArg("command") + " to " + state);
|
||||||
}
|
}
|
||||||
catch (ArgumentException exArg)
|
catch (ArgumentException exArg)
|
||||||
@ -71,15 +74,18 @@ namespace NadekoBot.Modules {
|
|||||||
cgb.CreateCommand(trigger + "srm").Alias(trigger + "setrolemodule")
|
cgb.CreateCommand(trigger + "srm").Alias(trigger + "setrolemodule")
|
||||||
.Parameter("module", ParameterType.Required)
|
.Parameter("module", ParameterType.Required)
|
||||||
.Parameter("bool", ParameterType.Required)
|
.Parameter("bool", ParameterType.Required)
|
||||||
|
.Parameter("role", ParameterType.Unparsed)
|
||||||
.Description("Sets a module's permission at the role level.")
|
.Description("Sets a module's permission at the role level.")
|
||||||
// .AddCheck() -> fix this
|
// .AddCheck() -> fix this
|
||||||
.Do(async e =>
|
.Do(async e =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
PermissionHelper.ValidateModule(e.GetArg("module"));
|
string module = PermissionHelper.ValidateModule(e.GetArg("module"));
|
||||||
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
||||||
|
Discord.Role role = PermissionHelper.ValidateRole(e.Server, e.GetArg("role"));
|
||||||
|
|
||||||
|
PermsHandler.SetRoleModulePermission(role, module, state);
|
||||||
await e.Send("I'm setting " + e.GetArg("module") + " to " + state);
|
await e.Send("I'm setting " + e.GetArg("module") + " to " + state);
|
||||||
}
|
}
|
||||||
catch (ArgumentException exArg)
|
catch (ArgumentException exArg)
|
||||||
@ -95,15 +101,18 @@ namespace NadekoBot.Modules {
|
|||||||
cgb.CreateCommand(trigger + "src").Alias(trigger + "setrolecommand")
|
cgb.CreateCommand(trigger + "src").Alias(trigger + "setrolecommand")
|
||||||
.Parameter("command", ParameterType.Required)
|
.Parameter("command", ParameterType.Required)
|
||||||
.Parameter("bool", ParameterType.Required)
|
.Parameter("bool", ParameterType.Required)
|
||||||
|
.Parameter("role",ParameterType.Unparsed)
|
||||||
.Description("Sets a command's permission at the role level.")
|
.Description("Sets a command's permission at the role level.")
|
||||||
// .AddCheck() -> fix this
|
// .AddCheck() -> fix this
|
||||||
.Do(async e =>
|
.Do(async e =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
PermissionHelper.ValidateCommand(e.GetArg("command"));
|
string command = PermissionHelper.ValidateCommand(e.GetArg("command"));
|
||||||
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
||||||
|
Discord.Role role = PermissionHelper.ValidateRole(e.Server, e.GetArg("role"));
|
||||||
|
|
||||||
|
PermsHandler.SetRoleCommandPermission(role, command, state);
|
||||||
await e.Send("I'm setting " + e.GetArg("command") + " to " + state);
|
await e.Send("I'm setting " + e.GetArg("command") + " to " + state);
|
||||||
}
|
}
|
||||||
catch (ArgumentException exArg)
|
catch (ArgumentException exArg)
|
||||||
@ -119,15 +128,18 @@ namespace NadekoBot.Modules {
|
|||||||
cgb.CreateCommand(trigger + "scm").Alias(trigger + "setchannelmodule")
|
cgb.CreateCommand(trigger + "scm").Alias(trigger + "setchannelmodule")
|
||||||
.Parameter("module", ParameterType.Required)
|
.Parameter("module", ParameterType.Required)
|
||||||
.Parameter("bool", ParameterType.Required)
|
.Parameter("bool", ParameterType.Required)
|
||||||
|
.Parameter("channel", ParameterType.Unparsed)
|
||||||
.Description("Sets a module's permission at the channel level.")
|
.Description("Sets a module's permission at the channel level.")
|
||||||
// .AddCheck() -> fix this
|
// .AddCheck() -> fix this
|
||||||
.Do(async e =>
|
.Do(async e =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
PermissionHelper.ValidateModule(e.GetArg("module"));
|
string module = PermissionHelper.ValidateModule(e.GetArg("module"));
|
||||||
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
||||||
|
Discord.Channel channel = PermissionHelper.ValidateChannel(e.Server, e.GetArg("channel"));
|
||||||
|
|
||||||
|
PermsHandler.SetChannelModulePermission(channel, module, state);
|
||||||
await e.Send("I'm setting " + e.GetArg("module") + " to " + state);
|
await e.Send("I'm setting " + e.GetArg("module") + " to " + state);
|
||||||
}
|
}
|
||||||
catch (ArgumentException exArg)
|
catch (ArgumentException exArg)
|
||||||
@ -143,15 +155,18 @@ namespace NadekoBot.Modules {
|
|||||||
cgb.CreateCommand(trigger + "scc").Alias(trigger + "setchannelcommand")
|
cgb.CreateCommand(trigger + "scc").Alias(trigger + "setchannelcommand")
|
||||||
.Parameter("command", ParameterType.Required)
|
.Parameter("command", ParameterType.Required)
|
||||||
.Parameter("bool", ParameterType.Required)
|
.Parameter("bool", ParameterType.Required)
|
||||||
|
.Parameter("channel", ParameterType.Unparsed)
|
||||||
.Description("Sets a command's permission at the channel level.")
|
.Description("Sets a command's permission at the channel level.")
|
||||||
// .AddCheck() -> fix this
|
// .AddCheck() -> fix this
|
||||||
.Do(async e =>
|
.Do(async e =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
PermissionHelper.ValidateCommand(e.GetArg("command"));
|
string command = PermissionHelper.ValidateCommand(e.GetArg("command"));
|
||||||
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
||||||
|
Discord.Channel channel = PermissionHelper.ValidateChannel(e.Server, e.GetArg("channel"));
|
||||||
|
|
||||||
|
PermsHandler.SetChannelCommandPermission(channel, command, state);
|
||||||
await e.Send("I'm setting " + e.GetArg("command") + " to " + state);
|
await e.Send("I'm setting " + e.GetArg("command") + " to " + state);
|
||||||
}
|
}
|
||||||
catch (ArgumentException exArg)
|
catch (ArgumentException exArg)
|
||||||
@ -167,15 +182,18 @@ namespace NadekoBot.Modules {
|
|||||||
cgb.CreateCommand(trigger + "sum").Alias(trigger + "setusermodule")
|
cgb.CreateCommand(trigger + "sum").Alias(trigger + "setusermodule")
|
||||||
.Parameter("module", ParameterType.Required)
|
.Parameter("module", ParameterType.Required)
|
||||||
.Parameter("bool", ParameterType.Required)
|
.Parameter("bool", ParameterType.Required)
|
||||||
|
.Parameter("user", ParameterType.Unparsed)
|
||||||
.Description("Sets a module's permission at the user level.")
|
.Description("Sets a module's permission at the user level.")
|
||||||
// .AddCheck() -> fix this
|
// .AddCheck() -> fix this
|
||||||
.Do(async e =>
|
.Do(async e =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
PermissionHelper.ValidateModule(e.GetArg("module"));
|
string module = PermissionHelper.ValidateModule(e.GetArg("module"));
|
||||||
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
||||||
|
Discord.User user = PermissionHelper.ValidateUser(e.Server, e.GetArg("user"));
|
||||||
|
|
||||||
|
PermsHandler.SetUserModulePermission(user, module, state);
|
||||||
await e.Send("I'm setting " + e.GetArg("module") + " to " + state);
|
await e.Send("I'm setting " + e.GetArg("module") + " to " + state);
|
||||||
}
|
}
|
||||||
catch (ArgumentException exArg)
|
catch (ArgumentException exArg)
|
||||||
@ -191,15 +209,18 @@ namespace NadekoBot.Modules {
|
|||||||
cgb.CreateCommand(trigger + "suc").Alias(trigger + "setusercommand")
|
cgb.CreateCommand(trigger + "suc").Alias(trigger + "setusercommand")
|
||||||
.Parameter("command", ParameterType.Required)
|
.Parameter("command", ParameterType.Required)
|
||||||
.Parameter("bool", ParameterType.Required)
|
.Parameter("bool", ParameterType.Required)
|
||||||
|
.Parameter("user", ParameterType.Unparsed)
|
||||||
.Description("Sets a command's permission at the user level.")
|
.Description("Sets a command's permission at the user level.")
|
||||||
// .AddCheck() -> fix this
|
// .AddCheck() -> fix this
|
||||||
.Do(async e =>
|
.Do(async e =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
PermissionHelper.ValidateModule(e.GetArg("command"));
|
string command = PermissionHelper.ValidateCommand(e.GetArg("command"));
|
||||||
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
||||||
|
Discord.User user = PermissionHelper.ValidateUser(e.Server, e.GetArg("user"));
|
||||||
|
|
||||||
|
PermsHandler.SetUserCommandPermission(user, command, state);
|
||||||
await e.Send("I'm setting " + e.GetArg("command") + " to " + state);
|
await e.Send("I'm setting " + e.GetArg("command") + " to " + state);
|
||||||
}
|
}
|
||||||
catch (ArgumentException exArg)
|
catch (ArgumentException exArg)
|
||||||
|
@ -16,7 +16,7 @@ namespace NadekoBot {
|
|||||||
public static string botMention;
|
public static string botMention;
|
||||||
public static string GoogleAPIKey = null;
|
public static string GoogleAPIKey = null;
|
||||||
public static ulong OwnerID;
|
public static ulong OwnerID;
|
||||||
public static User OwnerUser = null;
|
public static Channel OwnerPrivateChannel = null;
|
||||||
public static string password;
|
public static string password;
|
||||||
public static string TrelloAppKey;
|
public static string TrelloAppKey;
|
||||||
public static bool ForwardMessages = false;
|
public static bool ForwardMessages = false;
|
||||||
@ -107,11 +107,14 @@ namespace NadekoBot {
|
|||||||
Console.WriteLine(NadekoStats.Instance.GetStats());
|
Console.WriteLine(NadekoStats.Instance.GetStats());
|
||||||
Console.WriteLine("-----------------");
|
Console.WriteLine("-----------------");
|
||||||
|
|
||||||
foreach (var serv in client.Servers) {
|
try {
|
||||||
if ((OwnerUser = serv.GetUser(OwnerID)) != null)
|
OwnerPrivateChannel = await client.CreatePrivateChannel(OwnerID);
|
||||||
return;
|
} catch (Exception) {
|
||||||
|
Console.WriteLine("Failed creating private channel with the owner");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Classes.Permissions.PermissionsHandler.Initialize();
|
||||||
|
|
||||||
client.ClientAPI.SendingRequest += (s, e) =>
|
client.ClientAPI.SendingRequest += (s, e) =>
|
||||||
{
|
{
|
||||||
var request = e.Request as Discord.API.Client.Rest.SendMessageRequest;
|
var request = e.Request as Discord.API.Client.Rest.SendMessageRequest;
|
||||||
@ -144,8 +147,8 @@ namespace NadekoBot {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ForwardMessages && OwnerUser != null)
|
if (ForwardMessages && OwnerPrivateChannel != null)
|
||||||
await OwnerUser.SendMessage(e.User + ": ```\n" + e.Message.Text + "\n```");
|
await OwnerPrivateChannel.SendMessage(e.User + ": ```\n" + e.Message.Text + "\n```");
|
||||||
|
|
||||||
if (!repliedRecently) {
|
if (!repliedRecently) {
|
||||||
await e.Send("**COMMANDS DO NOT WORK IN PERSONAL MESSAGES**\nYou can type `-h` or `-help` or `@MyName help` in any of the channels I am in and I will send you a message with my commands.\n Or you can find out what i do here: https://github.com/Kwoth/NadekoBot\nYou can also just send me an invite link to a server and I will join it.\nIf you don't want me on your server, you can simply ban me ;(\nBot Creator's server: https://discord.gg/0ehQwTK2RBhxEi0X");
|
await e.Send("**COMMANDS DO NOT WORK IN PERSONAL MESSAGES**\nYou can type `-h` or `-help` or `@MyName help` in any of the channels I am in and I will send you a message with my commands.\n Or you can find out what i do here: https://github.com/Kwoth/NadekoBot\nYou can also just send me an invite link to a server and I will join it.\nIf you don't want me on your server, you can simply ban me ;(\nBot Creator's server: https://discord.gg/0ehQwTK2RBhxEi0X");
|
||||||
|
@ -132,9 +132,9 @@
|
|||||||
<Compile Include="Classes\Music\MusicControls.cs" />
|
<Compile Include="Classes\Music\MusicControls.cs" />
|
||||||
<Compile Include="Classes\Music\StreamRequest.cs" />
|
<Compile Include="Classes\Music\StreamRequest.cs" />
|
||||||
<Compile Include="Classes\Music\SoundCloud.cs" />
|
<Compile Include="Classes\Music\SoundCloud.cs" />
|
||||||
<Compile Include="Classes\PermissionCheckers\PermissionChecker.cs" />
|
<Compile Include="Classes\Permissions\PermissionChecker.cs" />
|
||||||
<Compile Include="Classes\PermissionHelper.cs" />
|
<Compile Include="Classes\Permissions\PermissionHelper.cs" />
|
||||||
<Compile Include="Classes\PermissionCheckers\PermissionsHandler.cs" />
|
<Compile Include="Classes\Permissions\PermissionsHandler.cs" />
|
||||||
<Compile Include="Classes\SearchHelper.cs" />
|
<Compile Include="Classes\SearchHelper.cs" />
|
||||||
<Compile Include="Classes\_DataModels\AnnouncementModel.cs" />
|
<Compile Include="Classes\_DataModels\AnnouncementModel.cs" />
|
||||||
<Compile Include="Classes\_DataModels\CommandModel.cs" />
|
<Compile Include="Classes\_DataModels\CommandModel.cs" />
|
||||||
|
BIN
NadekoBot/bin/Debug/data/nadekobot.sqlite
Normal file
BIN
NadekoBot/bin/Debug/data/nadekobot.sqlite
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user