教你拥有一个自己的QQ机器人!0基础超详细保姆级教学!基于NoneBot2 Windows端搭建QQ机器人

0.序言

  1. 原文链接:教你本地化部署一个QQ机器人
  2. 本教程主要面向Windows系统用户
  3. 教程从0开始全程详细指导,0基础萌新请放心食用🍕
  4. 如果你遇到了问题,请仔细检查是否哪一步有遗漏。
  5. 如果你确定自己的操作没问题,可以到原文链接下的评论区提问:教你本地化部署一个QQ机器人 ,注意留言时请填写正确的邮箱以确保能收到站长的回复。

1.搭建前的准备工作:

1.1.需要用到的工具

  • 一台24小时开机联网的服务器/计算机
  • 操作系统:Windows10
  • 文本编辑器(强烈推荐使用VSCode)
  • Python3.11.5
  • 一个闲置的QQ账号

1.2.Python安装指南

参考我的这篇文章:Python安装指南

10月2日发布了Python3.12.0版本,站长在10月5日安装机器人框架依赖时会报以下错误:

ERROR: Could not build wheels for yarl, httptools, multidict, which is required to install pyproject.toml-based projects
安装依赖失败! 请手动安装依赖.

尝试了几种方法没有解决,故使用之前成功过的Python3.11.5版本。

Python 3.11.5官方下载链接:Python 3.11.5
国内下载速度可能会有点慢,有条件的可以通过国际网络访问。
站长这里提供Windows64位版本的下载:python-3.11.5-amd64

1.3.VSCode安装指南

VSCode是一款轻量化的IDE,支持市面上绝大多数编程语言,具有良好的扩展性,且具有非常友好的代码补全功能。是CC站长的最爱
下载完成后直接一路确定傻瓜式安装即可//部分自定义配置说明如下:
VSCode

VSCode官网:Visual Studio Code
同样国内下载比较慢,站长这里提供Windows64位1.82.2版本的下载,VSCode支持软件内更新到最新版本:VSCodeUserSetup-x64-1.82.2

2.安装Nonebot框架

2.1.创建文件夹

创建一个文件夹用于存放项目,然后用VSCode打开这个文件夹。
InstallNonebot1

2.2.安装pipx

点击“终端-新建终端”(或直接按住Ctrl+Shift+`)创建一个终端,在终端中输入以下命令:

python -m pip install --user pipx
python -m pipx ensurepath

如果出现以下提示,请调整你的账户环境变量:
InstallNonebot2
调整账户的环境变量参考我的这篇文章:Python安装指南的第三节

安装完成后,关闭当前VSCode窗口,重启VSCode后才会生效。

2.3.安装Nonebot脚手架

创建一个终端,在终端中输入以下命令:

pipx install nb-cli

InstallNonebot3
如果出现无法找到pipx命令的情况(例如出现“Command not found”字样),请确认你在上一步中账户环境变量设置正确,且完全重启VSCode。
如果你确信自己的所有配置完全正确,请尝试重启你的计算机。

3.创建项目

在终端中输入以下命令:

nb create

选择“bootstrap (初学者或用户)”,回车。
Create1

等待资源加载,加载完成后进行如下配置:
(键盘上下键移动光标,空格选中,回车确认)

[?] 项目名称: [为你的项目取个名字吧!] (项目名称建议由英文字母和数字构成,因为部分插件可能不支持包含中文的路径)
[?] 要使用哪些驱动器? FastAPI (FastAPI 驱动器) 
[?] 要使用哪些适配器? OneBot V11 (OneBot V11 协议) 
[?] 立即安装依赖? y
[?] 创建虚拟环境? y

Create2
脚手架会自动创建并引入所需的依赖包。

最后选择安装内置插件echo,这是一个简单的复读回显插件,可以用于测试你的机器人是否正常运行:

[?] 要使用哪些内置插件? echo

请注意,如果你这一步没有安装echo后续将无法进行补装
如果你操作失误没有安装,请删除当前项目文件夹并返回第3节开头。

出现以下提示则项目创建成功
Create3

在终端中输入以下命令进入项目文件夹:

cd [你的项目的名字]

请注意:后续的操作均需要你的终端处于项目文件夹中。
如果你使用的是VSCode,方便起见,你可以直接选择打开项目文件夹作为VSCode工作文件夹:
Create4
这样后续VSCode新建终端就会默认处于项目文件夹中。

4.编辑配置文件

脚手架会在项目文件夹中自动创建一个配置文件.env.prod,但你仍然需要进行一些自定义配置。

打开项目文件夹下的.env.prod文件,编辑内容如下:

DRIVER=~fastapi  # 脚手架自动生成的配置HOST=127.0.0.1  # 配置 NoneBot 监听的 IP / 主机名
PORT=23333  # 配置 NoneBot 监听的端口

其中HOST必须设为127.0.0.1(即localhost)
PORT可以选择你喜欢的数字,范围在0-65535之间。不设置默认为8080,但尽量在15000-50000之间选择,避免和已有的端口发生冲突。

此外,你可以选择设置命令起始字符COMMAND_START和命令分割字符COMMAND_SEP,你可以在有需要使用这些设置的时候再行配置。
设置命令起始字符后,机器人只响应以起始字符开头的命令。
设置命令分割字符后,你可以用一个语句包含多个命令,机器人会先按分割字符将命令分开,再按顺序处理。

COMMAND_START=["/"]  # 配置命令起始字符(可选)
COMMAND_SEP=["."]  # 配置命令分割字符(可选)

5.安装插件

5.1.管理插件的方法

本节旨在让读者了解操作管理插件的流程,选择自己喜欢的管理插件的方式。
你也可以选择先跳过本节,在后面的教程中会默认提供方法一的命令。

Nonebot提供了三种管理插件的方法,请确保你的终端当前处于项目文件夹中。
其中使用pip安装(方法三)需要手动激活Python虚拟环境,方法一、二管理插件时会自动使用虚拟环境。

5.1.1.方法一:命令行管理

在终端输入以下命令:

nb plugin install <插件名称>  # 安装插件
nb plugin uninstall <插件名称>  # 卸载插件
nb plugin update <插件名称>  # 升级插件
nb plugin list  # 列出商店所有插件
nb plugin search [关键词]  # 搜索商店插件

5.1.2.方法二:交互式管理

在终端输入以下命令:

nb plugin

将进入控制台交互模式,键盘上下键移动光标,空格选中,回车确认。
Plugin1
按照提示输入插件名称即可。

5.1.3.方法三:使用pip安装

如果你在第3节中正确创建了项目,那么你的项目文件夹中会有一个.venv文件夹,这是项目的Python虚拟环境文件夹。

值得一提的是,虚拟环境是Python提供的一个非常实用的功能,它可以将项目环境和全局环境隔离。
你可以在虚拟环境中安装和管理项目特定的Python库和依赖项,而不会与全局Python环境相互影响。

在终端输入以下命令以激活虚拟环境:

.\.venv\Scripts\activate

如果遇到“禁止运行脚本”的报错,可以参考我的这篇文章来解决:Windows系统无法激活Python虚拟环境的解决方案
如果命令行开头出现一个括号,内容为你的项目名称,则代表Python虚拟环境已经成功激活。

接下来你可以使用pip命令来管理你的插件:

pip install <插件名称>  # 安装插件
pip uninstall <插件名称>  # 卸载插件
pip install --upgrade <插件名称>  # 升级插件
pip list  # 列出当前已经安装的插件(包含Nonebot依赖包)

pip相比前两种方法,缺少了列出和搜索商店插件的功能,多了可以查询当前已经安装了的插件的功能。
在忘记已经安装的插件或插件名情况下查询比较方便(当然你也可以自己在.\.venv\Lib\site-packages里查看)。

5.2.安装go-cqhttp

go-cqhttp框架提供了接收QQ事件与调用QQ的API的能力,是QQ机器人的核心组件。
NoneBot插件商店中提供了这个框架的插件,插件名称为:nonebot-plugin-gocqhttp
在终端中输入以下命令安装插件:

nb plugin install nonebot-plugin-gocqhttp

安装完成后,在终端中输入以下命令运行机器人:

nb run

出现以下提示则安装和运行成功:
gocq1
按住Ctrl单击链接进入go-cqhttp的WebUI界面
gocq2

6.登录QQ机器人与检查

6.1.登录QQ机器人

点击左上角“添加账号”,输入要部署的QQ账号,密码留空,设备类型选择“Android Watch”:
(注:也可以选择账号密码登录,但可能出现账号被风控无法登录的情况,手表协议登录相对比较稳定。)
QQLogin1
添加完成后点击启动,待加载出二维码后点击“显示登录二维码”。
用你的手机登录要部署的QQ账号,扫描二维码登录。
QQLogin2
登陆完成后会有消息提示如下:
QQLogin3

6.2.检查QQ机器人是否正常运行

登录你自己的QQ账号,添加机器人为QQ好友,然后按以下格式发送给机器人消息:

\echo [自定义消息]

请注意,不论你有没有配置命令起始字符,在这里echo的开头必须包含""字符
如果机器人回复了和自定义消息相同的内容,那么恭喜你,你已经成功地完成了QQ机器人的部署。
示例:
image

7.为你的QQ机器人赋能

完成了QQ机器人部署后,你就可以为你的机器人添加插件以实现各种各样的功能。插件的管理方式见5.1节。
你可以在官方插件商店找到你需要的插件,根据插件开发者提供的的文档进行安装与配置:插件商店。
如果你有足够的能力和精力,可以学习NoneBot文档,编写开发自己的插件:NoneBot文档。

8.注意事项

  1. 机器人的运行进程由终端调起,在你运行机器人的过程中,请务必保证你原来的终端窗口一直保持开启状态。如果你使用的是VSCode之类的IDE,请不要关闭你终端所在的窗口。
  2. 机器人以你的计算机作为服务器端,BOT使用期间请务必保证你的服务器/计算机处于开机联网状态。
  3. Windows系统时常会进行自动更新,必要时可以关闭自动更新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/149908.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

信看课堂-厘米GNSS定位

我们常常说GPS 定位&#xff0c;不过定位远不止GPS定位&#xff0c;通过本节课程&#xff0c;我们将会了解到&#xff0c;原来GPS只是定位的一种&#xff1a; GNSS概述 不同的GNSS系统使用不同的频段来传输导航信号。以下是一些主要的GNSS系统及其相应的频段&#xff0c;用表…

苹果系统_安装matplotlib__pygame,以pycharm导入模块

为了更便捷、连贯的进行python编程学习&#xff0c;尽量在开始安装python软件时&#xff0c;将编辑器、模块一并安装好&#xff0c;这样能避免以后版本冲突的问题。小白在开始安装pycharm、pip、matplotlib往往会遇到一些问题&#xff0c;文中列示其中部分bug&#xff0c;供大家…

1200*C. Challenging Cliffs(模拟构造贪心)

Problem - 1537C - Codeforces Challenging Cliffs - 洛谷 解析&#xff1a; 排序数组&#xff0c;然后找出间隔最短的两个相邻的数 a&#xff0c;b&#xff0c;c&#xff0c;d&#xff0c;e&#xff0c;f &#xff08;假设b&#xff0c;c为差最小的两个数&#xff09;。 然后…

Python无废话-办公自动化Excel格式美化

设置字体 在使用openpyxl 处理excel 设置格式&#xff0c;需要导入Font类&#xff0c;设置Font初始化参数&#xff0c;常见参数如下&#xff1a; 关键字参数 数据类型 描述 name 字符串 字体名称&#xff0c;如Calibri或Times New Roman size 整型 大小点数 bold …

【一、灵犀考试系统项目设计、框架搭建】

一、创建数据库 1、打开power designer&#xff0c;新建数据库模型 2、新建数据表&#xff0c;以及关系 【注意】 图片的类型有两种&#xff1a;varbinary 和 image varbinary : 二进制字节流&#xff0c;可以自动控制长度 image : 最大可放2G图片 3、创建数据库&#…

创新家庭办公室:打造完美工作空间的秘诀

一个精心策划的家庭办公室有很多好处&#xff0c;何不把临时工作区升级改造为你的专属工作区呢&#xff0c;还能为这些至关重要的区域注入新的活力。 创造多用途的起居室&#xff1a;我们大多数人都不曾拥有一个可以完全根据工作需求设计的独立家庭办公室——所以有时候要找到…

QT:鼠标画线(双画布)

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPoint> //点 #include <QMouseEvent> //鼠标事件 #include <QPaintEvent> //绘图事件class Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent 0);~Wi…

【算法训练-贪心算法 一】买卖股票的最佳时机II

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【贪心算法】&#xff0c;使用【数组】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…

docker系列6:docker安装redis

传送门 docker系列1&#xff1a;docker安装 docker系列2&#xff1a;阿里云镜像加速器 docker系列3&#xff1a;docker镜像基本命令 docker系列4&#xff1a;docker容器基本命令 docker系列5&#xff1a;docker安装nginx Docker安装redis 通过前面4节&#xff0c;对docke…

C#中的数组探究与学习

目录 C#中的数组一般分为:一.数组定义:为什么要使用数组?什么是数组?C#一维数组for和foreach的区别C#多维数组C#锯齿数组初始化的意义:适用场景:C#中的数组一般分为: ​①.一维数组。 ②.多维数组,也叫矩形数组。 ③.锯齿数组,也叫交错数组。 一.数组定义: 数组…

Halcon 从基础到精通-02- 开发基于HALCON的应用

HALCON的应用通过HDevelop应用来构建原型。HDevelop的开发主要有3种形式。 Start from Scratch: 手动通过脚本&#xff0c;把HDevelop的代码转化为一般的编程语言。如&#xff0c;上一节提到&#xff0c;其实&#xff0c;每个operators,也许并不一样&#xff0c;需要依据HALC…

云安全之等级保护解决方案及应用场景

等保2.0解决方案背景 适应云计算、移动互联网、大数据、物联网和工业控制等新技术发展&#xff0c;在新的技术场景能够顺利开展等级保护工作;《网络安全法》2016年已正式发布&#xff0c;等级保护2.0为了更好配合《网络安全法》的实施&#xff1b;等级保护1.0&#xff0c;在适…

(32)测距仪(声纳、激光雷达、深度摄影机)

文章目录 前言 32.1 单向测距仪 32.2 全向性近距离测距仪 32.3 基于视觉的传感器 前言 旋翼飞机/固定翼/无人车支持多种不同的测距仪&#xff0c;包括激光雷达&#xff08;使用激光或红外线光束进行距离测量&#xff09;、360 度激光雷达&#xff08;可探测多个方向的障碍…

SpringBoot自带模板引擎Thymeleaf使用详解①

目录 前言 一、SpringBoot静态资源相关目录 二、变量输出 2.1 在templates目录下创建视图index.html 2.2 创建对应的Controller 2.3 在视图展示model中的值 三、操作字符串和时间 3.1 操作字符串 3.2 操作时间 前言 Thymeleaf是一款用于渲染XML/HTML5内容的模板引擎&am…

【初识Linux】Linux环境配置、Linux的基本指令 一

Linux基本指令一 一、学习前提(环境配置&#xff09;①安装Xshell和云服务器推荐②Xshell用途如下图③打开Xshell 二、 Linux基本指令①whoami和who指令②pwd、ls、ls -l三个指令ls指令扩充 ③cd指令前提了解有了上面的认识&#xff0c;我们就可以开始cd指令的学习了 ④tree指令…

【JavaEE】JUC(Java.util.concurrent)常见类

文章目录 前言ReentrantLock原子类线程池信号量CountDownLatch相关面试题 前言 经过前面文章的学习我们大致了解了如何实现多线程编程和解决多线程编程中遇到的线程不安全问题&#xff0c;java.util.concurrent 是我们多线程编程的一个常用包&#xff0c;那么今天我将为大家分…

ES 关于 remote_cluster 的一记小坑

最近有小伙伴找到我们说 Kibana 上添加不了 Remote Cluster&#xff0c;填完信息点 Save 直接跳回原界面了。具体页面&#xff0c;就和没添加前一样。 我们和小伙伴虽然隔着网线但还是进行了深入、详细的交流&#xff0c;梳理出来了如下信息&#xff1a; 两个集群&#xff1a;…

源码上分析Vue2和Vue3的响应式原理

本文节选自我的博客&#xff1a;源码上分析Vue2和Vue3的响应式原理 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是MilesChen&#xff0c;偏前端的全栈开发者。&#x1f4dd; CSDN主页&#xff1a;爱吃糖的猫&#x1f525;&#x1f4e3; 我的博客&#xff1a;爱吃糖…

【多线程进阶】synchronized 原理

文章目录 前言1. 基本锁策略2. 加锁工作过程2.1 偏向锁2.2 轻量级锁2.3 重量级锁 3. 其他的优化操作3.1 锁消除3.2 锁粗化 总结 前言 在前面章节中, 提到了多线程中的锁策略, 那么我们 Java 中的锁 synchronized 背后都采取了哪些锁策略呢? 又是如何进行工作的呢? 本节我们就…