使用Python编写一个QQ聊天机器人

编程知识 更新时间:2023-05-03 03:40:36

参考:

  • 使用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聊天机器人

本文发布于:2023-04-30 10:33:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/9c04e58b2aca8cbe0ee25e8042dece3a.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:机器人   Python   QQ

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 114057文章数
  • 28910阅读数
  • 0评论数