zl程序教程

您现在的位置是:首页 >  工具

当前栏目

使用NoneBot2可视化平台搭建QQ聊天机器人:本地和云部署教程

QQ机器人教程部署平台 搭建 本地 可视化
2023-09-11 14:18:26 时间

NoneBot是一个基于Python 3.8+的异步、开源和可扩展的框架,用于构建和运行聊天机器人,支持各种聊天平台,如Telegram,Discord和WeChat。它是基于nonebot库构建的,提供了一个易于使用的界面,用于创建聊天机器人插件和处理消息。它允许开发人员轻松创建自定义插件和命令,并与其他服务和API集成。
在这里插入图片描述

安装基础插件

如果是 1.x 版本先要卸载。

pip uninstall nonebot

安装 pipx。

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

安装脚手架。

pip install nb-cli

克隆 Git 仓库后手动安装,注意install后面有个点。

git clone https://github.com/nonebot/nonebot2.git
cd nonebot2
pip install .

创建项目

进入任意文件夹 输入

nb
  • 选择 Creat a New Project,创建项目。
  • 输入创建的项目名称,英文。例如:MyNoneBot。
  • 选择 In 你的项目名称 folder。
  • 选择 echo。
  • 选择 OneBot V11
  • 选择 y,完成项目创建。

在项目根目录文件夹下生成如下文件,自己对照一下。

在这里插入图片描述
启动项目的方式有两种,都需要进入项目目录下,上图的位置。

nb 方式启动:

nb run

python 命令行启动:

python bot.py

出现如下界面表示启动成功。

在这里插入图片描述

项目配置

红框中的3个文件均为项目的配置文件,不同的后缀代表的配置不同。

NoneBot 在启动时将会从系统环境变量或者 .env 文件中寻找变量,该变量大小写不敏感。
在这里插入图片描述

.env 文件

.env 文件中配置 ENVIRONMENT 指向的是 .env 文件后缀名的配置文件,根据实际情况修改。其中 CUSTOM_CONFIG 这个配置项在任何环境中都会被加载,因此也可忽略。

ENVIRONMENT=dev

# 可以忽略
CUSTOM_CONFIG = common config  

.env.* 文件 配置

# Driver 驱动器配置
# 默认:~fastapi,其他可选项 ~httpx、~websockets、~aiohttp
# 也可以是多种组合,例如:~fastapi+~httpx+~websockets
DRIVER=~fastapi

# Host 配置 NoneBot2 监听的 IP/主机名
HOST=0.0.0.0

# Port 配置 NoneBot2 监听的端口
PORT=8080  

# Log Level 日志输出等级
# 可选项有DEBUG、INFO、SUCCESS、WARNING、ERROR、CRITICAL
LOG_LEVEL=INFO

# API Timeout 请求超时时间,默认单位为s
API_TIMEOUT=30.0

# SuperUsers 配置 NoneBot 超级用户
SUPERUSERS=["QQ号", "QQ号"]

# Nickname 配置机器人的昵称
NICKNAME=["Mr的AI助手",]  

# COMMAND 配置命令
COMMAND_START=["/", ""]  # 配置命令起始字符
COMMAND_SEP=["."]  # 配置命令分割字符

# Session Expire Timeout 用户会话超时时间,默认单位为秒
SESSION_EXPIRE_TIMEOUT=120

进入 lib 中 nonebot_plugin_gocqhttp 修改密码plugin_config.py

在这里插入图片描述

云服务器部署

需要修改项目下的配置文件ip地址 .env.dev 和 .env.prod 文件。
在这里插入图片描述
这里的HOST都需要修改成 0.0.0.0,并且开放云服务器端口。
在这里插入图片描述
访问配置好的网络地址即可。
在这里插入图片描述
在这里插入图片描述

自定义插件

所有插件均在 bot.py 中设置。

自定义回复插件

在 bot.py 中添加下面的代码,并在项目目录下创建对应的脚本即可。
在这里插入图片描述

# 自定义回复插件
nonebot.load_plugins("src/plugins")

在这里插入图片描述
添加自定义关键词回复。

# coding:utf-8
__author__ = 'Mr.数据杨'
__explain__ = ''

from nonebot.adapters.cqhttp import Bot, Event
from nonebot.plugin import on_message
import os

current_file_path = __file__
current_working_dir = os.path.dirname(current_file_path) + "\\"

keyword_base_path = current_working_dir + "\\keyword\\"

def GetMenu():
	......

def GetInfo():
	......

def GetHome():
	......

def GetStudyMenu():
	......

def GetProject():
	......


reply_dic = {
    '/菜单': GetMenu(),
    '/群主介绍': GetInfo(),
    '/群主主页': GetHome(),
    '/Python学习目录': GetStudyMenu(),
    '/开发项目': GetProject(),
}

# 回复部分
reply = on_message(priority=100)

@reply.handle()
async def reply_handle(bot: Bot, event: Event):
    user_msg = str(event.get_message()).strip()
    # 对输入进行判断并处理
    try:
        reply_msg = reply_dic[user_msg]
        await reply.finish(reply_msg)
    except KeyError:
        await reply.finish()

在这里插入图片描述

三方插件

各种写好的插件可以直接安装进行调用,进入 NoneBot 插件市场 进行下载即可。

这里介绍一个云签到插件的使用。

pip install nonebot-plugin-cloudsignx

pip install --upgrade nonebot-plugin-cloudsignx

bot.py 文件, 在其中写入。

nonebot.load_plugin('nonebot_plugin_cloudsignx')
指令说明
签到♥每日签到,每日首签与连续签到都将获得额外积分
积分查询现在拥有的积分等数据
抽奖 n消耗n积分,随机获取0-3倍积分
转账 n@xxx将n积分转账给xxx
打劫@xxx打劫xxx的积分,有几率获得对方的部分积分,也可能打劫不到或被反打劫
领取积分补助积分低于10分时每日可领取一次补助
排行榜查看全部用户的积分排行榜,并显示自己的名次
挖矿消耗10积分进行挖矿
我的背包查看挖到的矿
售出xxx 将挖到的xxx卖出,获得积分
钓鱼消耗10积分进行钓鱼
我的鱼篓查看钓到的鱼🐟
出售 xxx将钓到的xxx卖出,获得积分
猜数字 xxx消耗xxx积分开始猜数字游戏,猜中则积分翻倍
我猜 xxx在指定次数内进行猜数字游戏,xxx为你所猜的数字
猜拳石头 xxx消耗xxx积分进行猜拳游戏,胜利则积分翻倍
猜拳剪刀 xxx消耗xxx积分进行猜拳游戏,胜利则积分翻倍
猜拳布 xxx消耗xxx积分进行猜拳游戏,胜利则积分翻倍
签到状态查看服务器的实时负载等信息
功能显示功能列表
功能 xxx查看xxx功能的使用方法
@检查更新@检查插件是否为新版本

在这里插入图片描述

未来更新一些好用的插件。