Discord.Addons.SimplePermissions
1.2.0-alpha2
dotnet add package Discord.Addons.SimplePermissions --version 1.2.0-alpha2
NuGet\Install-Package Discord.Addons.SimplePermissions -Version 1.2.0-alpha2
<PackageReference Include="Discord.Addons.SimplePermissions" Version="1.2.0-alpha2" />
paket add Discord.Addons.SimplePermissions --version 1.2.0-alpha2
#r "nuget: Discord.Addons.SimplePermissions, 1.2.0-alpha2"
// Install Discord.Addons.SimplePermissions as a Cake Addin #addin nuget:?package=Discord.Addons.SimplePermissions&version=1.2.0-alpha2&prerelease // Install Discord.Addons.SimplePermissions as a Cake Tool #tool nuget:?package=Discord.Addons.SimplePermissions&version=1.2.0-alpha2&prerelease
Discord.Addons.SimplePermissions
Discord.Net module for command permission management.
Quickstart
You need a config store provider for this. I have basic implementations for both JSON, and databases via EF Core available.
First you need a config object; you can use a base implementation if using a pre-made provider.
//example for the JSON provider
public class MyBotConfig : JsonConfigBase
{
// You could add some more properties here that don't exist in the base class
// for example:
public string Token { get; set; }
}
Next, create an instance of your config store as your bot starts
up and call the UseSimplePermissions()
extension method.
// At the top in your Program class:
private readonly IConfigStore<MyBotConfig> _configstore = new JsonConfigStore<MyBotConfig>("config.json");
// When configuring all your services:
.AddSingleton(new PermissionsService(_configstore, _commands, _client, Logger))
// 'Logger' is an optional delegate that can point to your logging method
// When setting up your commands:
await _commands.AddModuleAsync<PermissionsModule>(_services);
Now you can also use the _configstore
for other parts of your configuration.
Note, since the config is also an IDisposable
, wrap all the access
to the config object in a using
statement:
using (var config = configstore.Load())
{
// Actually a pretty bad idea, but it demonstrates well
await client.LoginAsync(TokenType.Bot, config.Token);
}
Permissions
For optimal management, you should mark every command you make with the Permission attribute to specify who can use which commands. For example:
// When using method commands:
[Permission(MinimumPermission.ModRole)]
public async Task MyCmd()
{
//.....
}
// When using Command builders:
//....
.AddPrecondition(new PermissionAttribute(MinimumPermission.ModRole))
//....
There are six permission levels provided:
Everyone = 0,
ModRole = 1,
AdminRole = 2,
GuildOwner = 3,
Special,
BotOwner
The first four levels are in a hierarchy; these can execute
commands of their own level or of lower value. Special
and BotOwner
are not
part of the permission hierarchy, these must match exactly in order to pass.
Once your bot has joined a new Guild (server), the owner of that Guild has to set
which roles are considered Mods and Admins respectively.
The roles
command can be used to list all roles and their ID,
then setmod <id>
and setadmin <id>
to do it.
Once the roles are set, Mods and above can whitelist/blacklist specific Modules either
per Channel or per Guild. The modules
command will list the names of all
Modules registered in the CommandService, then use wl <module name>
to whitelist a Module in that Channel, or wl <module name> g
to use it in all channels.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Discord.Net.Commands (>= 2.0.0-beta2-00933)
- Discord.Net.WebSocket (>= 2.0.0-beta2-00933)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Discord.Addons.SimplePermissions:
Package | Downloads |
---|---|
Discord.Addons.SimplePermissions.EFProvider
EF provider for Discord.Addons.SimplePermissions |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.2.0-alpha2 | 891 | 5/9/2018 |