Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Karlatemp/LuckPerms-Mirai
LuckPerms on MiraiConsole
https://github.com/Karlatemp/LuckPerms-Mirai
luckperms mirai mirai-console mirai-plugin permissions
Last synced: 3 months ago
JSON representation
LuckPerms on MiraiConsole
- Host: GitHub
- URL: https://github.com/Karlatemp/LuckPerms-Mirai
- Owner: Karlatemp
- License: agpl-3.0
- Created: 2020-08-27T18:12:07.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2023-09-18T03:48:24.000Z (about 1 year ago)
- Last Synced: 2024-04-19T00:07:05.503Z (7 months ago)
- Topics: luckperms, mirai, mirai-console, mirai-plugin, permissions
- Language: Kotlin
- Homepage:
- Size: 785 KB
- Stars: 76
- Watchers: 2
- Forks: 2
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-mirai - Karlatemp/LuckPerms-Mirai - Console 平台版本, 提供基本API方便对接 Mirai-Console (mirai-console 插件)
README
# LuckPerms Mirai
View Plugin Site: https://mirai.mamoe.net/topic/68/
> 不支持在 Android 系统上运行
----
# Snapshot
![0.png](.images/0.png)
![1.png](.images/1.png)
![2.png](.images/2.png)
![3.png](.images/3.png)---
# Install
Way 1. By MCL: `mcl --update-package io.github.karlatemp:luckperms --channel nightly --type plugin`
Way 2. Download release from [Releases](https://github.com/Karlatemp/LuckPerms-Mirai/releases/latest). Then put it into `plugins`
# Usages
> LuckPerms-Mirai 基于 LuckPerms 开发, 详细用法请百度/谷歌/阅读 LuckPerms wiki
> [LuckPerms wiki](https://luckperms.net/wiki)
LuckPerms-Mirai 的身份上下文使用 context 实现, 可以在聊天中使用
`/lp user <****> info` 查看上下文下面是一些示例命令
```kotlin
// 授予群聊管理员(包含群主)一项权限
/lp group default permission set AdminPermission admin=true// 授予群主一条权限
/lp group default permission set OwnerPermission level=owner// 授予管理员(不含群主)一条权限
/lp group default permission set OwnerPermission level=admin// 授予在某个群的所有人一条权限
/lp group default permission set PermissionInGroup group=1234567890// 授予某个群的群聊管理员一条权限
/lp group default permission set PermissionInGroup group=1234567890 admin=true// 创建系统管理组
/lp creategroup root
/lp group root permission set *
/lp user 1234567890 parent set root// 开启权限调试模式 (debug(verbose) mode)
// WARNING: Dont run this command in chatting
/lp verbose on// 开启权限调试模式 (debug(verbose) mode), 并在 Web 查看
/lp verbose record
//WAIT.....
/lp verbose upload```
----
## 实现细节
对于 Mirai-Console Permission System. Permission有以下内容
- Permission本身
- Permission的父Permission对于 Mirai-Console Built-In PermissionSystem. 他会有以下行为
- 如果可以拥有权限的对象(`Permittee`) 拥有
`Permission` 或者 `Permission的任何一级parent`,
那么代表此 `Permittee` 拥有这个权限---
对于 LuckPerms-Mirai, 会有以下行为
- 获取当前权限节点状态
- 如果权限节点是已设置的, 返回该权限节点的状态
- 如果当前节点已经是 Root 权限节点, 中断, 判断为没有权限
- 重新检查该权限节点的parent
- 特别的, `Console` 拥有全部权限LuckPerms 采用拦截式的权限判断.
- 设: 当前需要判断的权限对象拥有的权限为 `*=true`, `deny=false`
- 那么该对象拥有**除了** `deny` 之外的全部权限# Dev
## 特别权限节点
LuckPerms Mirai 提供了一些特别的权限节点(权限ID), `namespace:id` 在对应代码中为 `PermissionId(namespace, id)`
- 对于 `*:*`, LuckPerms-Mirai会直接识别成 `*`, 代表 ROOT
- 对于 `:%`, LuckPerms-Mirai 会直接返回true, 代表没有权限检查
- `.` 与 `.%` 拥有相同效果
- 对于 `namespace:`(`PermissionId(namespace, "")`),
LuckPerms-Mirai 会识别成 `namespace` 而不是 `namespace.`
- 对于 `.`, 只有控制台拥有该权限, 将执行权限设置成 `.` 可确保只有 Console 可执行
- PermissionService#register
- 对于 parentId为 `:#` 的权限,
LuckPerms-Mirai 将直接提供权限节点并不进行任何注册检查,
父权限指定## 如何使用
- 正常接入Mirai-Console Permission System即可