Logo
MINECRAFTBIBLE
Items
Items

All game items

Blocks
Blocks

Building blocks

Mobs
Mobs

Creatures & monsters

Biomes
Biomes

World biomes

Structures
Structures

Generated structures

Recipes
Recipes

Crafting guides

Advancements
Advancements

Achievements

Loot Tables
Loot Tables

Drop rates

Tags
Tags

Item groupings

All Versions
View all data →
Capes
Cape ArchiveNEW

Browse rare Minecon capes, OptiFine capes, and custom capes from players worldwide

Browse

Player Database
Player DatabasePopular

Search any player

Skin Browser
Skin Browser

Browse & download skins

Cape Gallery
Cape GalleryNEW

Minecon & OptiFine capes

Seed Vault
Seed Vault

Curated seeds

Learn

Guides
GuidesNew

Tutorials & tips

Blog
Blog

News & updates

Community

Community Hub
Community HubHub

Posts, discussions & more

All Versions
View community →
Seed Analyzer
Seed Analyzer

World seed analysis

Loot Explorer
Loot Explorer

Drop rates

Crafting Calculator
Crafting Calculator

Material planning

Enchant Calculator
Enchant Calculator

Probability math

Redstone Lab
Redstone Lab

Signal timing

Trading Profit
Trading Profit

Villager ROI

All Versions
View all tools →
Mods
Mods

Browse all mods

Plugins
Plugins

Server plugins

Resource Packs
Resource Packs

Textures & sounds

Shaders
Shaders

Visual enhancements

Datapacks
Datapacks

World logic

Scanner
Mod Intelligence

Scan & analyze any mod

All Versions
View all mods →
Loading...
IntroductionIntroductionVersion HistoryVersion HistoryGuidesGuidesBlog & NewsBlog & News
ItemsItemsBlocksBlocksMobsMobsRecipesRecipesBiomesBiomesStructuresStructuresAdvancementsAdvancementsLoot TablesLoot TablesTagsTags
ModsModsPluginsPluginsResource PacksResource PacksShadersShadersDatapacksDatapacks

MinecraftBible

The Ultimate Wiki

Logo
MINECRAFTBIBLE

The ultimate Minecraft reference. Every item, block, mob, and recipe documented with precision.

Community

  • Skin Browser
  • Cape Gallery
  • Seed Vault
  • Blog
  • Guides

Database

  • Items
  • Blocks
  • Mobs
  • Recipes
  • Biomes
  • Structures

Tools

  • Seed Analyzer
  • Mod Intelligence
  • Crafting Calculator
  • Enchant Calculator

Mods & Packs

  • Mods
  • Plugins
  • Resource Packs
  • Shaders
  • Datapacks

Site & Legal

  • About
  • Authors
  • Editorial Policy
  • Corrections
  • Contact
  • Privacy Policy
  • Terms of Service
  • DMCA
  • Sitemap

© 2026 MinecraftBible. Not affiliated with Mojang or Microsoft.

PrivacyTermsContact
Chat2QQ+
PluginAGPL-3.0-only

Chat2QQ+

基于 MiraiMC 更好的, 带有复杂字符串处理功能的聊天转发插件

766
Downloads
5
Followers
3 months ago
Updated
📦
9
Versions
socialfoliapaperpurpurspigot
Download Latestv1.10.0View on Modrinth

📖About Chat2QQ+

Chat2QQ+

这个插件专注于实现更好的消息显示, 并以模块的方式集成了一些其他的功能

  • 🚧 说明

    • ApliNi/Chat2QQ 是包含 DreamVoid/Chat2QQ 几乎所有功能的插件, 经过重写并添加了许多功能.
    • 如果你有任何想法请点击 Issues, 打开一个功能请求. 如果我能做到就会去实现出来.
    • 如果您使用默认配置, 那么还需要开启 MiraiMC 插件配置中的 bot.contact-cache.enable-group-member-list-cache, 才能保证软件正常运行.

  • 📦 下载

    • 在 Releases 中下载最新的jar文件.
    • 如果需要开发版本, 可以点击 Actions, 打开第一个, 找到最下面的jar文件.

  • 📄 其他

    • 订阅更新: 点击右上角 Watch 按钮, 选择 Custom 中的 Releases !
    • 使用量统计: bStats


更新计划

  • 聊天消息转发

    • 格式化
    • 多群组支持
    • 消息预处理功能
    • 多行文本和长文本显示优化
    • 引用回复显示优化
    • 群名片过滤
    • 艾特显示优化
    • 用户黑名单
  • 事件处理

    • 玩家加入退出

这些功能在可配置的模块中

  • 运行指令

    • 返回指令输出消息
    • 更好的等待指令返回
    • 权限管理
      • 继承
    • 指令黑名单
  • 从群名片中匹配游戏名称

  • 消息预处理

    • 匹配方式: 前缀 / 包含 / 相等 / 正则
    • 支持让匹配到的消息完全不发送
  • 按行预处理指令的返回消息

    • 支持(匹配方式)
  • 按合并后的完整消息预处理指令返回消息

    • 支持(匹配方式)
    • 添加一些特殊的占位符
  • 预设的格式调整功能

    • 删除消息中的格式化字符
    • 删除消息前后空格和空行
    • 删除群名片中的格式化代码
    • 将长文本转换为鼠标悬浮显示文本
    • 更好的多行消息
    • 将聊天消息转发到控制台
  • 引用回复优化

    • 格式化
    • 删除重复的艾特
  • /qchat

    • 区分玩家运行指令和控制台运行指令
  • 群成员信息缓存 [前置]

    • 自动更新数据
    • 支持使用外部 Mirai 的缓存文件
  • 艾特显示优化

  • 事件任务

    • 群成员加入
    • 群成员退出
  • 自动回复

    • 支持(匹配方式)
    • 支持 PAPI

✨ 图片

运行指令

image

群名片过滤

image
image

特殊消息预处理

image
image

多行文本和长文本显示优化

image
image

image
image

引用回复显示优化

image
image

image
image

image
image

更好的名称显示

image
image

自动回复

image

完整配置和功能


# 游戏内配置
# QQ -> MC 的消息
general:
  # 转发哪些QQ群的消息
  group-ids:
    - 1000000
    - 1000001

  # 群聊天前缀 (聊天需要带有指定前缀才能发送到服务器)
  requite-special-word-prefix:
    enabled: false
    prefix:
      - '#'

  # 当群名片不存在时是否尝试获取昵称
  use-nick-if-namecard-null: true

  # QQ群消息广播到游戏内聊天的格式 格式化代码: §
  # %groupname% - 群名称
  # %groupid% - 群号
  # %nick% - 发送者群名片
  # %regex_nick% - 使用正则匹配到的名称, 需要开启 aplini.cleanup-name 模块
  # %qq% - 发送者QQ号
  # %message% - 消息内容, 支持预处理模块 aplini.pretreatment
  # %_reply_% - 如果是回复消息..., 配置在 aplini.reply-message 模块
  in-game-chat-format: '§f[§7%nick%§r§f] %_reply_%§7%message%'
  # 为每个群使用不同的格式, 如果没有则使用上方的 in-game-chat-format
  special:
    1000000: '§f[§7主群 %nick%§r§f] %_reply_%§7%message%'
    1000001: '§7[外群 %nick%] %_reply_%%message%'

  # 启用 MiraiMC 内置的QQ绑定
  use-miraimc-bind: false
  # 已绑定玩家的广播消息格式
  bind-chat-format: '§f[§7%nick%§r§f] %_reply_%§7%message%'
  # 为每个群使用不同的格式, 如果没有则使用上方的 bind-chat-format
  special-bind:
    1000000: '§f[§7主群 %nick%§r§f] %_reply_%§7%message%'



# 机器人配置
# MC -> QQ 的消息
bot:
  # 使用哪些QQ号处理消息
  # 只能添加一个
  bot-accounts:
    - 2000000

  # 将消息转发到那些QQ群
  group-ids:
    - 1000000

  # 玩家在以下世界中聊天才会被转发
  available-worlds:
  #- world
  # 将以上配置作为黑名单, 玩家不在以上世界中聊天才会被转发
  available-worlds-use-as-blacklist: true

  # 游戏聊天前缀 (聊天需要带有指定前缀才能发送到QQ群) 
  requite-special-word-prefix:
    enabled: true
    prefix:
      - '#'

  # 是否转发被其他插件取消过的聊天消息事件, 用于修复一些兼容性问题
  ignoreCancelled: false

  # 服务器消息发送到QQ群的格式
  # %player% - 玩家名称
  # %message% - 消息内容
  group-chat-format: '[%player%] %message%'


  # 是否发送玩家进出服务器的消息
  # %player% - 玩家显示昵称
  send-player-join-quit-message: false
  # 加入
  player-join-message: '%player% 进入服务器'
  # 退出
  player-quit-message: '%player% 离开服务器'
  # 防刷屏, 在此时间内多次进出服务器不会发送消息
  player-join-quit-message-interval: 0



# 黑名单, 可用于添加其他QQ机器人
# 优先级大于上方配置
blacklist:
  # 不转发以下QQ号的聊天消息
  qq:
  #- 2000001

  # 不转发以下玩家名的聊天消息
  player:
  #- playerName


# ############### #
# 以下为功能模块配置 #
# ############### #

aplini:

  ## 1
  # 在QQ群中运行指令 [需要单独添加QQ群]
  # 此模块不处理黑名单 blacklist
  run-command:
    enabled: false
    # 启用的 QQ群
    qq-group:
      - 1000001

    # 指令前缀, 可以是多个字符, 比如 "~$"
    command-prefix: '/'
    # 指令最大长度 (不包括指令前缀)
    command-max-length: 255
    # 获取指令的正则表达式, 当第一个捕获组的内容与指令白名单中的匹配时则允许运行 (不带斜杠或前缀)
    regex-command-main: '^([^ ]+)'
    # 判断指令返回为空的正则, 匹配多行文本. (经过 pretreatment-command-message 处理后)
    return-isNull: '^\s*$'
    # 是否将主命令转换为小写再执行
    always-lowercase: false

    # 是否发送指令的输出, 关闭可提高性能或解决一些兼容性问题
    return: true
    # 等待指令运行多长时间再将结果发送到QQ群 (毫秒), 需要开启 run-command.return
    # 如果你遇到了一些提前输出类似 "正在运行...请稍等" 消息的插件, 可以在 pretreatment-command-message 中配置完全删除这条消息. 然后 return-sleep-min 保持不变 :)
    return-sleep-min: 14 # 最小等待时间
    return-sleep-max: 5346 # 最大等待时间, 如果一些长耗时指令没有输出请增大此值
    return-sleep-sampling-interval: 172 # 输出内容检查间隔, 如果经常执行长耗时指令可以增大此值
    # 是否将指令的输出打印到控制台和日志
    return-log: true

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

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

    # 特殊指令配置
    special:
      no-return: # 这些指令始终不输出消息
      #- plugins
      #- version


  ## 2
  # 从 群名片(%nick%) 中匹配 MC 可用的游戏名称
  # 添加变量: %regex_nick% - 使用正则匹配到的名称, 需要开启 cleanup-name 功能
  cleanup-name:
    enabled: false
    # 程序取第一个捕获组的结果
    regex: '([a-zA-Z0-9_]{3,16})'
    # 如果匹配不到, 则使用以下字符串
    # %nick% - 群名片
    # %qq% - qq号
    not-captured: '%nick%'


  ## 3
  # 预处理 %message% 中的消息
  pretreatment:
    enabled: true
    # **使用方法**
    # list:
    #   - 匹配方式: prefix (前缀匹配), 处理方式: to_all, to_replace
    #              contain (包含), 处理方式: to_all, to_replace
    #              equal (完全相等), 处理方式: to_all
    #              regular (正则匹配), 处理方式: to_all, to_regular
    #
    #     处理方式: to_all (替换整条消息)
    #              to_replace (替换匹配到的部分)
    #              to_regular (使用正则替换, 可使用正则变量)
    #
    #     是否发送: send (填写 send 配置将取消转发送匹配到的消息, 不需要时请忽略)

    # 示例配置, 默认配置了一些可能有用的功能:
    list:

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

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

      # 使中括号与文本的前后始终有空格
      - regular: '\[([^\]]+)\]([^\s])'
        to_regular: '[$1] $2'
      - regular: '([^\s])\[([^\]]+)\]'
        to_regular: '$1 [$2]'

      # 转发消息使用前缀, 在群中使用 # 前缀将改变消息格式
      - regular: '^\s*(?:#|#)'
        to_regular: '§7> §f'

      # 示例: 取消发送包含此内容的消息
      #- contain: '此内容'
      #  send: false


  ## 3.1
  # 按行预处理指令返回消息, 用于处理返回到QQ群的消息
  pretreatment-command-message:
    enabled: true
    # 使用方法: 如上
    list:
      # 删除格式化字符
      - regular: '§[a-z0-9]'
        to_regular: ''

      # 示例: co插件翻页消息处理
      #- regular: '◀? ?第 (.*) 页 ▶? ?\((.*)\)'
      #  to_regular: '第 $1 页,  使用 /co page <页码> 翻页'


  ## 3.2
  # 按多行文本预处理指令返回消息
  # 可使用占位符:
  #   - %command% :: 用户运行的指令原文(不带斜杠/前缀)
  #   - %time% :: 指令运行耗时
  #   - %qq% :: 执行指令的qq号
  #   - %group% :: 执行指令的群号
  pretreatment-command-message-all:
    enabled: false
    enabled-placeholder: false # 关闭占位符可提高性能
    # 使用方法: 如上
    list:
    # 示例: 显示指令运行时间, 需要开启占位符
    #- regular: '([\s\S]+)'
    #  to_regular: '$1\n  - 运行耗时: %time%ms'


  ## 4
  # 预设的格式调整功能
  other-format-presets:
    # 是否删除 %message% 消息 中的格式化字符
    render-message_format-code: false
    # 删除 %message% 消息 前后的空格和空行
    message-trim: true
    # 是否删除 %nick% 群名片 中的格式化字符
    render-nick_format-code: true

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

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

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


  ## 5
  # 引用回复
  # 添加变量: %_reply_%
  # 如果是回复消息, 则为变量赋值并为消息添加悬浮文本框用于显示内容. 可以将鼠标悬停在消息上查看回复的内容
  reply-message:
    # 可用变量:
    # %qq% - 被回复的消息的发送者QQ号
    # %c_name% - 群名片 - 需要开启 aplini.format-qq-id
    var: '§f[§7回复 @%c_name%§f] '

    # 可用变量:
    # %_/n_% - 换行
    # %qq% - 被回复的消息的发送者QQ号
    # %c_name% - 群名片 - 需要开启 aplini.format-qq-id
    # %message% - 回复内容
    # %main_message% - 当前消息内容
    message: '§f[§7引用 @%c_name%§f]%_/n_%§7%message%§r%_/n_%%_/n_%§f——%main_message%'

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


  ## 6
  # 发送消息的指令
  # /qchat <消息> - 使用此指令
  qchat:
    # 使用上方 general.group-ids 中配置的群
    use-general-group-ids: true
    # 消息转发到哪些群, 需要 use-general-group-ids: false
    group-ids:
      - 1000000
    # 如果是玩家使用指令
    player:
      # 转发到QQ群的格式
      # %name% - 玩家名称
      # %message% - 消息
      qq-format: '[%name%] %message%'
      # 是否同时将消息广播到MC服务器
      mc-broadcast: true
      # 广播到MC服务器的
      mc-format: '§f[§7%name%§f] §7%message%'
    # 如果是控制台或插件使用指令, 同时绕过关键词和玩家黑名单
    console:
      # %message% - 消息
      qq-format: '%message%'


  ## 7
  # [前置] 群成员信息缓存
  # ! 需要开启 MiraiMC 配置中的 bot.contact-cache.enable-group-member-list-cache
  player-cache:
    # 在机器人登录和服务器启动时运行此程序
    enabled: true
    # 在玩家群名片修改时更新缓存
    auto-update: true
    # 在玩家发送消息时更新缓存
    auto-update-form-msg: true
    # 群名片修改时发出日志
    auto-update-log: true
    # 使用上方 general.group-ids 中配置的群
    use-general-group-ids: true
    # 缓存哪些群, 需要 use-general-group-ids: false
    group-ids:
      - 1000000


  ## 8
  # 将 %message% 中的 @qqID 替换为 @名称
  # 需要开启前置: aplini.player-cache
  format-qq-id:
    enabled: true
    # 用于匹配 @qqID 的正则
    regular: '(@[0-9]{5,11})'
    # 格式
    # %qq% - qq号
    # %name% - 名称
    format: '§f[§7@%name%§f]§7'
    # 一条消息最多匹配几次, 防止刷屏浪费性能
    max-cycles-num: 10


  ## 9
  # 事件任务
  event-func:
    # enable 修改后需要重启服务器
    enable: false
    # 使用上方 general.group-ids 中配置的群
    use-general-group-ids: true
    # 启用在哪些群, 需要 use-general-group-ids: false
    group-ids:
      - 1000000

      # 每个事件可用的任务不同, 这里列出了所有任务的使用方法:
      # - command: 'command' - 发送指令

      # - message-text: '消息' - 向事件来源发送消息, 群 或 好友/私聊

      # - message-group: 1000000 - 向指定群发送消息
      #   message-text: '消息'

      # - message-friend: 2000003 - 向指定好友发送消息
      #   message-text: '消息'

    MiraiMemberJoinEvent: # 群成员加入
    # 可使用: command, message-text, message-group
    # 一个事件中可添加多个相同或不相同的任务, 就像这样:
    #- message-text: '欢迎'
    #- command: 'tps'
    #- command: 'mspt'
    #- message-group: 1000000
    #  message-text: '消息'

    MiraiMemberLeaveEvent: # 成员退出
    # 可使用: command, message-text, message-group


  ## 10
  # 自动回复
  # 当QQ群中的消息匹配时发送自定义消息
  auto-response:
    enable: true
    # 使用上方 general.group-ids 中配置的群
    use-general-group-ids: true
    # 回复哪些群的消息, 需要 use-general-group-ids: false
    group-ids:
      - 1000000
    # 为此功能启用PAPI, 需要安装PAPI插件
    enable-papi: false

    # **使用方法**
    # list:
    #   - 匹配方式: prefix (前缀匹配)
    #             contain (包含)
    #             equal (完全相等)
    #             regular (正则匹配, send 中可使用正则变量)
    #     send (发送的消息内容)
    #
    # > 正则的性能较差, 请尽量避免使用很多正则
    # !! 请小心使用正则拼接PAPI变量, 如果正则设计有问题则可能出现注入漏洞 !!
    #    - 提示: 应指定匹配的字符范围和最小最大次数, 要绝对的防止输入PAPI变量的保留符号: %
    #      - 比如: - regular: '^\#ping ([a-zA-Z0-9_]{3,16})$'
    #               send: '$1 的延迟为: %player_ping_$1%ms'
    # 示例配置, 默认配置了一些可能有用的功能:
    list:

      # 使用PAPI获取在线玩家数量, 需要启用 aplini.auto-response.enable-papi
      # PlayerList: /papi ecloud download playerlist
      - equal: '#list'
        send: '在线玩家: [%playerlist_online,normal,yes,amount%] \n%playerlist_online,normal,yes,list%'

      # 使用PAPI获取服务器TPS, 需要启用 aplini.auto-response.enable-papi
      # Server: /papi ecloud download Server
      - equal: '#tps'
        send: 'TPS [1m, 5m, 15m]: %server_tps_1% / %server_tps_5% / %server_tps_15%'

      # 指令列表
      - equal: '#help'
        send: '指令列表: 
        \n    - #list - 显示在线玩家列表
        \n    - #tps - 显示服务器TPS'

      # @一个QQ号时发送消息
      - contain: '@2000000'
        send: 'OwO'


# <- 至此, 您已经完成了所有配置, 部分功能使用 /chat2qq reload 重载插件即可应用 uwu

指令和权限

  • qchat <消息> - 发送消息到群, 详细配置在 aplini.qchat
  • chat2qq - 插件主命令 & 帮助信息
    • chat2qq outgroupcacheall - 打印群成员缓存数据

plugin.yml

commands:
  qchat:
    description: 发送聊天消息到QQ群
    permission: chat2qq.command.qchat

  chat2qq:
    description: Chat2QQ 插件主命令

permissions:
  chat2qq.qq.receive:
    description: 允许收到来自QQ群的消息
    default: true

  chat2qq.chat.requite:
    description: 允许使用前缀符号转发消息到QQ群
    default: true

  chat2qq.join.silent:
    description: 允许悄悄加入服务器
    default: false

  chat2qq.quit.silent:
    description: 允许悄悄离开服务器
    default: false

  chat2qq.command.qchat:
    description: 允许使用 /qchat
    default: op

  chat2qq.command.chat2qq:
    description: 允许使用 /chat2qq
    default: op

👥 Team & Contributors

ApliNi
ApliNiOwner

⚙️ Compatibility

Environment
🖥️ Server-side
Loaders
foliapaperpurpurspigot
Minecraft Versions
1.21.81.21.91.21.101.21.11

🔗 Links

Modrinth Page