50行代码,编写QQ 聊天机器人,每天一句知心话自动发!

简介: 50行代码,编写QQ 聊天机器人,每天一句知心话自动发!

今天一起来看看 NoneBot 这个工具,来编写 QQ 机器人。

”如果我们在人生中体验的每一次转变都让我们在生活中走得更远,那么,我们就真正的体验到了生活想让我们体验的东西。“

”If every unfolding we experience takes us further along in life, then, we are truly experiencing what life is offering.“

安装基础软件

一、安装 NoneBot 库

直接使用 pip 安装即可

1pip 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 号。修改这个文件的如下配置

1{
2    "ws_reverse_api_url": "ws://127.0.0.1:8080/ws/api/",
3    "ws_reverse_event_url": "ws://127.0.0.1:8080/ws/event/",
4    "use_ws_reverse": true
5}

开始历史性的对话

先给出 nonebot 的官方文档地址:https://none.rclab.tk/guide/getting-started.html,感兴趣的同学也可以去官网查看。

下面我们先跑一下官网上的基础例子,

1import nonebot
2
3
4if __name__ == "__main__":
5    nonebot.init()
6    nonebot.load_builtin_plugins()
7    nonebot.run(host='127.0.0.1', port=8080)

运行该程序,我们可以在控制台看到如下日志:

1[2019-04-05 19:31:18,281 nonebot] INFO: Succeeded to import "nonebot.plugins.base"
2[2019-04-05 19:31:18,281 nonebot] INFO: Running on 127.0.0.1:8080
3Running on https://127.0.0.1:8080 (CTRL + C to quit)
4[2019-04-05 19:31:18,282] ASGI Framework Lifespan error, continuing without Lifespan support
5[2019-04-05 19:31:18,283 nonebot] INFO: Scheduler started
6[2019-04-05 19:31:20,490] 127.0.0.1:6568 GET /ws/api/ 1.1 101 - 2987
7[2019-04-05 19:31:20,493] 127.0.0.1:6569 GET /ws/event/ 1.1 101 - 1154

可以看到现在程序运行在了本地的 8080 端口,而且本地的 6568 和 6569 端口也连接到了本服务,就是我们在 HTTP API 插件的配置文件中做的配置

1    "ws_reverse_api_url": "ws://127.0.0.1:8080/ws/api/",
2    "ws_reverse_event_url": "ws://127.0.0.1:8080/ws/event/",

现在我们向这个机器人账号发送下消息

1/echo 你好

在控制台可以看到日志如下:

1[2019-04-05 19:37:59,614 nonebot] INFO: Self: 3412355667, Message 56 from 736552883: /echo 你好
2[2019-04-05 19:37:59,614 nonebot] DEBUG: Parsing command: /echo 你好
3[2019-04-05 19:37:59,614 nonebot] DEBUG: Matched command start: /
4[2019-04-05 19:37:59,614 nonebot] DEBUG: Split command name: ('echo',)
5[2019-04-05 19:37:59,614 nonebot] DEBUG: Command ('echo',) found, function: <function echo at 0x040DB2B8>
6[2019-04-05 19:37:59,614 nonebot] DEBUG: New session of command ('echo',) created
7[2019-04-05 19:37:59,615 nonebot] DEBUG: Running command ('echo',)
8[2019-04-05 19:37:59,738 nonebot] DEBUG: Session of command ('echo',) finished
9[2019-04-05 19:37:59,739 nonebot] INFO: Message 56 is handled as a command

同时我们的机器人账号也自动回复了“你好”给我们。

真实“历史性”的时刻!!

增强机器人功能之配置文件

增加 config.py 文件,输入内容如下:

1from nonebot.default_config import *
2
3
4SUPERUSERS = {123456}
5COMMAND_START = {'', '/', '!', '/', '!'}
6HOST = '0.0.0.0'
7PORT = 8080

SUPERUSERS:是配置一个超级 QQ 用户,我们可以为这个超级用户配置一些特殊的操作;

COMMAND_START:是配置命令起始字符,我们增加了空字符串,所以不需要任何起始字符也能调用命令;

另外就是配置了 host 和 端口 port。

然后我们就可以修改原来的文件为:

1import nonebot
2import config
3
4
5if __name__ == "__main__":
6    nonebot.init(config)
7    nonebot.load_builtin_plugins()
8    nonebot.run()

下面我们就可以编写自己的命令了。

增强机器人功能之编写命令

这里要注意的是,所有的语法都是 asyncio 异步编程,需要了解简介的,可以查看这里。

获取每日一句

我们使用金山词霸的 API 获取每日一句内容,http://open.iciba.com/dsapi/

1def get_content():
2    url = 'http://open.iciba.com/dsapi/'
3    res = requests.get(url)
4    content_e = res.json()['content']
5    content_c = res.json()['note']
6    return [content_c, content_e]

这样就获取到一个”每日一句“的列表了。

编写自己的插件

创建一个 plugins 文件夹,在里面创建 daily.py 文件,编写如下代码

1from nonebot import on_command, CommandSession
 2from utils import getdata
 3
 4
 5@on_command('daily', aliases=('每日一句',))
 6async def daily(session: CommandSession):
 7    daily_send = await get_daily()
 8    await session.send(daily_send[0])
 9    await session.send(daily_send[1])
10
11
12async def get_daily():
13    daily_sentence = getdata.get_content()
14    return daily_sentence

使用 on_command 装饰器声明一个命令处理器,声明两个命令,分别是 ”daily“ 和 ”每日一句“,当用户向本机器人发送这两个命令时,就会自动调用 daily 这个函数,并且发送对应的消息。

而 get_daily 函数,就是调用金山词霸的 API 函数,来获取内容。

最后修改主文件内容,加载自己编写的插件

1import nonebot
2import config
3from os import path
4
5
6if __name__ == "__main__":
7    nonebot.init(config)
8    nonebot.load_plugins(path.join(path.dirname(__file__), 'plugins'), 'plugins')
9    nonebot.run()

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

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


相关文章
|
JSON 机器人 API
50行代码,编写QQ 聊天机器人,每天一句知心话自动发!
今天一起来看看 NoneBot 这个工具,来编写 QQ 机器人。
50行代码,编写QQ 聊天机器人,每天一句知心话自动发!
|
2月前
|
传感器 人工智能 监控
智能耕耘机器人
智能耕耘机器人
45 3
|
6月前
|
人工智能 自然语言处理 机器人
智能电话机器人核心技术:自然语言处理
什么是自然语言处理? 自然语言处理是计算机科学领域与人工智能领域中的一个重要方向.它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法.自然语言处理是一门融语言学、计算机科学、数学于一体的科学.因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别. 自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统.因而它是计算机科学的一部分. 自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域.
|
1月前
|
传感器 人工智能 自然语言处理
智能咖啡厅助手:人形机器人 +融合大模型,行为驱动的智能咖啡厅机器人
智能咖啡厅助手:人形机器人 +融合大模型,行为驱动的智能咖啡厅机器人
智能咖啡厅助手:人形机器人 +融合大模型,行为驱动的智能咖啡厅机器人
|
2月前
|
传感器 机器学习/深度学习 算法
植保机器人具备智能感知与决策能力
植保机器人具备智能感知与决策能力
19 2
|
3月前
|
传感器 搜索推荐 机器人
具身智能赋能人形机器人产业将蓬勃发展
【1月更文挑战第12天】具身智能赋能人形机器人产业将蓬勃发展
48 3
具身智能赋能人形机器人产业将蓬勃发展
|
3月前
|
机器学习/深度学习 人工智能 算法
智能AI机器人管家
应用场景:四层别墅,每层面积1000平+,有自己的地下停车场,地下酒窖,阳光房,花园,广场。在此场景下想做一个智能机器人管家。 主要功能: 1、自动跟随制定的人,可以根据设定的人的语音指令做一些动作,比如:停下、充电、倒退、去某个地方等等。 2、可以根据设定的人的语音回答一些常见问题,比如:今天天气,股票走势,黄金走势,钢铁走势等能够从网上直接获取到的信息。 3、可以根据设定的人的语音回答一些本地问题,比如家里还有多少酒,调一下某地的监控,花房的温度多少,打开某房间的空调。 4、可以帮助做一些本企业决策性的问题。
|
3月前
|
人工智能 自然语言处理 搜索推荐
基于阿里云向量检索服务搭建AI智能问答机器人
基于阿里云向量检索服务搭建AI智能问答机器人
123291 38
|
4月前
|
自然语言处理 机器人 数据库
【Python自然语言处理+tkinter图形化界面】实现智能医疗客服问答机器人实战(附源码、数据集、演示 超详细)
【Python自然语言处理+tkinter图形化界面】实现智能医疗客服问答机器人实战(附源码、数据集、演示 超详细)
73 2
|
4月前
|
机器学习/深度学习 自然语言处理 机器人
【Tensorflow+自然语言处理+LSTM】搭建智能聊天客服机器人实战(附源码、数据集和演示 超详细)
【Tensorflow+自然语言处理+LSTM】搭建智能聊天客服机器人实战(附源码、数据集和演示 超详细)
195 0

热门文章

最新文章