Python使用itchat庫+圖靈機器人+pyinstaller打包成exe可執行文件

背景:之前寫過一個簡單的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拷貝進來。避免運行時候找不到。 

 配置文件如圖中所示:

 

點擊運行之後:

完畢! 個人覺得以上重點還是數據來源,也就是圖靈接口。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章