参考:
- 使用python打造一个自己的QQ机器人
- Python实现聊天机器人的示例代码
提示:酷Q目前已经被封了,文章看看就行了。
准备工作
首先下载酷Q,下载地址 提取码: a4q8,并解压
还需要一个插件,下载地址 提取码: fyai
把这个文件复制到酷Q根目录(就是那个含有CQA.exe的文件夹)下的app文件夹,运行CQA.exe
输入自己的QQ账号密码(可以注册一个专门给机器人用)并登录
可能会卡一下,等一会就好了
进行身份验证(如果有)
登进去之后,会有悬浮窗和托盘图标
右击托盘图标,选择应用→应用管理,点击CQHTTP,点击右侧的启用
图示:
按照指示点击后,应该会有一个控制台窗口:
如果没有第三行也没事,我这是配置过的,配置方法:
首先打开酷Q根目录\data\app\io.github.richardchien.coolqhttpapi\config\你的qq号.json,例如我的QQ号是123456789,那么配置文件就是123456789.json,用记事本打开,这是我的配置,大家可以参考一下:
{
"host":"[::]",
"port":5700,
"use_http":true,
"ws_host":"[::]",
"ws_port":6700,
"use_ws":false,
"ws_reverse_url":"",
"ws_reverse_api_url":"",
"ws_reverse_event_url":"",
"ws_reverse_reconnect_interval":3000,
"ws_reverse_reconnect_on_code_100":true,
"use_ws_reverse":false,
"post_url":"http://127.0.0.1:5701/message",
"access_token":"",
"secret":"",
"port_message_format":"array",
"serve_data_files":false,
"update_source":"github",
"update_channel":"stable",
"auto_check_update":false,
"auto_perform_update":false,
"show_log_console":true,
"log_level":"info"
}
其中的post_url就是当QQ接收到消息了,就会上报的URL
最后,要安装几个需要用的库
flask
aiml
urllib(不知道是不是自带的)
requests
安装也很简单(前提是你已经安装好Python并配置好环境变量)
pip install (库名)
代码
首先应该建立一个服务器,侦听那个post_url,我采用flask
from flask import Flask
#Build the server
server = Flask(__name__)
#Start the server
server.run(port = 5701)
接下来就是处理请求
@server.route('/message',methods=['POST'])
def callback():
#Send the message
qq = 接收消息的QQ号
api_url = 'http://127.0.0.1:5700/send_private_msg'
data = {
'user_id':qq,
'message':'This is a callback',
'auto_escape':False
}
r = requests.post(api_url,data=data)
return ''
为了提高可玩性,我加了几个有趣的功能
#各种前缀(关键词)
if msg.strip().startswith('音乐:') or msg.strip().startswith('音乐:'):
api_url = 'http://127.0.0.1:5700/send_private_msg'
data = {
'user_id':qq,
'message':'已为您搜索音乐%s'%msg.strip('音乐:').strip('音乐:'),
'auto_escape':False
}
r = requests.post(api_url,data=data)
webbrowser.open('https://www.kugou/yy/html/search.html#searchType=song&searchKeyWord=%s'%msg.strip('音乐:').strip('音乐:'))
return ''
elif msg.strip().startswith('网页:') or msg.strip().startswith('网页:'):
api_url = 'http://127.0.0.1:5700/send_private_msg'
data = {
'user_id':qq,
'message':'已为您搜索网页%s'%msg.strip('网页:').strip('网页:'),
'auto_escape':False
}
r = requests.post(api_url,data=data)
webbrowser.open('https://www.baidu/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=%s'%msg.strip('网页:').strip('网页:'))
return ''
elif msg.strip().startswith('文章:') or msg.strip().startswith('文章:'):
api_url = 'http://127.0.0.1:5700/send_private_msg'
data = {
'user_id':qq,
'message':'已为您搜索文章%s'%msg.strip('文章:').strip('文章:'),
'auto_escape':False
}
r = requests.post(api_url,data=data)
webbrowser.open('https://wenku.baidu/search?word=%s'%msg.strip('文章:').strip('文章:'))
return ''
elif '天气' in msg.lower().strip() or 'weather' in msg.lower().strip():
weather_data = Get_weather_data()
weather_forecast_txt, forecast = Show_weather(weather_data)
data = {
'user_id':qq,
'message':weather_forecast_txt,
'auto_escape':False
}
r = requests.post(api_url,data=data)
return ''
最后,因为python的aiml只能处理英文,所以需要翻译
class translator(object):
def __init__(self,a,b):
pass
def translate(self,word):
string = word
data = {
'doctype': 'json',
'type': 'AUTO',
'i':string
}
url = "http://fanyi.youdao/translate"
r = requests.get(url,params=data)
result = r.json()
translate_result = result['translateResult'][0][0]["tgt"]
return translate_result
成品
最后,完整代码(代码里面的变量city_name要改)
更多推荐
使用Python编写一个QQ聊天机器人
发布评论