nonebot2 安装与使用

写在前面

本篇适合刚接触bot的初学者学习
欢迎喜欢命运2,并对qq群bot感兴趣的小伙伴加入
[命运2bot开发群]:xxxxxx
(补:本群不是真寻bot相关群,若您开发的bot或询问的问题不是命运2相关,请不要加入此群,关于真寻的问题可以去这里提交issues)

本文另发于个人博客:这里

事前准备

  • 一台电脑(废话)
  • 一台服务器(可选)
  • 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'     YPWelcome to NoneBot CLI!
? What do you want to do?  (Use arrow keys)❯ Show LogoCreate a New ProjectRun the Bot in Current FolderCreate a New NoneBot PluginList All Published PluginsSearch for Published PluginInstall a Published PluginUpdate a Published PluginRemove an Installed PluginCreate a Custom AdapterList All Published AdaptersSearch for Published AdaptersBuild Docker Image for the BotDeploy the Bot to DockerStop 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

启动
第一次启动会自动退出,并要求修改参数
参考(老版本:config.hjson):

{uin: 机器人QQ号password: 机器人密码encrypt_password: falsepassword_encrypted: ""enable_db: trueaccess_token: ""relogin: {enabled: truerelogin_delay: 3max_relogin_times: 0}_rate_limit: {enabled: falsefrequency: 1bucket_size: 1}ignore_invalid_cqcode: falseforce_fragmented: falseheartbeat_interval: 0http_config: {enabled: falsehost: "0.0.0.0"port: 5700timeout: 0post_urls: {}}ws_config: {enabled: falsehost: "0.0.0.0"port: 6700}ws_reverse_servers: [{enabled: truereverse_url: ws://127.0.0.1:8080/cqhttp/wsreverse_api_url: ws://you_websocket_api.serverreverse_event_url: ws://you_websocket_event.serverreverse_reconnect_interval: 3000}]post_message_format: arrayuse_sso_address: falsedebug: falselog_level: ""web_ui: {enabled: falsehost: 127.0.0.1web_ui_port: 9999web_input: false}
}

需要修改uinpasswordws_reverse_servers中的enabledreverse_urlpost_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!

gocq新版本设置

新版本(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: trueheartbeat:# 心跳频率, 单位秒# -1 为关闭心跳interval: 5message:# 上报数据类型# 可选: string,arraypost-format: string# 是否忽略无效的CQ码, 如果为假将原样发送ignore-invalid-cqcode: false# 是否强制分片发送消息# 分片发送将会带来更快的速度# 但是兼容性会有些问题force-fragment: false# 是否将url分片发送fix-url: false# 下载图片等请求网络代理proxy-rewrite: ''# 是否上报自身消息report-self-message: false# 移除服务端的Reply附带的Atremove-reply-at: false# 为Reply附加更多信息extra-reply-data: false# 跳过 Mime 扫描, 忽略错误数据skip-mime-scan: falseoutput:# 日志等级 trace,debug,info,warn,errorlog-level: warn# 日志时效 单位天. 超过这个时间之前的日志将会被自动删除. 设置为 0 表示永久保留.log-aging: 15# 是否在每次启动时强制创建全新的文件储存日志. 为 false 的情况下将会在上次启动时创建的日志文件续写log-force-new: true# 是否启用 DEBUGdebug: 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=aladdinrate-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: 2000middlewares:<<: *default # 引用默认中间件# 反向HTTP POST地址列表post:#- url: '' # 地址#  secret: ''           # 密钥#- url: 127.0.0.1:5701 # 地址#  secret: ''          # 密钥# 正向WS设置- ws:# 正向WS服务器监听地址host: 0.0.0.0# 正向WS服务器监听端口port: 6701middlewares:<<: *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: 3000middlewares:<<: *default # 引用默认中间件

需要修改的还是那几个部分,大体内容都一样

nonebot2 安装与使用相关推荐

  1. Raspberry Pi 3B 安装NoneBot2

    Raspberry Pi 3B 安装NoneBot2 查看系统信息 下载 go-cqhttp release文件 解压并运行 修改 config.yml 配置文件 安装 nonebot2 需要解决的问 ...

  2. 基于Nonebot2搭建QQ机器人(一)机器人环境配置

    目录 一.Nonebot2介绍 二.Nonebot2安装 1.bot.py文件的配置 2..env文件的配置 3.env.dev文件配置 4.env.pord配置 三.go-cqhttp介绍 四.go ...

  3. NoneBot2,基于Python的聊天机器人

    NoneBot2,基于Python的聊天机器人 第一步,配置python 第二步,配置[go-cqhttp](https://github.com/Mrs4s/go-cqhttp) 第三步,配置[No ...

  4. Windows 安装 NoneBot2

    使用环境:Python 3.7.10 NoneBot2 官方参考文档:https://v2.nonebot.dev/ NoneBot 仅支持 Python 3.7+ 推荐安装一个 Python 3.7 ...

  5. NoneBot2插件——打印系统状态

    使用Python编写 NoneBot2插件 显示系统CPU.磁盘.内存的占用状态. sys_states 插件目录,__pycache__文件无需创建. init.py文件 on_command:消息 ...

  6. 用Nonebot2搭建QQ机器人(一):我的学习经历(一)

    1.NoneBot2的概述: NoneBot2 是一个现代.跨平台.可扩展的 Python 聊天机器人框架,它基于 Python 的类型注解和异步特性,能够为你的需求实现提供便捷灵活的支持.然后剩下的 ...

  7. 基于nonebot2+go-cqhttp的QQ机器人构建(1)机器人搭建

    对于nonebot2和go-cqhttp的构建,nonebot2的官网上有较为详细的搭建方法,这里先放上官网链接: nonebot2:概览 | NoneBot go-cqhttp:简介 | go-cq ...

  8. 使用NoneBot2可视化平台搭建QQ聊天机器人:本地和云部署教程

    NoneBot是一个基于Python 3.8+的异步.开源和可扩展的框架,用于构建和运行聊天机器人,支持各种聊天平台,如Telegram,Discord和WeChat.它是基于nonebot库构建的, ...

  9. 【qq机器人】Nonebot2搭建详细教程

    今天给大家带来一个qq群聊机器人搭建的教程 官方文档: go-cqhttp: https://docs.go-cqhttp.org/ nonebot:https://docs.nonebot.dev/ ...

最新文章

  1. java异常类型和基本处理原则_Java异常控制机制和异常处理原则
  2. 如何把使用到android res文件夹下面资源(R.xx.xx)的工程打包成jar文件,供其它项目使用...
  3. Object 及toString() 方法的重写
  4. Python爬虫利器一Requests库的用法
  5. 菜鸟学数据库(四)——超键、候选键、主键、外键
  6. C#unix时间戳转换
  7. luogu2014 选课
  8. Android 基础控件与线性布局
  9. 山东理工oj答案java_山东理工大学ACM程序设计竞赛-山东理工ACM主页.DOC
  10. DXF解析成运动控制程序
  11. 如何把pdf转换成excel呢?
  12. 搜狗输入法自定义短语设置
  13. 微信打不开第三方二维码或链接的解决办法
  14. Mapbox + ECharts 实现简单迁徙图
  15. 计算机机房主机有哪些功能,机房监控主机有哪些?
  16. Vue源码之用户watcher
  17. 计算机网络笔记(收藏版)
  18. 手机电池中的PTC和NTC
  19. 28部门联合印发关于《加快培育新型消费实施方案》通知
  20. 基于SSM框架实现期刊杂志稿件管理系统【附项目源码】分享

热门文章

  1. 数字IC经典电路(4)——经典滤波器的实现(滤波器简介及Verilog实现)
  2. win10 休眠不读u盘_升win10后U盘无法识别怎么办解决
  3. Mysql灵魂总结,知识重点,入门到精通,全细节,一篇到运维!
  4. 笔记本电脑如何保养电脑电池?
  5. 如何使用css美化网页?
  6. 荣耀笔记本linux版跑分,4K入了台荣耀MagicBook锐龙版笔记本电脑,跑分没令我失望...
  7. 关于Johansen检验的结果
  8. 如何用正确的姿势发微信群通知?
  9. pix2pix算法笔记
  10. i5 10400F配什么主板?