赞
踩
本篇适合刚接触bot的初学者学习
欢迎喜欢命运2,并对qq群bot感兴趣的小伙伴加入
[命运2bot开发群]:xxxxxx
(补:本群不是真寻bot相关群,若您开发的bot或询问的问题不是命运2相关,请不要加入此群,关于真寻的问题可以去这里提交issues)
本文另发于个人博客:这里
官方文档:NoneBot
如果是从 1 升级到 2,先卸载之前的版本:
pip uninstall nonebot
pip install nb-cli
若安装失败请使用下面这个方法:
pip install nonebot2
或
poetry add nonebot2
若你已经安装了 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 项目
依次:
之后在目录下就会创建一个以 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 本质上是个无头 qq 客户端,可以用来接收和发送 QQ 信息,通过与 cqhttp 交互便能实现 bot 的功能
单纯运行 NoneBot 实例并不会产生任何效果,因为此刻 QQ 这边还不知道 NoneBot 的存在,也就无法把消息发送给它,因此现在需要使用一个无头 QQ 来把消息等事件上报给 NoneBot。
QQ 协议端举例:
OICQ-http-api(基于 OICQ)
go-cqhttp 相对比较容易使用,本篇就以 go-cqhttp 来说明
下载地址:下载
windows:
go-cqhttp_windows_amd64.zip
Linux:
go-cqhttp_linux_amd64.tar.gz
解压文件,移动到文件目录下
使用
./go-cqhttp
启动
第一次启动会自动退出,并要求修改参数
参考(老版本:config.hjson):
{ 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!
新版本(config.yml):
在设置时选择http、正向ws和反向ws(一般只使用反向ws,但是某些插件会用到其他方式)
# go-cqhttp 默认配置文件 account: # 账号相关 uin: 111111111111 # QQ账号 password: '11111111111' # 密码为空时使用扫码登录 encrypt: false # 是否开启密码加密 status: 0 # 在线状态 请参考 https://docs.go-cqhttp.org/guide/config.html#在线状态 relogin: # 重连设置 delay: 3 # 首次重连延迟, 单位秒 interval: 3 # 重连间隔 max-times: 0 # 最大重连次数, 0为无限制 # 是否使用服务器下发的新地址进行重连 # 注意, 此设置可能导致在海外服务器上连接情况更差 use-sso-address: true heartbeat: # 心跳频率, 单位秒 # -1 为关闭心跳 interval: 5 message: # 上报数据类型 # 可选: string,array post-format: string # 是否忽略无效的CQ码, 如果为假将原样发送 ignore-invalid-cqcode: false # 是否强制分片发送消息 # 分片发送将会带来更快的速度 # 但是兼容性会有些问题 force-fragment: false # 是否将url分片发送 fix-url: false # 下载图片等请求网络代理 proxy-rewrite: '' # 是否上报自身消息 report-self-message: false # 移除服务端的Reply附带的At remove-reply-at: false # 为Reply附加更多信息 extra-reply-data: false # 跳过 Mime 扫描, 忽略错误数据 skip-mime-scan: false output: # 日志等级 trace,debug,info,warn,error log-level: warn # 日志时效 单位天. 超过这个时间之前的日志将会被自动删除. 设置为 0 表示永久保留. log-aging: 15 # 是否在每次启动时强制创建全新的文件储存日志. 为 false 的情况下将会在上次启动时创建的日志文件续写 log-force-new: true # 是否启用 DEBUG debug: false # 开启调试模式 # 默认中间件锚点 default-middlewares: &default # 访问密钥, 强烈推荐在公网的服务器设置 access-token: '' # 事件过滤器文件目录 filter: '' # API限速设置 # 该设置为全局生效 # 原 cqhttp 虽然启用了 rate_limit 后缀, 但是基本没插件适配 # 目前该限速设置为令牌桶算法, 请参考: # https://baike.baidu.com/item/%E4%BB%A4%E7%89%8C%E6%A1%B6%E7%AE%97%E6%B3%95/6597000?fr=aladdin rate-limit: enabled: false # 是否启用限速 frequency: 1 # 令牌回复频率, 单位秒 bucket: 1 # 令牌桶大小 database: # 数据库相关设置 leveldb: # 是否启用内置leveldb数据库 # 启用将会增加10-20MB的内存占用和一定的磁盘空间 # 关闭将无法使用 撤回 回复 get_msg 等上下文相关功能 enable: true # 连接服务列表 servers: # 添加方式,同一连接方式可添加多个,具体配置说明请查看文档 #- http: # http 通信 #- ws: # 正向 Websocket #- ws-reverse: # 反向 Websocket #- pprof: #性能分析服务器 # HTTP 通信设置 - http: # 服务端监听地址 host: 0.0.0.0 # 服务端监听端口 port: 5701 # 反向HTTP超时时间, 单位秒 # 最小值为5,小于5将会忽略本项设置 timeout: 0 # 长轮询拓展 long-polling: # 是否开启 enabled: false # 消息队列大小,0 表示不限制队列大小,谨慎使用 max-queue-size: 2000 middlewares: <<: *default # 引用默认中间件 # 反向HTTP POST地址列表 post: #- url: '' # 地址 # secret: '' # 密钥 #- url: 127.0.0.1:5701 # 地址 # secret: '' # 密钥 # 正向WS设置 - ws: # 正向WS服务器监听地址 host: 0.0.0.0 # 正向WS服务器监听端口 port: 6701 middlewares: <<: *default # 引用默认中间件 # 反向WS设置 - ws-reverse: # 反向WS Universal 地址 # 注意 设置了此项地址后下面两项将会被忽略 universal: ws://127.0.0.1:8099/cqhttp/ws # 反向WS API 地址 api: ws://you_websocket_api.server # 反向WS Event 地址 event: ws://your_websocket_event.server # 重连间隔 单位毫秒 reconnect-interval: 3000 middlewares: <<: *default # 引用默认中间件
需要修改的还是那几个部分,大体内容都一样
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。