• 欢迎来到小可 · Wiki,人人可编辑的,多平台聊天机器人“小可”的官方文档资源。
  • 小可很可爱,请给我们打钱
  • 原MkDocs已迁入本站。若发现404属正常现象,请点击右上角搜索您想要的模块。

自搭建:修订间差异

来自小可 · Wiki,人人可编辑的,QQ机器人“小可”的官方文档资源
 
(未显示2个用户的28个中间版本)
第1行: 第1行:
 本文将会教 如何搭建自己的小可机器人。
 本文将会教 如何搭建自己的小可机器人
 
若想使用 Docker 部署,请转到[[/Docker|使用 Docker 部署]]。
 
本文为自搭建文档的镜像,不可代替原文档。原文档请见[https://github.com/Teahouse-Studios/akari-bot/blob/master/DEPLOY.md 此]


== 准备 ==
== 准备 ==


# 一台可运行 Python 的服务器或主机(电脑、树莓派、安装了 Termux 的手机、etc... )。
# 一台可运行 Python 的服务器或主机(电脑、树莓派、安装了 Termux 的手机、etc )。
# 主机已安装并可运行 [https://www.python.org/ Python 3 环境],版本大于 3.8 皆可部署。
# 主机已安装并可运行 [https://www.python.org/ Python 3 环境] ,版本大于 3.8 皆可部署。
# 对应 需要运行的平台所需要的必要内容(环境、token等)。
# 对应 需要运行的平台所需要的必要内容(环境、token 等)。
 
== 下载源代码 ==
 
'''Windows'''


==  基础部分部署 ==
=====  方式一:使用 Git 克隆 =====


=== 安装基础依赖 ===
# 请在要放置小可的文件夹中右键打开 Git Bash,并输入以下指令:
<syntaxhighlight lang="sh">git clone https://github.com/Teahouse-studios/akari-bot.git</syntaxhighlight>
直连GitHub的克隆速度较慢,在特殊情况下,您可以使用镜像站进行克隆:
<syntaxhighlight lang="sh">git clone https://gitclone.com/github.com/Teahouse-studios/akari-bot.git</syntaxhighlight>
镜像站会在每天晚上进行仓库更新,所以若想在镜像站更新之前获取最新版本的代码,请使用原GitHub地址。
# 按住 <code>Shift</code> + <code>右键</code>,选择 <code>在此处打开 Powershell 窗口</code> 或 <code>在此处打开命令窗口</code> 来打开终端。


# 从 [https://github.com/Teahouse-Studios/bot/releases/latest Release页面] 的 Assets 部分中 下载 Source code(源代码)。
===== 方式二:直接 下载代码 =====
# 解压源 代码 ,然后打开终端,输入<code>pip install -r requirements.txt</code> 来安装依赖。


=== 配置 ===
# 从 [https://github.com/Teahouse-Studios/bot/releases/latest Release 页面] 的 Assets 板块中下载 Source code(源代码)。当然,您也可以下载 [https://github.com/Teahouse-Studios/akari-bot/archive/refs/heads/master.zip master 分支的最新代码]。
注意:master 分支下的部署文档可能会有所不同,请在下载对应版本的源码后打开目录下的 DEPLOY.md 继续查看部署教程
# 解压源代码,按住 <code>Shift</code> + <code>右键</code>,选择 <code>在此处打开 Powershell 窗口</code> 或 <code>在此处打开命令窗口</code> 来打开终端,进入文件夹。


进入<code>config</code> 文件夹,将<code>config.cfg.example</code> 重命名为<code>config.cfg</code>,然后开始配置你所需要的内容。
'''Linux'''


  对于第一次 简单部署 我们只需要关注数据库字段即可 其余字段 留空
# 安装 [https://git-scm.com/ Git]:
# 进入文件夹并执行以下指令:
<syntaxhighlight lang="sh">git clone https://github.com/Teahouse-studios/akari-bot.git</syntaxhighlight>
直连GitHub 克隆速度较慢 在特殊情况下 以使用镜像站进行克隆
<syntaxhighlight lang="sh">git clone https://gitclone.com/github.com/Teahouse-studios/akari-bot.git</syntaxhighlight>
镜像站会在每天晚上进行仓库更新,所以若想在镜像站更新之前获取最新版本的代码,请使用原GitHub地址。


<code>db_path = mysql+pymysql://</code>
== 安装依赖 ==


机器人需要一个数据库以用于存储用户数据。
'''Windows'''


此字段需要填写一个可被<code>sqlalchemy</code> 支持的数据库链接,以下为推荐 案,请任选
''' 一: 使用 [https://python-poetry.org/ Poetry]'''


==== MySQL ====
如果您已经安装了 Poetry,您可以跳过以下安装步骤。
 
 
# 打开 Powershell,并执行以下指令来安装 Poetry:
<syntaxhighlight lang="powershell">(Invoke-WebRequest -Uri "https://install.python-poetry.org" -UseBasicParsing).Content | py -</syntaxhighlight>
若您使用了 Microsoft Store 或 pyenv-windows 安装 Python,请将 <code>py</code> 替换为 <code>python</code>。
安装 Poetry 前请'''务必'''检查系统环境变量中是否存在多个 Python Executable Path(Python 可执行路径) 并及时清除,否则安装 Poetry 后可能会出现 Python 环境混乱导致无法正常加载依赖的情况。
# 安装完成后,请将以下目录添加到 PATH 环境变量,方便调用:
<pre>%APPDATA%\Python\Scripts</pre>
请善用搜索引擎寻找更改 PATH 的方法。
在添加到 PATH 之后,您通常需要重启终端,甚至整个电脑才能使其生效。
您可以通过 <code>poetry --version</code> 确认安装是否有效。
# 在安装完 Poetry 后,请执行以下指令:
<syntaxhighlight lang="powershell">poetry install</syntaxhighlight>
 
'''方式二:使用 pip'''
 
如果您不想使用 Poetry,您可以使用 pip 来安装依赖:
 
<syntaxhighlight lang="powershell">pip install -r requirements.txt</syntaxhighlight>
'''Linux'''
 
'''方式一:使用 [https://python-poetry.org/ Poetry]'''
 
如果您已经安装了 Poetry,您可以跳过以下安装步骤。
 
 
# 打开终端,并执行以下指令来安装 Poetry*:
<syntaxhighlight lang="sh">curl -sSL "https://install.python-poetry.org" | python3 -</syntaxhighlight>
安装 Poetry 前请'''务必'''检查系统环境变量中是否存在多个 Python Executable Path(Python可执行路径) 并及时清除,否则安装 Poetry 后可能会出现 Python 环境混乱导致无法正常加载依赖的情况。
# 安装完成后,请将以下目录添加到 PATH 环境变量,方便调用:
<pre>$HOME/.local/bin</pre>
请善用搜索引擎寻找更改 PATH 的方法。
在添加到 PATH 之后,您通常需要重启终端,甚至整个电脑才能使其生效。
您可以通过 <code>poetry --version</code> 确认安装是否有效。
# 在安装完 Poetry 后,请执行以下指令:
<syntaxhighlight lang="sh">poetry install</syntaxhighlight>
 
'''方式二:使用 pip'''
 
如果您不想使用 Poetry,您可以使用 pip 来安装依赖:


若使用<code>MySQL</code> 作为主要使用数据库:
<syntaxhighlight lang="powershell">pip install -r requirements.txt</syntaxhighlight>


'''格式'''
== 配置 ==


<code>mysql+pymysql://< 数据库用户名>:< 数据库用户密码>@< 数据库地址></code>
进入 <code>config</code> 文件夹,将 <code>config.toml.example</code> 重命名为 <code>config.toml</code> ,然后开始配置您所需要的内容。


'''实际示例'''
由于目前配置文件后缀改为 <code>toml</code>,与 <code>cfg</code> 不同的是,请在填写好必要的字段后,请删除所有配置文件中留空的字段,否则程序无法正常运行。若您您拥有旧版 <code>cfg</code> 文件,机器人会自动帮您转换为 <code>toml</code> 格式。


<code>mysql+pymysql://bot:123456@example.com/bot_prod</code>
=== 配置数据库 ===


==== SQLite ====
机器人需要一个数据库以用于存储用户数据,对于第一次的简单部署,我们只需要关注数据库字段即可,其余字段可留空:


  如果你不希望为了部署 一个 机器人而去研究如何安装数据库(或购买某服务商 的数据库 服务)的话
  此字段需要填写 一个 可被 <code>sqlalchemy</code> 支持 的数据库 链接,以下为推荐方案 请任 一个:
使用 SQLite 就是最佳 择。缺点是可能会遇到锁表问题(极小概率发生),以及将来运维失误(误删除 db 且没有备份)导致原先用户数据损毁的情况。


如果你选择 SQLite,只需要将字段内容填写为以下格式即可。无需再关注数据库搭建等问题:
==== MySQL ====


'''格式'''
若使用 <code>MySQL</code> 作为主要使用数据库:


<code>db_path = sqlite:///< 相对路径>/<数据库 文件名>.db</code>
'''格式''':<code>db_path = "mysql+pymysql://< 数据库用户名>:<数据库用户密码>@<数据库 地址>"</code>


'''实际示例'''
'''实际示例''' :<code>db_path = "mysql+pymysql://bot:123456@example.com/bot_prod"</code>


<code>db_path = sqlite:///database/save.db</code>
==== SQLite ====


  此示例 会在<code>database</code> 文件夹内创建<code>save.db</code> 来存储 用户数据。
  如果您不希望为了部署一个机器人而去研究如何安装数据库(或购买某服务商的数据库服务)的话 ,使用 SQLite 就是最佳选择。缺点是可能会遇到锁表问题(极小概率发生),以及 来运维失误(误删除 db  且没有备份)导致原先 用户数据 损毁的情况


=== 运行测试控制台 ===
  如果您选择 SQLite,只需要将字段内容填写为以下格式即可。无需再关注 数据库 搭建等问题:
一旦你配置好了 数据库 后,你就可以直接去启动测试控制台(<code>console.py</code>)了。


测试控制台包括一个基础的运行环境,你可以在测试控制台内使用命令进行基础的机器人交互。
'''格式''':<code>db_path = "sqlite:///<相对路径>/<数据库文件名>.db"</code>


测试控制台仅支持回复文本消息和图片,其它消息元素将被忽略或转换为文本或图片来显
'''实际 例''':<code>db_path = "sqlite:///database/save.db"</code>


1. 于<code>console.py</code> 所 目录,按下<code>Shift</code> +<code>右键</code> 来打开右键菜单。
  此示例将会 在 <code>database</code>  文件夹 创建 <code>save.db</code> 来 存储用户数据
2. 选择<code>在此处打开 Powershell 窗口</code> 或<code>在此处打开命令窗口</code>
3. 于终端 输入<code>python console.py</code> 来 启动测试控制台


=== 配置平台机器人 ===
=== 配置平台机器人 ===
接下来,我们需要开始配置你想让机器人运行的平台。


你只需要填写你需要的平台的字段,其余的留空即可。留空后对应平台的机器人将不会运行。


==== QQ ====
==== QQ ====
第75行: 第128行:
 我们在这里使用了 [https://github.com/nonebot/aiocqhttp aiocqhttp] 来对接 [https://github.com/Mrs4s/go-cqhttp go-cqhttp] 客户端。
 我们在这里使用了 [https://github.com/nonebot/aiocqhttp aiocqhttp] 来对接 [https://github.com/Mrs4s/go-cqhttp go-cqhttp] 客户端。


<code>qq_host = 127.0.0.1:11451</code> -  将会在填写 IP 地址和端口中开启 一个 websocket 服务器, go-cqhttp 反向连接。
如果您想使用 Docker 部署 go-cqhttp,请转到 [https://docs.go-cqhttp.org/guide/docker.html 使用 Docker]。
 
 
# 从 go-cqhttp 的官方仓库上下载最新的 [https://github.com/Mrs4s/go-cqhttp/releases/latest Release] 。
{|
!| 系统类型
!| 可执行文件
!| 压缩文件
|-
| Intel 版 Macos
| Not available
| <code>go-cqhttp_darwin_amd64.tar.gz</code>
|-
| M1 版 Macos
| Not available
| <code>go-cqhttp_darwin_arm64.tar.gz</code>
|-
| 32 位 Linux
| Not available
| <code>go-cqhttp_linux_386.tar.gz</code>
|-
| 64 位 Linux
| Not available
| <code>go-cqhttp_linux_amd64.tar.gz</code>
|-
| arm64 Linux
| Not available
| <code>go-cqhttp_linux_arm64.tar.gz</code>
|-
| armv7 Linux
| Not available
| <code>go-cqhttp_linux_armv7.tar.gz</code>
|-
| 32 位 Windows
| <code>go-cqhttp_windows_386.exe</code>
| <code>go-cqhttp_windows_386.zip</code>
|-
| 64 位 Windows
| <code>go-cqhttp_windows_amd64.exe</code>
| <code>go-cqhttp_windows_amd64.zip</code>
|-
| arm64 Windows
| <code>go-cqhttp_windows_arm64.exe</code>
| <code>go-cqhttp_windows_arm64.zip</code>
|-
| armv7 Windows
| <code>go-cqhttp_windows_armv7.exe</code>
| <code>go-cqhttp_windows_armv7.zip</code>
|}
#
# 解压下载好 文件到 一个 已经预先准备好的文件夹中:
'''Windows''' - 请使 自己熟悉的解压软件自行解压;
'''Linux''' - 请在命令行中输入 <code>tar -xzvf [文件名]</code> 。
# 运行 go-cqhttp
'''Windows'''
 
<li>双击<code>go-cqhttp_*.exe</code>,根据提示生成运行脚本#
<li>双击运行脚本#


<code>qq_account = 2052142661</code> - 填写机器人的 QQ 号。
'''Linux'''


  填写好后,请 配置<code>go-cqhttp</code>的<code>config.yml</code> 文件中的对应的连接方式。
<li>通过 SSH 连接到服务器#
  ...
<li><code>cd</code>到解压目录#
  # 连接服务列表
<li>输入 <code>./go-cqhttp</code>, <code>Enter</code>运行#
servers:
#
# 此时将提示:
<pre>[WARNING]: 尝试加载配置文件 config.yml 失败: 文件不存在
[INFO]: 默认 配置 文件已生成,请编辑 config.yml 后重启程序.</pre>
程序将会自动在存放 [https://github.com/Mrs4s/go-cqhttp go-cqhttp] 文件夹的目录下生成一个默认配置文件 <code>config.yml</code>
接下来,请配置 [https://github.com/Mrs4s/go-cqhttp go-cqhttp]  的 <code>config.yml</code> 文件中的对应的连接方式 和签名服务器
<pre>account:
  ...
  # 数据包的签名服务器
  # 兼容 https://github.com/fuqiuluo/unidbg-fetch-qsign
  # 暂不支持最新版qsign服务,可用版本:v1.1.0-
  # 如果遇到 登录 45 错误, 或者发送信息风控的话需要填入一个服务器
  # 示例:
  # sign-server: 'http://127.0.0.1:8080' # 本地签名服务器
  # sign-server: 'https://signserver.example.com' # 线上签名服务器
  # 服务器可使用docker在本地搭建或者使用他人开放的服务
  # 不建议使用公共服务器, 有封号风险
  sign-server: '-'
...
# 连接服务列表
servers:
   # 添加方式,同一连接方式可添加多个,具体配置说明请查看文档
   # 添加方式,同一连接方式可添加多个,具体配置说明请查看文档
  #- http: # http 通信
  #- http: # http 通信
   #- ws:  # 正向 Websocket
   #- ws:  # 正向 Websocket
   #- ws-reverse: # 反向 Websocket
   #- ws-reverse: # 反向 Websocket
  #- pprof: #性能分析服务器
  #- pprof: #性能分析服务器
   - ws-reverse:
   - ws-reverse:
    universal: ws://127.0.0.1:11451/ws/ # 此处填写先前的 IP 地址和端口,注意不要删去后面的 /ws/
    universal: ws://127.0.0.1:11451/ws/ # 此处填写先前的 IP 地址和端口,注意不要删去后面的 /ws/
     reconnect-interval: 3000
     reconnect-interval: 3000
     middlewares:
     middlewares:
     <<: *default # 引用默认中间件
     <<: *default # 引用默认中间件
  ...
    ...</pre>
  请在小可机器人的配置文件 <code>config.toml</code> 填写以下字段:
<code>qq_host = "127.0.0.1:11451"</code> - 将会在填写的 IP 地址和端口中开启一个 Websocket 服务器,用于 go-cqhttp 反向连接。
<code>qq_account = "2314163511"</code> - 填写机器人的 QQ 号。
由于最近 QQ 封控机制加强,go-cqhttp 若出现 Code45 报错情况,请配置签名服务器,请注意:目前 go-cqhttp 暂不支持最新版本的签名服务器。
若在配置中遇到问题,请参阅 [https://docs.go-cqhttp.org/ go-cqhttp官方文档]。
 


==== Discord ====
==== Discord ====
第99行: 第235行:
 我们在这里使用了 [https://github.com/Pycord-Development/pycord Pycord] 来调用 Discord API。
 我们在这里使用了 [https://github.com/Pycord-Development/pycord Pycord] 来调用 Discord API。


 为了达到目的, 需要于 [https://discord.com/developers Discord 开发者平台] 创建一个机器人并获取 Token。
 为了达到目的, 需要于 [https://discord.com/developers Discord 开发者平台] 创建一个机器人并获取 Token。


<code>dc_token =</code> - 填写 获取到的机器人 Token。
<code>dc_token =</code> - 填写 获取到的机器人 Token。


==== Telegram ====
==== Telegram ====
第107行: 第243行:
 我们在这里使用了 [https://github.com/aiogram/aiogram AIOGram] 来异步调用 Telegram API。
 我们在这里使用了 [https://github.com/aiogram/aiogram AIOGram] 来异步调用 Telegram API。


 为了达到目的, 需要在 Telegram 搜索<code>@BotFather</code>来创建机器人。
 为了达到目的, 需要在 Telegram 搜索 <code>@BotFather</code> 来创建机器人。


<code>tg_token =</code> - 填写 获取到的机器人 Token。
<code>tg_token =</code> - 填写 获取到的机器人 Token。


===  运行 平台机器人 ===
==== Kook ====
 
您需要在 [https://developer.kookapp.cn/ Kook 开发者 平台] 创建一个 机器人 并获取 Token。
 
<code>kook_token =</code> - 填写您获取到的机器人 Token。
 
 
==== Matrix ====
 
您需要自行完成账号注册与登录。
 
<code>matrix_homeserver =</code> - 填写您使用的 Matrix server URL(只包括协议与主机,最后无需添加<code>/</code>)。
 
<code>matrix_user =</code> - 填写机器人的 [https://spec.matrix.org/v1.7/appendices/#user-identifiers 用户ID](包括<code>@</code>与<code>:</code>)。


==== Windows ====
<code>matrix_token =</code> - 填写机器人任意设备的 Access Token。


  我们 不推荐 双击运行<code>start.bat</code>来启动程序
  获取完 Access Token 后, 要使用客户端的退出登录功能, 推荐 通过浏览器隐私模式登陆并获取 Token


  建议在启动机器人之前,先打开终端(cmd 或 Powershell 再运行<code>start.bat</code>。
  对于 Element 及其分支(如 SchindiChat ,Access Token 可以从“所有设置”->“帮助及关于”-> “高级”-> “访问令牌”中获取


1. <code>start.bat</code> 所在目录,按下<code>Shift</code> +<code>右键</code> 来打开右键菜单。
  Cinny,Access Token 可以从浏览器的的 localStorage 中提取(参考 [https://github.com/cinnyapp/cinny/issues/938 cinnyapp/cinny#938] )。
2. 选择<code>在此处打开 Powershell 窗口</code> 或<code>在此处打开命令窗口</code>
3. 于终端内输入<code>.\start.bat</code> (Powershell) 或<code>start.bat</code> (cmd 来启动机器人


==== Linux ====
对于没有合适的客户端的用户(?),您也可以使用以下命令进行密码登陆(但仍需手动完成后续的 [https://spec.matrix.org/v1.7/client-server-api/#device-verification 设备验证] 、 [https://spec.matrix.org/v1.7/client-server-api/#cross-signing 交叉签名] 和 [https://spec.matrix.org/v1.7/client-server-api/#server-side-key-backups 服务端密钥备份] 恢复等流程):


1. 于终端内,设置<code>start</code> 脚本的执行权限:<code>chmod +x start</code>
<pre>curl -XPOST -d '{"type":"m.login.password", "user":"<user>", "password":"<password>"}' "https://<homeserver>/_matrix/client/r0/login"</pre>
2. 脚本:<code>./start</code>
  目前,由于libolm在一些情况下需要手 安装,机器人没有端对端加密(e2ee)支持。


=== 配置其他功能 ===
=== 配置其他功能 ===
第132行: 第279行:
 由于小可有着许多的功能,部分功能需要进一步的配置才能使用。
 由于小可有着许多的功能,部分功能需要进一步的配置才能使用。


 部分字段可能并未预设于<code>config.yml.example</code> 中,手动添加即可。
 部分字段可能并未预设于 <code>config.toml.example</code> 中,手动添加即可。


==== 屏蔽词 ====
==== 屏蔽词 ====
小可内置了[https://www.aliyun.com/product/lvwang 阿里云内容安全服务]对接,可用于 QQ 平台下部分模块检查发送文本是否安全,以达到机器人账户安全的目的。


 如有需求,请前往阿里云进行开通并获取 accessKeyId accessKeySecret 。未填写字段将不会使用屏蔽词服务。
小可内置了 [https://www.aliyun.com/product/lvwang 阿里云内容安全服务] 对接,可用于 QQ 和 Kook 平台下部分模块检查发送文本是否安全,以达到机器人账户安全的目的。
 
 如有需求,请前往阿里云进行开通并获取 AccessKeyID AccessKeySecret 。未填写字段将不会使用屏蔽词服务
 
<code>check_accessKeyId =</code> - 填写获取的 AccessKeyID。
 
<code>check_accessKeySecret =</code> - 填写获取的 AccessKeySecret


<code>Check_accessKeyId =</code> - 填写获取的<code>accessKeyId</code>


<code>Check_accessKeySecret =</code> - 填写获取的<code>accessKeySecret</code>
==== QQ频道消息处理(beta) ====
 
通过上文的 [https://github.com/nonebot/aiocqhttp aiocqhttp] 对接 [https://github.com/Mrs4s/go-cqhttp go-cqhttp] 方式,可以按需选择是否启用QQ频道消息处理功能。
 
根据 go-cqhttp 的文档,iPad / Android Pad / Android Phone 协议支持处理QQ频道消息,可以在其生成的 <code>device.json</code>  中寻找 <code>"protocol":6,</code> 字段,将本处的数值修改为 1(Android Phone)、5(iPad)或 6(Android Pad)任意一个均可调用本功能。
 
注意:QQ频道消息的处理仍然处于测试阶段,由于 go-cqhttp 对频道消息支持的不完善,频道内消息无法撤回,且频道列表不会自动刷新(加入新频道需要手动重启一次 gocqhttp)。
 
关于 go-cqhttp 选用以上方式登录时出现的的 Code45 或其他登录问题,请根据 go-cqhttp 官方 [https://github.com/Mrs4s/go-cqhttp Issue] 对照解决,或选用除以上协议外的其他协议。
 


==== Webrender ====
==== Webrender ====
第149行: 第309行:
===== 部署 =====
===== 部署 =====


# 此服务使用 JavaScript 编写,由<code>Puppeteer</code> 驱动,为此,你需要安装好 [https://nodejs.org/ Node.js]环境,以及安装好 [https://www.google.cn/intl/zh-CN/chrome/ Chrome] 。
# 下载 [https://github.com/Teahouse-Studios/oa-web-render) 源代码文件],并在终端内使用<code>npm install</code> 安装依赖。
# 于<code>package.json</code> 同级目录中,创建<code>.env</code> 文件,并于内填写以下字段:


<code>
# 此服务使用 JavaScript 编写,由 <code>Puppeteer</code> 驱动,为此,您需要安装好 [https://nodejs.org/ Node.js] 环境,以及安装好 [https://www.google.cn/intl/zh-CN/chrome/ Chrome] 。
CHROMIUM_PATH="C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" # 填写 chrome.exe 的绝对路径
# 下载 [https://github.com/Teahouse-Studios/oa-web-render 源代码文件] ,并在终端内使用 <code>npm install</code> 安装依赖。
FC_SERVER_PORT=15551 # 填写服务运行的端口
# 于 <code>package.json</code> 同级目录中,创建 <code>.env</code> 文件,并于内填写以下字段:
</code>
<pre>CHROMIUM_PATH="C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" # 填写 chrome.exe 的绝对路径
FC_SERVER_PORT=15551 # 填写服务运行的端口</pre>
在填写好配置文件之后,请删除所有配置文件中的注释,否则程序无法正确读取配置。
# 于终端内,使用 <code>node ./src/index.js</code> 来开启服务。服务无任何内容输出。


# 于终端内, 使用<code>node ./src/index.js</code> 来开启 服务 服务 无任何内容输出
  您亦可 使用 云服务产商的 Serverless 服务 来部署本 服务。


  你亦可使用云服务产商的 Serverless 服务来部署本服务。
===== 字段填写 =====


===== 字段填写 =====
<code>web_render =</code> - Webrender 的地址(IP 或域名)及端口。


<code>web_render =</code> - Webrender 的地址 (IP 或域名 及端口
<code>web_render_local =</code> - 本地 Webrender 的地址 。(可与上一字段同一参数


'''示例'''
'''示例'''


<code>web_render = 127.0.0.1:15551</code>
<code>web_render = "http://127.0.0.1:15551"</code>


==== 模块 ====
==== 模块 ====


===== Arcaea =====
===== coin =====
 
<code>[[coin]]</code> 模块需要一些额外的参数才能正常工作。


Arcaea 模块使用了 Lowiro 官方 ArcaeaLimitedAPI 和 BotArcAPI 进行开发
<code>coin_limit = 10000</code> - 一次可投掷 硬币最大个数


ArcaeaLimitedAPI 需要向 Lowiro 官方发送邮件申请以获得 Token
<code>coin_faceup_rate = 4994</code> - 硬币正面朝上的概率,按一万分之几计算


  在没有 ArcaeaLimitedAPI Token  情况下 也亦可仅使用 BotArcAPI 来支持模块部 功能运作
<code>coin_facedown_rate = 4994</code> - 硬币反面朝上 概率 按一万 之几计算


<code>arcapi_official_url =</code> - 填写你于邮件中获得的 ArcaeaLimitedAPI 地址
===== dice =====


<code>arcapi_official_token =</code> - 填写你于邮件中获得 ArcaeaLimitedAPI Token
<code>[[dice]]</code>  模块需要一些额外 参数才能正常工作。


<code>botarcapi_url =</code> -  填写 BotArcAPI 公用实例地址
<code>dice_limit = 10000</code> -  一次可投掷的骰子最大个数。


<code>botarcapi_agent =</code> -  填写 BotArcAPI 公用实例申请到 UA 名
<code>dice_roll_limit = 100</code> -  投掷骰子 最大次数。


  填写完后,你还需要从下载 [https://arcaea.lowiro.com/ Arcaea] Apk 文件,将其放置于<code>assets</code>  文件夹并重命名为<code>arc.apk</code>, 并在 Bot
<code>dice_mod_max = 10000</code> - 投掷骰子的最大调节值。
启动后使用<code>~arcaea initialize</code>  来初始化资源文件
 
<code>dice_mod_min = -10000</code> - 投掷骰子 最小调节值。
 
<code>dice_output_cnt = 50</code> - 输出时的最大数据量,超过则无法正常显示。
 
<code>dice_detail_cnt= 5</code> - 多次投掷骰子的总数 超过则不再显示详细信息。
 
<code>dice_count_limit = 10</code> - 多项式最多的项数


===== maimai =====
===== maimai =====


maimai 模块基于[https://github.com/Diving-Fish/mai-bot mai-bot] 修改而来。此模块需要额外的资源文件才可正常工作。
<code>[[maimai]]</code> 模块基于 [https://github.com/Diving-Fish/mai-bot mai-bot] 修改而来。此模块需要额外的资源文件才可正常工作。


1. 下载 [资源文件](https://www.diving-fish.com/maibot/static.zip) ,并于<code>assets</code> 目录下创建一个<code>maimai</code> 文件夹。
2. 解压资源文件,形成以下目录结构:


  assets
# 下载 [https://www.diving-fish.com/maibot/static.zip 资源文件] ,并于 <code>assets</code> 目录下创建一个 <code>maimai</code> 文件夹。
  └─maimai
# 解压资源文件,形成以下目录结构:
    └─static
<pre class="angular2html">assets
      │  adobe_simhei.otf
└─maimai
      │  aliases.csv
   └─static
      │  msyh.ttc
     │  adobe_simhei.otf
     
     │  aliases.csv
      └─mai
     │  msyh.ttc
        │...
    
     └─mai
       │...</pre>


===== secret =====
===== secret =====
第214行: 第383行:
==== 其他功能 ====
==== 其他功能 ====


<code>qq_msg_logging_to_db = True</code> -  QQ 平台内的命令触发消息记录至<code>database/msg.db</code> 有助于判断是否存 违规 使用机器人 的情况
<code>base_superuser =</code> -  设置机器人主超级用户。可用格式为 <code>QQ|<QQ 号></code>、<code>Discord|Client|<ClientID></code>、<code>Telegram|Client|<ClientID></code>、<code>Kook|User|<UserID></code>, 机器人开启后 使用 <code>~whoami</code> 命令来查看自身的 ID, 机器人 启动后将自动标记对象为超级用户


<code>base_superuser =</code> -  设置机器人主超级 户。可用格式为<code>QQ|<QQ 号></code>、<code>Discord|<ClientID></code>、<code>Telegram|<ClientID></code>,可在机器人开启后使用<code>~whoami</code>
<code>qq_disable_temp_session = true</code> -  是否禁 用 QQ  平台 临时会话功能
  命令来查看自身 ID,机器人启动后将自动标记对象为超级用户


<code>slower_schedule = False</code> -  部分计划任务模块使 更长 时间间隔执行, 可能有助于 网络较差 境的优化
<code>qq_enable_listening_self_message = false</code> -  是否启 QQ 平台 自我消息处理( 可能有助于 多设备下使用,但也可能会导致误触发导致消息陷入死循 状态)


<code>enable_tos = False</code> - 是否启用 内置的违反服务条款的 检查。
<code>enable_dirty_check = true</code> - 是否启用 屏蔽词 检查。


<code>qq_enable_dirty_check = True</code> - 是否启用 QQ 平台的屏蔽词检查
<code>enable_urlmanager = true</code> - 是否启用 URL 管理(替换外部链接,提示非官方页面)。若停用此功能将同时停用 <code>wiki_audit</code> 命令


<code>qq_enable_urlmanager = True</code> -  是否启 QQ 平台 URL 管理(替换外部链接 提示非官方页面)
<code>slower_schedule = false</code> -  部分计划任务模块使 更长 时间间隔执行 可能有助于网络较差环境的优化


===== 自定义确认词及命令前缀 =====
<code>enable_tos = false</code> - 是否启用内置的违反服务条款的检查。


  你可以通过编辑<code>core/elements/others/__init__.py</code>  里面 的<code>confirm_command</code>  变量 来添加(或删除)机器人在部分场景下询问用户是否继续的词 通过 编辑<code>command_prefix</code>
<code>enable_analytics = true</code> - 是否启用内置的 <code>analytics</code> 命令,用于统计命令使用次数。
  变量 来增加(或删除)可使用的命令前缀。
 
<code>enable_eval = true</code> - 是否启用内置的 <code>eval</code> 命令。
 
<code>allow_request_private_ip = true</code> - 是否允许机器人请求私有 IP 地址。
 
==== 自定义确认词及命令前缀 ====
 
  您可以通过编辑配置文件中 的 <code>confirm_command</code> 来添加(或删除)机器人在部分场景下询问用户是否继续的 确认 词,编辑 <code>command_prefix</code> 来增加(或删除)可使用的 默认 命令前缀。


<code>command_prefix</code> 首位将被用作帮助文档中默认展示的前缀。
<code>command_prefix</code> 首位将被用作帮助文档中默认展示的前缀。
== 运行机器人 ==
小可机器人主要由平台机器人构成,为了让开发者更好地测试模块,我们还提供了测试控制台,接下来我们将逐步讲解如何运行机器人。
=== 运行平台机器人 ===
==== Windows ====
我们不推荐双击运行 <code>start.bat</code> 来启动程序。
建议在启动机器人之前,先打开终端(cmd 或 Powershell)再运行 <code>start.bat</code>。
# 于 <code>start.bat</code> 所在目录,按下 <code>Shift</code> + <code>右键</code> 来打开右键菜单。
# 选择 <code>在此处打开 Powershell 窗口</code> 或 <code>在此处打开命令窗口</code>
# 于终端内输入 <code>.\start.bat</code> (Powershell) 或 <code>start.bat</code> (cmd)来启动机器人。
==== Linux ====
# 于终端内,设置 <code>start</code> 脚本的执行权限:<code>chmod +x start</code>
# 启动脚本:<code>./start</code>
=== 运行测试控制台 ===
测试控制台包括一个基础的运行环境,您可以在测试控制台内使用命令进行基础的机器人交互。
测试控制台仅支持回复文本消息和图片,其它消息元素将被忽略或转换为文本或图片来显示。
您可能需要使用 <code>poetry shell</code> 切换 poetry 的虚拟环境来调用先前安装的依赖。
==== Windows ====
# 于 <code>console.py</code> 所在目录,按下 <code>Shift</code> + <code>右键</code> 来打开右键菜单。
# 选择 <code>在此处打开 Powershell 窗口</code> 或 <code>在此处打开命令窗口</code>
# 于终端内输入 <code>python console.py</code> 来启动测试控制台。
==== Linux ====
# 于 <code>console.py</code> 所在目录,打开终端。
# 于终端内输入 <code>python console.py</code> 来启动测试控制台
== 获取帮助 ==
到此,恭喜您成功部署了属于您的小可机器人!
如果您在部署的过程中还有其他疑问,您可以向我们发送 Issue 来请求帮助。
请注意,您应该具备基本的提问技巧。有关如何提问,请阅读[https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md 《提问的智慧》]。
== 开发 ==
如果您想为小可开发模块,建议在开发之前执行 <code>pre-commit install</code> 来安装 <code>pre-commit</code> git 钩子,它可以在提交 commit 前执行一些操作。如:同步 poetry.lock 至 requirements.txt、自动 pep8 格式化等。


[[Category:开发]]
[[Category:开发]]

2023年8月29日 (二) 05:50的最新版本

本文将会教您如何搭建自己的小可机器人。

若想使用 Docker 部署,请转到使用 Docker 部署

本文为自搭建文档的镜像,不可代替原文档。原文档请见

准备

  1. 一台可运行 Python 的服务器或主机(电脑、树莓派、安装了 Termux 的手机、etc…)。
  2. 主机已安装并可运行 Python 3 环境 ,版本大于 3.8 皆可部署。
  3. 对应您需要运行的平台所需要的必要内容(环境、token 等)。

下载源代码

Windows

方式一:使用 Git 克隆
  1. 请在要放置小可的文件夹中右键打开 Git Bash,并输入以下指令:
git clone https://github.com/Teahouse-studios/akari-bot.git

直连GitHub的克隆速度较慢,在特殊情况下,您可以使用镜像站进行克隆:

git clone https://gitclone.com/github.com/Teahouse-studios/akari-bot.git

镜像站会在每天晚上进行仓库更新,所以若想在镜像站更新之前获取最新版本的代码,请使用原GitHub地址。

  1. 按住 Shift + 右键,选择 在此处打开 Powershell 窗口在此处打开命令窗口 来打开终端。
方式二:直接下载代码
  1. Release 页面 的 Assets 板块中下载 Source code(源代码)。当然,您也可以下载 master 分支的最新代码

注意:master 分支下的部署文档可能会有所不同,请在下载对应版本的源码后打开目录下的 DEPLOY.md 继续查看部署教程

  1. 解压源代码,按住 Shift + 右键,选择 在此处打开 Powershell 窗口在此处打开命令窗口 来打开终端,进入文件夹。

Linux

  1. 安装 Git
  2. 进入文件夹并执行以下指令:
git clone https://github.com/Teahouse-studios/akari-bot.git

直连GitHub的克隆速度较慢,在特殊情况下,您可以使用镜像站进行克隆:

git clone https://gitclone.com/github.com/Teahouse-studios/akari-bot.git

镜像站会在每天晚上进行仓库更新,所以若想在镜像站更新之前获取最新版本的代码,请使用原GitHub地址。

安装依赖

Windows

方式一:使用 Poetry

如果您已经安装了 Poetry,您可以跳过以下安装步骤。


  1. 打开 Powershell,并执行以下指令来安装 Poetry:
(Invoke-WebRequest -Uri "https://install.python-poetry.org" -UseBasicParsing).Content | py -

若您使用了 Microsoft Store 或 pyenv-windows 安装 Python,请将 py 替换为 python。 安装 Poetry 前请务必检查系统环境变量中是否存在多个 Python Executable Path(Python 可执行路径) 并及时清除,否则安装 Poetry 后可能会出现 Python 环境混乱导致无法正常加载依赖的情况。

  1. 安装完成后,请将以下目录添加到 PATH 环境变量,方便调用:
%APPDATA%\Python\Scripts

请善用搜索引擎寻找更改 PATH 的方法。 在添加到 PATH 之后,您通常需要重启终端,甚至整个电脑才能使其生效。 您可以通过 poetry --version 确认安装是否有效。

  1. 在安装完 Poetry 后,请执行以下指令:
poetry install

方式二:使用 pip

如果您不想使用 Poetry,您可以使用 pip 来安装依赖:

pip install -r requirements.txt

Linux

方式一:使用 Poetry

如果您已经安装了 Poetry,您可以跳过以下安装步骤。


  1. 打开终端,并执行以下指令来安装 Poetry*:
curl -sSL "https://install.python-poetry.org" | python3 -

安装 Poetry 前请务必检查系统环境变量中是否存在多个 Python Executable Path(Python可执行路径) 并及时清除,否则安装 Poetry 后可能会出现 Python 环境混乱导致无法正常加载依赖的情况。

  1. 安装完成后,请将以下目录添加到 PATH 环境变量,方便调用:
$HOME/.local/bin

请善用搜索引擎寻找更改 PATH 的方法。 在添加到 PATH 之后,您通常需要重启终端,甚至整个电脑才能使其生效。 您可以通过 poetry --version 确认安装是否有效。

  1. 在安装完 Poetry 后,请执行以下指令:
poetry install

方式二:使用 pip

如果您不想使用 Poetry,您可以使用 pip 来安装依赖:

pip install -r requirements.txt

配置

进入 config 文件夹,将 config.toml.example 重命名为 config.toml,然后开始配置您所需要的内容。

由于目前配置文件后缀改为 toml,与 cfg 不同的是,请在填写好必要的字段后,请删除所有配置文件中留空的字段,否则程序无法正常运行。若您您拥有旧版 cfg 文件,机器人会自动帮您转换为 toml 格式。

配置数据库

机器人需要一个数据库以用于存储用户数据,对于第一次的简单部署,我们只需要关注数据库字段即可,其余字段可留空:

此字段需要填写一个可被 sqlalchemy 支持的数据库链接,以下为推荐方案,请任选一个:

MySQL

若使用 MySQL 作为主要使用数据库:

格式db_path = "mysql+pymysql://<数据库用户名>:<数据库用户密码>@<数据库地址>"

实际示例db_path = "mysql+pymysql://bot:123456@example.com/bot_prod"

SQLite

如果您不希望为了部署一个机器人而去研究如何安装数据库(或购买某服务商的数据库服务)的话 ,使用 SQLite 就是最佳选择。缺点是可能会遇到锁表问题(极小概率发生),以及将来运维失误(误删除 db 且没有备份)导致原先用户数据损毁的情况。

如果您选择 SQLite,只需要将字段内容填写为以下格式即可。无需再关注数据库搭建等问题:

格式db_path = "sqlite:///<相对路径>/<数据库文件名>.db"

实际示例db_path = "sqlite:///database/save.db"

此示例将会在 database 文件夹内创建 save.db 来存储用户数据。

配置平台机器人

QQ

我们在这里使用了 aiocqhttp 来对接 go-cqhttp 客户端。

如果您想使用 Docker 部署 go-cqhttp,请转到 使用 Docker


  1. 从 go-cqhttp 的官方仓库上下载最新的 Release
系统类型 可执行文件 压缩文件
Intel 版 Macos Not available go-cqhttp_darwin_amd64.tar.gz
M1 版 Macos Not available go-cqhttp_darwin_arm64.tar.gz
32 位 Linux Not available go-cqhttp_linux_386.tar.gz
64 位 Linux Not available go-cqhttp_linux_amd64.tar.gz
arm64 Linux Not available go-cqhttp_linux_arm64.tar.gz
armv7 Linux Not available go-cqhttp_linux_armv7.tar.gz
32 位 Windows go-cqhttp_windows_386.exe go-cqhttp_windows_386.zip
64 位 Windows go-cqhttp_windows_amd64.exe go-cqhttp_windows_amd64.zip
arm64 Windows go-cqhttp_windows_arm64.exe go-cqhttp_windows_arm64.zip
armv7 Windows go-cqhttp_windows_armv7.exe go-cqhttp_windows_armv7.zip
  1. 解压下载好的文件到一个已经预先准备好的文件夹中:

Windows - 请使用自己熟悉的解压软件自行解压; Linux - 请在命令行中输入 tar -xzvf [文件名]

  1. 运行 go-cqhttp:

Windows

  • 双击go-cqhttp_*.exe,根据提示生成运行脚本#
  • 双击运行脚本# Linux
  • 通过 SSH 连接到服务器#
  • cd到解压目录#
  • 输入 ./go-cqhttp, Enter运行#
    1. 此时将提示:
    [WARNING]: 尝试加载配置文件 config.yml 失败: 文件不存在
    [INFO]: 默认配置文件已生成,请编辑 config.yml 后重启程序.

    程序将会自动在存放 go-cqhttp 文件夹的目录下生成一个默认配置文件 config.yml。 接下来,请配置 go-cqhttpconfig.yml 文件中的对应的连接方式和签名服务器。

    account:
      ...
      # 数据包的签名服务器
      # 兼容 https://github.com/fuqiuluo/unidbg-fetch-qsign
      # 暂不支持最新版qsign服务,可用版本:v1.1.0-
      # 如果遇到 登录 45 错误, 或者发送信息风控的话需要填入一个服务器
      # 示例:
      # sign-server: 'http://127.0.0.1:8080' # 本地签名服务器
      # sign-server: 'https://signserver.example.com' # 线上签名服务器
      # 服务器可使用docker在本地搭建或者使用他人开放的服务
      # 不建议使用公共服务器, 有封号风险
      sign-server: '-'
    ...
    # 连接服务列表
    servers:
       # 添加方式,同一连接方式可添加多个,具体配置说明请查看文档
      #- http: # http 通信
       #- ws:   # 正向 Websocket
       #- ws-reverse: # 反向 Websocket
      #- pprof: #性能分析服务器
       - ws-reverse:
          universal: ws://127.0.0.1:11451/ws/ # 此处填写先前的 IP 地址和端口,注意不要删去后面的 /ws/
           reconnect-interval: 3000
           middlewares:
             <<: *default # 引用默认中间件
           ...

    请在小可机器人的配置文件 config.toml 填写以下字段: qq_host = "127.0.0.1:11451" - 将会在填写的 IP 地址和端口中开启一个 Websocket 服务器,用于 go-cqhttp 反向连接。 qq_account = "2314163511" - 填写机器人的 QQ 号。 由于最近 QQ 封控机制加强,go-cqhttp 若出现 Code45 报错情况,请配置签名服务器,请注意:目前 go-cqhttp 暂不支持最新版本的签名服务器。 若在配置中遇到问题,请参阅 go-cqhttp官方文档


    Discord

    我们在这里使用了 Pycord 来调用 Discord API。

    为了达到目的,您需要于 Discord 开发者平台 创建一个机器人并获取 Token。

    dc_token = - 填写您获取到的机器人 Token。

    Telegram

    我们在这里使用了 AIOGram 来异步调用 Telegram API。

    为了达到目的,您需要在 Telegram 搜索 @BotFather 来创建机器人。

    tg_token = - 填写您获取到的机器人 Token。

    Kook

    您需要在 Kook 开发者平台 创建一个机器人并获取 Token。

    kook_token = - 填写您获取到的机器人 Token。


    Matrix

    您需要自行完成账号注册与登录。

    matrix_homeserver = - 填写您使用的 Matrix server URL(只包括协议与主机,最后无需添加/)。

    matrix_user = - 填写机器人的 用户ID(包括@:)。

    matrix_token = - 填写机器人任意设备的 Access Token。

    获取完 Access Token 后,不要使用客户端的退出登录功能,推荐通过浏览器隐私模式登陆并获取 Token。

    对于 Element 及其分支(如 SchindiChat),Access Token 可以从“所有设置”->“帮助及关于”->“高级”->“访问令牌”中获取。

    对于 Cinny,Access Token 可以从浏览器的的 localStorage 中提取(参考 cinnyapp/cinny#938)。

    对于没有合适的客户端的用户(?),您也可以使用以下命令进行密码登陆(但仍需手动完成后续的 设备验证交叉签名服务端密钥备份 恢复等流程):

    curl -XPOST -d '{"type":"m.login.password", "user":"<user>", "password":"<password>"}' "https://<homeserver>/_matrix/client/r0/login"

    目前,由于libolm在一些情况下需要手动安装,机器人没有端对端加密(e2ee)支持。

    配置其他功能

    由于小可有着许多的功能,部分功能需要进一步的配置才能使用。

    部分字段可能并未预设于 config.toml.example 中,手动添加即可。

    屏蔽词

    小可内置了 阿里云内容安全服务 对接,可用于 QQ 和 Kook 平台下部分模块检查发送文本是否安全,以达到机器人账户安全的目的。

    如有需求,请前往阿里云进行开通并获取 AccessKeyID 及 AccessKeySecret。未填写字段将不会使用屏蔽词服务。

    check_accessKeyId = - 填写获取的 AccessKeyID。

    check_accessKeySecret = - 填写获取的 AccessKeySecret。


    QQ频道消息处理(beta)

    通过上文的 aiocqhttp 对接 go-cqhttp 方式,可以按需选择是否启用QQ频道消息处理功能。

    根据 go-cqhttp 的文档,iPad / Android Pad / Android Phone 协议支持处理QQ频道消息,可以在其生成的 device.json 中寻找 "protocol":6, 字段,将本处的数值修改为 1(Android Phone)、5(iPad)或 6(Android Pad)任意一个均可调用本功能。

    注意:QQ频道消息的处理仍然处于测试阶段,由于 go-cqhttp 对频道消息支持的不完善,频道内消息无法撤回,且频道列表不会自动刷新(加入新频道需要手动重启一次 gocqhttp)。

    关于 go-cqhttp 选用以上方式登录时出现的的 Code45 或其他登录问题,请根据 go-cqhttp 官方 Issue 对照解决,或选用除以上协议外的其他协议。


    Webrender

    此为小可的外置服务。主要用于处理 html 渲染图片及部分功能的访问代理。

    部署
    1. 此服务使用 JavaScript 编写,由 Puppeteer 驱动,为此,您需要安装好 Node.js 环境,以及安装好 Chrome
    2. 下载 源代码文件 ,并在终端内使用 npm install 安装依赖。
    3. package.json 同级目录中,创建 .env 文件,并于内填写以下字段:
    CHROMIUM_PATH="C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" # 填写 chrome.exe 的绝对路径
    FC_SERVER_PORT=15551 # 填写服务运行的端口

    在填写好配置文件之后,请删除所有配置文件中的注释,否则程序无法正确读取配置。

    1. 于终端内,使用 node ./src/index.js 来开启服务。服务无任何内容输出。

    您亦可使用云服务产商的 Serverless 服务来部署本服务。

    字段填写

    web_render = - Webrender 的地址(IP 或域名)及端口。

    web_render_local = - 本地 Webrender 的地址。(可与上一字段同一参数)

    示例

    web_render = "http://127.0.0.1:15551"

    模块

    coin

    coin 模块需要一些额外的参数才能正常工作。

    coin_limit = 10000 - 一次可投掷的硬币最大个数。

    coin_faceup_rate = 4994 - 硬币正面朝上的概率,按一万分之几计算。

    coin_facedown_rate = 4994 - 硬币反面朝上的概率,按一万分之几计算。

    dice

    dice 模块需要一些额外的参数才能正常工作。

    dice_limit = 10000 - 一次可投掷的骰子最大个数。

    dice_roll_limit = 100 - 投掷骰子的最大次数。

    dice_mod_max = 10000 - 投掷骰子的最大调节值。

    dice_mod_min = -10000 - 投掷骰子的最小调节值。

    dice_output_cnt = 50 - 输出时的最大数据量,超过则无法正常显示。

    dice_detail_cnt= 5 - 多次投掷骰子的总数,超过则不再显示详细信息。

    dice_count_limit = 10 - 多项式最多的项数。

    maimai

    maimai 模块基于 mai-bot 修改而来。此模块需要额外的资源文件才可正常工作。


    1. 下载 资源文件 ,并于 assets 目录下创建一个 maimai 文件夹。
    2. 解压资源文件,形成以下目录结构:
    assets
    └─maimai
        └─static
            │  adobe_simhei.otf
            │  aliases.csv
            │  msyh.ttc
            │
            └─mai
                │...
    secret

    此模块下的内容主要用于监测 Minecraft Wiki 注册日志和滥用日志,如无需要可直接删除此模块的文件夹。

    其他功能

    base_superuser = - 设置机器人主超级用户。可用格式为 QQ|<QQ号>Discord|Client|<ClientID>Telegram|Client|<ClientID>Kook|User|<UserID>,可在机器人开启后使用 ~whoami 命令来查看自身的 ID,机器人启动后将自动标记对象为超级用户。

    qq_disable_temp_session = true - 是否禁用 QQ 平台的临时会话功能。

    qq_enable_listening_self_message = false - 是否启用 QQ 平台的自我消息处理(可能有助于多设备下使用,但也可能会导致误触发导致消息陷入死循环状态)。

    enable_dirty_check = true - 是否启用屏蔽词检查。

    enable_urlmanager = true - 是否启用 URL 管理(替换外部链接,提示非官方页面)。若停用此功能将同时停用 wiki_audit 命令。

    slower_schedule = false - 部分计划任务模块使用更长的时间间隔执行,可能有助于网络较差环境的优化。

    enable_tos = false - 是否启用内置的违反服务条款的检查。

    enable_analytics = true - 是否启用内置的 analytics 命令,用于统计命令使用次数。

    enable_eval = true - 是否启用内置的 eval 命令。

    allow_request_private_ip = true - 是否允许机器人请求私有 IP 地址。

    自定义确认词及命令前缀

    您可以通过编辑配置文件中的 confirm_command 来添加(或删除)机器人在部分场景下询问用户是否继续的确认词,编辑 command_prefix 来增加(或删除)可使用的默认命令前缀。

    command_prefix 首位将被用作帮助文档中默认展示的前缀。

    运行机器人

    小可机器人主要由平台机器人构成,为了让开发者更好地测试模块,我们还提供了测试控制台,接下来我们将逐步讲解如何运行机器人。

    运行平台机器人

    Windows

    我们不推荐双击运行 start.bat 来启动程序。

    建议在启动机器人之前,先打开终端(cmd 或 Powershell)再运行 start.bat

    1. start.bat 所在目录,按下 Shift + 右键 来打开右键菜单。
    2. 选择 在此处打开 Powershell 窗口在此处打开命令窗口
    3. 于终端内输入 .\start.bat (Powershell) 或 start.bat (cmd)来启动机器人。

    Linux

    1. 于终端内,设置 start 脚本的执行权限:chmod +x start
    2. 启动脚本:./start

    运行测试控制台

    测试控制台包括一个基础的运行环境,您可以在测试控制台内使用命令进行基础的机器人交互。

    测试控制台仅支持回复文本消息和图片,其它消息元素将被忽略或转换为文本或图片来显示。

    您可能需要使用 poetry shell 切换 poetry 的虚拟环境来调用先前安装的依赖。

    Windows

    1. console.py 所在目录,按下 Shift + 右键 来打开右键菜单。
    2. 选择 在此处打开 Powershell 窗口在此处打开命令窗口
    3. 于终端内输入 python console.py 来启动测试控制台。

    Linux

    1. console.py 所在目录,打开终端。
    2. 于终端内输入 python console.py 来启动测试控制台

    获取帮助

    到此,恭喜您成功部署了属于您的小可机器人!

    如果您在部署的过程中还有其他疑问,您可以向我们发送 Issue 来请求帮助。

    请注意,您应该具备基本的提问技巧。有关如何提问,请阅读《提问的智慧》

    开发

    如果您想为小可开发模块,建议在开发之前执行 pre-commit install 来安装 pre-commit git 钩子,它可以在提交 commit 前执行一些操作。如:同步 poetry.lock 至 requirements.txt、自动 pep8 格式化等。

  • Cookie帮助我们提供我们的服务。通过使用我们的服务,您同意我们使用cookie。