网站建设技术总结,快递网站推广怎么做,2018年互联网大会,wordpress theme one-column使用 NoneBot 这个工具#xff0c;来编写 QQ 机器人。
安装基础软件
一、安装 NoneBot 库
直接使用 pip 安装即可
pip install nonebot二、安装酷Q 软件和 HTTP API 插件
酷Q 软件可以直接到官网下载#xff0c;https://cqp.cc/b/news#xff0c;或者可以到网盘下载来编写 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(host127.0.0.1, port8080)运行该程序我们可以在控制台看到如下日志
[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 8080SUPERUSERS是配置一个超级 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 getdataon_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()接下来我们测试一下这个简单的机器人效果如何 看起来效果还不错哈哈哈以后再慢慢增加更加强大的功能吧。