Skip to content

多实例模式

字数
861 字
阅读时间
4 分钟

Q2TG 可以把多份不同的转发 bot 运行在一起,在同一个容器中并共享数据库。一份 QQ Bot,TG Bot 这样的组合称为「实例」。一个实例中可以配置多个 QQ 群/好友 <-> TG 群的转发组合(ForwardPair)。

可以用于既需要自己使用个人模式,还需要用群组模式同步一些群的用户。

IMPORTANT

需要注意的是,虽然可以使用多实例模式给多个人共享 Bot,但是服务器主有能力获取服务器上任何实例的相关信息,包括 QQ 账号的密码、登录的 Telegram 个人账号的 Session 和经过服务器的任何消息。对方的 Q2TG 服务端甚至可能经过修改并会记录例如 Telegram 二步验证密码之类的信息。所以只应该在信任的前提下使用别人的 Q2TG 服务器。

如果你的签名服务器不支持多人共用

仓库中的示例 docker-compose 文件为运行单个实例一个人使用优化,例如只运行一份签名服务器并且通过环境变量指定签名服务器的版本和地址。

docker-compose.yaml 自带的 xzhouqd/qsign:core-1.1.9 就是不支持多人共用的

如果你的签名服务器不支持多人共用,可以这样修改 docker-compose.yaml

yaml
services:
  sign1:
    image: xzhouqd/qsign:core-1.1.9
    restart: unless-stopped
    stop_signal: SIGKILL
    environment:
      - BASE_PATH=/srv/qsign/qsign/txlib/8.9.71
    networks: 
      - default
  sign2: 
    image: xzhouqd/qsign:core-1.1.9
    restart: unless-stopped
    stop_signal: SIGKILL
    environment: 
      - BASE_PATH=/srv/qsign/qsign/txlib/8.9.71
    networks: 
      - default
      
  q2tg:
    image: ghcr.io/clansty/q2tg:rainbowcat
    depends_on:
      - sign1
      - sign2
......

以及最好是移除 SIGN_APISIGN_VER 这两个环境变量。如果之前已经配置过第一个实例(完成了初始化设置)了,请将签名 API 的相关设置手动加入数据库中。没有这两个环境变量的话,设置过程中会提示你输入签名服务器的地址

如果你的签名服务器支持多人共用的话,不需要进行上述修改,直接进行下方的创建步骤

服务器主创建新实例

只有第一个实例,也就是环境变量里指定的那个 Bot Token 对应的 bot,能创建新的实例

首先需要一个 Bot Token,然后使用命令 /newinstance <Token> 来创建新的实例。然后新的 Bot 就可以像第一个 Bot 一样使用。

配置时最好是给不同的 QQ 账号使用不同的签名服务器

「无缝模式」

对于同一个服务器上既有个人模式又有群组模式实例,且个人模式的 QQ 和 TG 账号同时加入了一组群组模式的同步群,无缝模式功能可以匹配那些个人模式的实例的 Telegram Userbot ID 和 QQ 号。从而当个人模式的用户在同服务器上群组模式同步群的 TG 分群内发送消息时,Q2TG 会找到 ta 的个人模式的实例的 QQ Bot,并且直接使用个人 QQ 账号发送消息。这样在 QQ 群里的人看见的消息也是由你个人发送的而不是 Bot 发送的第一行带名称的消息。