当前位置:   article > 正文

nonebot2 安装与使用

nonebot2

nonebot2 安装与使用

写在前面

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

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

事前准备

  • 一台电脑(废话)
  • 一台服务器(可选)
  • python3.8 或以上版本
  • 手(?

环境安装

官方文档:NoneBot
如果是从 1 升级到 2,先卸载之前的版本:

pip uninstall nonebot
  • 1

脚手架安装(官方推荐)

pip install nb-cli
  • 1

若安装失败请使用下面这个方法:

直接安装(备选方案)

pip install nonebot2
或
poetry add nonebot2
  • 1
  • 2
  • 3

若安装失败…

  • 查看 python 默认版本是否不符(需要 3.8 或以上)
  • 查看 pip 版本是否安装或对应 python 版本是否正常(通常使用 pip3 命令,若 pip3 默认使用 python3.5,则需更改换)
  • 若有其他错误,请复制错误信息并百度

开始创建一个 bot

若你已经安装了 nb-cli,可以使用(lan)引(ren)导安装方式:

nb
  • 1
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

选择第二项Create a New Project创建一个 bot 项目
依次:

  • 输入项目名
  • 选择第一项新建文件夹
  • 载入 nonebot 内置插件
  • 因为我们使用 cqhttp,所以只选择 cqhttp 就行了

之后在目录下就会创建一个以 bot 项目命名的文件夹
使用

cd 项目名
  • 1

进入目录下,输入

nb run
  • 1

出现一串 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)
  • 1
  • 2
  • 3
  • 4
  • 5

这时候,你的 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
  • 1

启动
第一次启动会自动退出,并要求修改参数
参考(老版本: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
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

需要修改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
  • 1
  • 2
  • 3
  • 4
  • 5

修改完成后重新启动 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!
  • 1
  • 2

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: 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 # 引用默认中间件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/718510
推荐阅读
相关标签
  

闽ICP备14008679号