“部娘bot(新)”的版本间差异

来自ThunionWiki
(重写页面)
第1行: 第1行:


由于tx风控和Mirai对高版本QQ签名停止支持,旧版[[部娘bot]]已经逐渐无法稳定运行,最终于2025年3月26日停用。当日[[用户:nekochen2333|陈猫]]即搭建了基于[https://napneko.github.io/ NapCatQQ]的bot并逐渐从[[部娘bot]]迁移功能。[[用户:Hexatomic ring|六元环]]又接入了[https://github.com/MaiM-with-u/MaiBot 麦麦bot],使部娘成为可以与服务器进行通信、使用群指令,还可以使用LLM聊天的综合型bot。本页面将会介绍部娘bot的各种功能。
由于tx风控和Mirai对高版本QQ签名停止支持,旧版[[部娘bot]]已经逐渐无法稳定运行,最终于2025年3月26日停用。当日[[用户:nekochen2333|陈猫]]即搭建了基于[https://napneko.github.io/ NapCatQQ]的bot并逐渐从[[部娘bot]]迁移功能。[[用户:Hexatomic ring|六元环]]又接入了[https://github.com/MaiM-with-u/MaiBot 麦麦bot],使部娘成为可以与服务器进行通信、使用群指令,还可以使用LLM聊天的综合型bot。本页面将会介绍部娘bot的各种功能。
本文使用和[https://zh.minecraft.wiki/w/%E5%91%BD%E4%BB%A4#%E5%91%BD%E4%BB%A4%E6%8C%87%E5%BC%95 Minecraft Wiki相同的方法]描述命令语法。


== 从#help开始 ==
== 从#help开始 ==
语法


对部娘bot私聊发送''#help''可以返回群指令列表。
<code>#help [&lt;command&gt;]</code>


注1:该指令仅限私聊使用。
'''仅限私聊。'''返回指令列表。如果指定了<code>&lt;command&gt;</code>,则会返回相应指令的详细帮助。


== 信息查询与设置 ==
== 信息查询与设置 ==
=== 在线玩家查询 ===
=== 在线玩家查询 ===
发送 ''#list'' 可以返回当前主服务器中在线的玩家列表。
语法


注:该指令可以在主群或私聊使用。
<code>#list</code>
 
返回在线玩家列表,包括在线的假人。


=== bot与服务器状态查询 ===
=== bot与服务器状态查询 ===
发送 ''#test'' 可以返回bot与服务器状态。
语法
 
<code>#test</code>


可通过该指令确认bot是否在线。当bot在线时,可通过该指令确认主服是否停机。
返回服务器状态和在线玩家列表。可以通过该指令确认bot是否正常在线。


=== 用户信息查询 ===
=== 用户信息查询 ===
发送以 ''#info'' 开头的消息可以返回用户的部内id与MC id。
语法


如果该信息没有包含信息,则返回发送者的信息;如果包含了有效的@、MCID或者部内ID,则返回所有匹配的用户信息。
<code>#info [&lt;query&gt;]</code>


注:该指令可以在主群或私聊使用。
返回用户的部门ID、MC ID、MC皮肤和QQ号。如果没有指定<code>&lt;query&gt;</code>,则返回发送者的用户信息,否则将会尝试把<code>&lt;query&gt;</code>分别解析为部门ID、MCID和QQ号进行查找,返回所有匹配的用户信息。


=== 个人信息设置 ===
=== 个人信息设置 ===
发送 ''#setID 你的部门ID'' 可以设置或更改自己的部内id;
语法


发送 ''#setMCID 你的部门ID'' 可以设置或更改自己的MC id。
<code>setID &lt;id&gt;</code>


部内id是部内大家对你的称呼,MC id则是你的Minecraft账号。这两个信息与你的qq账号都是一对一绑定的,如果与别人的id或MC id冲突,会导致设置失败。
<code>setMCID &lt;mcid&gt;</code>


在设置或更改MC id的时候,bot会将你的旧MC id移出主服白名单,并将新MC id添加到主服白名单。
'''仅限私聊。'''设置自己的<span title="setID" style="text-decoration-style: dotted">部门ID</span>和<span title="setMCID" style="text-decoration-style: dotted">MC ID</span>。这些信息将与你的QQ账号绑定,如果与他人既有的ID产生冲突将导致设置失败。


注1:MC id对大小写不敏感,即你无法将自己的MC id改为与别人的MC id仅大小写不同,但可以更改自己MC id的大小写状态。不同的大小写状态仅在bot的数据库中不同,对于白名单则没有影响。
部门ID发生更改时会通知主群。


注2:由于之前bot对MC id的大小写敏感,导致了部分信息无法匹配到玩家,并且可以通过设置与别人仅大小写不同的MC id,将别人的id移出服务器白名单。该bug已于2021年8月21日修复。
Mojang虽然会存储MC ID的大小写情况,但是身份验证服务器实际上对大小写'''不'''敏感。设置MC ID时,bot会存储大小写,但是大小写的差异不会影响白名单。此外,将要设置的MC ID如果与既有的ID只有大小写差异会被视为冲突导致设置失败。


注3:该指令仅限私聊使用。
=== 服务器卡顿信息查询 ===
语法


=== 服务器卡顿信息查询 ===
<code>#profile (entities|health) [&lt;tick&gt;]</code>
在主群中发送 ''#profile entities'' 或 ''#profile health'' 可以查询服务器卡顿信息(即carpet mod的对应功能)。profile也可替换为tick(旧版本carpet的命令名称)。


注1:仅限群聊中使用。由于该功能会检测服务器一段时间,在获得返回信息前会锁定该功能。如果发生了异常锁定而无法使用,请联系管理员强制解除。
<code>#tick -> profile</code>


注2:该命令后可加参数,即监测时长,单位为tick,最小为20,最大为600,默认值为100。
'''仅限主群。'''返回服务器卡顿信息。该功能会调用Carpet模组的相关功能。如果没有指定<code>&lt;tick&gt;</code>,默认监测100游戏刻,否则监测<code>&lt;tick&gt;</code>游戏刻。<code>&lt;tick&gt;</code>最小为20,最大为600。


== 消息互通与连续聊天模式 ==
== 消息互通与连续聊天模式 ==
=== 主群和主服之间的消息互通 ===
=== 主群和主服之间的消息互通 ===
所有发送在主群的消息会通过rcon转发至主服。
发送在主群的消息会通过[https://zh.minecraft.wiki/w/%E8%BF%9C%E7%A8%8B%E6%8E%A7%E5%88%B6%E5%8F%B0%E5%8D%8F%E8%AE%AE RCON]转发至主服,除非满足以下任意一条:
* 消息包含文字、图片和表情之外的内容;
* 消息以<code>#</code>、<code>;;</code><sup><span title="旧版部娘功能,未测试" style="text-decoration-style: dotted">[需要验证]</span></sup>或<span title="U+FF1B 全形分号" style="text-decoration-style: dotted"><code>;;</code><sup><span title="旧版部娘功能,未测试" style="text-decoration-style: dotted">[需要验证]</span></sup></span>开头;
* 消息超过RCON能够转发的长度上限;
* 发送者没有设置部门ID。
如果消息回复了其他人发送的消息,会在转发的消息中产生提示。


发送在主服务器中的消息会通过读取log的方式获得并转发至主群,如果消息以''>'' 或 '''' '''' 开头。
发送在主服务器中的消息会通过读取日志的方式获得。如果消息以<code>&gt;</code>、<code>》</code><span title="U+FF1E 全形大于号" style="text-decoration-style: dotted"><code></code></span>开头,则会转发到主群。可以通过回复bot转发的消息回复发送者。


注:bot的群指令和其它功能不会处理自己转发的消息。
Bot的群指令和其它功能不会处理自己转发的消息。


== 其它消息提醒与个性化信息设置 ==
== 其它消息提醒与个性化信息设置 ==
=== 玩家信息播报 ===
=== 玩家信息播报 ===
如果bot能找到服务器中一位玩家的用户信息,那么他/她登录、登出、取得成就或者登陆受阻时,bot会在主群中发送该信息。Bot还会转发服务器卡顿信息,和服务器启动/停止信息。
如果bot能找到服务器中一位玩家的用户信息,那么他/她登入、登出、取得成就或者登陆受阻时,bot会在主群中发送相应信息。


另外,如果一位用户在登出后60秒内登入,bot会撤回之前发送的登入信息,以防止仰卧起坐或者使用传送站而刷屏。
另外,如果一位用户在登出后60秒内登入,bot会撤回之前发送的登入信息,以防止刷屏。


=== 卡顿信息播报 ===
=== 服务器信息播报 ===


当服务器检测到超过2秒(即40gt)以上的卡顿时,会将信息在服务器中广播并记录该次信息。如果距离上一次播报已经超过t分钟,则会将t分钟内的卡顿次数和平均卡顿时长反馈到主群。t默认值为5,且可以由管理员设置。当一次卡顿超过10秒时会强制播报。</s>''(尚未实现)''
当服务器检测到2秒以上的掉刻时,bot会在主群中播报此信息。


服务器启动、停止或崩溃时,bot也会播报相应信息。


=== 个性化信息设置 ===
=== 个性化信息设置 ===
玩家可以个性化设置的信息有的登录、登出两种,默认值分别为 ''[Login]<部内id>加入了游戏'' 和 ''[Logout]<部内id>退出了游戏'' 。玩家可以为自己添加或删除随机项,设置之后登录、登出时会从随机项中随机一条信息发送。
语法
 
<code>#match</code><br>
显示命令帮助信息。
 
<code>#match show (login|logout)</code><br>
显示自定义登入/登出消息列表。
 
<code>#match add (login|logout) &lt;message&gt;</code><br>
添加自定义登入/登出消息。
 
<code>#match del (login|logout) &lt;index&gt;</code><br>
删除自定义登入/登出消息。
 
<code>#match reset (login|logout)</code><br>
重置自定义登入/登出消息。


发送 ''#match'' 可以返回与个性化信息设置相关的指令;
<code>#match test [&lt;times&gt;]</code><br>
测试自定义登入/登出消息。


发送 ''#match add <类型> <信息内容>'' 可以增加该类型的随机项;
'''仅限私聊。'''管理自定义登入/登出消息。默认值情况下,登入和登出消息的默认值分别是'''[Login]<部内id>加入了游戏'''和'''[Logout]<部内id>退出了游戏''' 。当设置了自定义消息后,登入和登出消息将从设置的消息列表中抽取。


发送 ''#match reset <类型>'' 可以重设该类型;
参数


发送 ''#match show <类型>'' 可以显示该类型所有项;
<code>login</code>和<code>logout</code>分别代表登入和登出消息。


发送 ''#match del <类型> <index>'' 可以删除该类型的某一项;
<code>&lt;message&gt;</code>是贪婪字符串,命令剩余部分都会被视为此参数。<code>%</code>为部内ID的占位符,替换时会带上<code>&lt;&gt;</code>,一条消息至少要使用此占位符1次,至多4次。含占位符的消息总长度不能超过61个半角字符。1个全角字符将视为2个半角字符。'''因没有适配转义,消息无法包含字面量<code>%</code>。'''


发送 ''#match test [测试次数]'' 对所有信息类型进行若干次测试。
<code>&lt;index&gt;</code>为消息的编号,可以通过<code>#match show</code>查看。


<类型>包含:login(登录),logout(登出),<index>为序号(从0开始,也是#match show返回的列表中的序号)。
<code>&lt;times&gt;</code>为要测试的次数,不指定时默认为1。


用%代替自己的id。
返回值


注1:任意信息类型必须至少包含自己的id(即%)一次。
<code>#match</code>返回命令帮助信息。


注2:为防止有些玩家部内id过于简单且可随时设置,因此后来加入尖括号以防止无法辨认。
<code>#match (show|add|del)</code>返回操作后对应类型的消息列表。


注3:以上指令仅限私聊使用。
<code>#match reset</code>返回“重置成功”的消息。


<code>#match test</code>返回指定次数的测试结果,每次测试包含登入和登出消息各一条。


=== 警钟长鸣 ===
=== 警钟长鸣 ===
在主群中发送 ''#alert add [内容]''可以添加警钟(各种群友的黑历史),每人每天限用一次。
语法
<code>#alert [add &lt;content&gt;]</code>


发送''#alert''即可随机放送一条警钟,主群中每天一共可敲10次,私聊无使用次数限制。
敲警钟或添加警钟。不使用<code>add</code>时,将会随机返回一条警钟消息,否则将会把</code>&lt;content&gt;</code>的内容作为警钟消息添加到数据库中并返回此消息的复述。</code>&lt;content&gt;</code>是贪婪字符串,命令剩余部分都会被视为此参数。


在主群中,每人每天至多分别使用一次<code>#alert</code>和<code>#alert add</code>。


== 实用功能 ==
== 实用功能 ==
=== 切换为假人 ===
=== 切换为假人 ===
私聊bot发送 ''#shadow'' 以假人状态登录(假人详见<ref>[https://github.com/gnembon/fabric-carpet/wiki/Commands#player])。支持的操作包括 attack, use, mount, dismount, jump, kill, look, move, sneak, unsneak, sprint, unsprint, stop, swapHands, turn,不支持spawn drop。
语法
 
<code>#shadow [<span title="详细语法参见下文。">...</span>]</code>
 
'''仅限私聊。'''控制假人。语法详见[https://github.com/gnembon/fabric-carpet/wiki/Commands#player 此处],不支持<code>spawn</code><code>drop</code>子命令。如果没有指定参数,则以假人登录,否则按照参数执行假人指令。返回值为执行<code>/player</code>的结果,如果执行成功正常应该返回'''(无结果)'''。


=== 踢出自己 ===
=== 踢出自己 ===
当你在外挂机需要下线的时候,可以私聊bot发送 ''#kick'' 以使自己下线。
语法
 
<code>#kick</code>
 
'''仅限私聊。'''使自己下线。返回一条提示信息。


=== 获取实时高清地图 ===
=== 获取实时高清地图 ===
发送 ''#img 世界(overworld/the_nether/the_end) x轴起始值 z轴起始值 x轴终值 z轴终值'' 可以返回该范围内的一张高清地图,其由dynmap产生的地图碎片拼接而来,分辨率为每个方块4x4。
语法
 
<code>#img (world|DIM-1|DIM1) &lt;start&gt; &lt;end&gt; <span title="这些关键字参数的出现顺序无关紧要。" style="text-decoration-style: dotted">{[marker=(off|on)] [maxpix=&lt;maxpix&gt;] [format=&lt;format&gt;]}</span></code>
 
'''仅限私聊。'''返回指定区域的地图图片。


注1:该指令仅限私聊使用,原因是bot无法在群聊中发送图片。
参数<sup><span title="关键字参数的功能未测试。" style="text-decoration-style: dotted">[需要更多信息]</span></sup>


注2:使用该指令可能需要较长时间返回图片,因此地图大小限制为4000x4000.
<code>world</code>、<code>DIM-1</code>和<code>DIM1</code>分别指主世界、下界和末地。
 
<code>&lt;start&gt;</code>和<code>&lt;end&gt;</code>为2维整数坐标,指定起止点。任意坐标轴方向上的长度不能超过4000格。


== 模拟群友功能 ==
== 模拟群友功能 ==
第119行: 第165行:


=== 查看部娘对你的印象 ===
=== 查看部娘对你的印象 ===
语法


私聊''#impress''获取。该印象是从[https://github.com/MaiM-with-u/MaiBot 麦麦bot]获取的隐藏数据,从群聊日常中总结而来。
<code>#impress</code>
 
'''仅限私聊。'''返回部娘对你的印象。该印象是从麦麦bot获取的隐藏数据,从群聊日常中总结而来。


== 主服聊天框功能 ==
== 主服聊天框功能 ==
第127行: 第176行:


=== 计算器 ===
=== 计算器 ===
语法


格式:算式=?
<code>&lt;expression&gt;=?</code>


其中算式由python执行。
返回由python计算的算式结果。<code>&lt;expression&gt;</code>必须满足下列regex:<code>^[0-9+\-*/%.(),\s]*$</code>


出于安全考虑,可以含有的字符包括空格、数字、小数点、加减乘除号、模运算符号%、小括号以及逗号。
=== 轨迹记录 ===
语法


=== 轨迹记录 ===
<code>#</code><br>
记录当前位置,如果没有进行中的记录则开始一次记录。
 
<code>(!|!!)</code><br>
记录当前位置,并停止正在进行的记录。
 
<code>#track &lt;interval&gt;</code><br>
开始一次自动记录。
 
记录玩家的位置,并在记录结束时将记录通过QQ发送给玩家。自动记录的间隔<code>&lt;interval&gt;</code>以秒为单位,不能小于0.2秒。使用<code>!</code>结束记录时,近似在一条直线上的点只会保留两端,使用<code>!!</code>则不会有上述行为。


#track 秒数——每隔指定时间记录一次位置。秒数不得低于0.2.
[[Category:其他]]
# 记录当前位置。
! 停止自动记录,导出位置,通过 QQ 发送给玩家。所记录的点经过简化,近似在一条直线上的一系列点只保留两端。
!! 停止自动记录,导出位置,通过 QQ 发送给玩家。所记录的点不经简化。

2025年11月10日 (一) 11:58的版本

由于tx风控和Mirai对高版本QQ签名停止支持,旧版部娘bot已经逐渐无法稳定运行,最终于2025年3月26日停用。当日陈猫即搭建了基于NapCatQQ的bot并逐渐从部娘bot迁移功能。六元环又接入了麦麦bot,使部娘成为可以与服务器进行通信、使用群指令,还可以使用LLM聊天的综合型bot。本页面将会介绍部娘bot的各种功能。

本文使用和Minecraft Wiki相同的方法描述命令语法。

从#help开始

语法

#help [<command>]

仅限私聊。返回指令列表。如果指定了<command>,则会返回相应指令的详细帮助。

信息查询与设置

在线玩家查询

语法

#list

返回在线玩家列表,包括在线的假人。

bot与服务器状态查询

语法

#test

返回服务器状态和在线玩家列表。可以通过该指令确认bot是否正常在线。

用户信息查询

语法

#info [<query>]

返回用户的部门ID、MC ID、MC皮肤和QQ号。如果没有指定<query>,则返回发送者的用户信息,否则将会尝试把<query>分别解析为部门ID、MCID和QQ号进行查找,返回所有匹配的用户信息。

个人信息设置

语法

setID <id>

setMCID <mcid>

仅限私聊。设置自己的部门IDMC ID。这些信息将与你的QQ账号绑定,如果与他人既有的ID产生冲突将导致设置失败。

部门ID发生更改时会通知主群。

Mojang虽然会存储MC ID的大小写情况,但是身份验证服务器实际上对大小写敏感。设置MC ID时,bot会存储大小写,但是大小写的差异不会影响白名单。此外,将要设置的MC ID如果与既有的ID只有大小写差异会被视为冲突导致设置失败。

服务器卡顿信息查询

语法

#profile (entities|health) [<tick>]

#tick -> profile

仅限主群。返回服务器卡顿信息。该功能会调用Carpet模组的相关功能。如果没有指定<tick>,默认监测100游戏刻,否则监测<tick>游戏刻。<tick>最小为20,最大为600。

消息互通与连续聊天模式

主群和主服之间的消息互通

发送在主群的消息会通过RCON转发至主服,除非满足以下任意一条:

  • 消息包含文字、图片和表情之外的内容;
  • 消息以#;;[需要验证];;[需要验证]开头;
  • 消息超过RCON能够转发的长度上限;
  • 发送者没有设置部门ID。

如果消息回复了其他人发送的消息,会在转发的消息中产生提示。

发送在主服务器中的消息会通过读取日志的方式获得。如果消息以>开头,则会转发到主群。可以通过回复bot转发的消息回复发送者。

Bot的群指令和其它功能不会处理自己转发的消息。

其它消息提醒与个性化信息设置

玩家信息播报

如果bot能找到服务器中一位玩家的用户信息,那么他/她登入、登出、取得成就或者登陆受阻时,bot会在主群中发送相应信息。

另外,如果一位用户在登出后60秒内登入,bot会撤回之前发送的登入信息,以防止刷屏。

服务器信息播报

当服务器检测到2秒以上的掉刻时,bot会在主群中播报此信息。

服务器启动、停止或崩溃时,bot也会播报相应信息。

个性化信息设置

语法

#match
显示命令帮助信息。

#match show (login|logout)
显示自定义登入/登出消息列表。

#match add (login|logout) <message>
添加自定义登入/登出消息。

#match del (login|logout) <index>
删除自定义登入/登出消息。

#match reset (login|logout)
重置自定义登入/登出消息。

#match test [<times>]
测试自定义登入/登出消息。

仅限私聊。管理自定义登入/登出消息。默认值情况下,登入和登出消息的默认值分别是[Login]<部内id>加入了游戏[Logout]<部内id>退出了游戏 。当设置了自定义消息后,登入和登出消息将从设置的消息列表中抽取。

参数

loginlogout分别代表登入和登出消息。

<message>是贪婪字符串,命令剩余部分都会被视为此参数。%为部内ID的占位符,替换时会带上<>,一条消息至少要使用此占位符1次,至多4次。含占位符的消息总长度不能超过61个半角字符。1个全角字符将视为2个半角字符。因没有适配转义,消息无法包含字面量%

<index>为消息的编号,可以通过#match show查看。

<times>为要测试的次数,不指定时默认为1。

返回值

#match返回命令帮助信息。

#match (show|add|del)返回操作后对应类型的消息列表。

#match reset返回“重置成功”的消息。

#match test返回指定次数的测试结果,每次测试包含登入和登出消息各一条。

警钟长鸣

语法 #alert [add <content>]

敲警钟或添加警钟。不使用add时,将会随机返回一条警钟消息,否则将会把<content>的内容作为警钟消息添加到数据库中并返回此消息的复述。<content>是贪婪字符串,命令剩余部分都会被视为此参数。

在主群中,每人每天至多分别使用一次#alert#alert add

实用功能

切换为假人

语法

#shadow [...]

仅限私聊。控制假人。语法详见此处,不支持spawndrop子命令。如果没有指定参数,则以假人登录,否则按照参数执行假人指令。返回值为执行/player的结果,如果执行成功正常应该返回(无结果)

踢出自己

语法

#kick

仅限私聊。使自己下线。返回一条提示信息。

获取实时高清地图

语法

#img (world|DIM-1|DIM1) <start> <end> {[marker=(off|on)] [maxpix=<maxpix>] [format=<format>]}

仅限私聊。返回指定区域的地图图片。

参数[需要更多信息]

worldDIM-1DIM1分别指主世界、下界和末地。

<start><end>为2维整数坐标,指定起止点。任意坐标轴方向上的长度不能超过4000格。

模拟群友功能

在主群中可以与部娘bot进行对话,功能包括但不限于长期记忆、识别图片、检索wiki、在线检索、发送表情包等。(我们新式的ai已经完爆了老式的随机复读机)

具体实现原理详见麦麦bot

查看部娘对你的印象

语法

#impress

仅限私聊。返回部娘对你的印象。该印象是从麦麦bot获取的隐藏数据,从群聊日常中总结而来。

主服聊天框功能

以下功能通过在主服聊天框打字触发。

计算器

语法

<expression>=?

返回由python计算的算式结果。<expression>必须满足下列regex:^[0-9+\-*/%.(),\s]*$

轨迹记录

语法

#
记录当前位置,如果没有进行中的记录则开始一次记录。

(!|!!)
记录当前位置,并停止正在进行的记录。

#track <interval>
开始一次自动记录。

记录玩家的位置,并在记录结束时将记录通过QQ发送给玩家。自动记录的间隔<interval>以秒为单位,不能小于0.2秒。使用!结束记录时,近似在一条直线上的点只会保留两端,使用!!则不会有上述行为。