使用Nonebot编写QQ机器人
使用 NoneBot 这个工具,来编写 QQ 机器人。
安装基础软件
一、安装 NoneBot 库
直接使用 pip 安装即可
pip install nonebot
二、安装酷Q 软件和 HTTP API 插件
酷Q 软件可以直接到官网下载,https://cqp.cc/b/news,或者可以到网盘下载,链接: https://pan.baidu.com/s/19l4IdTLi9__BhkboOcYP-g 提取码: b6er
HTTP API 插件,同样可以到官网下载,https://cqhttp.cc/docs/4.8/,如果下载有问题,可以到这个网盘下载,链接: https://pan.baidu.com/s/1h4oROjCu88HSbDloKSUGSw 提取码: cccf
下载好酷Q 软件后,解压缩,目录如下图:

首先将下载好的 HTTP API 插件放到 app 目录下,然后双击 CQA.exe 文件,输入机器人对应的 QQ 号和密码,登陆之后,在应用管理中,启动 HTTP API 插件。
三、配置 HTTP API 插件
进入酷Q 的 data/app/io.github.richardchien.coolqhttpapi/config/ 目录,有一个.json 的文件,user-id 为刚刚登陆的 QQ 号。修改这个文件的如下配置
{"ws_reverse_api_url": "ws://127.0.0.1:8080/ws/api/","ws_reverse_event_url": "ws://127.0.0.1:8080/ws/event/","use_ws_reverse": true
}
开始历史性的对话
先给出 nonebot 的官方文档地址:https://none.rclab.tk/guide/getting-started.html,感兴趣的同学也可以去官网查看。
下面我们先跑一下官网上的基础例子
import nonebotif __name__ == "__main__":nonebot.init()nonebot.load_builtin_plugins()nonebot.run(host='127.0.0.1', port=8080)
运行该程序,我们可以在控制台看到如下日志:
[2019-04-05 19:31:18,281 nonebot] INFO: Succeeded to import "nonebot.plugins.base"
[2019-04-05 19:31:18,281 nonebot] INFO: Running on 127.0.0.1:8080
Running on https://127.0.0.1:8080 (CTRL + C to quit)
[2019-04-05 19:31:18,282] ASGI Framework Lifespan error, continuing without Lifespan support
[2019-04-05 19:31:18,283 nonebot] INFO: Scheduler started
[2019-04-05 19:31:20,490] 127.0.0.1:6568 GET /ws/api/ 1.1 101 - 2987
[2019-04-05 19:31:20,493] 127.0.0.1:6569 GET /ws/event/ 1.1 101 - 1154
可以看到现在程序运行在了本地的 8080 端口,而且本地的 6568 和 6569 端口也连接到了本服务,就是我们在 HTTP API 插件的配置文件中做的配置
"ws_reverse_api_url": "ws://127.0.0.1:8080/ws/api/","ws_reverse_event_url": "ws://127.0.0.1:8080/ws/event/",
现在我们向这个机器人账号发送下消息
/echo 你好
在控制台可以看到日志如下:
[2019-04-05 19:37:59,614 nonebot] INFO: Self: 3412355667, Message 56 from 736552883: /echo 你好
[2019-04-05 19:37:59,614 nonebot] DEBUG: Parsing command: /echo 你好
[2019-04-05 19:37:59,614 nonebot] DEBUG: Matched command start: /
[2019-04-05 19:37:59,614 nonebot] DEBUG: Split command name: ('echo',)
[2019-04-05 19:37:59,614 nonebot] DEBUG: Command ('echo',) found, function: <function echo at 0x040DB2B8>
[2019-04-05 19:37:59,614 nonebot] DEBUG: New session of command ('echo',) created
[2019-04-05 19:37:59,615 nonebot] DEBUG: Running command ('echo',)
[2019-04-05 19:37:59,738 nonebot] DEBUG: Session of command ('echo',) finished
[2019-04-05 19:37:59,739 nonebot] INFO: Message 56 is handled as a command
同时我们的机器人账号也自动回复了“你好”给我们。
真实“历史性”的时刻!!
增强机器人功能之配置文件
增加 config.py 文件,输入内容如下:
from nonebot.default_config import *SUPERUSERS = {123456}
COMMAND_START = {'', '/', '!', '/', '!'}
HOST = '0.0.0.0'
PORT = 8080
SUPERUSERS:是配置一个超级 QQ 用户,我们可以为这个超级用户配置一些特殊的操作;
COMMAND_START:是配置命令起始字符,我们增加了空字符串,所以不需要任何起始字符也能调用命令;
另外就是配置了 host 和 端口 port。
然后我们就可以修改原来的文件为:
import nonebot
import configif __name__ == "__main__":nonebot.init(config)nonebot.load_builtin_plugins()nonebot.run()
下面我们就可以编写自己的命令了。
增强机器人功能之编写命令
这里要注意的是,所有的语法都是 asyncio 异步编程,需要了解简介的,可以查看这里。
获取每日一句
我们使用金山词霸的 API 获取每日一句内容,http://open.iciba.com/dsapi/
def get_content():url = 'http://open.iciba.com/dsapi/'res = requests.get(url)content_e = res.json()['content']content_c = res.json()['note']return [content_c, content_e]
这样就获取到一个”每日一句“的列表了。
编写自己的插件
创建一个 plugins 文件夹,在里面创建 daily.py 文件,编写如下代码
from nonebot import on_command, CommandSessionfrom utils import getdata@on_command('daily', aliases=('每日一句',))async def daily(session: CommandSession):daily_send = await get_daily()await session.send(daily_send[0])await session.send(daily_send[1])async def get_daily():daily_sentence = getdata.get_content()return daily_sentence
使用 on_command 装饰器声明一个命令处理器,声明两个命令,分别是 ”daily“ 和 ”每日一句“,当用户向本机器人发送这两个命令时,就会自动调用 daily 这个函数,并且发送对应的消息。
而 get_daily 函数,就是调用金山词霸的 API 函数,来获取内容。
最后修改主文件内容,加载自己编写的插件
import nonebot
import config
from os import pathif __name__ == "__main__":nonebot.init(config)nonebot.load_plugins(path.join(path.dirname(__file__), 'plugins'), 'plugins')nonebot.run()
接下来我们测试一下这个简单的机器人效果如何

看起来效果还不错,哈哈哈,以后再慢慢增加更加强大的功能吧。
相关文章:
使用Nonebot编写QQ机器人
使用 NoneBot 这个工具,来编写 QQ 机器人。 安装基础软件 一、安装 NoneBot 库 直接使用 pip 安装即可 pip install nonebot二、安装酷Q 软件和 HTTP API 插件 酷Q 软件可以直接到官网下载,https://cqp.cc/b/news,或者可以到网盘下载&am…...
认识SpringBoot中的条件注解
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringBoot ✨特色专栏&…...
使用PAI-DSW搭建基于LangChain的检索知识库问答机器人
教程简述 在本教程中,您将学习如何在阿里云交互式建模(PAI-DSW)中,基于LangChain的检索知识库实现知识问答。旨在建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。 LangChain是一个开源的框架,…...
优雅的通过Shell脚本生成Go的程序包
前言 随着Go语言的普及,越来越多的开发人员选择使用Go编写代码。虽然越来越多的公司项目已使用持续集成/持续部署(CI/CD)工具,用于自动化构建、测试和部署Go程序包,但存在一些部署在ECS服务器的Go程序包或需要手动编译…...
益生菌抗癌?补充这种益生菌,抑制肝癌,还改善肠道健康
撰文 | 宋文法 肠道菌群,是人体不可分割的组成部分,生活在我们肠道内的数万亿细菌对健康起着重要作用,它们影响着人的新陈代谢、消化能力、抵御感染、控制人体对药物的反应,甚至还能预防某些癌症。 非酒精性脂肪肝病,是…...
LLM漫谈(二)| QAnything支持任意格式文件或数据库的本地知识库问答系统
一、QAnything介绍 QAnything (Question and Answer based on Anything) 是致力于支持任意格式文件或数据库的本地知识库问答系统,可断网安装使用。 您的任何格式的本地文件都可以往里扔,即可获得准确、快速、靠谱的问答体验。 目前已支持格式: PDF&…...
Linux环境vscode clang-format格式化:vscode clang format command is not available亲测有效!
问题现象 vscode安装了clang-format插件,但是使用就报错 问题原因 设置中配置的clang-format插件工具路径不正确。 解决方案-亲测有效! 确认本地安装了clang-format工具:终端输入clang-format(也可能是clang-format-13等版本…...
Vue3前端 响应式数据 知识点
一、ref(基本类型数据,也可以定义对象类型的响应式数据。此时底层用的还是reactive) ref 创建基本类型的响应式数据 作用:定义响应式变量语法: let xxx ref(初始值)返回值: 一个 RefImp1 的实例对象,简称 ref对象或ref,ref 对象的 value 属…...
golang数据库连接池设置多少比较合适,如何设置?
设置数据库连接池的大小需要综合考虑应用程序的需求、数据库系统的性能、服务器资源等因素。连接池大小的不合理设置可能导致性能问题或资源浪费。 以下是一些建议: 考虑应用程序的并发需求: 连接池的大小应该足够满足应用程序的并发需求。如果你的应用…...
一、Mybatis 简介
本章概要 简介持久层框架对比快速入门(基于Mybatis3方式) 1.1 简介 https://mybatis.org/mybatis-3/zh/index.html MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投G…...
苹果Vision Pro将于1月27日上市!
在无数期待中,苹果全新产品Vision Pro头显终于定下上市日期。 彭博社记者马克古曼(Mark Gurman)于近日在X(前推特)平台爆料了这一信息,预计苹果Vision Pro头显将于2024年1月27日率先在美国上市。 在过去看…...
密码学(一)
文章目录 前言一、Cryptographic Primitives二、Cryptographic Keys2.1 Symmetric key cryptography2.2 asymmetric key cryptography 三、Confidentiality3.1 Symmetric key encryption algorithms3.2 asymmetric key block ciphers3.3 其他 四、Integrity4.1 secure hashing …...
VueRouter
1、用户权限问题 可以在路由全局前置守卫判断当前vuex里是否有token 有token值证明刚才登录过, 无token值证明未登录 router.beforeEach((to, from, next) > {const token store.state.tokenif (token) {// 如果有token, 证明已登录if (!store.state.userInfo.username) {/…...
什么是React.FC | 封装ant design弹框组件之:ant design 修改密码弹框组件
文章目录 一、什么是React.FC组件的 props 是什么意思二、封装ant design弹框组件之:ant design 修改密码弹框组件定义修改密码弹框组件使用修改密码弹框组件:[重要]关于提交时候,不同组件 表单数据共享报错:Button cannot be used as a JSX component.一、什么是React.FC …...
DHCP
一、DHCP 1.1 什么是dhcp DHCP动态主机配置协议,通常被应用在大型的局域网络环境中,主要作用是集中地管理、分配IP地址,使网络环境中的主机动态的获得IP地址、DNS服务器地址等信息,并能够提升地址的使用率。 DHCP作为用应用层协…...
VS code的使用介绍
VS code的使用介绍 简介下载和安装常用的插件使用教程快捷键 集成Git未找到 Git。请安装 Git,或在 "git.path" 设置中配置。操作步骤打开文件夹初始化仓库文件版本控制状态提交文件到git打开git操作栏位 好用的插件ChineseDraw.io Integration实体关系 Gi…...
【蓝桥杯选拔赛真题57】python兔子分胡萝卜 第十四届青少年组蓝桥杯python 选拔赛比赛真题解析
目录 python兔子分胡萝卜 一、题目要求 1、编程实现 2、输入输出...
Spring MVC中JSON数据处理方式!!!
添加json依赖 <!--spring-json依赖--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.0</version></dependency> 注解 RequestBody:作…...
学习JavaEE的日子 阶段回顾
标识符 含义:给类、变量、方法、接口取名字的时候使用到的字符序列 组成:大小写字母 、数字、$、_、中文 注意事项: 不能以数字开头 区分大小写字母 不能使用除了$和_以外的特殊符号 不能使用Java的关键字 考虑到编码问题不要使用中文 关…...
深入理解 Flink(一)Flink 架构设计原理
大数据分布式计算引擎设计实现剖析 MapReduce MapReduce 执行引擎解析 MapReduce 的组件设计实现图 Spark 执行引擎解析 Spark 相比于 RM 的真正优势的地方在哪里:(Simple、Fast、Scalable、Unified) DAG 引擎中间计算结果可以进行内存持…...
RPC的了解
文章目录1. RPC的概述2. RPC的核心工作原理3. RPC与 HTTP 的区别4. RPC 框架的核心功能5. 常见的RPC框架对比6. 什么时候考虑引入RPC7. 选型8. Dubbo1)概述2. Dubbo核心功能3. Dubbo 具体使用1. RPC的概述 RPC(Remote Procedure Call,远程过程…...
深入了解场效应管(FET)的基本原理与特性分析
场效应管(FET)基础概念场效应管(Field Effect Transistor, FET)是一种通过电场效应控制电流的半导体器件,属于电压控制型器件。其核心特点包括高输入阻抗、低驱动功耗和单极型载流子传导(仅多数载流子参与导…...
AI安全审计工具:降低Web应用安全门槛的九步自动化实践
1. 从零到一:为什么我们需要一个“小白友好”的Web应用安全审计工具?在今天的开发环境里,安全审计这件事,对很多中小团队或者独立开发者来说,一直是个挺尴尬的存在。一方面,大家都知道它至关重要࿰…...
系统设计:布隆过滤器
原文:towardsdatascience.com/system-design-bloom-filter-a2e19dcd4810 https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/350b777cef6f9090c441e88a64b5066c.png 简介 哈希表是最广为人知和使用的几种数据结构之一。通过明智…...
2025年液冷全产业链解析:AI时代散热革命,各环节下的价值拆解
🎓作者简介:科技自媒体优质创作者 🌐个人主页:莱歌数字-CSDN博客 💌公众号:莱歌数字(B站同名) 📱个人微信:yanshanYH 211、985硕士,从业16年 从…...
3阶段智能化部署:彻底解决Windows 11 LTSC系统应用生态缺失难题
3阶段智能化部署:彻底解决Windows 11 LTSC系统应用生态缺失难题 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 你是否正在使用Windows 11…...
ThinkPad风扇控制终极指南:TPFanCtrl2实现128级精准调速与双风扇独立管理
ThinkPad风扇控制终极指南:TPFanCtrl2实现128级精准调速与双风扇独立管理 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 TPFanCtrl2是一款专为ThinkPad笔记…...
【2026 AI大会签到终极指南】:3大预检漏洞、5步零失败通关、24小时倒计时避坑清单
更多请点击: https://intelliparadigm.com 第一章:2026年AI技术大会签到流程全景概览 2026年AI技术大会全面启用无感化、多模态融合签到系统,覆盖人脸识别、NFC工牌扫描、二维码核验及离线应急通道四大核心路径。所有参会者需提前72小时完成…...
通过 Taotoken CLI 工具一键配置团队开发环境中的模型端点
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过 Taotoken CLI 工具一键配置团队开发环境中的模型端点 当团队需要统一接入多个大模型时,管理不同项目的 API 密钥、…...
从Photoshop钢笔到游戏角色建模:用Python手把手实现贝塞尔曲线(附完整代码)
从Photoshop钢笔到游戏角色建模:用Python手把手实现贝塞尔曲线(附完整代码) 在数字艺术和游戏开发领域,贝塞尔曲线无处不在。从Photoshop中流畅的钢笔工具路径,到3D游戏中角色服装的自然飘动,再到UI设计中优…...
