50行代码,编写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 软件后,解压缩,目录如下图:

image.png

首先将下载好的 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 nonebot
if __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 config
if __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, CommandSession
 from 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 path
if __name__ == "__main__":
    nonebot.init(config)
    nonebot.load_plugins(path.join(path.dirname(__file__), 'plugins'), 'plugins')
    nonebot.run()

接下来我们测试一下这个简单的机器人效果如何

image.png

看起来效果还不错,哈哈哈,以后再慢慢增加更加强大的功能吧。


相关文章
|
6月前
|
JSON 机器人 API
50行代码,编写QQ 聊天机器人,每天一句知心话自动发!
50行代码,编写QQ 聊天机器人,每天一句知心话自动发!
|
6月前
|
传感器 人工智能 监控
智能耕耘机器人
智能耕耘机器人
136 3
|
7天前
|
机器学习/深度学习 传感器 算法
智能机器人在工业自动化中的应用与前景###
本文探讨了智能机器人在工业自动化领域的最新应用,包括其在制造业中的集成、操作灵活性和成本效益等方面的优势。通过分析当前技术趋势和案例研究,预测了智能机器人未来的发展方向及其对工业生产模式的潜在影响。 ###
37 9
|
3天前
|
机器人 人机交互 语音技术
智能电销机器人源码部署安装好后怎么运行
销售打电销,其中90%电销都是无效的,都是不接,不要等被浪费了这些的精力,都属于忙于筛选意向客户,大量的人工时间都耗费在此了。那么,有这种新型的科技产品,能为你替代这些基本的工作,能为你提升10倍的电销效果。人们都在关心智能语音客服机器人如何高效率工作的问题,今天就为大家简单的介绍下:1、智能筛选系统:电销机器人目前已经达到一个真人式的专家级的销售沟通水平,可以跟客户沟通,筛选意向,记录语音和文字通话记录,快速帮助电销企业筛选意向客户,大大的节约了筛选时间成本和人工成本。2、高速运转:在工作效率上,人工电销员,肯定跟不上智能语音机器人,机器人自动拨出电话,跟客户交谈。电话机
69 0
|
1月前
|
人工智能 搜索推荐 机器人
挑战未来职场:亲手打造你的AI面试官——基于Agents的模拟面试机器人究竟有多智能?
【10月更文挑战第7天】基于Agent技术,本项目构建了一个AI模拟面试机器人,旨在帮助求职者提升面试表现。通过Python、LangChain和Hugging Face的transformers库,实现了自动提问、即时反馈等功能,提供灵活、个性化的模拟面试体验。相比传统方法,AI模拟面试机器人不受时间和地点限制,能够实时提供反馈,帮助求职者更好地准备面试。
51 2
|
3月前
|
人工智能 算法 机器人
机器人版的斯坦福小镇来了,专为具身智能研究打造
【8月更文挑战第12天】《GRUtopia:城市级具身智能仿真平台》新论文发布,介绍了一款由上海AI实验室主导的大规模3D城市模拟环境——GRUtopia。此平台包含十万级互动场景与大型语言模型驱动的NPC系统,旨在解决具身智能研究中的数据稀缺问题并提供全面的评估工具,为机器人技术的进步搭建重要桥梁。https://arxiv.org/pdf/2407.10943
216 60
|
6月前
|
自然语言处理 机器人 Go
【飞书ChatGPT机器人】飞书接入ChatGPT,打造智能问答助手
【飞书ChatGPT机器人】飞书接入ChatGPT,打造智能问答助手
359 0
|
3月前
|
机器人 C# 人工智能
智能升级:WPF与人工智能的跨界合作——手把手教你集成聊天机器人,打造互动新体验与个性化服务
【8月更文挑战第31天】聊天机器人已成为现代应用的重要组成部分,提供即时响应、个性化服务及全天候支持。随着AI技术的发展,聊天机器人的功能日益强大,不仅能进行简单问答,还能实现复杂对话管理和情感分析。本文通过具体案例分析,展示了如何在WPF应用中集成聊天机器人,并通过示例代码详细说明其实现过程。使用Microsoft的Bot Framework可以轻松创建并配置聊天机器人,增强应用互动性和用户体验。首先,需在Bot Framework门户中创建机器人项目并编写逻辑。然后,在WPF应用中添加聊天界面,实现与机器人的交互。
98 0
|
3月前
|
机器人 TensorFlow 算法框架/工具
智能聊天机器人
【8月更文挑战第1天】智能聊天机器人。
108 2

热门文章

最新文章