QQ机器人制作教程,超详细
目錄
- 前期準備
- 1、機器人框架的下載和配置
- 2、python的配置和安裝
- 具體實現
- 1、發送信息
- 2、獲取群成員列表
- 3、接收上報的事件
- 4、實現簡單的自動回復
- 5、解決重復接收消息的問題(多次回復問題)
- 第二、三篇文章實現更多功能
- 完整項目下載地址(配置了python環境)
- 完整項目下載地址(電腦沒有python環境)
完整項目包括框架、代碼和詳細使用說明可以去鏈接下載(下載完只需要按照使用說明修改幾處地方即可搭建成功!):
QQ機器人基礎版(文章1-2所有功能)
QQ機器人多功能版(文章1-3所有功能)
最新功能請看第二篇文章:搭建一個QQ機器人叫女朋友起床!
前期準備
1、機器人框架的下載和配置
(1)首先需要一個qq機器人框架,我使用的是基于mirai 以及 MiraiGo 開發的go-cqhttp(里面有開發文檔)。
框架下載地址
windows推薦下載這個,linux我沒試過自己去看文檔哈。
下載后解壓得到三個文件。
(2)雙擊exe文件,出現如下窗口,一直點擊確定就行了(3次):
然后會生成一個批處理文件,雙擊它(以后也是直接用它)
輸入0后回車,然后關閉,此時已經在原來的文件目錄下生成了配置文件config.yml。
(3)雙擊config.yml,輸入QQ號和密碼(建議使用無登錄保護的qq,否則可能出現滑塊驗證等問題)。
也可以不輸入賬號密碼,直接運行那個bat文件會出現二維碼掃碼登錄,這樣更加安全。
再轉到最后兩行,把前面的#去掉使其生效。(很重要!!很重要!!)
(4)配置完后直接雙擊bat文件。等待一段時間出現如下窗口:
這兩個端口都應該出現(很重要):
更多問題請看幫助文檔。
補充:窗口可能會一直出現如下警告(這個不需要管,是正常現象):
窗口會一直顯示接收到信息,不要關閉。
2、python的配置和安裝
電腦沒有python環境或者覺得配置太麻煩可直接購買exe版本,只要有電腦就可以運行。
QQ機器人基礎版exe
QQ機器人多功能版exe
同樣里面都有使用說明,配置更加方便
要實現自動回復功能的機器人需要借助一種語言,我選擇的是python。
所以需要電腦配置好python環境和安裝集成開發環境pycharm。安裝教程可以看我的文章—>>>python安裝詳細教程
當然在實現所有功能之前需要安裝一些第三方庫,這個不知道的也可以百度。
具體實現
1、發送信息
這包括發送私聊信息和發送群聊信息。下面的函數已經寫好了,直接調用函數傳入參數就行了。
import socket def send_msg(resp_dict):client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)ip = '127.0.0.1'client.connect((ip, 5700))msg_type = resp_dict['msg_type'] # 回復類型(群聊/私聊)number = resp_dict['number'] # 回復賬號(群號/好友號)msg = resp_dict['msg'] # 要回復的消息# 將字符中的特殊字符進行url編碼msg = msg.replace(" ", "%20")msg = msg.replace("\n", "%0a")if msg_type == 'group':payload = "GET /send_group_msg?group_id=" + str(number) + "&message=" + msg + " HTTP/1.1\r\nHost:" + ip + ":5700\r\nConnection: close\r\n\r\n"elif msg_type == 'private':payload = "GET /send_private_msg?user_id=" + str(number) + "&message=" + msg + " HTTP/1.1\r\nHost:" + ip + ":5700\r\nConnection: close\r\n\r\n"print("發送" + payload)client.send(payload.encode("utf-8"))client.close()return 0(1)比如發送私聊信息(QQ用接收者的):
resp_dict={'msg_type':'private','number':QQ號,'msg':'你好'} send_msg(resp_dict)
(2)發送群聊信息(群號自己用一個):
(3)當然不止發送文本信息,還可以發表情、圖片、音樂等。還可以艾特某人。
例如:發表情
發窗口抖動
send_msg({'msg_type': 'group', 'number': QQ群號, 'msg': '[CQ:shake]'})還有很多CQcode可以去官方文檔查看:http://docs.go-cqhttp.org/cqcode/
2、獲取群成員列表
import requests def get_group(id):response = requests.post('http://127.0.0.1:5700/get_group_member_list?group_id='+str(id)).json()for i in response['data']:if(i['card']!=''):print(i['card']+str(i['user_id']))else:print(i['nickname']+str(i['user_id']))直接調用即可(群號隨便用一個)
get_group(QQ群號)會打印出所有群成員的群昵稱(未編輯群昵稱的打印QQ昵稱)和QQ號。
3、接收上報的事件
下面這個代碼命名為receive.py,之后方便調用(不要運行這個代碼,否則端口會沖突)。這個返回的是事件的上報信息,包括接收到的信息、加好友請求等等。
import socket import jsonListenSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ListenSocket.bind(('127.0.0.1', 5701)) ListenSocket.listen(100)HttpResponseHeader = '''HTTP/1.1 200 OK\r\n Content-Type: text/html\r\n\r\n '''def request_to_json(msg):for i in range(len(msg)):if msg[i]=="{" and msg[-1]=="\n":return json.loads(msg[i:])return None#需要循環執行,返回值為json格式 def rev_msg():# json or NoneClient, Address = ListenSocket.accept()Request = Client.recv(1024).decode(encoding='utf-8')rev_json=request_to_json(Request)Client.sendall((HttpResponseHeader).encode(encoding='utf-8'))Client.close()return rev_json4、實現簡單的自動回復
需要寫一個while循環一直接收返回的rev,然后根據字段里面的信息做出回應。
下面的代碼需要改一處地方,改為你機器人的QQ號。
可以把下面的代碼命名為main.py,之后的代碼都是在這里面加的。需要一直運行,不能關閉。
上述代碼實現的是,當私聊對方發送在嗎時回復我在;當群聊有人艾特并發送在嗎時會戳一戳對方。
大家也可以去官方文檔查看所有的事件和API,實現各種各樣的功能。
5、解決重復接收消息的問題(多次回復問題)
接收本地端口的數據時會有重復的報文(大概6次),就像這樣:
解決辦法一:
出現這種問題的小伙伴檢查一下receive.py,其中的HttpResponseHeader應該和我這樣才對。
解決辦法二:(不推薦,比較麻煩)
查看了一下接收到的數據,發現每條信息會被重復接收,于是在while循環里修改對接收數據的處理。
這就需要判斷消息的id,如果遇到重復消息id的數據就不做處理。
(1)在while循環外面增加一個列表
判斷接收數據的message_id是否在列表里,在的話就說明是重復數據,那就不處理。并且由于程序一直在運行,list會不斷變大,于是我加了一個判斷,如果列表長度大于50就清空。
(2)接收數據的代碼替換成以下代碼
以前是這樣:
修改之后:
這樣就不會出現重復接收數據的情況。
第二、三篇文章實現更多功能
實現了更多功能,包括定時發送消息、智能聊天、天氣、星座運勢、生日書、獲取歌詞、點歌、爆照等等。
第二文章地址:搭建一個QQ機器人叫女朋友起床!
第三篇文章地址:搭建一個多功能機器人詳細教程
首先感謝大家對本文的支持,第二、三篇文章功能更多,跪求大家的支持!!!
完整項目下載地址(配置了python環境)
完整項目包括框架、代碼和詳細使用說明可以去鏈接下載(下載完只需要按照使用說明修改幾處地方即可搭建成功!):
QQ機器人基礎版(文章1-2所有功能)
QQ機器人多功能版(文章1-3所有功能)
使用說明是word版本,說的十分詳細,分為以下四個方面:
完整項目下載地址(電腦沒有python環境)
電腦沒有python環境或者覺得配置太麻煩可直接購買exe版本,只要有電腦就可以運行!!
QQ機器人基礎版exe
QQ機器人多功能版exe
同樣里面都有使用說明,配置更加方便(強烈推薦)!!
但是這也有一個壞處,就是不可編程修改,功能已經固定了,十分適合新手!!
個人主頁(含在線語音對話機器人和一些有趣的功能):皮小孩的個人主頁
總結
以上是生活随笔為你收集整理的QQ机器人制作教程,超详细的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UNP Chapter 22 - 信号驱
- 下一篇: Go学习笔记—锁(sync包)