# BistroWhitelist
**Repository Path**: myKasa/BistroWhitelist
## Basic Information
- **Project Name**: BistroWhitelist
- **Description**: 酒馆白名单 支持MiraiMC的QQ群白名单
- **Primary Language**: Unknown
- **License**: AGPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-02-20
- **Last Updated**: 2025-08-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## BistroWhitelist —— 酒馆白名单 支持MiraiMC的QQ群白名单
一个简单而又强大的插件
由于找遍市面上支持QQ群的白名单插件都没有发现有好用并且支持高版本的插件
所以自己简单动手写了一个
已在1.21.1服务器中使用,其他版本可自行测试反馈
插件已开源至gitee,需手动构建,也可在当前页面下载已构建的版本
## 功能介绍
所有语言提示均可自定义
支持 MySQL 和 SQLite 数据库
没有添加到白名单的 ID 无法进入游戏
可在游戏内查询 ID 绑定的QQ
可脱离 MiraiMC 单独使用,但会默认关闭机器人功能
可使 QQ 与游戏 ID 进行绑定,并且可手动开启 QQ 重复绑定功能,防止小号注册
可检测绑定的 QQ 是否在群内,不在群内视为不在白名单
可使用管理员模式,管理员模式下,只有管理员可进行白名单操作
可添加多个群和机器人进行管理
```
# 当前配置版本 请勿修改
version: 1.5
# 将会兼容的最低版本 请勿修改
min-version: 1.5
# 插件配置
general:
# 语言配置
language: 'zh_CN'
# 是否启用 BistroBot
# 如果没有安装 BistroBot 请将此选项设置为 false
# 本插件会自动检测是否安装 BistroBot 如果没有安装将会自动强制禁用该配置
# 此选项主要用于兼容群组服 多个服务器仅需在登录服或某一服务器中安装 BistroBot 来提供绑定
# 子服关闭此选项后 仅会做校验白名单的功能
# 以此达到群组服白名单功能
enable-bot: true
# 添加绑定消息前缀
# 玩家需要发送“消息前缀 + 自己的ID”才会添加绑定
# 例如:下方设置为“申请白名单”,玩家的ID是“123456”,则玩家需要在群内发送消息“申请白名单 123456”, 注意中间有一个空格
# 如果是管理员,则管理员需要发送“消息前缀 + 玩家的ID + 玩家的QQ号”才会添加绑定
# 例如:下方设置为“申请白名单”,玩家的ID是“123456”,玩家的QQ号是“123456789”,则管理员需要在群内发送消息“申请白名单 123456 123456789”, 注意中间有一个空格
bind-command-prefix: "添加白名单"
# 解除绑定消息前缀
# 玩家需要发送“解除白名单”才会解除绑定, 注意:会删除所有该QQ绑定的ID
# 如果是管理员,则管理员需要发送“消息前缀 + 玩家的ID”才会添加绑定
# 例如:下方设置为“解除白名单”,玩家的ID是“123456”,则管理员需要在群内发送消息“解除白名单 123456”, 注意中间有一个空格
unbind-command-prefix: "解除白名单"
# Geyser 支持
# 与 Geyser 中的设置对应
# 如果不清楚的话请勿启用该功能
geyser:
# 是否启用 Geyser 支持
enable: false
# 设置的基岩版玩家名称前缀
prefix: '.'
# 数据库配置 目前支持 sqlite 和 mysql
database:
# 数据库类型 不区分大小写
type: sqlite
# 数据库表前缀
prefix: bwl_
# mysql 配置 仅数据库类型为 mysql 时生效
mysql:
# 数据库地址
url: 127.0.0.1
# 数据库端口
port: 3306
# 数据库参数
parameters: '?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true'
# 数据库用户名
username: root
# 数据库密码
password: root
# 数据库名称
database: bistro
# sqlite 配置 仅数据库类型为 sqlite 时生效
sqlite:
# 数据库文件路径 插件目录:%plugin_folder%
path: '%plugin_folder%/whitelist.db'
# 数据库连接池设置 不清楚的话不要修改
pool:
# 连接池连接超时时间
connection-timeout: 30000
# 连接池最大生命周期
max-lifetime: 1800000
# 连接池空闲时间
idle-timeout: 600000
# 连接池空闲线程存活时间
keep-alive-time: 0
# 连接池最大连接数
max-pool-size: 15
# 连接池最小连接数
min-pool-size: 5
# 指令配置
command:
# 游戏中绑定时阻止已经绑定过 ID 的 QQ 重复绑定
prevent-qq-rebind: true
# 群配置
# 不同 QQ 群可单独配置
group:
# 群1配置
# 是否启用该群配置
- enable: false
# 群号
group-id: 12345678
# 对应的机器人 QQ 号
bot-id: 1234567
# 对应的管理员列表 可配置多个管理员
# 请至少填写一个
admins:
- 123456
# 阻止已经绑定过 ID 的 QQ 重复绑定
# 例如:QQ123456 已经绑定了 ID1234567 那么 QQ123456 无法再次绑定其他 ID
prevent-qq-rebind: true
# 是否开启管理员独占模式
# 如果开启,只有管理员才能执行绑定和解绑操作
# 如果关闭,管理员和玩家都可以执行绑定和解绑操作,但需要区分管理员和玩家的绑定格式
admin-only: true
# 检测玩家绑定的 QQ 是否在群内,如果不在群内视为没有白名单
# 注意,通过游戏指令添加的玩家将跳过检测
# 如果单个玩家在多个群绑定过ID或拥有白名单 那么会对玩家所在的所有群进行检查 将会跳过没有开启群 开启检测的群中只要在其中一个群内就视为在群内
check-qq-in-group: true
# 群2配置
# 是否启用该群配置
- enable: false
# 群号
group-id: 12345678
# 对应的机器人 QQ 号
bot-id: 1234567
# 对应的管理员列表 可配置多个管理员
# 请至少填写一个
admins:
- 123456
# 阻止已经绑定过 ID 的 QQ 重复绑定
# 例如:QQ123456 已经绑定了 ID1234567 那么 QQ123456 无法再次绑定其他 ID
prevent-qq-rebind: true
# 是否开启管理员独占模式
# 如果开启,只有管理员才能执行绑定和解绑操作
# 如果关闭,管理员和玩家都可以执行绑定和解绑操作,但需要区分管理员和玩家的绑定格式
admin-only: true
# 检测玩家绑定的 QQ 是否在群内,如果不在群内视为没有白名单
# 注意,通过游戏指令添加的玩家将跳过检测
# 如果单个玩家在多个群绑定过ID或拥有白名单 那么会对玩家所在的所有群进行检查 将会跳过没有开启群 开启检测的群中只要在其中一个群内就视为在群内
check-qq-in-group: true
```
```
# 当前配置版本 不要修改
# 用于版本兼容
version: 1.1
# 系统消息
# 支持hex颜色 格式为: RRGGBB
system:
# 消息前缀
prefix: "&7[ 白名单 &7] >>> &f"
# 你没有权限
no-permission: "&c你没有足够的权限执行此命令"
# 重载成功
reload-success: "&a配置文件已经重新加载, 部分配置可能需要重新启动服务器才能生效"
# 重载失败
reload-failed: "&c重新配置文件时出现问题, 请查看控制台了解更多信息"
# 踢出信息。在踢出不在数据库的玩家时显示的踢出消息
# 默认提示消息使用的是 YAML 换行符,如果想使用单行消息可以设为 kick-message: "消息内容"
# 可用变量:%player_name%
kick-message: |-
&f你不在小酒馆的名单中噢,可以加入QQ群进行申请
&bQQ群 123456
# 游戏内消息
# 游戏中的消息都在这里配置
game:
# 未找到玩家绑定信息
# 可用变量:%player_name%
player-not-found: "&f未找到 QQ 或者该玩家没有白名单"
# 玩家绑定的信息
# 可用变量:%player_name% %player_qq%
player-bind-info: "&f玩家 &a%player_name% &f绑定的QQ是 &a%player_qq%"
# 绑定成功消息
# 可用变量:%player_name% %player_qq%
bind-success: "&a绑定成功 绑定ID: &f%player_name% &a绑定QQ:&f %player_qq%"
# 绑定失败消息 长度问题
bind-length-error: "&c指令格式不对哦, 正确的格式是/bwl bind ID QQ"
# 绑定失败消息 ID问题
# 可用变量:%player_name% %player_qq%
id-bind-failed: "&c添加失败, 当前ID已经在白名单中啦, 绑定的QQ为 &f%player_qq%"
# 绑定失败消息 QQ问题
# 需要开启阻止已经绑定过 ID 的 QQ 重复绑定功能
# 可用变量:%player_name% %player_qq%
qq-bind-failed: "&c添加失败, 当前QQ已经在白名单中啦, 绑定的ID为 &f%player_name%"
# 解绑成功消息
# 多个ID将会用逗号分割
# 可用变量:%player_name% %player_qq%
unbind-success: "&a白名单已移除 移除ID &f%player_name% &a移除QQ &f%player_qq%"
# 解绑失败消息 长度问题
unbind-length-error: "&c指令格式不对哦, 正确的格式是/bwl unbind ID"
# 解绑失败消息
# 可用变量:%player_name% %player_qq%
unbind-failed: "&c解绑失败, 当前ID可能没有在白名单中"
# 群内消息
# 插件向群内发送的所有消息都在这里配置
group:
# 未找到玩家绑定信息
# 可用变量:%player_name%
player-not-found: "未找到 QQ 或者该玩家没有白名单"
# 绑定成功
# 可用变量:%player_name% %player_qq%
bind-success: |-
白名单添加成功啦 ~
绑定ID %player_name%
绑定QQ %player_qq%
# 管理员 绑定失败消息 长度问题
# 需开启管理员模式
admin-bind-length-error: "指令格式不对哦~ 正确的格式是:添加白名单 ID QQ"
# 普通 绑定失败消息 长度问题
# 需关闭管理员模式
normal-bind-length-error: "指令格式不对哦~ 正确的格式是:申请白名单 ID"
# 通用 绑定失败消息 ID问题
# 可用变量:%player_name% %player_qq%
id-bind-failed: |-
添加失败, 当前ID已经在白名单中啦 ~
绑定的QQ %player_qq%
# 通用 绑定失败消息 QQ问题
# 需要开启阻止已经绑定过 ID 的 QQ 重复绑定功能
# 可用变量:%player_name% %player_qq%
qq-bind-failed: |-
添加失败, 当前QQ已经在白名单中啦 ~
绑定的ID %player_name%
# 解绑成功
# 多个ID将会用逗号分割
# 可用变量:%player_name% %player_qq%
unbind-success: |-
白名单已移除
移除ID %player_name%
移除QQ %player_qq%
# 管理员 解绑失败消息 长度问题
# 需开启管理员模式
admin-unbind-length-error: "指令格式不对哦~ 正确的格式是:解除白名单 ID"
# 普通 解绑失败消息 长度问题
# 需关闭管理员模式
normal-unbind-length-error: "指令格式不对哦~ 正确的格式是:解除白名单"
# 解绑失败
# 可用变量:%player_name% %player_qq%
unbind-failed: |-
解绑失败, 当前ID可能没有在白名单中
解绑ID %player_name%
解绑QQ %player_qq%
```