NoneBot是一个基于Python 3.8+的异步、开源和可扩展的框架,用于构建和运行聊天机器人,支持各种聊天平台,如Telegram,Discord和WeChat。它是基于nonebot库构建的,提供了一个易于使用的界面,用于创建聊天机器人插件和处理消息。它允许开发人员轻松创建自定义插件和命令,并与其他服务和API集成。
文章目录
- 安装基础插件
- 创建项目
- 项目配置
- .env 文件
- .env.* 文件 配置
- 云服务器部署
- 自定义插件
- 自定义回复插件
- 三方插件
安装基础插件
如果是 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功能的使用方法 |
@检查更新@ | 检查插件是否为新版本 |
未来更新一些好用的插件。