用Nonebot2搭建QQ机器人(一):我的学习经历(一)

1.NoneBot2的概述:

NoneBot2 是一个现代、跨平台、可扩展的 Python 聊天机器人框架,它基于 Python 的类型注解和异步特性,能够为你的需求实现提供便捷灵活的支持。然后剩下的详细说明建议自己去翻文档,我不多做赘述。

注意:NoneBot2 仅支持 Python 3.8 以上版本(推荐使用Python3.8.1)

我参考过的文档:摘录于Nonebot2官方文档 https://v2.nonebot.dev/

基于Nonebot2搭建QQ机器人(二)编写一个自动回复插件_会飞的 CR7的博客-CSDN博客_qq机器人自动回复

这个是我参考的一个别人的CSDN,但是他的内容版本有点旧,所以可能会让新手很多地方感到困扰

使用NoneBot2搭建QQ机器人 - 知乎

这个是一个大佬给的教程,我很多都是跟着他的教程学习的,另外我还加了他在的群。

2.go-cqhttp的下载以及配置:

这个是官方文档:

go-cqhttp官方文档https://docs.go-cqhttp.org/

下载go-cqhttp:Releases · Mrs4s/go-cqhttp · GitHub

 在里面选择windows的最新版exe文件下载好。如果是32位的话就选择...386.exe

如果是linux和树莓派的话就选择amd64.tar.gz

下载好了会得到这样一个文件。

把这个文件放在你要放的文件夹下面,然后双击运行。

然后就得到了这样一个叫做go-cqhttp.bat的启动程序,之后把exe文件重新命名为go-cqhttp.exe。

通信协议的话我是跟着别的大佬用的反向通信协议(选3)

之后会得到这样一个文件,在pycharm中打开它,

 这里面需要更改的有两处,QQ号填写自己要创建机器人的号,密码的话可以填写也可以不填扫码登录,

然后其中的这一行改成 

ws://127.0.0.1:15687/onebot/v11/ws/

其中15687是端口号,可以随便设置,但是有范围限制,我个人推荐写一万两万之间的随机数,一定要是随机数。很多人喜欢写八千多或者一些整数,这样的话你的数字就容易和别人的数字重复导致端口冲突。所以我写了15687,你们就别写15687了最好。

那之后再次运行,等待扫码登录,登录成功后开始刷用Nonebot2搭建QQ机器人(一):我的学习经历(一)_第1张图片

这个东西的时候你就已经配置好go-cqhttp了。

注意:此后运行go-cqhttp就不要用exe文件了,要使用.bat文件。

3.安装NoneBot2以及需要下载的东西:

我用的是Pycharm编译器,用的语言是Python3.1.0。至于如何下载Python以及其编译器建议通过百度解决。然后就是下载NoneBot2:

首先打开pycharm的终端:

用Nonebot2搭建QQ机器人(一):我的学习经历(一)_第2张图片

也可以使用快捷键:Alt+F12

用Nonebot2搭建QQ机器人(一):我的学习经历(一)_第3张图片

这就是打开后的模样

在里面输入: pip install nb-cli         接着等待下载完成。

那之后在

cqhttp在的位置鼠标右键,选择Open in Terminal 就可以打开Windows PowerShell

用Nonebot2搭建QQ机器人(一):我的学习经历(一)_第4张图片

当然也可以在pycharm的终端里输入Windows PowerShall相同的指令。(注意要在和cqhttp相同的目录下。)

下载完成之后输入

nb install httpx

来安装驱动器

输入

nb create

用Nonebot2搭建QQ机器人(一):我的学习经历(一)_第5张图片

之后会这样,然后再项目名称后面写上你想写的机器人项目的名称。 

之后的选项里面依次选择"src"和"echo"和"OneBot V11"输入y回车完成创建。

然后再pyproject.toml所在的目录下的终端(Windows PowerShell)依次输入下面的指令

nb adapter OneBot V11

来安装协议适配器

输入

nb install plugin sentry

来安装第三方插件

都安装好了之后就算基础配置完了。

4.NoneBot2的一些配置

1:.env的配置

在里面输入一下代码:

# .env

ENVIRONMENT=dev

CUSTOM_CONFIG=common config # 这个配置项在任何环境中都会被加载

2:.env.dev的配置

HOST=127.0.0.1 # 配置 NoneBot2 监听的 IP/主机名
PORT=15687  # 配置 NoneBot2 监听的端口
SUPERUSERS=["123456789", "987654321"]  # 配置 NoneBot 超级用户,就是管理员QQ号
NICKNAME=["awesome", "bot"]  # 配置机器人的昵称
COMMAND_START=["/", ""]  # 配置命令起始字符,命令开始的标志
COMMAND_SEP=["."]  # 配置命令分割字符

# Custom Configs
CUSTOM_CONFIG1="config in env file"
CUSTOM_CONFIG2=  # 留空则从系统环境变量读取,如不存在则为空字符串

用Nonebot2搭建QQ机器人(一):我的学习经历(一)_第6张图片

这个是我的

3:.env.port的配置 

HOST=127.0.0.1
PORT=15687
SECRET=
ACCESS_TOKEN=


4:bot.py的配置

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

import nonebot
from nonebot.adapters.onebot.v11 import Adapter as ONEBOT_V11Adapter

# 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(ONEBOT_V11Adapter)

nonebot.load_builtin_plugins("echo")

# Please DO NOT modify this file unless you know what you are doing!
# As an alternative, you should use command `nb` or modify `pyproject.toml` to load plugins
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")

初学者,就先无脑copy这个代码就行了。

接下来就可以运行了。

pycharm运行bot.py,双击go-cqhttp.bat就成功了。

我中途遇到过的困难:

1.旧版本cqhttp

用Nonebot2搭建QQ机器人(一):我的学习经历(一)_第7张图片

这个是我 copy基于Nonebot2搭建QQ机器人(一)机器人环境配置_会飞的CR7的博客-CSDN博客_nonebot2

这个大佬的代码时候遇到的问题,cqhttp那个是旧版的,新版的应该导入

nonebot.adapters.onebot.v11

Adapter

2.安装不上适配器

用Nonebot2搭建QQ机器人(一):我的学习经历(一)_第8张图片

 'No module named 'nonebot.adapters.onebot'报错

说明没有安装上适配器。

在此输入指令安装适配器时候却是这样的:

用Nonebot2搭建QQ机器人(一):我的学习经历(一)_第9张图片

显示无法安装成功。

这个的原因是在其他的地址下已经安装有适配器了,但是这里调用不到。所以需要这样输入指令:

pip install --target=目标路径 工具包名字

选定机器人所在的路径,安装适配器就可以解决这个问题了。

 还有一点很重要就是适配器一定要安装在和pyproject.toml相同的路径下。

你可能感兴趣的:(学习,python,机器人)