python——wxpy模組實現微信尬聊(基於圖靈機器人)
阿新 • • 發佈:2019-02-19
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()
這個機器人還真是萌氣十足,看來以後媽媽再也不用擔心我不會和妹子聊天啦!