nonebot2 安裝與使用
寫在前面
本篇适合剛接觸bot的初學者學習
歡迎喜歡命運2,并對qq群bot感興趣的小夥伴加入
[命運2關聯bot開發群]:924026546
本文另發于個人部落格:這裡
事前準備
- 一台電腦(廢話)
- 一台伺服器(可選)
- python3.8 或以上版本
- 手(?
環境安裝
官方文檔:NoneBot
如果是從 1 更新到 2,先解除安裝之前的版本:
pip uninstall nonebot
腳手架安裝(官方推薦)
pip install nb-cli
若安裝失敗請使用下面這個方法:
直接安裝(備選方案)
pip install nonebot2
或
poetry add nonebot2
若安裝失敗…
- 檢視 python 預設版本是否不符(需要 3.8 或以上)
- 檢視 pip 版本是否安裝或對應 python 版本是否正常(通常使用 pip3 指令,若 pip3 預設使用 python3.5,則需更改換)
- 若有其他錯誤,請複制錯誤資訊并百度
開始建立一個 bot
若你已經安裝了 nb-cli,可以使用(lan)引(ren)導安裝方式:
nb
d8b db .d88b. d8b db d88888b d8888b. .d88b. d888888b
888o 88 .8P Y8. 888o 88 88' 88 `8D .8P Y8. `~~88~~'
88V8o 88 88 88 88V8o 88 88ooooo 88oooY' 88 88 88
88 V8o88 88 88 88 V8o88 88~~~~~ 88~~~b. 88 88 88
88 V888 `8b d8' 88 V888 88. 88 8D `8b d8' 88
VP V8P `Y88P' VP V8P Y88888P Y8888P' `Y88P' YP
Welcome to NoneBot CLI!
? What do you want to do? (Use arrow keys)
❯ Show Logo
Create a New Project
Run the Bot in Current Folder
Create a New NoneBot Plugin
List All Published Plugins
Search for Published Plugin
Install a Published Plugin
Update a Published Plugin
Remove an Installed Plugin
Create a Custom Adapter
List All Published Adapters
Search for Published Adapters
Build Docker Image for the Bot
Deploy the Bot to Docker
Stop the Bot Container in Docker
選擇第二項
Create a New Project
建立一個 bot 項目
依次:
- 輸入項目名
- 選擇第一項建立檔案夾
- 載入 nonebot 内置插件
- 因為我們使用 cqhttp,是以隻選擇 cqhttp 就行了
之後在目錄下就會建立一個以 bot 項目命名的檔案夾
使用
cd 項目名
進入目錄下,輸入
nb run
出現一串 ip 即為成功:
03-30 10:18:02 [INFO] uvicorn | Started server process [8480]
03-30 10:18:02 [INFO] uvicorn | Waiting for application startup.
03-30 10:18:02 [INFO] uvicorn | Application startup complete.
03-30 10:18:02 [INFO] uvicorn | Uvicorn running on http://127.0.0.1:8080 (Press CTRL+C to qui
t)
這時候,你的 bot 就建立成功了,但與 qq 互動,還需要一個協定來進行 QQ 資訊的發送與接收
cqhttp 協定使用
cqhttp 本質上是個無頭 qq 用戶端,可以用來接收和發送 QQ 資訊,通過與 cqhttp 互動便能實作 bot 的功能
單純運作 NoneBot 執行個體并不會産生任何效果,因為此刻 QQ 這邊還不知道 NoneBot 的存在,也就無法把消息發送給它,是以現在需要使用一個無頭 QQ 來把消息等事件上報給 NoneBot。
QQ 協定端舉例:
go-cqhttp基于 MiraiGo
cqhttp-mirai-embedded
Mirai+ cqhttp-mirai
Mirai+Mirai Native+ CQHTTP
OICQ-http-api(基于 OICQ)
go-cqgttp 的使用
go-cqhttp 相對比較容易使用,本篇就以 go-cqhttp 來說明
下載下傳 go-cqhttp 檔案
下載下傳位址:下載下傳
windows:
go-cqhttp_windows_amd64.zip
Linux:
go-cqhttp_linux_amd64.tar.gz
解壓檔案,移動到檔案目錄下
第一次啟動 go-cqhttp
使用
./go-cqhttp
啟動
第一次啟動會自動退出,并要求修改參數
參考:
{
uin: 機器人QQ号
password: 機器人密碼
encrypt_password: false
password_encrypted: ""
enable_db: true
access_token: ""
relogin: {
enabled: true
relogin_delay: 3
max_relogin_times: 0
}
_rate_limit: {
enabled: false
frequency: 1
bucket_size: 1
}
ignore_invalid_cqcode: false
force_fragmented: false
heartbeat_interval: 0
http_config: {
enabled: false
host: "0.0.0.0"
port: 5700
timeout: 0
post_urls: {}
}
ws_config: {
enabled: false
host: "0.0.0.0"
port: 6700
}
ws_reverse_servers: [
{
enabled: true
reverse_url: ws://127.0.0.1:8080/cqhttp/ws
reverse_api_url: ws://you_websocket_api.server
reverse_event_url: ws://you_websocket_event.server
reverse_reconnect_interval: 3000
}
]
post_message_format: array
use_sso_address: false
debug: false
log_level: ""
web_ui: {
enabled: false
host: 127.0.0.1
web_ui_port: 9999
web_input: false
}
}
需要修改
uin
、
password
、
ws_reverse_servers
中的
enabled
和
reverse_url
、
post_message_format
這幾項
uin: 機器人QQ号
password: 機器人密碼
enabled: true
reverse_url: ws://127.0.0.1:8080/cqhttp/ws
post_message_format: array
修改完成後重新啟動 go-cqhttp,按照提示登入 qq 即可
如果同時開着 nonebot2 的話,nb2 的日志上就會顯示兩條連接配接 cqhttp 的提示:
09-14 21:31:16 [INFO] uvicorn | ('127.0.0.1', 12345) - "WebSocket /cqhttp/ws" [accepted]
09-14 21:31:16 [INFO] nonebot | WebSocket Connection from CQHTTP Bot 你的QQ号 Accepted!