背景:之前寫過一個簡單的Python程序,被朋友看到了,他說可不可給他弄來玩玩,於是今天突然想拿出來玩玩,找下資料,具體看效果。
第一步:環境準備
環境
python3.7
pyinstaller3.6
windows 7
下載地址
python:我本地是3.7的
pyinstaller:http://www.pyinstaller.org
pyinstaller可以用pip進行在線安裝:pip install pyinstaller
第二步:代碼編輯
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import itchat
import requests
f = open('info.config', 'r')
my_dict = eval(f.read())
isGroupChat = True
isFriendChat = True
print('************歡迎使用小賢機器人助手************\n')
isFriend = input("請問主人,是否需要小賢代替您,同朋友嘮嗑嗎?(Y/N):")
# 輸入開始
if(isFriend == 'n'or isFriend == 'N'or isFriend == '否'or isFriend == '不'or isFriend == '不需要'):
isFriendChat = False
print('好的,主人\n')
else:
isFriendChat = True
print('遵命,小賢會好好招待主人的朋友的。\n')
isGroup = input("請問主人,是否需要小賢代替您,同您的羣嘮嗑嗎?(Y/N):\n")
if(isGroup == 'n'or isGroup == 'N'or isGroup == '否'or isGroup == '不'or isGroup == '不需要'):
isGroupChat = False
print('好的,主人.\n')
else:
isGroupChat = True
isat = input(" 請問主人,羣嘮嗑,只處理@您的回覆嗎?(Y/N):\n")
if(isat == 'n'or isat == 'N'or isat == '否'or isat == '不'or isat == '不需要'):
isatme = False
print('好的,主人\n')
else:
isatme = True
iskey = input(" 請問主人,請輸入您關心的關鍵詞:\n")
print('遵命,小賢會好好表現的。\n')
# 輸入結束
def get_response(msg):
apiUrl = my_dict['apiUrl']
infokey = my_dict['infokey']
data = {
'key': infokey, # Tuling Key
'info': msg, # 這是我們發出去的消息
'userid': 'wechat-robot', # 這裏你想改什麼都可以
}
# 我們通過如下命令發送一個post請求
r = requests.post(apiUrl, data=data).json()
return r.get('text')
if isFriendChat:
# 用於接收來自朋友間的對話消息 #如果不用這個,朋友發的消息便不會自動回覆
@itchat.msg_register(itchat.content.TEXT)
def print_content(msg):
reqmsg = msg['Text']
print("他:" + reqmsg + "\n")
msg = get_response(reqmsg)
print("小賢:" + msg + "\n")
return msg
if isGroupChat:
@itchat.msg_register([itchat.content.TEXT], isGroupChat=True)
# 用於接收羣裏面的對話消息
def print_content1(msg):
actualnickname = msg.ActualNickName
if isatme:
# 判斷是否是@本人
if (msg.isAt):
print("主人," + msg.actualNickName + "@你了,他說:" + msg["Text"] + "\n")
reqmsg = msg['Text']
reqmsg = reqmsg.replace(actualnickname, '');
if (reqmsg.strip() == ''):
msg = "@" + msg.actualNickName + " " + '在呢'
else:
msg = "@" + msg.actualNickName + " " + get_response(reqmsg)
print("小賢:" + msg + "\n")
return msg
else:
if iskey.strip():
if msg["Text"].find(iskey) == 0:
print("主人," + msg.actualNickName + "@你了,他說:" + msg["Text"] + "\n")
reqmsg = msg['Text']
reqmsg = reqmsg.replace(actualnickname, '');
if (reqmsg.strip() == ''):
msg = "@" + msg.actualNickName + " " + '在呢'
else:
msg = "@" + msg.actualNickName + " " + get_response(reqmsg)
print("小賢:" + msg + "\n")
return msg
else:
if (msg.isAt):
print("主人," + msg.actualNickName + "@你了,他說:" + msg["Text"] + "\n")
reqmsg = msg['Text']
reqmsg = reqmsg.replace(actualnickname, '');
if (reqmsg.strip() == ''):
msg = "@" + msg.actualNickName + " " + '在呢'
else:
msg = "@" + msg.actualNickName + " " + get_response(reqmsg)
print("小賢:" + msg + "\n")
return msg
else:
# 添加關鍵詞
print("主人," + msg.actualNickName + "他說:" + msg["Text"] + "\n")
msg = get_response(msg['Text'])
print("小賢:" + msg + "\n")
return msg
itchat.auto_login(True)
itchat.run()
以上代碼解析:
控制是否監控朋友聊天和羣聊天進行回覆,羣聊天區分爲,是否@本或者登陸者感興趣的關鍵詞。
第三步:打包exe,準備一個小圖片,ico格式的。
在cmd進行深入:pyinstaller -F -i favicon.ico test.py
打包成功之後的圖片如下顯示
生成的exe文件如圖中所示,需要注意的是,需要把info.config和favicon.ico拷貝進來。避免運行時候找不到。
配置文件如圖中所示:
點擊運行之後:
完畢! 個人覺得以上重點還是數據來源,也就是圖靈接口。