ApliNi
  1. ## Chat2QQ+

  2. > **说明**

  3. Chat2QQ+ 是 [Chat2QQ](https://github.com/DreamVoid/Chat2QQ) 的分支, 用于添加我需要的功能.

  4. 如果你有好的想法请点击上方 `Issues` 按钮, 发送一个功能请求. 如果我能做到就会去实现出来.

  5. ! 注意, 此版本不兼容 Bukkit 服务器, 最低需要使用 1.18.2 版本的 Spigot (Chat2QQ-1.7.4 及以下版本支持 MC1.13.2).



  6. > **下载**

  7. 可以点击右侧 `Releases` 按钮下载jar文件. 对于新添加的功能请在这里提问(而不是 DreamVoid/Chat2QQ).

  8. 如果需要开发版(包含一些未发布的功能和BUG), 可以点击上方 `Actions`, 选择第一个, 找到最下面的jar文件.



  9. > **订阅更新**

  10. 如果想要订阅更新, 请点击右上角 `Watch` 按钮, 选择 `Custom` 中的 `Releases` !

  11. ---

  12. **功能列表**

  13. - 执行指令
  14. ```yaml
  15.   # 在QQ群中运行指令 [需要单独添加 QQ群]
  16.   # 此模块不处理黑名单 blacklist
  17.   run-command:
  18.     enabled: false
  19.     # 启用的 QQ群
  20.     qq-group:
  21.       - 1000001

  22.     # 指令前缀, 可以是多个字符, 比如 "~$"
  23.     command-prefix: '/'
  24.     # 指令最大长度 (不包括指令前缀)
  25.     command-max-length: 255
  26.     # 获取指令的正则表达式, 当第一个捕获组的内容与指令白名单中的匹配时则允许运行 (不带斜杠或前缀)
  27.     regex-command-main: '^([^ ]+)'

  28.     # 是否发送指令的输出, 关闭可提高性能或解决一些兼容性问题
  29.     return: true
  30.     # 等待指令运行多长时间再将结果发送到QQ群 (毫秒), 需要开启 run-command.return
  31.     return-sleep: 300
  32.     # 是否将指令的输出打印到控制台和日志
  33.     return-log: true

  34.     # 执行不在白名单中的指令时发送返回消息
  35.     message-miss: '未命中的指令'
  36.     # 运行无返回指令的消息
  37.     message-no-out: '运行无返回指令'

  38.     # 设置各组可执行的主命令白名单 (不带斜杠或前缀)
  39.     # 权限更高的用户将可以使用更低的用户的指令
  40.     # 如果添加一条 ___ALL_COMMAND___ 作为指令, 则表示此组可以使用所有指令, 此功能请勿随意使用 !
  41.     group:
  42.       # permission_<int> 是 MiraiMC 获取到的权限数字, 以后更新了其他权限只需要以此格式添加即可使用
  43.       permission_2: # 群主
  44.       #- chat2qq
  45.       permission_1: # 管理员
  46.       #- spark
  47.       permission_0: # 成员
  48.       #- list
  49.       #- tps
  50. ```

  51. - 匹配游戏名
  52. ```yaml
  53.   # 从 群名片(%nick%) 中匹配 MC 可用的游戏名称
  54.   # 添加变量: %regex_nick% - 使用正则匹配到的名称, 需要开启 cleanup-name 功能
  55.   cleanup-name:
  56.     enabled: false
  57.     # 程序取第一个捕获组的结果
  58.     regex: '([a-zA-Z0-9_]{3,16})'
  59.     # 如果匹配不到, 则使用 %nick%, 也可以替换为其他 %regex_nick% 以外的变量或字符串
  60.     not-captured: '%nick%'
  61. ```

  62. - 消息预处理
  63. ```yaml
  64.   # 预处理 %message% 中的消息
  65.   pretreatment:
  66.     enabled: true
  67.     # **使用方法**
  68.     # list:
  69.     #   - 匹配方式: prefix (前缀匹配), 可用处理方式: to_all
  70.     #                                           to_replace
  71.     #             contain (包含), 可用处理方式: to_all
  72.     #                                        to_replace
  73.     #             equal (完全相等), 可用处理方式: to_all
  74.     #             regular (正则匹配), 可用处理方式: to_all
  75.     #                                           to_regular
  76.     #     处理方式: to_all (替换整条消息)
  77.     #             to_replace (替换匹配到的部分)
  78.     #             to_regular (使用正则替换, 可使用正则变量)
  79.     #
  80.     #     是否发送: send (填写 send 配置将取消转发送匹配到的消息, 不需要时请忽略)
  81.     #
  82.     # > 正则的性能较差, 请尽量避免使用很多正则
  83.     # 示例配置, 默认配置了一些可能有用的功能:
  84.     list:

  85.       # 卡片消息, JSON
  86.       - prefix: '{"app":"com.tencent.'
  87.         to_all: '[卡片消息]'

  88.       # 群公告, JSON
  89.       - prefix: '{"app":"com.tencent.mannounce"'
  90.         to_all: '[群公告]'

  91.       # 视频, 字符串
  92.       - prefix: '你的QQ暂不支持查看视频短片'
  93.         to_all: '[视频]'

  94.       # 文件, 字符串, 调整格式
  95.       - prefix: '[文件]'
  96.         to_replace: '[文件] '

  97.       # 解决 Emoji 显示为未知字符
  98.       - regular: '[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]'
  99.         to_regular: '[Emoji]'
  100. ```

  101. - 预设格式调整配置
  102. ```yaml
  103.   # 预设的格式调整功能
  104.   other-format-presets:
  105.     # 是否删除 %message% 消息 中的格式化字符
  106.     render-message_format-code: false
  107.     # 删除 %message% 消息 前后的空格和空行
  108.     message-trim: true
  109.     # 是否删除 %nick% 群名片 中的格式化字符
  110.     render-nick_format-code: true

  111.     # 聊天消息过长时转换为悬浮文本
  112.     long-message:
  113.       enabled: true
  114.       # 以下任意一个条件成立时被判定为长消息, 若需取消一个, 请改为很大的数
  115.       # 条件1: 消息长度达到此值
  116.       condition-length: 210
  117.       # 条件2: 换行数量达到此值, 在 message-trim 之后运行
  118.       condition-line_num: 6
  119.       # 显示为
  120.       message: '§f[§7长消息§f]'

  121.     # 是否启用 "更好的多行消息"
  122.     multiline-message:
  123.       enabled: true
  124.       line-0: '' # [多行消息]
  125.       line-prefix: '  '

  126.     # 是否将聊天消息转发到控制台/日志
  127.     message-to-log: true
  128. ```

  129. - 引用回复
  130. ```yaml
  131.   # 引用回复
  132.   # 添加变量: %_reply_%
  133.   # 如果是回复消息, 则为变量赋值并为消息添加悬浮文本框用于显示内容. 可以将鼠标悬停在消息上查看回复的内容
  134.   reply-message:
  135.     # 可用变量:
  136.     # %qq% - 被回复的消息的发送者QQ号
  137.     var: '§f[§7回复 @%qq%§f] '

  138.     # 可用变量:
  139.     # %_/n_% - 换行
  140.     # %qq% - 被回复的消息的发送者QQ号
  141.     # %message% - 回复内容
  142.     # %main_message% - 当前消息的完整内容
  143.     message: '§f[§7引用 @%c_name%§f] §7%message%§r%_/n_%%_/n_%§f%main_message%'

  144.     # 删除重复@ :: 如果引用回复对象等于消息开头的@对象, 则删除消息开头的 @
  145.     del-duplicates-at: true
  146. ```

  147. - `qchat` 指令
  148. ```yaml
  149.   # 发送消息的指令
  150.   # /qchat <消息>  - 玩家使用此指令
  151.   # /qchat [自定义名称] <消息>  - 非玩家实体或其他程序使用此指令
  152.   qchat:
  153.     # 使用上方 general.group-ids 中配置的群
  154.     use-general-group-ids: true
  155.     # 消息转发到哪些群, 需要 use-general-group-ids: false
  156.     group-ids:
  157.       - 1000000
  158.     # 非玩家 执行指令时忽略 [自定义名称] 参数
  159.     use-fill-name: false
  160.     # 如果获取不到名称 (开启 auto-other-name 或参数不足) 则使用以下设定值
  161.     fill-name: '控制台'
  162.     # 转发到QQ群的格式
  163.     # %name% - 玩家名称或自定义名称或 fill-other-name
  164.     # %message% - 消息
  165.     qq-format: '[%name%] %message%'
  166.     # 是否同时将消息广播到MC服务器
  167.     mc-broadcast: true
  168.     # 广播到MC服务器的
  169.     mc-format: '§f[§7%name%§f] §r%message%'
  170. ```

  171. - [前置] 群成员信息缓存
  172. ```yaml
  173.   # [前置] 群成员信息缓存, 测试功能
  174.   player-cache:
  175.     # 在指定机器人登录时运行此程序
  176.     enabled: true
  177.     # 自动更新缓存
  178.     auto-update: true
  179.     # 测试.自动更新时重建所有缓存数据
  180.     #test-auto-update-all: false

  181.     # 使用上方 general.group-ids 中配置的群
  182.     use-general-group-ids: true
  183.     # 缓存哪些群, 需要 use-general-group-ids: false
  184.     group-ids:
  185.       - 1000000
  186. ```

  187. - 使用 @群名片
  188. ```yaml
  189.   # 将 %message% 中的 [url=home.php?mod=space&uid=3929123]@qqid[/url] 替换为 @名称
  190.   # 需要开启 aplini.player-cache
  191.   format-qq-id:
  192.     enabled: true
  193.     # 用于匹配 @qqID 的正则
  194.     regular: '(@[0-9]{5,11})'
  195.     # 格式
  196.     # %qq% - qq号
  197.     # %name% - 名称
  198.     format: '[@%name%]'
  199.     # 最多匹配几次, 防止刷屏浪费性能
  200.     max-cycles-num: 7
  201. ```

  202. **指令和权限**
  203. ```yaml
  204. commands:
  205.   qchat:
  206.     description: 发送聊天消息到QQ群
  207.     permission: chat2qq.command.qchat
  208.   chat2qq:
  209.     description: Chat2QQ 插件主命令
  210. permissions:
  211.   chat2qq.join.silent:
  212.     description: 允许悄悄加入服务器
  213.     default: false
  214.   chat2qq.quit.silent:
  215.     description: 允许悄悄离开服务器
  216.     default: false
  217.   chat2qq.command.qchat:
  218.     description: 允许使用 /qchat
  219.     default: op
  220.   chat2qq.command.chat2qq:
  221.     description: 允许使用 /chat2qq
  222.     default: op
  223.   chat2qq:.command.setgroupcacheall:
  224.     description: 允许使用 /chat2qq setgroupcacheall
  225.     default: op
  226. ```
复制代码