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

news2024/11/15 6:54:59

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功能的使用方法
@检查更新@检查插件是否为新版本

在这里插入图片描述

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

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

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

相关文章

Python爬虫之Scrapy框架系列(7)——XXTop250电影简介信息的获取及存储到本地

前面简单爬取了某Top250电影的一些信息。本文,来尝试搞到每个电影的简介信息。 目录:1. 获取电影简介信息1.1 第一步:配对每个电影对应的简介信息:First:包含电影简介信息url的获取Second:爬虫文件的更改Th…

Java和Scala中关键字package指定的是源文件的存放路径吗?

无为也,则用天下而有余;有为也,则为天下用而不足🔬 目录 Scala代码演示 Java代码演示 总结 写在前面: 包(package)不是约定源文件存放的位置,而是约定源文件编译后生成的字节码…

数据挖掘,计算机网络、操作系统刷题笔记37

数据挖掘,计算机网络、操作系统刷题笔记37 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,orac…

Scanpy 单细胞测序基因分析

参考:https://www.bilibili.com/video/BV1sq4y1C7Qx/ https://scanpy-tutorials.readthedocs.io/en/latest/pbmc3k.html 代码下载:scanpy分析scRNA-seq数据基本流程(含scanpy seurat两大工具对比) 链接: https://pan.baidu.com/s…

SCSS函数——Map

SCSS函数——MapSCSS函数——MapMap的简单声明Map取值遍历Map获取值实现换肤效果1. 设置用户可以选择的主题2.创建主题需要颜色的Map集合3.在使用SCSS文件中导入函数和Scss文件4.构建一个themeCombine函数动态创建类名5.使用each对变量进行遍历Map函数1.get()取值函数2.deep-re…

STM32F10x数据手册之GPIO手册记录

前言 1、本文根据数据手册进行记录 2、由于手册的逻辑结构是呈现为总体到具体的结构,导致查看的时候不方便,所以在此记录,方便回顾 GPIO–输入模式 对比分析: 1、在此模式下,向GPIO口,输出高低电平是无效的。 2、GPIO初始电平与…

PHP反序列化新手入门学习总结

最近写了点反序列化的题,才疏学浅,希望对CTF新手有所帮助,有啥错误还请大师傅们批评指正。 php反序列化简单理解 首先我们需要理解什么是序列化,什么是反序列化? PHP序列化:serialize() 序列化是将变量…

DW 2023年1月Free Excel 第八次打卡 Excel数据可视化

第八章Excel数据可视化 数据下载地址与参考链接:https://d9ty988ekq.feishu.cn/docx/Wdqld1mVroyTJmxicTTcrfXYnDd 1 条形图 案例1 打开data/chap8/8.1xlsx中的【案例1】,现在有湖北区2022/01/01的不同商品的销售额。 问题1:如何更加直观…

Java基础11:正则表达式

Java基础11:正则表达式一、匹配规则1. 字符类(只匹配一个字符)2. 预定义字符(只匹配一个字符)3. 数量词二、Pattern三、Matcher四、在字符串方法中的使用1. matches2. replaceAll3. split五、 PatternMatcher示例1. 爬…

【自然语言处理】主题建模:基于 LDA 实现

主题建模:基于 LDA 实现主题建模是一种常见的自然语言处理任务。隐含的狄利克雷分布(Latent Dirichlet Allocation,LDA)是其中一种实现算法,其核心思想如下图所示。 主题建模的方法也比较多,除了本文提到的…

MySQL架构概述

MySQL架构 对MySQL服务端架构的概述,包括逻辑架构、并发控制、事务和MVCC(多版本并发控制)等内容。 逻辑架构 连接/线程管理 最上层负责与客户端交互,包括连接处理、身份验证、确保安全性等。 解析器、优化器 MySQL核心能力都在…

机器学习从入门到进阶所需学习资料-包括书、视频、源码

本文整理了一些入门到进阶机器学习所需要的一些免费的精品视频课程,一些优质的书籍和经典的代码实战项目。本文整理自网络,源地址:https://github.com/linxid/Machine_Learning_Study_Path视频1.1 吴恩达老师机器学习课程:•Cours…

【【黑马SpringCloud(2)】微服务调用

服务调用和网关Feign远程调用Feign自定义配置Feign性能优化使用连接池代替默认的URLConnection解决重复代码继承方式抽取方式Gateway服务网关gateway快速入门断言过滤器全局过滤器过滤器执行顺序:跨域问题Feign远程调用 RestTemplate发起远程调用的代码&#xff1a…

走进 CSS

看完本篇博客,你能收获: 👉 了解 CSS 是什么?👉 学会 CSS 怎么用?👉 CSS的选择器👉 如何用 CSS 美化网页 文章目录01 CSS 是什么?02 CSS的发展史03 CSS 快速入门04 CSS的…

唯一索引范围查询锁 bug修复了

唯一索引范围查询锁 bug修复了 其他资料介绍入下: session A 是一个范围查询,按照原则 1 的话,应该是索引 id 上只加 (10,15] 这个 next-key lock ,并且因 为 id 是唯一键,所以循环判断到 id15 这一行就应该停止了。…

生成标题的节点

生成标题的节点目录概述需求:设计思路实现思路分析1.mine 的概述2 mi是否自动计算未来的处理人参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,w…

智能驾驶 车牌检测和识别(一)《CCPD车牌数据集》

智能驾驶 车牌检测和识别(一)《CCPD车牌数据集》 目录 智能驾驶 车牌检测和识别(一)《CCPD车牌数据集》 1. 前言 2.车牌号码说明 3.车牌数据集CCPD (1)车牌数据集CCPD说明 (2&#xff09…

Eclipse调试python

Eclipse调试pythonF5:Step Into 单步调试,跳入函数内部F6:Step Over 单步调试,不跳入函数内部,执行当前代码F7:Step Return 返回到当前函数的尾部,跳转到调用函数的位置F8:Resume 跳…

DDOS渗透与攻防(二)之SYN-Flood攻击

系列文章 DDOS渗透与攻防(一)之拒绝服务攻击概念介绍 SYN-Flood攻击 1.SYN-Flood拒绝服务攻击 (1).攻击协议原理介绍说明_Syn-Flood SYN Flood (SYN洪水) 是种典型的DoS (Denial of Service,拒绝服务) 攻击。效果就是服务器TCP连接资源耗尽,停止响应…

8 种异步实现方式,性能炸裂!

异步执行对于开发者来说并不陌生,在实际的开发过程中,很多场景多会使用到异步,相比同步执行,异步可以大大缩短请求链路耗时时间,比如:发送短信、邮件、异步更新等,这些都是典型的可以通过异步实…