1. 程式人生 > >python——wxpy模組實現微信尬聊(基於圖靈機器人)

python——wxpy模組實現微信尬聊(基於圖靈機器人)

wxpy(微信機器人)是在itchat基礎上開發的微信個人功能服務API,基本可以實現微信各種拓展功能,

支援pip安裝,適用2.7以及3.4-3.6的python版本

通過

# 匯入模組
from wxpy import *
# 初始化機器人,掃碼登陸
bot = Bot()

即可掃碼登入,同時也支援

bot = Bot(console_qr=True, cache_path=True)

來保留快取自動登入

一個機器人物件Bot可以理解為一個web客戶端,所以其是不能和正常的web端、PC端共存的。

其可以完成一個web客戶端的基本功能:聊天、搜尋、獲取、加好友、建群等等……

bot物件裡含有chats,friends,groups,mps等方法,分別可以獲取當前機器人的聊天物件、好友、群聊、公眾號等資訊

可以通過search進行搜尋,例如:

boring_group1 = bot.groups().search('✪ω✪妹子會有的')[0]
my_friend = bot.friends().search('二狗子', sex=MALE, city='北京')[0]

通過send可以對其傳送訊息

# 傳送文字
my_friend.send('Hello, WeChat!')
# 傳送圖片
my_friend.send_image('my_picture.png')
# 傳送視訊
my_friend.send_video('my_video.mov')
# 傳送檔案
my_friend.send_file('my_file.zip')
# 以動態的方式傳送圖片
my_friend.send('@img@my_picture.png')

給自己的檔案傳輸助手傳送也可以:

bot.file_helper.send('[奸笑][奸笑]')

還可以通過stats、stats_text等方法進行資料統計

bot.friends().stats_text()

通過Message.type可以定義接收訊息的型別,預設全部接收

通過@bot.register啟用監聽事件,可以定義chats、msg_type等引數

@bot.register(chats = [Friend])
def forward_message(msg):
    print('[接收]'+str(msg))
    ret = auto_ai(msg.text)
    print('[傳送]'+str(ret))
    return ret

適用 embed()可以讓程序處於等待持續監聽狀態

from wxpy import *
bot = Bot()
embed() # 進入 Python 命令列

# 輸入物件名稱並回車
>>> bot
# Out[1]: <Bot: **>
>>> bot.friends()
# Out[2]: [<Friend: **>, <Friend: **>, <Friend: **>]

wxpy目前提供了兩種機器人介面

以圖靈機器人為例完整程式碼:

# coding:utf-8  
import json
import requests
from wxpy import *
#bot = Bot()
#bot.file_helper.send_image('ParticleSmoke.png')

# 回覆 my_friend 傳送的訊息
#@bot.register(my_friend)
#def reply_my_friend(msg):
#    return 'received: {} ({})'.format(msg.text, msg.type)

# 回覆傳送給自己的訊息,可以使用這個方法來進行測試機器人而不影響到他人
#@bot.register(bot.self, except_self=False)
#def reply_self(msg):
#   return 'received: {} ({})'.format(msg.text, msg.type)

# 打印出所有群聊中@自己的文字訊息,並自動回覆相同內容
# 這條註冊訊息是我們構建群聊機器人的基礎
#@bot.register(Group, TEXT)
#def print_group_msg(msg):
#    if msg.is_at:
#        print(msg)
#        msg.reply(meg.text)

def auto_ai(text):
    url = "http://www.tuling123.com/openapi/api"
    api_key="****"
    payload={
        "key":api_key,
        "info":text,
        "userid":"666"
        }
    r = requests.post(url,data=json.dumps(payload))
    result = json.loads(r.content)
    if ('url' in result.keys()):
        return "[九日AI]  "+result["text"]+result["url"]
    else:
        return "[九日AI]  "+result["text"]


bot = Bot(cache_path=True)#登入快取
#bot.file_helper.send('[奸笑][奸笑]')
print('九日AI已經啟動')


boring_group1 = bot.groups().search('✪ω✪妹子會有的')[0]
@bot.register(boring_group1)
def group_message(msg):
    print('[接收]'+str(msg))
    if (msg.type!='Text'):
        ret = '[奸笑][奸笑]'
    else:
        ret = auto_ai(msg.text)
    print('[傳送]'+str(ret))
    return ret

@bot.register(chats = [Friend])
def forward_message(msg):
    print('[接收]'+str(msg))
    if (msg.type!='Text'):
        ret = '[奸笑][奸笑]'
    else:
        ret = auto_ai(msg.text)
    print('[傳送]'+str(ret))
    return ret

embed()




這個機器人還真是萌氣十足,看來以後媽媽再也不用擔心我不會和妹子聊天啦!


兩天後:




再見再見