Hello! 欢迎来到盒子萌!

go-cqhttp + Nonebot2搭建 QQ 机器人



NoneBot2 是一个可扩展的 Python 异步机器人框架,它会对机器人收到的事件进行解析和处理,并以插件化的形式,按优先级分发给事件所对应的事件响应器,来完成具体的功能。
除了起到解析事件的作用,NoneBot 还为插件提供了大量实用的预设操作和权限控制机制。对于命令处理,它更是提供了完善且易用的会话机制和内部调用机制,以分别适应命令的连续交互和插件内部功能复用等需求。
得益于 Python 的 asyncio (opens new window)机制,NoneBot 处理事件的吞吐量有了很大的保障,再配合 WebSocket 通信方式(也是最建议的通信方式),NoneBot 的性能可以达到 HTTP 通信方式的两倍以上,相较于传统同步 I/O 的 HTTP 通信,更是有质的飞跃。
需要注意的是,NoneBot 仅支持 Python 3.7.3 以上版本

盒子萌boxmoe.com

NoneBot2机器人
项目地址:https://github.com/nonebot/nonebot2
文档地址:https://v2.nonebot.dev/

Nonebot2搭建和设置教程

下载安装机器人依赖

使用 pip 或 其他包管理工具 安装 nb-cli,nonebot2 会作为其依赖被一起安装

pip install nb-cli  //用python的pip下载安装
pip install nonebot-adapter-cqhttp //安装cqhttp适配器

安装go-cqhttp+修改配置

go-cqhttp安装教程

修改配置 config.yml文件,1008根据自己端口自定义,后面nonebot机器人安装要用到的

# 反向WS设置
  - ws-reverse:
      # 反向WS Universal 地址
      # 注意 设置了此项地址后下面两项将会被忽略
      universal: ws://127.0.0.1:1008/cqhttp/ws
      # 反向WS API 地址
      api: ws://127.0.0.1:1008/cqhttp/api
      # 反向WS Event 地址
      event: ws://127.0.0.1:1008/cqhttp/event
      # 重连间隔 单位毫秒
      reconnect-interval: 3000
      middlewares:
        <<: *default # 引用默认中间件

新建nonebot qq机器人项目

windows用dos命令 cd 到你要存放机器人项目的文件夹里允许 nb 命令

# nb
# Create a New Project //选择新建一个项目
# Project Name: boxmoe //机器人项目名称
# In a "src" folder  //选择src即可
# Load NoneBot Builtin Plugin? (y/N) n  //输入n

[?] Which adapter(s) would you like to use?  
 ❯cqhttp  //选这个cqhttp适配器
  ding
  mirai
  gocq

完成之后就会在文件目录里生成一个你命名的项目文件夹
boxmoe
├── awesome_bot (或是 src)
│ └── plugins
├── .env (可选的)
├── .env.dev (可选的)
├── .env.prod (可选的)
├── .gitignore
├── bot.py
├── docker-compose.yml
├── Dockerfile
├── pyproject.toml
└── README.md
里面有机器人文件和一个bot.py接下来要修改这个文件
注意下方代码中 5 19 20 行,如果你没有就按位置添加下,实在不会全都复制黏贴替换也行

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import nonebot
from nonebot.adapters.cqhttp import Bot as Bot
# Custom your logger
# 
# from nonebot.log import logger, default_format
# logger.add("error.log",
#            rotation="00:00",
#            diagnose=False,
#            level="ERROR",
#            format=default_format)

# You can pass some keyword args config to init function
nonebot.init()
app = nonebot.get_asgi()

driver = nonebot.get_driver()
driver.register_adapter("cqhttp", Bot)
nonebot.load_from_toml("pyproject.toml")
#nonebot.load_plugins("awesome_bot/plugins")
# Modify some config / config depends on loaded configs
# 
# config = driver.config
# do something...


if __name__ == "__main__":
    nonebot.logger.warning("Always use `nb run` to start the bot instead of manually running!")
    nonebot.run(app="__mp_main__:app")

继续配置编辑 .env.dev 文件端口,这里的1008就是上面设置的cqhttp端口一致,第四行是超级管理员qq

HOST=127.0.0.1
PORT=1008
DEBUG=false
SUPERUSERS=["504888738"]
COMMAND_START=["/","!!"]

到这里就完成了

启动Nonebot2,python bot.py 或者 nb

暂无评论

发表评论

相关阅读