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
打包成功之后的图片如下显示
生成的exe文件如图中所示,需要注意的是,需要把info.config和favicon.ico拷贝进来。避免运行时候找不到。
配置文件如图中所示:
点击运行之后:
完毕! 个人觉得以上重点还是数据来源,也就是图灵接口。