Python騷操作—用30行代碼打造微信聊天機器人


本文的文字及圖片來源於網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理

本文章來自騰訊雲 作者:Python進階者

想要學習Python?有問題得不到第一時間解決?來看看這里“1039649593”滿足你的需求,資料都已經上傳至文件中,可以自行下載!還有海量最新2020python學習資料。
點擊查看
在這里插入圖片描述

一、寫在前面

前段時間寫過一篇微信好友大揭秘,很多朋友對itchat非常感興趣,今天下午又學到了itchat另一種有趣的玩法—微信自動回復機器人。

程序很簡單僅僅三十行代碼左右,實現了機器人自動與你的微信好友聊天。

二、程序介紹

本程序通過itchat獲取微信的相關消息,將微信消息傳輸到機器人接口(本程序使用的是圖靈),獲取機器人的返回消息。將返回消息返回給微信消息的發送人。以此實現將微信個人號變身為聊天機器人。

三、具體實現

安裝
itchat的安裝可以通過下面這行代碼

pip install itchat

 

登錄
itchat.auto_login() 這種方法將會通過微信掃描二維碼登錄,但是這種登錄的方式確實短時間的登錄,並不會保留登錄的狀態,也就是下次登錄時還是需要掃描二維碼。

# 掃描二維碼登陸微信,實際上就是通過網頁版微信登陸
    itchat.auto_login()

 

如果加上hotReload==True,那么就會保留登錄的狀態,至少在后面的幾次登錄過程中不會再次掃描二維碼,該參數生成一個靜態文件itchat.pkl用於存儲登錄狀態

itchat.auto_login(hotReload=True)

 

微信信息的發送
微信可以發送各類消息,文本、圖片、文件等,下面是具體的方法的介紹。

itchat.send('Message Content', 'toUserName')

 

該發送消息的函數需要兩個參數,消息的內容與接受者的UserName,即標識符。
用下面的代碼舉一個小栗子,實現向文件助手發送信息。

import itchat

itchat.auto_login(hotReload=True)
itchat.send(u'測試消息發送', 'filehelper')   

 

在這里插入圖片描述

 import itchat
    from itchat.content import *
    @itchat.msg_register(TEXT)   #這里的TEXT表示如果有人發送文本消息,那么就會調用下面的方法
    def simple_reply(msg):
        #這個是向發送者發送消息
        itchat.send_msg('已經收到了文本消息,消息內容為%s'%msg['Text'],toUserName=msg['FromUserName'])
        return "T reveived: %s" % msg["Text"]     #返回的給對方的消息,msg["Text"]表示消息的內容

 

在這里插入圖片描述

import itchat

@itchat.msg_register(itchat.content.TEXT)
def print_content(msg):
    print(msg['Text'])

itchat.auto_login()
itchat.run()

 

通過運行上面的代碼,實現基礎的文本信息的接收。

實現與圖靈機器人的交互
實現機器人有很多種方法,最簡單的就是使用他人提供的接口。這里以圖靈機器人為例,演示這一功能。圖靈機器人簡單而言就是以一定的規則給圖靈的服務器發送數據包(包含你對他說的話)圖靈的服務器會以一定的規則給你返回數據包(包含他回復你的話)

你需要一個Tuling Key來告訴圖靈服務器你有權和他對話。

8edce3ce905a4c1dbb965e6b35c3834d
eb720a8970964f3f855d863d24406576
1107d5601866433dba9599fac1bc0083
71f28bf79c820df10d39b4074345ef8c

 

接下來需配置圖靈機器人

{
    'key'    : 'TULING_KEY',
    'info'   : 'YOUR_MSG',
    'userid' : 'USERID',
}

 

下面使用圖靈機器人向好友發送了hello

#coding=utf8
import requests

apiUrl = 'http://www.tuling123.com/openapi/api'
data = {
    'key'    : '8edce3ce905a4c1dbb965e6b35c3834d', # 如果這個Tuling Key不能用,那就換一個
    'info'   : 'hello', # 這是我們發出去的消息
    'userid' : 'wechat-robot', # 這里你想改什么都可以
}
# 我們通過如下命令發送一個post請求
r = requests.post(apiUrl, data=data).json()

# 讓我們打印一下返回的值,看一下我們拿到了什么
print(r)

 

完整代碼:

import requests
import itchat

KEY = '8edce3ce905a4c1dbb965e6b35c3834d'

def get_response(msg):
    # 這里實現與圖靈機器人的交互
    # 構造了要發送給服務器的數據
    apiUrl = 'http://www.tuling123.com/openapi/api'
    data = {
        'key' : KEY,
      'info' : msg,
      'userid' : 'wechat-robot',
    }
    try:
        r = requests.post(apiUrl, data=data).json()
        # 字典的get方法在字典沒有'text'值的時候會返回None而不會拋出異常
        return r.get('text')
    # 為了防止服務器沒有正常響應導致程序異常退出,這里用try-except捕獲了異常
    # 如果服務器沒能正常交互(返回非json或無法連接),那么就會進入下面的return
    except:
        # 將會返回一個None
        return

# 這里實現微信消息的獲取
@itchat.msg_register(itchat.content.TEXT)
def tuling_reply(msg):
    # 為了保證在圖靈Key出現問題的時候仍舊可以回復,這里設置一個默認回復
    defaultReply = 'I received: ' + msg['Text']
    # 如果圖靈Key出現問題,那么reply將會是None
    reply = get_response(msg['Text'])
    # a or b的意思是,如果a有內容,那么返回a,否則返回b
    # 有內容一般就是指非空或者非None,你可以用`if a: print('True')`來測試
    return reply or defaultReply

# 為了讓實驗過程更加方便(修改程序不用多次掃碼),我們使用熱啟動
itchat.auto_login(hotReload=True)
itchat.run()

 

itchat不僅僅能夠實現自動回復,還有其他的相關功能比如群發助手,好友單刪檢測,獲取微信好友信息等功能,后續會慢慢去體驗各種玩法。

小提示:不要頻繁操作,否則會禁止登錄web微信。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM