五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

超詳細,教你用python語言實現(xiàn)QQ機器人制作教程

發(fā)布日期:2022-02-03 08:45 | 文章來源:源碼之家

前期準備

1、機器人框架的下載和配置

首先需要一個qq機器人框架,我使用的是基于mirai 以及 MiraiGo 開發(fā)的go-cqhttp(里面有開發(fā)文檔)。

框架下載地址

Windows下32位文件為 go-cqhttp-v*-windows-386.zip

Windows下64位文件為 go-cqhttp-v*-windows-amd64.zip

Windows下arm用(如使用高通CPU的筆記本)文件為 go-cqhttp-v*-windows-arm.zip

選擇合適的壓縮包下載,然后解壓。

雙擊exe文件,出現(xiàn)如下窗口:

輸入1后回車,然后關(guān)閉,此時已經(jīng)在原來的文件目錄下生成了配置文件config.yml。

雙擊config.yml,輸入QQ號和密碼(建議使用無登錄保護的qq,否則可能出現(xiàn)滑塊驗證等問題)。

再轉(zhuǎn)到最后兩行,把注釋去掉。(很重要)

可以參考我的配置:

# go-cqhttp 默認配置文件

account: # 賬號相關(guān)
uin: 1233456 # QQ賬號
password: '123456' # 密碼為空時使用掃碼登錄
encrypt: false # 是否開啟密碼加密
status: 0 # 在線狀態(tài) 請參考 https://docs.go-cqhttp.org/guide/config.html#在線狀態(tài)
relogin: # 重連設(shè)置
delay: 3 # 首次重連延遲, 單位秒
interval: 3 # 重連間隔
max-times: 0 # 最大重連次數(shù), 0為無限制

# 是否使用服務(wù)器下發(fā)的新地址進行重連
# 注意, 此設(shè)置可能導(dǎo)致在海外服務(wù)器上連接情況更差
use-sso-address: true

heartbeat:
# 心跳頻率, 單位秒
# -1 為關(guān)閉心跳
interval: 5

message:
# 上報數(shù)據(jù)類型
# 可選: string,array
post-format: string
# 是否忽略無效的CQ碼, 如果為假將原樣發(fā)送
ignore-invalid-cqcode: false
# 是否強制分片發(fā)送消息
# 分片發(fā)送將會帶來更快的速度
# 但是兼容性會有些問題
force-fragment: false
# 是否將url分片發(fā)送
fix-url: false
# 下載圖片等請求網(wǎng)絡(luò)代理
proxy-rewrite: ''
# 是否上報自身消息
report-self-message: false
# 移除服務(wù)端的Reply附帶的At
remove-reply-at: false
# 為Reply附加更多信息
extra-reply-data: false
# 跳過 Mime 掃描, 忽略錯誤數(shù)據(jù)
skip-mime-scan: false

output:
# 日志等級 trace,debug,info,warn,error
log-level: warn
# 日志時效 單位天. 超過這個時間之前的日志將會被自動刪除. 設(shè)置為 0 表示永久保留.
log-aging: 15
# 是否在每次啟動時強制創(chuàng)建全新的文件儲存日志. 為 false 的情況下將會在上次啟動時創(chuàng)建的日志文件續(xù)寫
log-force-new: true
# 是否啟用 DEBUG
debug: false # 開啟調(diào)試模式

# 默認中間件錨點
default-middlewares: &default
# 訪問密鑰, 強烈推薦在公網(wǎng)的服務(wù)器設(shè)置
access-token: ''
# 事件過濾器文件目錄
filter: ''
# API限速設(shè)置
# 該設(shè)置為全局生效
# 原 cqhttp 雖然啟用了 rate_limit 后綴, 但是基本沒插件適配
# 目前該限速設(shè)置為令牌桶算法, 請參考:
# https://baike.baidu.com/item/%E4%BB%A4%E7%89%8C%E6%A1%B6%E7%AE%97%E6%B3%95/6597000?fr=aladdin
rate-limit:
enabled: false # 是否啟用限速
frequency: 1 # 令牌回復(fù)頻率, 單位秒
bucket: 1 # 令牌桶大小

database: # 數(shù)據(jù)庫相關(guān)設(shè)置
leveldb:
# 是否啟用內(nèi)置leveldb數(shù)據(jù)庫
# 啟用將會增加10-20MB的內(nèi)存占用和一定的磁盤空間
# 關(guān)閉將無法使用 撤回 回復(fù) get_msg 等上下文相關(guān)功能
enable: true

# 連接服務(wù)列表
servers:
# 添加方式,同一連接方式可添加多個,具體配置說明請查看文檔
#- http: # http 通信
#- ws: # 正向 Websocket
#- ws-reverse: # 反向 Websocket
#- pprof: #性能分析服務(wù)器
# HTTP 通信設(shè)置
- http:
# 服務(wù)端監(jiān)聽地址
host: 127.0.0.1
# 服務(wù)端監(jiān)聽端口
port: 5700
# 反向HTTP超時時間, 單位秒
# 最小值為5,小于5將會忽略本項設(shè)置
timeout: 5
# 長輪詢拓展
long-polling:
# 是否開啟
enabled: false
# 消息隊列大小,0 表示不限制隊列大小,謹慎使用
max-queue-size: 2000
middlewares:
<<: *default # 引用默認中間件
# 反向HTTP POST地址列表
post:
#- url: '' # 地址
# secret: '' # 密鑰
- url: 127.0.0.1:5701 # 地址
secret: '' # 密鑰

配置完后直接雙擊exe文件。等待一段時間出現(xiàn)如下窗口:

補充:窗口可能會一直出現(xiàn)如下警告(這個不需要管,是正常現(xiàn)象):

窗口會一直顯示接受到信息,不要關(guān)閉。

2、python的配置和安裝

要實現(xiàn)自動回復(fù)功能的機器人需要借助一種語言,我選擇的是python。

所以需要電腦配置好python環(huán)境和下載編譯器pycharm。可以直接上網(wǎng)找相關(guān)的安裝和配置教程,這里就不展開說了。

具體實現(xiàn)

1、發(fā)送信息

這包括發(fā)送私聊信息和發(fā)送群聊信息。下面的函數(shù)已經(jīng)寫好了,直接調(diào)用函數(shù)傳入?yún)?shù)就行了。

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']  # 回復(fù)類型(群聊/私聊)
 number = resp_dict['number']  # 回復(fù)賬號(群號/好友號)
 msg = resp_dict['msg']  # 要回復(fù)的消息
 # 將字符中的特殊字符進行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("發(fā)送" + payload)
 client.send(payload.encode("utf-8"))
 client.close()
 return 0

(1)比如發(fā)送私聊信息(QQ用接收者的):

resp_dict={'msg_type':'private','number':QQ號,'msg':'你好'}
send_msg(resp_dict)

(2)發(fā)送群聊信息(群號自己用一個):

send_msg({'msg_type': 'group', 'number': QQ群號, 'msg': '大家好'})

(3)當(dāng)然不止發(fā)送文本信息

還可以發(fā)表情、圖片、音樂等。還可以艾特某人。

例如:發(fā)表情

send_msg({'msg_type': 'group', 'number': QQ群號, 'msg': '[CQ:shake]'})

發(fā)窗口抖動

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']))

直接調(diào)用即可(群號隨便用一個)

get_group(QQ群號)

會打印出所有群成員的群昵稱(未編輯群昵稱的打印QQ昵稱)和QQ號。

3、接收上報的事件

下面這個代碼命名為receive.py,之后方便調(diào)用。

這個返回的是事件的上報信息,包括接收到的信息、加好友請求等等。

import socket
import json
ListenSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ListenSocket.bind(('127.0.0.1', 5701))
ListenSocket.listen(100)
HttpResponseHeader = '''HTTP/1.1 200 OK
Content-Type: text/html
'''
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
#需要循環(huán)執(zhí)行,返回值為json格式
def rev_msg():# json or None
 Client, 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_json

4、實現(xiàn)簡單的自動回復(fù)

需要寫一個whil循環(huán)一直接收返回的rev,然后根據(jù)字段里面的信息做出回應(yīng)。

下面的代碼需要改一處地方,改為你機器人的QQ號。

from receive import rev_msg
import socket
import requests
import random
while True:
 try:
  rev = rev_msg()
  print(rev)
  if rev == None:
continue
 except:
  continue
 if rev["post_type"] == "message":
  #print(rev) #需要功能自己DIY
  if rev["message_type"] == "private": #私聊
if rev['raw_message']=='在嗎':
 qq = rev['sender']['user_id']
 send_msg({'msg_type':'private','number':qq,'msg':'我在'})
  elif rev["message_type"] == "group": #群聊
group = rev['group_id']
if "[CQ:at,qq=機器人的QQ號]" in rev["raw_message"]:
 if rev['raw_message'].split(' ')[1]=='在嗎':
  qq=rev['sender']['user_id']
  send_msg({'msg_type':'group','number':group,'msg':'[CQ:poke,qq={}]'.format(qq)})
  else:
continue
 else:  # rev["post_type"]=="meta_event":
  continue

上述代碼實現(xiàn)的是,當(dāng)私聊對方發(fā)送在嗎時回復(fù)我在;

當(dāng)群聊有人艾特并發(fā)送在嗎時會戳一戳對方。

大家也可以去官方文檔查看所有的事件和API,實現(xiàn)各種各樣的功能。

下一篇文章實現(xiàn)更多功能 教你使用python搭建一個QQ機器人實現(xiàn)叫起床服務(wù)

包括定時發(fā)送消息、智能聊天、天氣、星座運勢等等。

以上就是超詳細的教你用python語言實現(xiàn)QQ機器人制作教程的詳細內(nèi)容,更多關(guān)于python語言實現(xiàn)QQ機器人制作教程的資料請關(guān)注本站其它相關(guān)文章!

香港穩(wěn)定服務(wù)器

版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部