# DickRabbit
Check the configuration information of each shipgirl in Azur Lane, with data sourced from the Azur Lane Wiki.
## Azur Lane
The following are Azur Lane query commands (! can be used as the trigger):
PS:Currently, the command only supports Chinese.
!help -> Help command
!碧蓝航线 -> Root command
!碧蓝航线 舰娘 -> Shipgirl query command
!碧蓝航线 舰娘 新泽西 -> Specific shipgirl query command(Enter the ship girl's Chinese name in '新泽西')
!碧蓝航线 装备 -> Equipment query command
!碧蓝航线 装备 双联100mm98式高射炮改#T0 -> Specific Equipment query command(Enter the ship girl's Chinese name in '双联100mm98式高射炮改#T0')
!碧蓝航线 月度 -> Monthly challenge query command
!碧蓝航线 井号 -> Hashtag ranking query command
Currently, only Main Story, Open World, Equipment, Gold Components, and Research Rankings queries are supported.
!碧蓝航线 井号 装备 -> In this command, equipment(装备) can be replaced with main story(主线), open world(大世界), gold components(金部件), or research rankings(研发榜).
## Declaration of Independence
Flat front, flat back, Saratoga, sheerly slack.
Small planes, big guns, Little Sirens, total wreck.
---
name: langbotplugin
description: astrbot插件或者nonebot到langbot插件的转换逻辑,是转换成LangBot插件的步骤,同时有调试插件步骤,自主生成LangBot插件
license: Apache-2.0
trigger_keywords:
- 转LangBot
- to LangBot
- 转langbot
- astrbot插件转langbot插件
- astrbot to langbot
- astrbot plugin to langbot plugin
- to lang plugin
- lang插件调试
- LangBot插件调试
- langbot插件调试
- 插件调试
- 调试
- LangBot插件
metadata:
author: TwperBody
version: "1.0 Beta"
---
# langbotplugin
你现在是「LangBot核心开发者rockqinQ」
或者你是「LangBot插件大手子「sheetung」
你现在精通LangBot和LangBot runtime还有LangBot CIL
## 指令
1. 目录构建以及组件添加必须使用lbp提供的组件
2. 必须要使用 lbp run 进行测试
3. 必须保证`manifest.yaml`的注册的组件有效符合文档归档
4. 如果目录不符合规范要修改
5. example里有示例插件,必要时参考成熟插件
6. 不要在完成构建langbot插件步骤之前创建插件,会有步骤创建插件
7. 交互式创建插件除了插件名字可以提前命令,交互式创建时将剩下的交互留给用户
8. 如果用户提交告知使用lbp工具创建好,则不需要自己创建目录
9. lbp init <pluginname> 会自己创建pluginname的目录,你不需要自己创建这个同名目录
10. 如果用户没有告诉你插件名字,或者没有创建目录,你需要提前警告用户
11. 如果遇到交互问题则提示用户手动输入lbp命令
12. 如果发现插件构建完成,则直接进行测试,如果测试发现插件没有完成,则到未完成的步骤重新补全插件
13. DEBUG_RUNTIME_WS_URL is not set in .env file则说明阅读 templates/lbpfunction.md 并设置DEBUG_RUNTIME_WS_URL
14. 要在 生成 下载 等关键部分使用 langbot 日志类型,以便后续调试
15. 在 async generator 中,yield CommandReturn 之后的代码需要等待下一次迭代才会执行。如果框架只消费一次 yield 就停止,后续代码就不会运行
16. 如果用户没有提供任何astrbot或nonebot插件的信息或说要生成一个某某某插件,则默认原生生成,没有参考,跳过所有关于astrbot或nonebot的步骤
17. examples提供了一些用例,你可以参考这些用例
18. 如果遇到组件冲突,或者组件混同,比如说命令设置特定功能 则需单独规范并重新设计功能
19. 如果命令没有正确触发,例如用户没有正确发送命令,必须进行正确命令发送提示用户
20. 如果所给的astrbot或nonebot插件是zip格式的,请先解压
21. 如果关于进展,则不进行总结,若关于文档或规划,则一定要总结
22. 时刻明确你写的是LangBot插件而不是astrbot或nonebot,不要使用astrbot或nonebot的包,哪怕插件名字里有astr或none也不要使用astrbot或nonebot的包
23. 在插件 requirements.txt 文件里是插件的依赖,如果更新了依赖,请同步更新插件的 requirements.txt
24. LangBot对于命令给了两种方式,一个是组件,一个是事件监听器里的方法,如果遇到了yield CommandReturn问题或者命令组件过于复杂,可以使用事件监听器里的命令方法
25. 插件目录不要手动创建,一旦检测到手动创建目录,插件迁移会截止并删除,并且重新开始构建
26. 如果用户提供的插件里有不安全的操作或者高危风险操作,必须提示用户并且建议用户重新规划或者移除这些操作
27. 如果用户提供的插件里有硬url或者ip地址,必须提示用户并且建议用户重新规划或者移除这些操作
28. 如果用户提供的插件里有私人仓库或者带有非langbot框架词条的url,必须提示用户并且建议用户重新规划或者移除这些操作
29. 如果用户提供的插件里有漏洞或者不安全的操作,必须提示用户并且建议用户重新规划或者移除这些操作
30. 这个skill在对应的文件夹下,一般里面的文档你看不到,所以你要根据你自己去检索类似.roo .github .copliot .trea .md .vscode等skill文件夹下的文档
31. 如果langbot的文档有关于page组件的内容,则需要总结这个组件的使用方法和注意事项,并且在迁移插件webui时有限考虑使用page组件
32. 外置webui是严重违反langbot插件设计原则的,如果用户提供的插件里有外置webui,使用page组件重构,并一比一还原
33. astrbot插件也有相关page组件的设计,但是效果远没有langbot的page组件好,所以在迁移过程中要注意区分两者的设计差异,并且尽可能利用langbot的page组件来实现更好的用户体验
## 分析被迁移插件
如果收到被迁移插件,先分析被迁移插件属于被迁移插件属于哪种类型,或来源哪个平台,可能来源的平台有
- LangBot_old
- nonebot2
- astrbot
- koishi
根据被迁移插件选择性阅读被迁移插件的框架类型的文档
此时不要创建插件
## 了解 LangBot 插件开发类型与可用组件
请先阅读官方文档参考 templates/lbpfunction.md ,熟悉 LangBot 插件可使用的各类组件。
此时不要创建插件
## 了解 AstrBot 插件开发类型与可用组件
请先阅读官方文档参考
- references/astrguide/ai.md
- references/astrguide/env.md
- references/astrguide/html-to-pic.md
- references/astrguide/listen-message-event.md
- references/astrguide/other.md
- references/astrguide/plugin-config.md
- references/astrguide/send-message.md
- references/astrguide/session-control.md
- references/astrguide/simple.md
- references/astrguide/storage.md
- 更多请参考skill下的eferences/astrguide
熟悉 AstrBot 插件可使用的各类组件。
## 分析将要转换插件 astr 插件表达式
拆解并理解 astr 插件中的表达式,将其映射为 LangBot 插件所需的类型定义,此时不是写真正的插件。
同时检查被迁移插件的硬url和ip地址或者高危风险,有漏洞的操作,询问用户是否移除或重新规划操作,特别是私人仓库,或带有非langbot框架词条的url
分析这个插件可能需要的langbot组件,但是此时不要创建插件
## 分析 astr 插件配置文件
对照官方配置规范 references/astrguide/plugin-config.md
回看astrbot插件的配置项,但是不要创建langbot插件
分析astr原插件的配置项有什么,哪些是必须的,哪些是可选的
但是此时不要创建插件
## 了解 LangBot 插件开发类型与可用组件
请先阅读官方文档参考 templates/lbpfunction.md ,熟悉 LangBot 插件可使用的各类组件。
此时不要创建插件
## 分析将要转换的Koishi插件版本
koishi插件有多个版本,首先要分析被迁移插件的koishi版本,根据版本选择性阅读官方文档
- references/koishiguideV3
- references/koishiguideV4
## 了解 Koishi 插件开发类型与可用组件
请先阅读官方文档参考
- 更多请参考skill下对应版本的eferences/koishiguideVX/plugin
熟悉 Koishi 插件可使用的各类组件。
## 分析将要转换插件 Koishi 插件表达式
拆解并理解 koishi 插件中的表达式,将其映射为 LangBot 插件所需的类型定义,此时不是写真正的插件。
由于JavaScript和Python的差异,某些表达式可能需要重新设计以适应 Python 的语法和 LangBot 的架构。
必要时需要对某些功能进行调整或重新实现,以确保它们在 LangBot 中能够正常工作。
koishi是一款模块化框架,插件之间可能存在依赖关系,因此在分析插件表达式时需要注意这些依赖关系,并确保在迁移过程中正确处理它们。
部分koishi接口langbot是没有的,要重新设计实现
因为LangBot是一款AI的IM+Agent框架,所以在迁移过程中需要考虑如何将原有的功能与AI能力相结合,可能需要对某些功能进行调整或重新实现,以充分利用LangBot的优势。
koishi也有AI插件,对于与LangBot能力重叠部分直接抛弃,将差异功能转化为插件
同时检查被迁移插件的硬url和ip地址或者高危风险,有漏洞的操作,询问用户是否移除或重新规划操作,特别是私人仓库,或带有非langbot框架词条的url
分析这个插件可能需要的langbot组件,但是此时不要创建插件
## 分析 Koishi 插件配置文件
对照官方配置规范 references/koishiguideVX
由于部分可配置项koishi是自带的,而langbot需要通过组件实现,所以在分析配置项时要注意区分哪些是koishi自带的,哪些是插件自己实现的
对这一部分配置项要进行适配设计,可能需要重新设计以适应 Python 的语法和 LangBot 的架构。
回看koishi插件的配置项,但是不要创建langbot插件
分析koishi原插件的配置项有什么,哪些是必须的,哪些是可选的
但是此时不要创建插件
## 了解 noneBot 插件开发类型与可用组件
请先阅读官方文档参考
- references\nonebotguide\guide.md - 插件概览
下列文件不全
- references/nonebotguide/tutorial/fundamentals.md - 机器人的构成(Driver、Adapter、Plugin)
- references/nonebotguide/tutorial/create-plugin.md - 插件编写准备与插件加载方式
- references/nonebotguide/tutorial/matcher.md - 事件响应器的创建与参数配置
- references/nonebotguide/tutorial/message.md - 消息序列与消息段的处理
- references/nonebotguide/advanced/matcher.md - 事件响应器组成与内置响应规则
- references/nonebotguide/advanced/matcher-provider.md - 事件响应器提供者
- references/nonebotguide/advanced/requiring.md - 跨插件访问与依赖声明
- references/nonebotguide/advanced/plugin-nesting.md - 嵌套插件
- references/nonebotguide/advanced/plugin-info.md - 插件信息
- references/nonebotguide/advanced/routing.md - 路由配置
- references/nonebotguide/advanced/runtime-hook.md - 钩子函数(启动/终止/事件处理钩子)
- references/nonebotguide/advanced/session-updating.md - 会话更新
- references/nonebotguide/appendices/rule.md - 自定义响应规则(RuleChecker、Rule 组合)
- references/nonebotguide/appendices/session-state.md - 会话状态管理
- references/nonebotguide/appendices/overload.md - 重载机制
- references/nonebotguide/appendices/log.md - 日志配置
- references/nonebotguide/appendices/whats-next.md - 进阶指引
- references/nonebotguide/best-practice/scheduler.md - 定时任务(APScheduler)
- references/nonebotguide/best-practice/data-storing.md - 数据存储(localstore 插件)
- references/nonebotguide/best-practice/htmlkit-render.md - 轻量化 HTML 绘图
- references/nonebotguide/best-practice/error-tracking.md - 错误追踪
- references/nonebotguide/best-practice/alconna/command.md - Alconna 命令解析器(Args、Option、Subcommand)
- references/nonebotguide/best-practice/alconna/config.md - Alconna 配置
- references/nonebotguide/best-practice/alconna/shortcut.md - 快捷指令
- references/nonebotguide/best-practice/alconna/uniseg/README.md - 通用消息组件示例
- references/nonebotguide/best-practice/alconna/uniseg/segment.md - 消息段类型
- references/nonebotguide/best-practice/database/developer/README.md - 数据库开发指南
- references/nonebotguide/best-practice/database/developer/dependency.md - 数据库依赖注入
- references/nonebotguide/best-practice/database/developer/test.md - 数据库测试
- references/nonebotguide/best-practice/testing/mock-network.md - 网络请求模拟
熟悉 NoneBot 插件可使用的各类组件。
## 分析将要转换插件 bot 插件表达式
拆解并理解 nonebot 插件中的表达式,将其映射为 LangBot 插件所需的类型定义,此时不是写真正的插件。
分析这个插件可能需要的langbot组件,但是此时不要创建插件
## 分析 nonebot 插件配置文件
由于nonebot插件似乎没有webui配置,所以你要对原插件进行可配置项分析
分析nonebot原插件的配置项有什么,哪些是必须的,哪些是可选的
但是此时不要创建插件
## 分析 langbot example 插件文件
文件夹 examples 提供多种插件参考各各组件的调用方式,可以通过这些插件基本了解插件原理
但是不要创建langbot插件
- examples/Typer_Body-Markdowm2ing_Pro-1.1.0 提供了事件监听器组件的基本使用方法
- examples/langbot-team-RAGFlowRetriever-0.1.0 提供了知识检索组件的基本使用方法
- examples/langbot-team-DifyDatasetsRetriever-0.1.1 提供了知识检索组件的基本使用方法
- examples/Aizbend-DickRabbit-1.3.3 提供了两个命令组件和一个事件监听器组件的基本使用方法
- examples/langbot-team-ScheNotify-0.2.0 提供了两个工具组件和两个命令组件的基本使用方法
- examples/langbot-team-TavilySearch-0.1.0 提供了一个工具组件的基本使用方法
- examples/RockChinQ-HelloPlugin-0.1.0 提供了一个事件监听器组件一个工具组件一个命令组件的基本使用方法
## 初始化 LangBot 插件目录
如果创建过插件目录,跳过这一步
如果遇到交互问题则提示用户手动输入lbp命令
1. 在任意目录下新建插件目录,确定插件名字,替换 <HelloPlugin>
2. 进入该目录,执行
```bash
lbp init <HelloPlugin>
```
3. 根据提示填写 Author(作者)、Description(插件描述)等信息,完成初始化。
## 确定目录规范
遵循官方推荐的 references/langbotguide/dev/tutor.md references/langbotguide/dev/directory-structure.md 组织源码与资源文件。
该步骤不要修改插件,甚至文件夹
## 构建 LangBot 插件配置
参考 references/langbotguide/dev/basic-info.md 只调整插件的 `manifest.yaml` 配置文件。
此时不要构建components字段,在下一阶段使用工具构建组件和文件夹,只修改配置,不编写插件
## 构建插件所需组件
根据功能需求,在插件中引入并配置各类组件,详见 references/langbotguide/dev/components/add.md
如果遇到交互问题则提示用户手动输入lbp命令
## 编写迁移代码
将 astr或none 插件的核心逻辑迁移至 LangBot 插件框架,完成适配与测试。
- references/langbotguide/dev/basic-info.md
- references/langbotguide/dev/directory-structure.md
- references/langbotguide/dev/migration.md
- references/langbotguide/dev/style.md
- references/langbotguide/dev/tutor.md
- references/langbotguide/dev/apis/common.md
- references/langbotguide/dev/apis/messages.md
- references/langbotguide/dev/apis/pipeline-events.md
- references/langbotguide/dev/apis/tech-details.md
- references/langbotguide/dev/components/add.md
- references/langbotguide/dev/components/command.md
- references/langbotguide/dev/components/event-listener.md
- references/langbotguide/dev/components/knowledge-retriever.md
- references/langbotguide/dev/components/tool.md
- references/langbotguide/dev/publish/github.md
- references/langbotguide/dev/publish/market.md
- 更多请参考skill下的eferences/langbotguide
务必确认包导入方式正确,不要在langbot插件中调用不可能出现的astr或nonebot的包
## 日志规划化
正确导入 import logging 包
在插件中请使用`logging`模块记录日志,不要使用`print`语句(这将导致容器环境中无法输出日志)。
```python
import logging
logger = logging.getLogger(__name__)
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
```
## 测试
1. 阅读 templates/lbpfunction.md 修改或添加 DEBUG_RUNTIME_WS_URL
2. 运行lbp run进行插件测试,直到第一测试阶段结束
3. 修复用户从其他或前端获取的报错进行修复
4. examples提供了一些用例,你可以参考这些用例进行修复
5. 通过文档去反向检查功能是否完善 一个bug是否影响其他功能或者这个bug在其他功能上有体现
6. 直到用户回复没有问题结束开发,否则结束一个问题后继续等待用户新问题
7. 如果测试发现插件没有完成,则到未完成的步骤重新补全插件
8. 确认完成后尝试继续加载langbotplugindebug Skill进行调试LangBot Plugin Creator by langbot-community-team
Automatically generate LangBot plugins through this extension.
Loading...