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拷贝进来。避免运行时候找不到。 

 配置文件如图中所示:

 

点击运行之后:

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

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 创作都市 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读