概述
前面写了不少文章关于机器人,后来小伙伴说不能用了,因为你版本与我不一样,隔了几个月了,版本更新了,变化比较大,所以特此更新一篇2022/3/25的QQ机器人搭建教程,有空更新插件。
声明:之前写的老版本已经不能用了,请把所有插件更新为最新版本。代码也需要重新迭代更新。也就是要重新写。
创建项目
环境:pycharm2021
python版本:3.10
创建新的项目:
模块安装
在terminal执行:
pip install nb-cli
如下是成功了:
驱动器安装
查看驱动器,terinal执行:
nb driver list
输出如下:
FastAPI () - FastAPI 驱动器
Quart (quart) - Quart 驱动器
HTTPX (httpx) - HTTPX 驱动器
websockets (websockets) - websockets 驱动器
AIOHTTP (aiohttp) - AIOHTTP 驱动器
安装驱动器,我们通过power shell界面安装(shift+右键),主要是terminal有点黑不好看,输入:
nb driver
按下键选择第三个回车:
输入:httpx 回车
如下就是安装成功:
安装协议适配器
查看有哪些适配器:
nb adapter list
输出如下:
OneBot V11 (nonebot-adapter-onebot) - OneBot V11 协议
钉钉 (nonebot-adapter-ding) - 钉钉协议
飞书 (nonebot-adapter-feishu) - 飞书协议
Telegram (nonebot-adapter-telegram) - Telegram 协议
QQ 频道 (nonebot-adapter-qqguild) - QQ 频道官方机器人
开黑啦 (nonebot-adapter-kaiheila) - 开黑啦协议适配
mirai2 (nonebot_adapter_mirai2) - 为 nonebot2 添加 mirai_api_http2.x的兼容适配器
本教程只演示QQ机器人,所以安装OneBot.
输入如下命令回车:
nb adapter
按下键选择第三个回车:
输入:OneBot 回车
如下就是成功:
安装第三方插件
先查看有哪些插件,输入:nb plugin list 回车
输出如下:
服务器状态查看 (nonebot-plugin-status) - 通过戳一戳获取服务器状态
HarukaBot (haruka-bot) - 将B站UP主的动态和直播信息推送至QQ
RAM 授权管理 (nonebot-plugin-rauthman) - 基于规则的授权管理
NoneBot离线文档 (nonebot-plugin-docs) - 在本地浏览NoneBot文档
Sentry日志监控 (nonebot-plugin-sentry) - 使用Sentry监控机器人日志并处理报错
前端测试机器人插件 (nonebot-plugin-test) - 在浏览器中测试你的 NoneBot 机器人
定时任务 (nonebot-plugin-apscheduler) - APScheduler 定时任务插件
图片搜索 (nonebot-plugin-picsearcher) - 从基本上所有你想的出名字的搜图平台找图片
通用数据库连接 (nonebot-plugin-navicat) - 连接至各种数据库,为其他插件导出连接对象
多语种翻译插件 (nonebot-plugin-translator) - 基于腾讯机器翻译 TMT
Web监视器 (nonebot-plugin-web) - Web Monitor 时刻视奸你的bot
nonebot-plugin-wordbank (nonebot-plugin-wordbank) - 无数据库的轻量问答插件,支持模糊问答
mqtt接入 (nonebot-plugin-mqtt) - 接入mqtt网络,订阅和发布消息
消息交互式 python 解释器 (nonebot-plugin-ipypreter) - 消息交互式 python 解释器
songpicker2 (nonebot-plugin-songpicker2) - 点播歌曲,支持候选菜单、热评显示,数据源为网易云
字符串管理工具 (nonebot-plugin-strman) - 通过字符串标签在文件中集中管理字符串
Arcaea 查分器 (nonebot-plugin-arcaea) - Arcaea 查分器,可以实现 best30 | recent | songinfo 之类的查询功能并支持 DIY
Bison (nonebot-bison) - 订阅来自微博,B站,网易云,RSS以及各种网站的动态,转发到QQ群中
网易云无损音乐下载 (nonebot-plugin-ncm) - 网易云无损音乐下载
nonebot-plugin-cocdicer (nonebot-plugin-cocdicer) - COC跑团骰子娘
跑团记录记录器 (nonebot-plugin-trpglogger) - 记录跑团记录并上传
nonebot-plugin-r6s (nonebot-plugin-r6s) - 查询彩虹六号玩家信息
猜猜看 (nonebot-plugin-guess) - 多次互动猜名字游戏,自带猜城市名,可定制
缩写查询器 (nonebot-plugin-abbrreply) - 输入拼音首字母,猜测文字
biliav小程序转换器 (nonebot-plugin-biliav) - 将用户发的av号或者bv号转成小程序返回
插件管理器 (nonebot-plugin-manager) - 基于 import hook 的插件管理
bilibili视频、番剧解析 (nonebot-plugin-analysis-bilibili) - 自动解析bilibili视频、番剧解析
本地数据存储 (nonebot-plugin-localstore) - 存储插件数据至本地文件
nonebot_plugin_puppet (nonebot-plugin-puppet) - 高度自定义的会话转接
Minecraft 服务器状态查询 (nonebot-plugin-mcstatus) - 顾名思义
Nonebot2插件轻量帮助列表 (nonebot-plugin-help) - 读取并提供已加载Nonebot2插件开发者提供的帮助信息(用途)
nonebot_plugin_gamedraw (nonebot-plugin-gamedraw) - 基于爬取wiki实现自动更新的抽卡,目前支持赛马娘,原神,明日方舟,坎公骑冠剑,公主连结(国/台),碧蓝航线,FGO,阴阳师
alias命令别名 (nonebot-plugin-alias) - 为复杂的命令创建别名
Nonebot2 消息撤回插件 (nonebot-plugin-withdraw) - 用于让机器人撤回自己发出的消息
nonebot_plugin_pixivrank_search (nonebot-plugin-pixivrank-search) - 基于RSSHUB阅读器的P站排行和P站搜图
nonebot_plugin_russian (nonebot-plugin-russian) - 群内小游戏,使用金币赌注的俄罗斯轮盘
nonebot_plugin_statistical (nonebot-plugin-statistical) - 一个简单的功能调用统计以及可视化插件
nonebot_plugin_setu (nonebot-plugin-setu) - 基于loliconImage Api的涩图插件,内置涩图CD
FlightRadar24查询模块 (nonebot-plugin-fr24) - 通过FlightRadar24查询航班信息
和风天气 (nonebot-plugin-heweather) - 获取和风天气信息并转换为图片
nonebot-plugin-autohelp (nonebot-plugin-autohelp) - 响应help/菜单/帮助(群消息或私信)并提供已载入插件的帮助信息(如命令名,aliases,模块文档)
nonebot-plugin-flexperm (nonebot-plugin-flexperm) - 精细化的 NoneBot 权限管理插件
Epic 限免游戏资讯 (nonebot-plugin-epicfree) - EpicGameStore 喜加一资讯插件,发送「喜加一」逝世看吧!
ELF_RSS (ELF-RSS) - QQ机器人 RSS订阅 插件,订阅源建议选择 RSSHub
ATRI语音包 (nonebot-plugin-atri) - 一个ATRI语音包,基于文本相似度匹配回复
HTTP静态文件托管 (nonebot-plugin-filehost) - 一款 HTTP 静态文件托管插件, 为跨机文件传输提供了优雅的解决方案
SimpleMusic (nonebot-plugin-simplemusic) - 最简Q群点歌插件,支持QQ音乐、网易云、酷我、酷狗、咪咕、B站音频区
pornhub风格图标生成 (nonebot-plugin-phlogo) - 生成pornhub风格logo
nb2chan (nb2chan) - Nonebot2酱推送
nonebot-plugin-setu-now (nonebot-plugin-setu-now) - 另一个色图插件,即时下载并保存,可选WebDAV。可选特殊色图
leetcode提醒机器人 (nonebot-plugin-leetcode) - 安装该插件后能往指定qq和指定qq群定时发送leetcode每日一题
另一个图片搜索 (nonebot-plugin-imgsearch) - 在Ascii2D以及SauceNAO的所有数据库中搜索这张图片
IT咨讯 (nonebot-plugin-itnew) - 获取IT咨讯并生成图片发送
lolheroes (lolHeroes) - 获取lol英雄背景的故事
nonebot_plugin_youthstudy (nonebot-plugin-youthstudy) - 基于nonebot的青年大学习插件,用来获取最新一期的青年大学习答案
gocqapi (gocqapi) - 对 go-cqhttp 的 API 调用添加了类型注解与滥用OOP的返回值Model支持,远离魔法方法的Dict[Any, Any]
工作性价比计算器 (nonebot-plugin-workscore) - 一个计算工作性价比的插件
诺基亚手机图生成 (nonebot-plugin-nokia) - 生成一张诺基亚(无内鬼)图片
枝网查重 (nonebot-plugin-asoulcnki) - 随机小作文;查询发病小作文复制比
头像表情包 (nonebot-plugin-petpet) - 制作摸头等头像相关沙雕表情包
ShindanMaker (nonebot-plugin-shindan) - 使用 ShindanMaker 网站的趣味占卜
虚拟朋友 (nonebot-plugin-vf) - 基于小冰框架的人工智能聊天机器人
在线运行代码 (nonebot-plugin-code) - 在线运行代码插件,支持输入
随机黑丝 (nonebot-plugin-heisi) - 发送一张黑丝涩图,内置CD
picsbank (nonebot-plugin-picsbank) - 匹配图片进行回答
剧集更新列表 (nonebot-plugin-tvseries) - 获取聚集更新
lol比赛信息 (nonebot-plugin-lolmatch) - 简单的lol比赛信息插件,订阅后会定时推送当日比赛结果
OlivOS.nb2 (olivos.nb2) - 在 NoneBot2 中加载 OlivOS 插件
通过浏览器来生成图片 (nonebot-plugin-htmlrender) - 通过playwright加一点点前端知识来简单的生成图片
简易群管 (nonebot-plugin-admin) - 简易群管 踢 禁 改
多种风格logo生成 (nonebot-plugin-logo) - PornHub、Youtube 等风格logo生成
表情包制作 (nonebot-plugin-memes) - 鲁迅说、喜报 等表情包制作
群聊复读机 (nonebot-plugin-repeater) - 谁不喜欢+1呢?
插件管理器 (nonebot-plugin-pctrl) - 基于HOOK的插件管理器,提供常用功能
群文件直链提取器 (nonebot-plugin-directlinker) - 提取群文件的下载直链。
转发姬 (nonebot-plugin-forwarder) - 群聊消息实时转发
扔骰子 (nonebot-plugin-roll) - 掷骰!扔出指定个数的多面骰子????
疯狂星期四 (nonebot-plugin-crazy-thursday) - 天天疯狂!随机输出KFC疯狂星期四文案????
新冠疫情查询 (nonebot-plugin-covid19-news) - 查询国内城市新冠疫情信息与政策
人生重开模拟器 (nonebot-plugin-remake) - 这垃圾人生一秒也不想待了?立即重开!
彩云小梦AI续写 (nonebot-plugin-caiyunai) - 基于彩云小梦的小说AI续写插件
天气查询 (nonebot-plugin-weather-lite) - 使用wttr.in的在线天气查询。
今日运势 (nonebot-plugin-fortune) - 抽签!抽取你的今日运势????
塔罗牌 (nonebot-plugin-tarot) - 塔罗牌!魔法占卜????
emoji 合成器 (nonebot-plugin-emojimix) - ????+????=?
今天吃什么 (nonebot-plugin-what2eat) - 选择恐惧症?让Bot决定你今天吃什么????
NoneBot 数据存储 (nonebot-plugin-datastore) - 提供简单的插件数据封装与数据库访问
NoneBot的go-cqhttp启动器 (nonebot-plugin-gocqhttp) - 一款在NoneBot2中直接运行go-cqhttp的插件, 无需额外下载安装
go-cqhttp 频道支持适配补丁 (nonebot-plugin-guild-patch) - NoneBot2的QQ频道(go-cqhttp协议)支持适配补丁插件
棋类游戏 (nonebot-plugin-chess) - 棋类游戏插件,目前支持 五子棋、黑白棋、围棋
词云 (nonebot-plugin-wordcloud) - 根据群内聊天记录生成词云
FG(Fifth Generation) (nonebot-plugin-fg) - 基于Nonebot2的QQ群机器人????️插件,特色功能是利用机器学习算法,基于每日聊天记录生成每日总结
聊天记录插件 (nonebot-plugin-chatrecorder) - 记录机器人收到和发出的消息
nonebot-plugin-setu2 (nonebot-plugin-setu2) - 另一个色图插件,精简至上游,不在本地缓存,可选群启用
random-cat (nonebot-plugin-random-cat) - 使用外网API随机发送猫猫狗狗图片,不在本地缓存,可选群启用
群聊反闪照 (nonebot-plugin-antiflash) - 顾名思义????
random_cat_gif (random_cat_gif) - 无需魔法上网,无需图库的随机猫猫gif插件
无数据库的问答插件 (nonebot-plugin-word-bank2) - wordbank,但是重写了
Fgo从者推理 (ServantReasoning) - 通过bot描述的从者特征,玩家对从者进行猜测的游戏
轻量文字转图片插件 (nonebot-plugin-txt2img) - 基于PIL的轻量文字转图片插件
おはよう! (nonebot-plugin-morning) - 早晚安记录作息,培养优质睡眠????
pixiv.net p站查询图片 (nonebot-plugin-pixiv) - pixiv.net p站查询图片(支持动图和多图)
60s读世界小插件 (nonebot-plugin-read-60s) - 定时向指定群或列表好友发送每日60s读世界
YetAnotherPicSearch (yetanotherpicsearch) - 基于 kitUIN/PicImageSearch 的另一个 Nonebot 搜图插件。
原神抽卡记录分析 (nonebot-plugin-gachalogs) - 统计及导出原神祈愿记录,在 QQ 里鉴定原神欧皇吧!
每日一句 (nonebot-plugin-everyday-en) - 每日一句英文句子,可选定时发送
QQ自动续火花 (nonebot-plugin-fire) - 通过每天定时发送“/echo 花花”实现续火花
mockingbird (nonebot-mockingbird-plugin) - 简单使用mockingbird让机器人讲话
二维码识别与发送 (nonebot-plugin-qrcode) - qq聊天二维码插件
游戏王卡查 (nonebot-plugin-ygo) - nonebot的游戏王卡查插件
动漫新闻 (nonebot-plugin-anime-news) - 一个简易的获取来自 bangumi.moe 番剧时间表的插件
订阅推送管理 (nonebot-plugin-broker) - 一个简化编写订阅和推送功能的插件,也支持插件间信息交互
bilibili通知插件 (nonebot-plugin-bilibilibot) - 将up主更新、番剧更新、主播开播等信息推送到QQ
色图生成 (nonebot-plugin-color) - Nonebot2 色图生成插件!哎哟这个色啊,好色!
21点游戏插件 (nonebot-plugin-blackjack) - 一个基于签到积分的21点游戏与积分对战插件
QQ自动同意好友申请 (nonebot-pulgin-autoagree) - QQ自动同意好友申请
Arcaea查分插件 (nonebot-plugin-arcaeabot) - Arcaea查分插件(recent, best30)
成分姬 (nonebot-plugin-ddcheck) - 查询B站关注列表的VTuber成分
第二个leetcode查询插件 (nonebot-plugin-leetcode2) - 可查询用户信息、获取每日一题与随机一题和搜索题目。
HikariSearch (nonebot-plugin-hikarisearch) - 使用 HikariSearch 的又一个搜图插件
......
安装插件,输入命令:nb plugin 回车
选择第四个install:回车:
比如插件:sentry,输入回车即可
如下就是成功:
创建一个项目
创建命令:nb create,输入回车,回车后让你输入一个项目名,你可以随机,我输入:bot
回车选择第二个回车:
选择:echo按一下空格回车:
继续选第一个空格一下回车:
成功:
回到pycharm,可以看到如下文件:
目录结构为:
???? AweSome-Bot
├── ???? awesome_bot # 或是 src
│ └── ???? plugins
├── ???? .env # 可选的
├── ???? .env.dev # 可选的
├── ???? .env.prod # 可选的
├── ???? .gitignore
├── ???? bot.py
├── ???? docker-compose.yml
├── ???? Dockerfile
├── ???? pyproject.toml
└── ???? README.md
文件解释:
- chuant/plugins 或 src/plugins: 用于存放编写的 bot 插件
- .env、.env.dev、.env.prod: 各环境配置文件
- bot.py: bot 入口文件
- pyproject.toml: 项目插件配置文件
- Dockerfile、docker-compose.yml: Docker 镜像配置文件
再来运行bot.py:,如下就是成功了:
配置
.env
内容修改为:
ENVIRONMENT=prod
.env.dev文件
默认为:
HOST=127.0.0.1
PORT=8080
LOG_LEVEL=DEBUG
FASTAPI_RELOAD=true
如果在linux环境,则需要设置:
FASTAPI_RELOAD=false
.env.prod文件
默认不修改:
HOST=0.0.0.0
PORT=8080
bot.py
完整如下:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import nonebot
from nonebot.adapters.onebot.v11 import Adapter as ONEBOT_V11Adapter
nonebot.init()
app = nonebot.get_asgi()
driver = nonebot.get_driver()
driver.register_adapter(ONEBOT_V11Adapter)
nonebot.load_builtin_plugins("echo")
nonebot.load_from_toml("pyproject.toml")
if __name__ == "__main__":
nonebot.logger.warning("Always use `nb run` to start the bot instead of manually running!")
nonebot.run(app="__mp_main__:app")
cqhttp
下载启动
下载:https://github.com/Mrs4s/go-cqhttp/releases
我选择下载最新版本:https://github.com/Mrs4s/go-cqhttp/releases/tag/v1.0.0-rc1
如果你下载太慢,可以从我的蓝奏云下载:
https://wwp.lanzouq.com/i5bnK020ce5e
密码:1byj
下载go-cqhttp_windows_amd64.exe:
下载好后放到bot.py的同级目录,双击运行(或者管理员身份运行),会生成一个bat文件,再双击bat:
输入3回车:
配置config.yml
刚刚生成了config.yml文件,配置一下它,账号密码都为空,可以扫码:
# go-cqhttp 默认配置文件
account: # 账号相关
uin: # QQ账号
password: # 密码为空时使用扫码登录
encrypt: false # 是否开启密码加密
status: 0 # 在线状态 请参考 https://github.com/Mrs4s/go-cqhttp/blob/dev/docs/config.md#在线状态
relogin: # 重连设置
disabled: false
delay: 3 # 重连延迟, 单位秒
interval: 0 # 重连间隔
max-times: 0 # 最大重连次数, 0为无限制
# 是否使用服务器下发的新地址进行重连
# 注意, 此设置可能导致在海外服务器上连接情况更差
use-sso-address: true
heartbeat:
disabled: false # 是否开启心跳事件上报
# 心跳频率, 单位秒
# -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
output:
# 日志等级 trace,debug,info,warn,error
log-level: warn
# 是否启用 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 # 令牌桶大小
servers:
# HTTP 通信设置
- http:
# 是否关闭正向HTTP服务器
disabled: false
# 服务端监听地址
host: 127.0.0.1
# 服务端监听端口
port: 5701
# 反向HTTP超时时间, 单位秒
# 最小值为5,小于5将会忽略本项设置
timeout: 5
middlewares:
<<: *default # 引用默认中间件
# 反向HTTP POST地址列表
post:
#- url: '' # 地址
# secret: '' # 密钥
#- url: 127.0.0.1:5701 # 地址
# secret: '' # 密钥
# 正向WS设置
- ws:
# 是否禁用正向WS服务器
disabled: false
# 正向WS服务器监听地址
host: 127.0.0.1
# 正向WS服务器监听端口
port: 6701
middlewares:
<<: *default # 引用默认中间件
- ws-reverse:
# 是否禁用当前反向WS服务
disabled: false
# 反向WS Universal 地址
# 注意 设置了此项地址后下面两项将会被忽略
universal: ws://127.0.0.1:8080/onebot/v11/ws/
# 反向WS API 地址
api: ws://your_websocket_api.server
# 反向WS Event 地址
event: ws://your_websocket_event.server
# 重连间隔 单位毫秒
reconnect-interval: 3000
middlewares:
<<: *default # 引用默认中间件
# pprof 性能分析服务器, 一般情况下不需要启用.
# 如果遇到性能问题请上传报告给开发者处理
# 注意: pprof服务不支持中间件、不支持鉴权. 请不要开放到公网
- pprof:
# 是否禁用pprof性能分析服务器
disabled: true
# pprof服务器监听地址
host: 127.0.0.1
# pprof服务器监听端口
port: 7700
# 可添加更多
#- ws-reverse:
#- ws:
#- http:
#- pprof:
database: # 数据库相关设置
leveldb:
# 是否启用内置leveldb数据库
# 启用将会增加10-20MB的内存占用和一定的磁盘空间
# 关闭将无法使用 撤回 回复 get_msg 等上下文相关功能
enable: true
下载好后,给bin目录添加到环境变量,这样可以支持语音发送。
运行机器人
首先运行bot.py,如下:
再运行go-cqhttp(之前名字太长,改短一点了),bot.py不要关闭。执行:
.go-cqhttp.exe
如下回车:
扫码即可登录:
测试:/echo 字符
项目文件整体架构如下:
官方文档
着急写插件请看文档,闲下来我再写新版本插件:
https://github.com/nonebot/nonebot2
https://docs.go-cqhttp.org/guide/#go-cqhttp
最后
以上就是勤奋蜜蜂为你收集整理的最新版QQ机器人搭建保姆教程,保熟【最新beta2版本】的全部内容,希望文章能够帮你解决最新版QQ机器人搭建保姆教程,保熟【最新beta2版本】所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复