【QQBot】基于 go-cqhttp + nonebot2 搭建的QQ机器人
0x01:下载 go-cqhttp release文件
releases: https://github.com/Mrs4s/go-cqhttp/releases/
下载对应版本压缩包.zip
或 .tar.gz
0x02:解压 并 运行
这里只单独介绍Linux下安装
当前使用版本: v1.0.0-beta4
以压缩包go-cqhttp_linux_amd64.tar.gz
为例
# 新建目录 把压缩包放进去
[root@centos7 ~] # mkdir qqbot && mv go-cqhttp_linux_amd64.tar.gz ./qqbot
# 进入目录
[root@centos7 ~] # cd qqbot
# 解压
[root@centos7 ~] # tar -zxvf go-cqhttp_linux_amd64.tar.gz
# 当前目录结构
├── LICENSE
├── README.md
├── go-cqhttp
└── go-cqhttp_linux_amd64.tar.gz# 第一次运行
[root@centos7 ~] # ./go-cqhttp faststart
未找到配置文件,正在为您生成配置文件中!
请选择你需要的通信方式:
> 1: HTTP通信
> 2: 正向 Websocket 通信
> 3: 反向 Websocket 通信
> 4: pprof 性能分析服务器
请输入你需要的编号,可输入多个,同一编号也可输入多个(如: 233)
您的选择是:13
默认配置文件已生成,请修改 config.yml 后重新启动!
到这里已经生成了config.yml
配置文件, 我选择了HTTP通信和反向WebSocket一般情况搭配nonebot2使用只需要开启反向WebSocket
0x03:修改配置文件
此处修改同样适用 config.hjson
配置文件
uid
: 改成QQ号password
: 改成密码ws://your_websocket_universal.server
: 改成ws://127.0.0.1:8765/cqhttp/ws
ws://your_websocket_api.server
改成ws://127.0.0.1:8765/cqhttp/api
ws://your_websocket_event.server
改成ws://127.0.0.1:8765/cqhttp/event
到此修改完毕
0x04:启动 go-cqhttp
[root@centos7 ~] # ./go-cqhttp faststart
[2021-05-27 23:51:53] [INFO]: 当前版本:v1.0.0-beta4
[2021-05-27 23:51:53] [INFO]: 用户交流群: 721829413
[2021-05-27 23:51:53] [WARNING]: 虚拟设备信息不存在, 将自动生成随机设备.
[2021-05-27 23:51:53] [INFO]: 已生成设备信息并保存到 device.json 文件.
[2021-05-27 23:51:53] [INFO]: 开始尝试登录并同步消息...
[2021-05-27 23:51:53] [INFO]: 使用协议: iPad
[2021-05-27 23:51:54] [INFO]: Protocol -> connect to server: 113.96.13.95:8080
[2021-05-27 23:51:58] [INFO]: 收到服务器地址更新通知, 将在下一次重连时应用.
[2021-05-27 23:51:58] [INFO]: 登录成功 欢迎使用: 雨
[2021-05-27 23:51:58] [INFO]: 开始加载好友列表...
[2021-05-27 23:51:58] [INFO]: 共加载 20 个好友.
[2021-05-27 23:51:58] [INFO]: 开始加载群列表...
[2021-05-27 23:52:00] [INFO]: 共加载 11 个群.
[2021-05-27 23:52:00] [INFO]: 信息数据库初始化完成.
[2021-05-27 23:52:00] [INFO]: 正在加载事件过滤器.
[2021-05-27 23:52:00] [INFO]: 资源初始化完成, 开始处理信息.
[2021-05-27 23:52:00] [INFO]: アトリは、高性能ですから!
[2021-05-27 23:52:00] [INFO]: CQ HTTP 服务器已启动: 127.0.0.1:5700
[2021-05-27 23:52:00] [INFO]: 正在检查更新.
[2021-05-27 23:52:00] [INFO]: 开始尝试连接到反向WebSocket Universal服务器: ws://127.0.0.1:8765/cqhttp/ws
[2021-05-27 23:52:00] [WARNING]: 连接到反向WebSocket Universal服务器 ws://127.0.0.1:8765/cqhttp/ws 时出现错误: dial tcp 127.0.0.1:8765: connect: connection refused
这里go-cqhttp启动完成。
0x05:安装 nonebot2
pip install -i https://pypi.doubanio.com/simple nb-cli
推荐pip install -i https://pypi.doubanio.com/simple nonebot2
推荐安装
nb-cli
方便后期生成Bot
项目
0x06:生成 bot 项目
[root@centos7 ~] # nb
# Create a New Project
# Project Name: lin
# In a "src" folder
# Load NoneBot Builtin Plugin? (y/N) n
adapter
选择cqhttp
或者gocq
机器人项目生成好了, 下面是目录结构
lin
├── Dockerfile
├── README.md
├── bot.py
├── docker-compose.yml
├── pyproject.toml
└── src└── plugins# bot.py 的内容
[root@centos7 ~] # cat bot.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-import nonebot# 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()nonebot.load_from_toml("pyproject.toml")# 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")
修改bot,py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-import nonebot
from nonebot.adapters.cqhttp.bot import Bot
# from nonebot.adapters.cqhttp.bot import 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()
nonebot.get_driver().register_adapter("cqhttp", Bot)
app = nonebot.get_asgi()driver = nonebot.get_driver()nonebot.load_from_toml("pyproject.toml")# 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")
0x07:运行
运行前需要先安装好 cqhttp adapter
nb adapter install cqhttp
也请确保 go-cqhttp 也正处于运行状态 可以另起一个终端
- 修改 .env.dev 中的 PORT参数(刚刚在go-cqhttp配置文件中给出的反向代理地址的端口为 8765) 这里
PORT=8765
就可以, 或者你可以根据自己的喜好更改, 不要忘记连同 go-cqhttp目录下config.yml 或 config.hjson
文件中的反向代理端口一起修改。
到此就可以正式运行了
# python3 或者 python
[root@centos7 ~] # python3 bot.py
05-28 00:33:43 [INFO] nonebot | NoneBot is initializing...
05-28 00:33:43 [INFO] nonebot | Current Env: dev
05-28 00:33:43 [DEBUG] nonebot | Loaded Config: {'driver': 'nonebot.drivers.fastapi', 'host': IPv4Address('127.0.0.1'), 'port': 8765, 'debug': True, 'api_root': {}, 'api_timeout': 30.0, 'access_token': None, 'secret': None, 'superusers': set(), 'nickname': set(), 'command_start': {'/'}, 'command_sep': {'.'}, 'session_expire_timeout': datetime.timedelta(seconds=120), 'environment': 'dev'}
05-28 00:33:43 [DEBUG] nonebot | Succeeded to load adapter "cqhttp"
05-28 00:33:43 [WARNING] __main__ | Always use `nb run` to start the bot instead of manually running!
05-28 00:33:43 [INFO] nonebot | Running NoneBot...
05-28 00:33:43 [DEBUG] nonebot | Loaded adapters: cqhttp
05-28 00:33:43 [INFO] uvicorn | Uvicorn running on http://127.0.0.1:8765 (Press CTRL+C to quit)
05-28 00:33:43 [INFO] uvicorn | Started reloader process [1165] using watchgod
05-28 00:33:43 [INFO] nonebot | NoneBot is initializing...
05-28 00:33:43 [INFO] nonebot | Current Env: dev
05-28 00:33:43 [DEBUG] nonebot | Loaded Config: {'driver': 'nonebot.drivers.fastapi', 'host': IPv4Address('127.0.0.1'), 'port': 8765, 'debug': True, 'api_root': {}, 'api_timeout': 30.0, 'access_token': None, 'secret': None, 'superusers': set(), 'nickname': set(), 'command_start': {'/'}, 'command_sep': {'.'}, 'session_expire_timeout': datetime.timedelta(seconds=120), 'environment': 'dev'}
05-28 00:33:43 [DEBUG] nonebot | Succeeded to load adapter "cqhttp"
05-28 00:33:44 [INFO] uvicorn | Started server process [1168]
05-28 00:33:44 [INFO] uvicorn | Waiting for application startup.
05-28 00:33:44 [INFO] uvicorn | Application startup complete.
05-28 00:33:44 [INFO] uvicorn | ('127.0.0.1', 14601) - "WebSocket /cqhttp/ws" [accepted]
05-28 00:33:44 [INFO] nonebot | WebSocket Connection from CQHTTP Bot ****** Accepted!
到此看到WebSocket Connection from CQHTTP Bot xxxx Accepted!
就代表机器人已经启动完毕了, 后面会显示从go-cqhttp
上报的消息。
0x08:总结
- nonebot官网
- go-cqhttp 帮助中心
更详细的教程还请参考两个官网, 俺只是把自己第一次成功使用的过程做了个梳理, 希望对你有所帮助。
【QQBot】基于 go-cqhttp + nonebot2 搭建的QQ机器人相关推荐
- 从零开始基于nonebot2搭建Q群机器人自动获取各大平台热搜
从零开始基于nonebot2搭建Q群机器人自动获取各大平台热搜 目录 从零开始基于nonebot2搭建Q群机器人自动获取各大平台热搜 安装步骤 使用方法 退出方法 启用方法 参考链接 安装步骤 安装步 ...
- python开发酷q插件_基于python和酷Q的QQ机器人开发实践(1)
基本框架 (1) 酷Q:目前最常用的QQ机器人软件(尤其是在smartQQ失效以后). (2) 酷Q HTTP插件:通过HTTP对酷Q的事件进行上报以及接收HTTP请求来调用酷Q的DLL接口,从而可以 ...
- python开发酷q插件gui_基于python和酷Q的QQ机器人开发实践(1)
基本框架 (1) 酷Q:目前最常用的QQ机器人软件(尤其是在smartQQ失效以后). (2) 酷Q HTTP插件:通过HTTP对酷Q的事件进行上报以及接收HTTP请求来调用酷Q的DLL接口,从而可以 ...
- 基于java(springboot)和go-cqhttp实现QQ机器人
目录 yh-qqrobot机器人简介 go-cqhttp搭建 1.下载应用 2.生成bat文件 3. 初始化项目 4. 配置 5. 运行项目 yh-qqrobot搭建 搭建后端 1. 导入sql文件 ...
- 基于WebQQ3.0协议写一个QQ机器人
最近公司需要做个qq机器人获取qq好友列表,并且能够自动向选定的qq好友定时发送消息.没有头绪,硬着头皮上 甘甜的心情瞬间变得苦涩了 哇 多捞吆 1.WEBQQ3.0登陆协议 进入WEBQQ, htt ...
- 基于nonebot2+go-cqhttp的QQ机器人构建(1)机器人搭建
对于nonebot2和go-cqhttp的构建,nonebot2的官网上有较为详细的搭建方法,这里先放上官网链接: nonebot2:概览 | NoneBot go-cqhttp:简介 | go-cq ...
- Python 搭建一个简易QQ机器人
本次搭建的QQ机器人基于nonebot.可以参考官方文档:nonebot指南 我的项目地址 : 简单QQ机器人项目 安装nonebot: pip install nonebot tips:python ...
- python开发qq聊天机器人_Python qqbot 实现qq机器人的示例代码
qqbot 是一个用 python 实现的.基于腾讯 SmartQQ 协议的 QQ 机器人框架,可运行在 Linux . Windows 和 Mac OSX 平台下. 你可以通过扩展 qqbot 来实 ...
- 基于Mirai框架的QQ机器人使用文档----郑大科协2021招新群
目录 1. 引言 1.1 编写目的 1.2 项目背景 1.3 参考链接 2. 使用说明 2.1 关于插件 2.2 自动功能 2.3 交互功能 2.4 插件链接 3. 出错与恢复 3.1 自动功能出错 ...
最新文章
- SpingBoot+Mybaits+Vue,更新学习
- c++查询当前文件夹下文件数目_python3自动化小工具--删除某个文件夹xx后缀文件...
- 10个高效Linux技巧及Vim命令对比
- 做一个“多人在线编辑器”,你会怎么开始
- 2020洪灾地图_卫星地图看洪灾:为何湖北易发洪水?
- 【Python】jieba库的使用
- 前端面试汇总(Bootstrap框架)
- PaddlePaddle飞桨OCR文本检测——入门安装GPU版(一)
- Project Euler Problem 25 1000-digit Fibonacci number
- Java连接数据库并实现添加数据有重复不插入数据
- openwrt 需要高级浏览器_树莓派 + OpenWrt 实现 BT 下载机
- 网上体育商城的设计与实现
- C++链接器工具错误:LNK2001, LNK2019
- AI圣经《深度学习》作者斩获2018年图灵奖,100 万奖励!...
- 富士康员工的逆袭之路,从月薪4K到现在月入1W+,是如何做到的?
- 行业分析-全球与中国抛光混凝土地板市场现状及未来发展趋势
- ubuntu18美化(完整版)
- 您的 MAD 得分是多少?| MAD Skills
- thumbnail的处理流程和读取缩略图thumbnail所在sample的index的方法
- 手机网速测试软件排行榜,手机网速测试软件排行 手机网速测试软件推荐