亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

超詳細(xì),教你用python語(yǔ)言實(shí)現(xiàn)QQ機(jī)器人制作教程

 更新時(shí)間:2021年08月30日 17:01:22   作者:……快樂(lè)的√4  
這篇文章主要介紹了如何python語(yǔ)言實(shí)現(xiàn)QQ機(jī)器人,用圖文詳細(xì)的描述了其中的操作步驟,非常的簡(jiǎn)單易上手,有需要的朋友可以參考下

前期準(zhǔn)備

1、機(jī)器人框架的下載和配置

首先需要一個(gè)qq機(jī)器人框架,我使用的是基于mirai 以及 MiraiGo 開(kāi)發(fā)的go-cqhttp(里面有開(kāi)發(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)閉,此時(shí)已經(jīng)在原來(lái)的文件目錄下生成了配置文件config.yml。

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

在這里插入圖片描述

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

在這里插入圖片描述

可以參考我的配置:

# go-cqhttp 默認(rèn)配置文件

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

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

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

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

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

# 默認(rèn)中間件錨點(diǎn)
default-middlewares: &default
  # 訪問(wèn)密鑰, 強(qiáng)烈推薦在公網(wǎng)的服務(wù)器設(shè)置
  access-token: ''
  # 事件過(guò)濾器文件目錄
  filter: ''
  # API限速設(shè)置
  # 該設(shè)置為全局生效
  # 原 cqhttp 雖然啟用了 rate_limit 后綴, 但是基本沒(méi)插件適配
  # 目前該限速設(shè)置為令牌桶算法, 請(qǐng)參考:
  # 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ù)庫(kù)相關(guān)設(shè)置
  leveldb:
    # 是否啟用內(nèi)置leveldb數(shù)據(jù)庫(kù)
    # 啟用將會(huì)增加10-20MB的內(nèi)存占用和一定的磁盤空間
    # 關(guān)閉將無(wú)法使用 撤回 回復(fù) get_msg 等上下文相關(guān)功能
    enable: true

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

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

在這里插入圖片描述

在這里插入圖片描述

補(bǔ)充:窗口可能會(huì)一直出現(xiàn)如下警告(這個(gè)不需要管,是正?,F(xiàn)象):

在這里插入圖片描述

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

2、python的配置和安裝

要實(shí)現(xiàn)自動(dòng)回復(fù)功能的機(jī)器人需要借助一種語(yǔ)言,我選擇的是python。

所以需要電腦配置好python環(huán)境和下載編譯器pycharm??梢灾苯由暇W(wǎng)找相關(guān)的安裝和配置教程,這里就不展開(kāi)說(shuō)了。

具體實(shí)現(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ù)賬號(hào)(群號(hào)/好友號(hào))
    msg = resp_dict['msg']  # 要回復(fù)的消息
    # 將字符中的特殊字符進(jìn)行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號(hào),'msg':'你好'}
send_msg(resp_dict)

在這里插入圖片描述

(2)發(fā)送群聊信息(群號(hào)自己用一個(gè)):

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

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

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

例如:發(fā)表情

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

發(fā)窗口抖動(dòng)

send_msg({'msg_type': 'group', 'number': QQ群號(hào), '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)用即可(群號(hào)隨便用一個(gè))

get_group(QQ群號(hào))

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

3、接收上報(bào)的事件

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

這個(gè)返回的是事件的上報(bào)信息,包括接收到的信息、加好友請(qǐng)求等等。

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、實(shí)現(xiàn)簡(jiǎn)單的自動(dòng)回復(fù)

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

在這里插入圖片描述

下面的代碼需要改一處地方,改為你機(jī)器人的QQ號(hào)。

在這里插入圖片描述

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=機(jī)器人的QQ號(hào)]" 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

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

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

請(qǐng)?zhí)砑訄D片描述

請(qǐng)?zhí)砑訄D片描述

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

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

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

以上就是超詳細(xì)的教你用python語(yǔ)言實(shí)現(xiàn)QQ機(jī)器人制作教程的詳細(xì)內(nèi)容,更多關(guān)于python語(yǔ)言實(shí)現(xiàn)QQ機(jī)器人制作教程的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解決pycharm修改代碼后第一次運(yùn)行不生效的問(wèn)題

    解決pycharm修改代碼后第一次運(yùn)行不生效的問(wèn)題

    這篇文章主要介紹了解決pycharm修改代碼后第一次運(yùn)行不生效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • Python 找出出現(xiàn)次數(shù)超過(guò)數(shù)組長(zhǎng)度一半的元素實(shí)例

    Python 找出出現(xiàn)次數(shù)超過(guò)數(shù)組長(zhǎng)度一半的元素實(shí)例

    這篇文章主要介紹了Python 找出出現(xiàn)次數(shù)超過(guò)數(shù)組長(zhǎng)度一半的元素實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • 利用Python批量處理多個(gè)txt文本的示例代碼

    利用Python批量處理多個(gè)txt文本的示例代碼

    這篇文章主要給大家介紹了關(guān)于如何利用Python批量處理多個(gè)txt文本的方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-10-10
  • 淺談Python的自省Introspection和反射機(jī)制Reflection

    淺談Python的自省Introspection和反射機(jī)制Reflection

    這篇文章主要介紹了淺談Python的自省Introspection和反射機(jī)制Reflection,反射就是通過(guò)字符串的形式去對(duì)象(模塊)中操作(查找/獲取/刪除/添加)成員,一種基于字符串的事件驅(qū)動(dòng),需要的朋友可以參考下
    2023-08-08
  • wxPython實(shí)現(xiàn)帶顏色的進(jìn)度條

    wxPython實(shí)現(xiàn)帶顏色的進(jìn)度條

    這篇文章主要介紹了wxPython實(shí)現(xiàn)帶顏色的進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Python如何使用Scapy實(shí)現(xiàn)端口探測(cè)

    Python如何使用Scapy實(shí)現(xiàn)端口探測(cè)

    Scapy 是一款使用純Python編寫的跨平臺(tái)網(wǎng)絡(luò)數(shù)據(jù)包操控工具,它能夠處理和嗅探各種網(wǎng)絡(luò)數(shù)據(jù)包,本文主要介紹了Python如何使用使用Scapy實(shí)現(xiàn)端口探測(cè),有需要的可以參考下
    2023-10-10
  • Python中的With語(yǔ)句的使用及原理

    Python中的With語(yǔ)句的使用及原理

    這篇文章主要介紹了Python中的With語(yǔ)句的使用及原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 梅爾倒譜系數(shù)(MFCC)實(shí)現(xiàn)

    梅爾倒譜系數(shù)(MFCC)實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了梅爾倒譜系數(shù)(MFCC)實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • python錯(cuò)誤提示:Errno?2]?No?such?file?or?directory的解決方法

    python錯(cuò)誤提示:Errno?2]?No?such?file?or?directory的解決方法

    我相信很多人在學(xué)習(xí)Python的時(shí)候,特別是在open文件的時(shí)候總還碰到,還報(bào)錯(cuò)IOError:[Errno?2]沒(méi)有這樣的文件或目錄:'E://aaa.txt',這篇文章主要給大家介紹了關(guān)于python錯(cuò)誤提示:Errno?2]?No?such?file?or?directory的解決方法,需要的朋友可以參考下
    2022-02-02
  • 實(shí)例講解python中的協(xié)程

    實(shí)例講解python中的協(xié)程

    在本篇文章里我們給大家通過(guò)實(shí)例講述一下關(guān)于python中的協(xié)程相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們可以參考下。
    2018-10-10

最新評(píng)論