XDbot
纯图一乐bot,希望能将愉快的气氛带给大家 (≧▽≦)/
功能
一、指令系统
命令可随意使用大小写。
支持通过队伍内
@xd,bot也会使用队内消息回复。也可将@xd置于话的末尾例如:
今天也要开心嗷!@xd YaY指令一览(按字母排序)
命令 说明 @xd AI (问题)与AI交流(模型API使用Qwen 4B,支持上下文) @xd help返回可用指令摘要 @xd meow喵喵妙妙妙妙妙妙妙妙 @xd meme随机输出一个meme笑话(待补充) @xd pinyin (拼音)拼音转文字,保留不可转的内容
已被全局转文字替代,但该指令不会检测失败
(python库 Pinyin2Hanzi)@xd pinyin add (拼音) (汉字)拼音转文字添加转义
格式见:拼音转义添加/删除 [jump]@xd roll随机返回1~6 @xd time返回当前实际时间 @xd wiki返回bilibili专栏链接和github README.md网址 @xd yay返回随机颜表情 (≧▽≦)/ @xd 查询等级 (模糊玩家名)查询玩家等级,留空查自己 @xd 查询装备 (模糊玩家名)查询玩家装备,留空查自己 @xd 查询武器 (模糊武器名)查询带有该武器的玩家,可以交集检索多个武器
例如:@xd 查询武器 激素 car@xd 井字棋两人输入后开启井字棋
可用@xd 3 1落子到第三列第一行@xd 打开连杀播报/关闭连杀播报控制连杀播报开关 @xd 进入操控模式/退出操控模式远程操控我自己,格式见:操控模式指令 [jump] @xd 服务器 模式/名称 (关键词)模糊查询服务器人数,格式见:查询服务器指令 [jump] @xd 恶魔轮盘进入文字版恶魔轮盘游戏,详情见:文字游戏-恶魔轮盘 [jump] AI设置指令
因为易打错会误发给AI的原因,设置指令统一在AI前面加上了
set
指令 功能 @xd set ai 清除上下文进入新聊天 @xd set ai new chat进入新聊天 @xd set ai 上下文长度 (数字)设置上下文长度 为什么不用更好更快的模型 因为没money
操控模式指令
格式:
[命令 时间] 前/后/左/右/左转/右转/停/跳/蹲/开火/停火/重火力/技能/重生/走/跑/退出;cmd [任意控制台命令]...
- 为了尽量简洁,进入后不需
@xd
动作示例 作用 前 10 前进10秒 右转 1.2 右转1.2秒 停 停止移动与转视角 重生 似了可以重生 cmd quit 真的要这么做吗TvT 撤退! 【XDbot】好的!撤退!!! (≧▽≦)/ 上下调整视角没找到命令,所以实现不了
如果是我忘记退了还能远端控制让我退出去uwu全局转文字系统
- 通过
@xd pinyin start/stop控制开关- 通过空格分割,大致规则为失败数量<成功数量,且第一/第二段长度<=12,同时首字母为字母时,才触发拼音转文字,具体规则见
squirrel -> XD.nut -> globalTransToChinese
- 示例:
输入例 处理结果 预期结果 判断结果 wo-cao-wo-cao chao 失败 × (第一段长度 > 12) (× √) me too 失败 × (第二段转文字失败) (√ ×) dui me 成功 对么 (√ √) !wo #neng zhuan wen zi ma 失败 × (前两段首字符非字母) @ you yi shi mo fa @ 成功 @友谊是魔法@ (× √ √ √ √ √ ×) wo yao !!! zhuan 0v0 wen zi XD 成功 我要!!!转0v0文字XD (√ √ × √ × √ √ ×) biao dian.bu7ying xiang?fen ge! 成功 标点.不7影响?分割! (√ √ × √ × √ √ × √ √ ×) 无法辨别拼音之间粘连无空格,易误判,暂不考虑
拼音转义添加/删除
- 添加转义时根据首个汉字区分拼音段和文字段,若想添加指定文字段,可以在文字段前使用
-h参数- 因标点不影响拼音分割的特性存在,因此拼音段无法使用符号,使用后无法生效
- 示例:
指令 添加结果 @xd pinyin add chong ci 冲刺添加成功 "chong ci": "冲刺"@xd pinyin add mvp 我得了MVP!添加成功 "mvp": "我得了MVP!"@xd pinyin add woc gua -h woc呱!!!添加成功 "woc gua": "woc呱!!!"@xd pinyin add limbo -h FOCES添加成功 "limbo": "FOCES"@xd pinyin del mvp删除成功 "mvp": "我得了MVP!"查询服务器指令
按照模式或名称查询所有符合条件的,人数大于0的服务器当前人数。
指令所有部分中英文可以交叉使用;
返回多个服务器时,按人数降序排序;
查询名字时,可用空格分割名称匹配任意关键词,被匹配的关键词会高亮显示。
如果查询后只能查找到一个服务器且没有人,则忽略人数大于0条件,提示:
- 现在没有任何人!-> [服务器名称]
按官方要求,全局查询间隔不得低于15秒,若在15秒内则在缓存中查询
@xd 服务器 模式 (模糊模式)
@xd 服务器 名字 (模糊名称)示例:
指令 返回 @xd 服务器 模式 铁对铁8人 -> [NSCN] 北极星CN官方原版铁对铁#1...等铁驭模式 @xd server mode pvp8人 -> [NSCN] 北极星CN官方原版铁对铁#1...等铁驭模式 @xd 服务器 名称 小图4人 -> [CN]坏逼们的服务器# 小图铁对铁@xd 服务器 名称 小图 nscn8人 -> [ NSCN] 北极星CN官方原版铁对铁#1
4人 -> [CN]坏逼们的服务器#小图铁对铁...等@xd server name 明日香16人 -> 仿生机器人会梦到电子 明日香吗 更多示例:
指令 对应英文指令 @xd 服务器 模式 泰坦争斗@xd server mode ttdm@xd 服务器 模式 边境防御@xd server mode fd@xd 服务器 模式 困难@xd server mode fd_hard@xd 服务器 模式 消耗战@xd server mode aitdm文字游戏-恶魔轮盘
对照Steam游戏《恶魔轮盘》制作的文字版游戏,代码位置:
XDPY -> DevilRoulette.py,可直接运行该代码文件,将与电脑游玩。为了防止遮挡,将使用如调整文字为灰色、使用屏障符连接每句话等措施,尽可能区分游戏与正常聊天内容。
使用
@xd 恶魔轮盘/emlp/dr均可进入游戏在进入游戏后以下指令将生效:
等待下一名玩家进入后将立刻开始游戏
游戏均使用
@xd [数字]进行选择,可选择的数字将会标黄等待期间可使用
@xd 1进入设置页面进行选择
- 设置提示语:请选择设置: 1. 保存 | 2. 生命值 | 3. 道具数 | 4. 实弹数 | 5. 空弹比
使用
@xd add (自定义电脑名称)与笨蛋电脑玩耍使用
@xd 回放/replay对上一次内容进行回放,如进入下一局游戏还未结束,可使用此指令回顾上一次输出然后继续游玩。下面是一局文字版恶魔轮盘的游玩:
[星] Double_Star: @xd 恶魔轮盘
【恶魔轮盘】欢迎进入游玩恶魔轮盘游戏!等待玩家中... 1/2
[星] Double_Star: @xd 1
【恶魔轮盘】[星] Double_Star 请选择设置: 1. 保存 | 2. 生命值 | 3. 道具数 | 4 实弹数 | 5. 空弹比
[星] Double_Star: @xd 2
【恶魔轮盘】请使用 [数字] 设置参数 生命值 | 现在为[3]
[星] Double_Star: @xd 3
【恶魔轮盘】生命值 成功设置为 3,与先前一致
[晞] The_Sun: @xd emlp
【恶魔轮盘】欢迎进入新一局的恶魔轮盘 - [星] Double_Star VS [晞] The_Sun
【恶魔轮盘】第 1 回合,装填子弹... ['实', '实', '空', '空']
【恶魔轮盘】[星] Double_Star 血量: 3/3 | 道具: 逆转器 | 手铐 | 啤酒
【恶魔轮盘】[晞] The_Sun 血量: 3/3 | 道具: 手锯 | 手铐 | 香烟
【恶魔轮盘】[星] Double_Star 请选择操作:1. 打自己 | 2. 打对方 | 3. 使用道具
[星] Double_Star @xd 2
【恶魔轮盘】[星] Double_Star 拿枪指向了[晞] The_Sun!
【恶魔轮盘】[星] Double_Star 开枪了,是空弹!
【恶魔轮盘】[星] Double_Star 血量: 3/3 | [晞] The_Sun 血量: 3/3
【恶魔轮盘】[晞] The_Sun 请选择操作:1. 打自己 | 2. 打对方 | 3. 使用道具
[晞] The_Sun: @xd 3
【恶魔轮盘】[晞] The_Sun 请选择道具: 1. 返回 | 2. 手锯 | 3. 手铐 | 4. 香烟
[晞] The_Sun: @Xd 3
【恶魔轮盘】[晞] The_Sun 使用了 手铐!
【恶魔轮盘】[晞] The_Sun 将 [星] Double_Star 的手铐住了,禁止 1 回合!
【恶魔轮盘】[晞] The_Sun 请选择操作:1. 打自己 | 2. 打对方 | 3. 使用具
[晞] The_Sun: @XD 3
【恶魔轮盘】[晞] The_Sun 请选择道具: 1. 返回 | 2. 手锯 | 3. 香烟
[晞] The_Sun: @xd 2
【恶魔轮盘】[晞] The_Sun 使用了 手锯!
【恶魔轮盘】[晞] The_Sun 的下一发子弹将造成双倍伤害!
【恶魔轮盘】[晞] The_Sun 请选择操作:1. 打自己 | 2. 打对方 | 3. 使用道具
[晞] The_Sun: @xd 2
【恶魔轮盘】[晞] The_Sun 拿枪指向了[星] Double_Star!
【恶魔轮盘】砰! [晞] The_Sun 开枪了,打中 [星] Double_Star!
【恶魔轮盘】[星] Double_Star 血量: 1/3 | [晞] The_Sun 血量: 3/3
【恶魔轮盘】[星] Double_Star 的手被铐住了!无法行动
【恶魔轮盘】[晞] The_Sun 请选择操作:1. 打自己 | 2. 打对方 | 3. 使用道具
[晞] The_Sun: @xd 1
【恶魔轮盘】[晞] The_Sun 拿枪指向了自己!
【恶魔轮盘】[晞] The_Sun 开枪了,是空弹!
【恶魔轮盘】[星] Double_Star 血量: 1/3 | [晞] The_Sun 血量: 3/3
【恶魔轮盘】[晞] The_Sun 请继续操作:1. 打自己 | 2. 打对方 | 3. 使用道具
[晞] The_Sun: @xd2
【恶魔轮盘】[晞] The_Sun 拿枪指向了[星] Double_Star!
【恶魔轮盘】砰! [晞] The_Sun 开枪了,打中 [星] Double_Star!
【恶魔轮盘】[星] Double_Star 血量: 0/3 | [晞] The_Sun 血量: 3/3
【恶魔轮盘】恭喜 [晞] The_Sun 获胜!
二、播报系统
通过读取游戏右下角RUI击杀信息,实现存储与个性化播报:
连杀数量播报
在连杀达到一定数量时进行播报,比如:
xxx 达成了 10 连杀!无人可挡!
xxx 达成了 15 连杀!诸天灭地!我们没救了!特殊连杀播报
不同击杀方式有独特文案,例如:
xxx 拳脚精通!使用「肘击」达成了 3 连杀!
xxx 使用神器「A盾喷火」达成了 5 连杀!是火神!我们没救了!
克莱博从入门到拳脚精通!xxx 放弃了克莱博,使用「肘击」达成了 3 连杀!
xxx 使用神器「自瞄小手枪」连续锁了 3 个人!
xxx 使用神器「炸弹无人机」连续炸死了 3 个人!并炸死了TA自己!以及更多……
除了炸弹无人机连杀按6秒内不中断计算,其余均为似了清空连杀数。
中断连杀播报
达成 10 连杀后死亡也会有特殊播报:
我们有救了!yyy 使用「Weapon」中断了 xxx 的 10 连杀!
一刻也没有为 xxx 哀悼!xxx 使用「Weapon」中断了TA自己的 19 连杀!
最终,没有人能中断 xxx 的 20 连杀踢出播报
对于萌新/养老服调整播报门槛至 5 连杀
判断玩家被踢并提示:
大笨蛋 xxx 被踢出了游戏!被踢后再次加入未成功:
超级大笨蛋 xxx 在被踢后尝试再次加入,未果整点报时
在整点和半点时进行播报,并添加随机颜色颜表情
(=^・ω・^=)在凌晨0点后,颜表情将有99%概率替换成
(。-ω-)zzz
现在是 北京时间 20:00:00 整!(`・ω・´)
额外的
- 为了防止我不小心在小图挂机,将实时自动切换到人多的队伍中,防止在人少的队伍中占位
- 在长时间无人的情况下,将自动退出游戏,在凌晨时,将改成发送关机提示并在一定时间后自动关机
- 废除命令:
@xd oldPinyin (拼音)—— 破损版/手搓转文字
技术实现简述
Squirrel & Python
Squirrel端
- 用
NSSaveJSONFile保存 json 到 save.json- 循环使用
NSLoadJSONFile读取 load.json- 读取到后清空 load.json,查看 state.txt 状态
- 状态为完毕则退出读取循环
Python端
- 使用
pywin32监控 save.json- 有变更后立刻读取,并将 state.txt 设为处理中
- 多线程处理数据,完成后输出到 load.json
- 若所有处理线程全部完毕,将 state.txt 置为完毕
代码
squirrel 从零开始,一点点扒mod语法,所以存在以下要素:
AI高手、随意命名、随地大小注、重复造轮子、复用率奇低、难以维护、依托代码
代码详见本仓库
将作为文档不断更新
change log:
-
📅2025.10.10
- 🔯规范文档、添加 恶魔轮盘 的详细介绍
-
📅2025.8.30
- ✨恶魔轮盘添加设置选项,可以设置血量,道具数,子弹数,实弹占比等
-
📅2025.8.28
- ✨恶魔轮盘添加了七个原版道具
-
📅2025.8.23
-
🌠不敢相信两天时间我居然把一个易扩展,易配置的恶魔轮盘做出来了,还没做道具
-
✨新增 恶魔轮盘 游戏!
@xd 恶魔轮盘以进入游戏,可以等待第二个人进入自动开始- 或者使用
@xd add (任意电脑名称)以添加电脑对手 - 进入游戏后使用
@xd [数字]按照提示进行选择操作
-
-
📅2025.8.15
- 🌠鸽了一万年的查询武器终于被我做出来辣
- ✨新增
@xd 查询武器 (模糊武器英文名),可查询都有谁拿着此武器,支持多个武器查询,查询结果取交集,玩家名默认进行遮盖,此指令主要关注点在于使用该武器的玩家个数
-
📅2025.8.09
-
✨新增
@xd 钢管等指令,将会自动开启麦克风并向麦克风推流音效,后续会慢慢增加meme音效,实在是太有趣辣!仅限休闲时使用否则我将👊没有什么办法但是我会立刻关闭使用 -
🔯
尝试重构squirrel命令中...会用table和functionref之后真的好多都需要重新写,但由于涉及的数据量都不大,改了之后也没有什么区别,也带来不了功能的增加,所以没有意义的重构是否还有必要进行下去 -
☪️所有关节都需要活动
-
@xd congregation
🟨congregation jump scare !!! :fireinthehole:🙂🙂🙂
-
-
📅2025.8.01
-
✨拼音转文字可使用 white、red、green、yellow、blue、purple、cyan的 ANSI 转义码作为文本颜色
-
🔯重构命令系统,使用了命令注册机制
-
-
📅2025.7.14
-
🐟又摸了一天鱼在脑袋里玩星露谷并写出来了↓
-
✨添加新的转文字功能:
- 添加例如
@xd pinyin add chong ci 冲刺!以添加拼音转义中文 - 效果:
chong ci chong ci-> 冲刺!冲刺! - 添加例如
@xd pinyin del chong ci以删除拼音转义
- 添加例如
-
-
📅2025.7.11
-
🐟摸了一天鱼,实现了以下功能
-
✨AI的返回现在可以动态换行
-
🔯完全重构拼音转文字,基本消除bug且可以在任何阶段塞自定义词典,之后慢慢塞词语
-
-
📅2025.6.17
- 👆 😦((( 这几周腱鞘炎在努力康复,规范了一下文档🥀🥀🥀
-
📅2025.5.23 周五
- ✨为了增强时间观念,缩短时间流逝,添加了整点报时系统🕒🚲!
-
📅2025.5.22 周四
- ✨摸一天鱼并更新了查询服务器指令。使用
@xd 服务器 名称/模式 (模糊查询)。泰拉🌳,启动!
- ✨摸一天鱼并更新了查询服务器指令。使用
浙公网安备 33010602011771号