欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python使用itchat库+图灵机器人+pyinstaller打包成exe可执行文件

程序员文章站 2022-06-04 09:53:28
...

背景:之前写过一个简单的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

Python使用itchat库+图灵机器人+pyinstaller打包成exe可执行文件

打包成功之后的图片如下显示

Python使用itchat库+图灵机器人+pyinstaller打包成exe可执行文件

 

Python使用itchat库+图灵机器人+pyinstaller打包成exe可执行文件

 

Python使用itchat库+图灵机器人+pyinstaller打包成exe可执行文件

 

生成的exe文件如图中所示,需要注意的是,需要把info.config和favicon.ico拷贝进来。避免运行时候找不到。 

 配置文件如图中所示:

Python使用itchat库+图灵机器人+pyinstaller打包成exe可执行文件

 

点击运行之后:

Python使用itchat库+图灵机器人+pyinstaller打包成exe可执行文件

完毕! 个人觉得以上重点还是数据来源,也就是图灵接口。