{"id":15645765,"url":"https://github.com/cssxsh/mirai-administrator","last_synced_at":"2025-04-22T23:03:07.158Z","repository":{"id":37841516,"uuid":"454668276","full_name":"cssxsh/mirai-administrator","owner":"cssxsh","description":"一个简单的机器人管理插件","archived":false,"fork":false,"pushed_at":"2024-08-11T06:57:43.000Z","size":459,"stargazers_count":53,"open_issues_count":2,"forks_count":6,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-29T19:41:58.109Z","etag":null,"topics":["admin","kotlin","mirai","mirai-console","qq","schedule"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cssxsh.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-02T06:35:58.000Z","updated_at":"2025-03-13T07:22:18.000Z","dependencies_parsed_at":"2024-08-10T10:45:42.737Z","dependency_job_id":"12b866c7-1765-4b64-b733-d2fecab6bfa3","html_url":"https://github.com/cssxsh/mirai-administrator","commit_stats":null,"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cssxsh%2Fmirai-administrator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cssxsh%2Fmirai-administrator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cssxsh%2Fmirai-administrator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cssxsh%2Fmirai-administrator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cssxsh","download_url":"https://codeload.github.com/cssxsh/mirai-administrator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250337908,"owners_count":21414104,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admin","kotlin","mirai","mirai-console","qq","schedule"],"created_at":"2024-10-03T12:09:46.838Z","updated_at":"2025-04-22T23:03:07.139Z","avatar_url":"https://github.com/cssxsh.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mirai Administrator\n\n\u003e 基于 Mirai Console 的 管理员 Bot 及其标准\n\n[![Release](https://img.shields.io/github/v/release/cssxsh/mirai-administrator)](https://github.com/cssxsh/mirai-administrator/releases)\n[![Downloads](https://img.shields.io/github/downloads/cssxsh/mirai-administrator/total)](https://repo1.maven.org/maven2/xyz/cssxsh/mirai/mirai-administrator/)\n[![maven-central](https://img.shields.io/maven-central/v/xyz.cssxsh.mirai/mirai-administrator)](https://search.maven.org/artifact/xyz.cssxsh.mirai/mirai-administrator)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/8be173fe96c74059bfedd6268b8e6f0c)](https://www.codacy.com/gh/cssxsh/mirai-administrator/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=cssxsh/mirai-administrator\u0026amp;utm_campaign=Badge_Grade)\n\n**使用前应该查阅的相关文档或项目**\n\n*   [User Manual](https://github.com/mamoe/mirai/blob/dev/docs/UserManual.md)\n*   [Permission Command](https://github.com/mamoe/mirai/blob/dev/mirai-console/docs/BuiltInCommands.md#permissioncommand)\n*   [Chat Command](https://github.com/project-mirai/chat-command)\n\n本插件实现的功能有:\n\n*   联系人相关 自动审批，指令查看，用户留言\n*   消息相关 发送消息，撤回消息\n*   群管理相关 群消息审核，自动宵禁，自动清理不发言，禁言自动退群\n*   机器人异常下线时发送邮件\n\n本插件提供[服务接口](#服务接口)以供其他插件拓展功能  \n例如使用 [Mirai Content Censor](https://github.com/gnuf0rce/mirai-content-censor) 依靠百度API审查群消息  \n例如使用 [Mirai Authenticator](https://github.com/cssxsh/mirai-authenticator) 验证加群请求  \n\n## MCL 指令安装\n\n**请确认 mcl.jar 的版本是 2.1.0+**  \n`./mcl --update-package xyz.cssxsh.mirai:mirai-administrator --channel maven-stable --type plugins`\n\n## 指令\n\n注意: 使用前请确保可以 [在聊天环境执行指令](https://github.com/project-mirai/chat-command)   \n`\u003c...\u003e`中的是指令名  \n`[...]`表示参数，当`[...]`后面带`?`时表示参数可选  \n代之自身或者群聊可以用 `~`, 例如 `/group quiet ~`  \n\n本插件指令权限ID 格式为 `xyz.cssxsh.mirai.plugin.mirai-administrator:command.*`, `*` 是指令的第一指令名  \n例如 `/send to 12345` 的权限ID为 `xyz.cssxsh.mirai.plugin.mirai-administrator:command.send`  \n对 机器人发送的**联系人请求**通知消息 回复 `同意` 或 `不同意` 或 `拉黑` 即可处理  \n插件提供黑名单功能，使用指令 `/contact black u12345`, 即可拉黑用户，Bot将不响应用户动作（包括其他插件的功能）  \n发送异常下线邮件通知需要配置邮箱账户和密码\n\n### AdminContactCommand\n\n| Command                                       | Description |\n|:----------------------------------------------|:------------|\n| `/\u003ccontact\u003e \u003cdelete\u003e [contact]`               | 删除联系人       |\n| `/\u003ccontact\u003e \u003chandle\u003e [id] [accept]? [black]?` | 处理联系人申请     |\n| `/\u003ccontact\u003e \u003crequest\u003e`                        | 查看申请列表      |\n| `/\u003ccontact\u003e \u003cblack\u003e {permitteeIds}`           | 拉黑          |\n| `/\u003ccontact\u003e \u003cwhite\u003e {permitteeIds}`           | 取消拉黑        |\n| `/\u003ccontact\u003e \u003cscreen\u003e [page]?`                 | 列出黑名单       |\n| `/\u003ccontact\u003e \u003cbackup\u003e`                         | 触发备份功能      |\n\n1.  `id` 是 事件id 或 好友id 或 群id\n2.  `accept` 和 `black` 参数为 `true`, `yes`, `enabled`, `on`, `1` 时表示 `true` (不区分大小写)\n3.  对 机器人发送的新联系人通知消息 回复 `同意` 或 `不同意` 或 `拉黑` 即可处理，详见 [联系人审批配置](#联系人审批配置)\n4.  `permitteeIds` 是 权限系统的用户标识符，例如 `m12345.6789`, 可以提供多个 [PermitteeId](https://github.com/mamoe/mirai/blob/dev/mirai-console/docs/Permissions.md#%E8%A2%AB%E8%AE%B8%E5%8F%AF%E4%BA%BA-id) 一次性拉黑/取消拉黑\n5.  黑名单通过 `@EventHandler(priority = EventPriority.HIGH, concurrency = ConcurrencyKind.LOCKED)` 拦截消息\n\n### AdminFriendCommand\n\n| Command                       | Description |\n|:------------------------------|:------------|\n| `/\u003cfriend\u003e \u003clist\u003e`            | 好友列表        |\n| `/\u003cfriend\u003e \u003cdelete\u003e [friend]` | 删除好友        |\n\n### AdminGroupCommand\n\n| Command                                       | Description |\n|:----------------------------------------------|:------------|\n| `/\u003cgroup\u003e \u003clist\u003e`                             | 群列表         |\n| `/\u003cgroup\u003e \u003cmember\u003e [group] [page]?`           | 群成员         |\n| `/\u003cgroup\u003e \u003cquit\u003e [group]`                     | 退出群聊        |\n| `/\u003cgroup\u003e \u003ckick\u003e [member] [reason]? [black]?` | 踢出群员        |\n| `/\u003cgroup\u003e \u003cnick\u003e [member] [nick]`             | 群昵称         |\n| `/\u003cgroup\u003e \u003ctitle\u003e [member] [title]`           | 群头衔         |\n| `/\u003cgroup\u003e \u003cmute\u003e [member] [second]`           | 禁言          |\n| `/\u003cgroup\u003e \u003cquiet\u003e [group] [open]?`            | 全体禁言        |\n| `/\u003cgroup\u003e \u003cadmin\u003e [member] [operation]?`      | 设置管理员       |\n| `/\u003cgroup\u003e \u003cannounce\u003e [group]`                 | 设置公告        |\n| `/\u003cgroup\u003e \u003crank\u003e [group] {levels}`            | 设置等级头衔      |\n\n### AdminRecallCommand\n\n| Command                | Description |\n|:-----------------------|:------------|\n| `/\u003crecall\u003e [contact]?` | 撤回消息        |\n\n1.  不指定`contact`时，可以通过**回复消息**指定要撤销的消息，如果没有指定，将尝试撤销最后一条不是由指令发送者发送的消息\n2.  `contact`是群员时，将尝试撤销这个群员的最后一条消息\n3.  `contact`是群或好友时，将尝试撤销bot的最后一条消息\n\n### AdminRegisteredCommand\n\n| Command         | Description |\n|:----------------|:------------|\n| `/\u003cregistered\u003e` | 查看已注册指令     |\n| `/\u003creg\u003e`        | 查看已注册指令     |\n\n### AdminSendCommand\n\n| Command                                   | Description |\n|:------------------------------------------|:------------|\n| `/\u003csend\u003e \u003cgroups\u003e [bot]? [at]? [second]?` | 发送给所有群      |\n| `/\u003csend\u003e \u003cfriends\u003e [bot]? [second]?`      | 发送给所有好友     |\n| `/\u003csend\u003e \u003cto\u003e [contact] [at]?`            | 发送给指定联系人    |\n| `/\u003csend\u003e \u003cnudge\u003e [user]`                  | 戳一戳指定联系人    |\n| `/\u003csend\u003e \u003clog\u003e {addresses}`               | 备份日志到邮箱     |\n\n1.  `bot` 参数在命令行模式下需要指定\n2.  `at` 参数为 `true`, `yes`, `enabled`, `on`, `1` 时表示 `true`, 将附加一个At\n3.  `second` 参数为 延迟的秒数 例如 `/send groups 123456 false 10`\n4.  `addresses` 参数为 邮箱地址\n\n### AdminTimerCommand\n\n| Command                                    | Description |\n|:-------------------------------------------|:------------|\n| `/\u003ctimer\u003e \u003cconfig\u003e`                        | 显示当前设置      |\n| `/\u003ctimer\u003e \u003cmute\u003e [moment] [cron] [group]?` | 宵禁          |\n| `/\u003ctimer\u003e \u003ccleaner\u003e [day] [cron] [group]?` | 清理不发言       |\n| `/\u003ctimer\u003e \u003cstatus\u003e [cron] [bot]?`          | 定时发送机器人状态   |\n| `/\u003ctimer\u003e \u003cmessage\u003e [cron] [target] [at]`  | 定时发送消息      |\n\n1.  `group` 为 要操作的群，在群聊中可以不指定\n\n2.  `cron`, 为 CRON 表达式, 由 `秒 分钟 小时 日 月 周` 组成  \n    例如 `0 0 1 * * ?` 表示每天 01:00 执行一次，`0 30 2 ? * 2-6` 表示星期一至星期五 每天 02:30 执行一次  \n    可以使用在线编辑器生成 \u003chttps://www.bejson.com/othertools/cron/\u003e  \n    为防止被 空格 分成多个参数，请使用 `\"` 包裹参数  \n\n3.  `moment` 为 DURATION 表达式, 由 `PnDTnHnMn.nS` 组成  \n    例如 `P1DT2H3M4.5S` 表示 一天二小时三分钟四点五秒，`PT5H` 表示 五小时\n\n4.  mute 指令，`moment` 为零 `PT0S` 宵禁就会关闭  \n    例如 `/timer mute PT5H \"0 0 1 ? * 2-6\"`, 将会在 星期一到星期五的凌晨01:00 禁言 5 小时  \n    例如 `/timer mute PT0S \"0 0 0 1 * ?\"`, 将会 取消 禁言定时器  \n\n5.  cleaner 指令，`day` 单位为天数的发言期限, 小于等于 `0` 清理不发言就会关闭  \n    例如 `/timer cleaner 30 \"0 0 12 ? * 1,7\"`, 将会在 星期六、星期天的12:00 清理 30 天未发言的用户  \n    例如 `/timer cleaner 0 \"0 0 0 1 * ?\"`, 将会 取消 清理不发言定时器\n\n## 配置\n\n### 联系人审批配置\n\n1.  `AdminAutoApproverConfig.yml`\n\n### 禁言自动退群配置\n\n1.  `AdminAutoQuitConfig.yml`\n2.  `mute_limit` 大于这个设置秒数的禁言会触发自动退群\n\n### 留言配置\n\n1.  `AdminCommentConfig.yml`\n2.  `xyz.cssxsh.mirai.plugin.mirai-administrator:comment.include` 作用: 拥有此权限的用户，可以给机器人留言  \n\n### 机器人上线消息配置\n\n1.  `AdminOnlineMessageConfig.yml`\n2.  `xyz.cssxsh.mirai.plugin.mirai-administrator:online.include` 作用: 拥有此权限的群，会发送上线通知  \n\n### 消息审查及机器人所有者\n\n1.  `AdminSetting.yml`\n2.  `censor_types` 可选值 `IMAGE, FLASH, SERVICE, APP, AUDIO, FORWARD, VIP, MARKET, MUSIC, POKE`\n3.  正则词库, 须手动添加，将会加载 censor 文件夹中的 txt 文件，每一行对应一个正则匹配，会监听文件改动，无需重启\n\n### 邮件配置\n\n1.  `AdminMailConfig.yml` 配置一些默认的发送对象\n2.  `admin.mail.properties` 配置邮箱账号等，需要自己配置邮箱的 `mail.host`, `mail.user`, `mail.password`, `mail.from`\n\n格式参考\n\nQQ Mail https://service.mail.qq.com/detail/0/427\n```properties\nmail.host=smtp.qq.com\nmail.auth=true\nmail.user=xxx\nmail.password=***\nmail.from=cssxsh@qq.com\nmail.store.protocol=smtp\nmail.transport.protocol=smtp\n# smtp\nmail.smtp.starttls.enable=true\nmail.smtp.auth=true\nmail.smtp.timeout=15000\n```\n\nGmail https://support.google.com/mail/answer/7126229  \n```properties\nmail.host=smtp.gmail.com\nmail.auth=true\nmail.user=xxx\nmail.password=***\nmail.from=cssxsh@gmail.com\nmail.store.protocol=smtp\nmail.transport.protocol=smtp\n# smtp\nmail.smtp.starttls.enable=true\nmail.smtp.starttls.required=true\nmail.smtp.auth=true\nmail.smtp.timeout=15000\nmail.smtp.port=587\n```\n\n## [爱发电](https://afdian.net/@cssxsh)\n\n![afdian](.github/afdian.jpg)\n\n## 服务接口\n\nSPI接口 [ComparableService](src/main/kotlin/xyz/cssxsh/mirai/spi/ComparableService.kt)  \nWiki [Service Provider Interface](https://en.wikipedia.org/wiki/Service_provider_interface)  \n举例 [JvmPlugin](src/main/resources/META-INF/services/net.mamoe.mirai.console.plugin.jvm.JvmPlugin)\n\n### 内容审核\n\n接口 [ContentCensor](src/main/kotlin/xyz/cssxsh/mirai/spi/ContentCensor.kt)  \n实例 [MiraiContentCensor](src/main/kotlin/xyz/cssxsh/mirai/admin/MiraiContentCensor.kt)\n\n### 联系人审批\n\n接口 [FriendApprover](src/main/kotlin/xyz/cssxsh/mirai/spi/FriendApprover.kt)  \n接口 [MemberApprover](src/main/kotlin/xyz/cssxsh/mirai/spi/MemberApprover.kt)  \n接口 [GroupApprover](src/main/kotlin/xyz/cssxsh/mirai/spi/GroupApprover.kt)  \n实例 [MiraiAutoApprover](src/main/kotlin/xyz/cssxsh/mirai/admin/MiraiAutoApprover.kt)\n\n### 定时消息\n\n接口 [BotTimingMessage](src/main/kotlin/xyz/cssxsh/mirai/spi/BotTimingMessage.kt)  \n实例 [MiraiMessageTimer](src/main/kotlin/xyz/cssxsh/mirai/admin/MiraiMessageTimer.kt)  \n实例 [MiraiStatusMessage](src/main/kotlin/xyz/cssxsh/mirai/admin/MiraiStatusMessage.kt)\n\n### 上线操作\n\n接口 [BotOnlineAction](src/main/kotlin/xyz/cssxsh/mirai/spi/BotOnlineAction.kt)  \n实例 [MiraiOnlineMessage](src/main/kotlin/xyz/cssxsh/mirai/admin/MiraiOnlineMessage.kt)  \n\n### 宵禁(群定时禁言)\n\n接口 [GroupCurfewTimer](src/main/kotlin/xyz/cssxsh/mirai/spi/GroupCurfewTimer.kt)  \n实例 [MiraiCurfewTimer](src/main/kotlin/xyz/cssxsh/mirai/admin/MiraiCurfewTimer.kt)\n\n### 放风(限时权限)\n\n接口 [GroupAllowTimer](src/main/kotlin/xyz/cssxsh/mirai/spi/GroupAllowTimer.kt)\n\n### 群成员清理\n\n接口 [MemberCleaner](src/main/kotlin/xyz/cssxsh/mirai/spi/MemberCleaner.kt)  \n实例 [MiraiMemberCleaner](src/main/kotlin/xyz/cssxsh/mirai/admin/MiraiMemberCleaner.kt)\n\n### 群昵称检查\n\n接口 [MemberNickCensor](src/main/kotlin/xyz/cssxsh/mirai/spi/MemberNickCensor.kt)\n\n### 群头衔检查\n\n接口 [MemberTitleCensor](src/main/kotlin/xyz/cssxsh/mirai/spi/MemberTitleCensor.kt)\n\n### 黑名单\n\n接口 [BlackListService](src/main/kotlin/xyz/cssxsh/mirai/spi/BlackListService.kt)  \n实例 [MiraiBlackList](src/main/kotlin/xyz/cssxsh/mirai/admin/MiraiBlackList.kt)\n\n### 联系人备份\n\n接口 [BackupService](src/main/kotlin/xyz/cssxsh/mirai/spi/BackupService.kt)  \n实例 [MiraiBackupService](src/main/kotlin/xyz/cssxsh/mirai/admin/MiraiBackupService.kt)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcssxsh%2Fmirai-administrator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcssxsh%2Fmirai-administrator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcssxsh%2Fmirai-administrator/lists"}