# rainydice **Repository Path**: start0715/rainydice ## Basic Information - **Project Name**: rainydice - **Description**: rainydice备份库 - **Primary Language**: Python - **License**: AGPL-3.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-01-13 - **Last Updated**: 2023-01-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Rainy Dice 跑团机器人 ***注意!本插件目前处在开发迭代状态,存储结构不保证与未来版本通用!*** 本插件适用于仑质编写的[OlivOS青果核心交互栈](https://github.com/OlivOS-Team/OlivOS),内容有参考仑质的[OlivaDice(DIXE)](https://github.com/lunzhiPenxil/Dice)
## 插件仓库位置: >`正式库`:[github](https://github.com/raininboat/rainydice)
>`备份库`:[gitee](https://gitee.com/thunderain_zhou/rainydice)
## 插件依赖第三方库 - `psutil` OlivOS 本体也在使用,无需重复安装 - `python-docx` 使用指令 `pip install python-docx` 下载安装 - `sqlite3` - 。。。*(其他想到再写)* - - - ## 当前已完成的功能列表 ### _标准跑团功能_ - `.st` 技能设置指令 包含:.st show / del / clr / name (设置当前人物卡名称)/  标准半自动人物卡的st输入 / .st 技能 +-表达式 - `.r` 投掷指令 包含正常带括号的四则运算 (符合骰娘标准实现,详见【骰娘指令标准.txt】,未进行大规模测试,可能有bug!) - `.ra` 检定指令 含bp(奖励骰惩罚骰)h(暗骰) 不含#多轮检定 (未符合骰娘标准实现,未来需重构) - `.nn` 设置用户名称 - `.sc` 理智检定 - `.coc(6|7)(d) (个数)` 新coc人物卡做成(COC 6版7版简略、详细人物卡做成) - `.setcoc` 房规设置 - `.ti` / `.li` 疯狂症状 - `.en` 幕间成长检定(未进行测试) - `.log` 跑团记录 - `.draw` 抽卡 > 目前跑团记录基本实现已经完成,文件通过smtp邮件发送至`qq邮箱`中,tg等其他平台暂未适配,目前可通过html渲染生成邮件正文,或生成docx文档等方式进行渲染,其中使用html发送正文有很大概率被拦截为***垃圾邮件***,如未获取,请尝试在垃圾邮件中寻找或自行联系master
### _其他功能_ - `.system status` 查看当前系统状态 - `.system restart` 重启 OlivOS 框架 *(需要 bot admin 或 master 权限)* - 防撤回(默认关闭) > 群聊使用 `.recall on` 打开后,消息撤回时自动通过回复该消息的方式显示出来;使用 `.recall off` 再次关闭
- - - ## 下一步将要实现的功能 - `.ra` 指令重构 - `.st` 中的**多人物卡**实现 - `.dnd` 随机人物卡 - `.name` 随机姓名
- - - ## 未来准备实现的内容 ~~(咕咕咕咕咕咕了)~~ ### _标准骰娘功能_ * `.admin` 群管指令 * `.help` 帮助文档 * 。。。 ### _特色功能_ - `.combat` 战斗轮提醒 - 。。。 ### _其他计划内容_ ***可能有变动,只是作为计划先行罗列*** - 使用内存数据库作为运行时数据存储、读取形式 - 优化指令匹配模块 - - - ## 配置存储文件 所有配置文件和存储的信息都在 ./plugin/data/rainydice 目录中,其中: - /log: 跑团记录,单个跑团记录的目录生成为 `log_[平台]_[群号]_[时间]` - /temp: dice临时记录内容,可以删除,下次运行重新生成 - /PublicDeck: 所有外置牌堆 其中 `default.json` 为默认内置牌堆,自动生成 ### conf/bot.json 具体配置: ```jsonc { "email": { "enabled": true, // 是否开启email模块 "host": "smtp.exmail.qq.com", // email服务商的smtp服务器(在官方帮助文档中寻找) "password": "xxxxx", // 授权码(自行查看邮件运营商帮助文档,开启smtp服务) "port": 465, // smtp服务器端口 "ssl": true, // 是否开启ssl "useraddr": "noreply@mail.rainydice.cn" // 具体邮箱账号 }, "log": { // log 文件渲染方式,原生txt文档默认生成 "csv": false, // csv 版本(也就是sql存储的原生表格信息) 默认关闭 "doc": true, // docx 版本,染色文件 默认开启 "html": false // html 开启后邮件正文使用html文档做染色文件,容易被判定为垃圾邮件 默认关闭 }, "name": "本机器人", // Rainy Dice 机器人名称 "qq_admin": [ 0 // qq 平台dice管理员 ], "qq_master": 0, // qq 平台dice所有者 "telegram_admin": [ 222, 321 ], "telegram_master": 123 } ``` ### conf/rankcheck.py 具体配置: 该文件为机器人所有检定大成功大失败判断(村规设置)
默认文件: ```python cocRankCheck = { # 每组为一种大成功、大失败判定规则 # text 为该组的解释信息 # critical 为大成功判定表达式 (返回T/F) # fumble 为大失败判定表达式 (返回T/F) # result 为检定所得结果,skill_val 为当前技能值(成功率) # 这里是自定义规则的编号,也是指令.setcoc 后面连接的数字 # -1: { # # 这里是房规的解释文本,用于生成.help setcoc内容和setcoc设置后的回应内容中具体规则描述部分 # 'text' : '出1 - 5 且 < 1 + 二十分之一大成功\n出96 - 100且 >= 96 +二十分之一大失败(全部使用整除)', # # # 这是大成功判定逻辑,如需修改仅需改变 lambda result,skill_val : 后方表达式内容 为真则大成功 # 'critical' : lambda result,skill_val : result >= 1 and result <= 5 and result <= 1+skill_val//20 or result == 1, # # # 这是大失败判定逻辑,如需修改仅需改变 lambda result,skill_val : 后方表达式内容 为真则大失败 # 'fumble' : lambda result,skill_val : result>=96 and result <= 100 and result >= 96 + skill_val//20 or result ==100 # # # 如果大成功大失败判定同时为真,则返回大成功 # }, 0: { 'text' : '规则书\n出1大成功\n不满50出96 - 100大失败,满50出100大失败', 'critical' : lambda result,skill_val : result == 1, 'fumble' : lambda result,skill_val : skill_val<50 and result>=96 and result <= 100 or skill_val>=50 and result == 100 }, 1: { 'text' : '不满50出1大成功,满50出1 - 5大成功\n不满50出96 - 100大失败,满50出100大失败', 'critical' : lambda result,skill_val : skill_val<50 and result == 1 or skill_val >= 50 and result >= 1 and result <= 5, 'fumble' : lambda result,skill_val : skill_val<50 and result >= 96 and result <= 100 or skill_val >= 50 and result == 100 }, 2: { 'text' : '出1 - 5且 <= 成功率大成功\n出100或出96 - 99且 > 成功率大失败', 'critical' : lambda result,skill_val : result>=1 and result <= 5 and result <= skill_val, 'fumble' : lambda result,skill_val : result>=96 and result <= 100 and result > skill_val }, 3: { 'text' : '出1 - 5大成功\n出96 - 100大失败', 'critical' : lambda result,skill_val : result >= 1 and result <= 5, 'fumble' : lambda result,skill_val : result >= 96 and result <= 100 }, 4: { 'text' : '出1 - 5且 <= 十分之一大成功\n不满50出 >= 96 + 十分之一大失败,满50出100大失败(全部使用整除)', 'critical' : lambda result,skill_val : result >= 1 and result <= 5 and result <= skill_val//10, 'fumble' : lambda result,skill_val : skill_val < 50 and result >= 96+skill_val//10 and result <= 100 or skill_val >= 50 and result == 100 }, 5: { 'text' : '出1 - 2且 < 五分之一大成功\n不满50出96 - 100大失败,满50出99 - 100大失败(全部使用整除)', 'critical' : lambda result,skill_val : result >= 1 and result <= 2 and result <= skill_val//5, 'fumble' : lambda result,skill_val : skill_val<50 and result>=96 and result <= 100 or skill_val>=50 and result == 100 }, 6: { 'text' : '出1 - 5 且 < 1 + 二十分之一大成功\n出96 - 100且 >= 96 +二十分之一大失败(全部使用整除)', 'critical' : lambda result,skill_val : result >= 1 and result <= 5 and result <= 1+skill_val//20 or result == 1, 'fumble' : lambda result,skill_val : result>=96 and result <= 100 and result >= 96 + skill_val//20 or result ==100 }, } ``` ## 最后 >由于本人高三,这一年应该没多少时间进行更新(咕咕咕预告),如果有人愿意在此基础上进行更新改造都欢迎,最后如果真有事情要联系至此邮箱(虽然我不一定有时间看):thunderain_zhou@163.com