30分钟写一个简单QQ自动回复机器人

本帖最后由 tipistop 于 2019117 11:01 编辑
环境要求
linux服务器(阿里云搞活动很便宜可以看我签名)
酷Qdocker+CoolQ HTTP API 擦件
NoneBot
docker
简单介绍
简单介绍一下原理是什么。
在酷Q中登录你的QQ账号

30分钟写一个简单QQ自动回复机器人

本帖最后由 tipistop 于 2019117 11:01 编辑

环境要求

linux服务器(阿里云搞活动很便宜可以看我签名)

酷Qdocker+CoolQ HTTP API 擦件

NoneBot

docker

简单介绍

简单介绍一下原理是什么。

在酷Q中登录你的QQ账号,「酷Q」接管你的消息,并将QQ的所有消息请求和发送进行封装成一些接口,供“擦件”进行进一步接管和调用。

酷Q的擦件后缀都是.cpk,需要安装在酷Q的内部。

「CoolQ HTTP API 擦件」作用就是专门针对“http请求以及信息处理”方面的擦件,使用的语言当然是与酷Q一致的(易语言好像是)

会易语言的开发者还是蛮少的吧…emmm

「NoneBot」就像一个翻译官,将「CoolQ HTTP API 擦件」的擦件全部转变成“Python的方法”。

「CoolQ HTTP API 擦件」有很多个不同语言的翻译官,方便使用不同语言的开发者直接处理酷Q的信息。

这样,我们直接写Python文件,就能直接接收或者发送QQ消息啦!

开始

开始安装!

#1. 安装docker

brew install docker

#2. 安装酷Q+http擦件集成镜像

docker pull richardchien/cqhttp:latest

#3. 安装nonebot

pip3 install nonebot复制代码

我们在docker中先启用酷Q

docker run ti rm name cqhttptest v $(pwd)/coolq:/home/user/coolq p 9001:9000 p 5701:5700 e COOLQ_ACCOUNT=123456 e CQHTTP_POST_URL=http://example.com:8080 e CQHTTP_SERVE_DATA_FILES=yes richardchien/cqhttp:latest复制代码

上面的命令如果需要改,就改9001和5701就可以了,其它的不用修改。

其中:

9001端口号就是登录酷Q的端口号

5001端口号是HTTP API 擦件开放的端口,这个不用管。如果需要启用多个酷Q,保证这个端口号和容器名称cqhttptest不重复即可

启动之后,打开127.0.0.1:9001,如果部署到Linux服务器上面就是ip地址:9001

打开页面之后,会要求输入密码,密码默认是MAX8char。进入之后就是一个类似QQ登录界面,输入账号密码即可。(第一次登录可能要输入验证码)

此时,酷Q其实就是以一个安卓手机的身份登录了你的QQ,并接管了你的所有消息处理。「CoolQ HTTP API 擦件」同时也在开放接口供其他擦件进行调用。

接下来,我们需要使用nonebot 模块,使用Python代码接管QQ消息的接收和发送。

在coolq/data/app/io.github.richardchien.coolqhttpapi/config/里面有<你的登录的QQ号>.json 文件,打开,并修改(如果没有则增加)三个变量为对应的值

{

“ws_reverse_api_url”: “ws://127.0.0.1:9999/ws/api/”,

“ws_reverse_event_url”: “ws://127.0.0.1:9999/ws/event/”,

“use_ws_reverse”: true

}复制代码

!> 如果docker部署电脑上的,把 127.0.0.1 改成host.docker.internal

!> 如果docker是部署在Linux服务器上的,把127.0.0.1改成172.17.0.1

这个给作就是让「CoolQ HTTP API 擦件」把接收信息和发送的信息借给noneboot 模块来接管。

所以,开始通过noneboot模块,使用Python开发吧。

可以用pycharm ide,当然也可以直接新建一个文件夹,使用命令行启用。

我们直接用命令行来启动。

cd ~/Document

mkdir qqboot_test

touch boot.pycd qqboot_test & mkdir plugin

第一条指令cd切换到指定目录,后面的指令,你可以完全一样。

打开boot.py,我们复制粘贴下面的代码:

import nonebotfrom os import path

if __name__ == ‘__main__’:

nonebot.init()

nonebot.load_plugins(

path.join(path.dirname(__file__),’plugins’),

‘plugins’

)

nonebot.run(host=’127.0.0.1′, port=9999)复制代码

我们之前用ws://127.0.0.1:9999/ws/api/接管「CoolQ HTTP API 擦件」擦件的消息处理。

上面的代码的作用启动noneboot模块,并且绑定到host的指定端口处。

!> 如果是本机电脑运行的boot.py 程序,host填写127.0.0.1即可

!> 如果是Linux服务器部署的boot.py 程序,host 改成0.0.0.0

上面我们在qqboot_test项目里面新建了一个plugins文件夹,并且在boot.py指明擦件文件夹的位置了。

现在在这个擦件文件夹创建一个文件吧。

touch user.py复制代码

在具体开发之前简单介绍一下noneboot的处理逻辑。

有两种方式:

noneboot 接收到用户发来的消息(自然语言),通过匹配消息的关键字,执行指定的命令函数。

noneboot 直接接收命令,然后直接指定命令函数代码

用户发送/文字的格式表示发送文字为名称的命令

我们通过第一种方式处理用户自然语言的信息。

比如,当用户发下面的句子

今天天气怎么样?

天气

天气好吗

北京天气复制代码

在user.py文件里面编辑:

@on_natural_language(keywords={‘天气’})async def _(session: NLPSession):

# 返回意图命令,前两个参数必填,分别表示置信度和意图命令名

return IntentCommand(60.0, ‘weather’)

@on_command(‘weather’, aliases=(‘天气’))async def weather(session: CommandSession):

# 从会话状态(session.state)中获取城市名称(city),如果当前不存在,则询问用户

city = session.get(‘city’, prompt=’你的城市是’)

weather_report = await get_weather(city)

# 向用户发送天气预报

await session.send(weather_report)

async def get_weather(city: str) > str:

# 这里简单返回一个字符串

return city+”的天气不错”复制代码

代码分为三个部分:

第一部分是解析自然语言,只要包含keywords里面的关键字就会进行对应的命令处理weather

第二部分是命令处理函数,aliases是别名,意思是通过/[aliases]这种方式就可以直接执行命令函数

第三部分是异步请求返回天气预报,这个正是noneBoot的一个特色。

最后就是启动这个项目即可:

python3 boot.py复制代码

这个命令启动之后,你会看到console输出中有酷Q接管的所有信息输出。

以上就是一个简单的QQ聊天机器人的开发以及部署。

把机器人部署到服务器的docker上面,如果愿意可以有很多的创意,比如夜晚时间接收到任何信息都会自动回复“夜晚休息,上线后处理”

但唯一可能的问题是docker中启动酷Q后,手机上不能再次登录相同的QQ号了。

祝使用愉快~

2楼:感谢分享

3楼:感谢分享,希望不是卖主机的

4楼:wshdliu 发表于 2019117 11:49

感谢分享

不客气哈

5楼:这个不错1~!~!~

6楼:虽然看不懂 但是好像很厉害的样子

7楼:本帖最后由 宿灬命 于 2019117 23:07 编辑

酷Q、MPQ、晨风等QQ机器人哪个不行。。。而且玩Q机器人的看到你这个表示只是笑笑。这个没人玩。。。都是文字游戏,网站接口。以及信息处理,陪聊,以及自动群管

8楼:秀啊

我分享一个稍微简单的办法(使用门槛低一些)

1.首先在自己的Windows电脑,或者各种云平台搞一个Windows的环境(简单来说就是你需要一个Windows系统的机器,哪来的都行)

2. 到酷Q的官网下载程序(百度搜酷Q,第一个应该就是了,提供有免费版本的)

3. 安装运行起来吧少年,然后登录你的QQ

4. 现在你已经拥有一个啥都不会做的机器人了。

5. 如果想要你的机器人拥有更多技能,可以到酷Q社区寻找一些擦件(简单的擦件能找到很多免费的,社区也有使用说明)

6. 如果你想要一个能够自动回复消息的机器人,可以了解下图灵机器人,酷Q+图灵,基本实现了自动回复,简单好用。

分割线

以上对没有任何编程经验或者电脑新手比较友好,如果你想要你的机器人更加优秀,可以继续向下看

1. 自己学习制作擦件,社区上应该是有一些教程的

2. 使用楼主说的CoolQ HTTP API擦件,把消息转发到其他服务上,然后继续二次开发(可以理解为,酷Q接收到QQ消息,转身发给你,你对消息进行处理,然后再返回给酷Q,酷Q再把消息返回)

说明一下:

楼主分享的很详细,超赞👍。我也不是来拆台的,分享一下新手友好的方式给福娃们,大家根据需要自行选择。

9楼:brew不是mac的命令吗?

10楼:虽然看不懂,但是感觉很厉害的样子,收藏了 以后一定会用到

11楼:会封号么

(0)

相关推荐