下载整个文档
安装对应微信版本
src/Wechat-V2.7.1.82.exe
修改src/test.py
from WechatPCAPI import WechatPCAPI
import time
msg = {
"num":0,
"receive_wechat_id":'', #接收消息微信ID
"remark_name":"", #接收消息微信ID 备注
"str":""
}
# 接收消息的回调函数,可自行定义
def on_message(message):
msg_data = message["data"]
if "wx_id" in msg_data.keys():
if msg_data['wx_id'] == msg["receive_wechat_id"]:
msg["remark_name"] = msg_data['remark_name']
print("您正在与{}对话".format(msg["remark_name"]))
elif "msg" in msg_data.keys():
if "from_wxid" in msg_data.keys():
if msg_data["from_wxid"] == msg["receive_wechat_id"] and msg["str"] != "":
if msg_data["msg"] != msg["str"]:
msg["num"] += 1
if msg["num"] == 0:
print("【So Sad T_T 】今天{}没有找您!".format(msg["remark_name"], msg["num"]))
else:
print("今天{}一共给您发送了【{}】条信息!".format(msg["remark_name"], msg["num"]))
print("【新信息】{}给您发消息啦!!!".format(msg["remark_name"]))
print("时间:{}".format(msg_data['time']))
print("内容:{}".format(msg_data["msg"]))
print("请输入回复内容:
")
with open('zhlmsg.txt', 'a+') as f: # 设置文件对象
f.write(msg["remark_name"]+" "+msg_data['time']+"
")
f.write(msg_data["msg"]+"
")
else:
with open('zhlmsg.txt', 'a+') as f: # 设置文件对象
f.write("您自己 "+msg_data['time']+"
")
f.write(msg_data["msg"]+"
")
else:
print("=========================================================")
print("您收到的是其他人的信息:
【{}】
".format(msg_data["msg"][0:50]))
if len(msg_data['msg'])>50:
print("对方发送的消息很长,请到微信进行查看!
")
print("=========================================================")
if msg["num"] == 0:
print("【So Sad T_T 】今天{}没有找您!".format(msg["remark_name"], msg["num"]))
else:
print("今天{}一共给您发送了【{}】条信息!".format(msg["remark_name"], msg["num"]))
print("【输入 T 退出聊天】您可以继续与【{}】聊天:
".format(msg["remark_name"]))
else:
pass
def main():
# 初始化wx实例
wx_inst = WechatPCAPI(on_message=on_message)
# 启动微信 目前仅支持微信V2.7.1.82
wx_inst.start_wechat(block=True)
# 等待登陆成功,此时需要人为扫码登录微信
while not wx_inst.get_myself():
time.sleep(5)
# 登录成功了
#print(wx_inst.get_myself())
# 以下尝试发送各类消息给文件传输助手,可以换成任何人的wx_id
while True:
if msg["remark_name"] != "":
msg["str"] = input("【输入 T 退出聊天】请输入您要发送给【{}】的信息:
".format(msg["remark_name"]))
if msg["str"] == "T" or msg["str"] == "t": break
wx_inst.send_text(to_user=msg["receive_wechat_id"], msg=msg["str"])
if msg["num"] == 0:
print("【So Sad T_T 】今天{}没有找您!".format(msg["remark_name"], msg["num"]))
else:
print("今天{}一共给您发送了【{}】条信息!".format(msg["remark_name"], msg["num"]))
time.sleep(10)
# 更新所有好友信息,数据会通过上面的回调函数返回
#wx_inst.update_frinds()
if __name__ == '__main__':
main()
运行
python test.py
到此,您可以与指定对象愉快的聊天了~
与其他用户在线聊天的思路:
- receive_wechat_id 改为 receive_wechat_ids ,存放您想对话的用户wechat ID 和 用户姓名
- 增加聊天对象选择,去掉默认聊天对象,选择后可开始聊天或切换与其他用户聊天
- 增加判断接收到的信息来源是否 在receive_wechat_ids里
3.1 如果是,则增加选择是否立即回复该用户,若输入的关键字不是立即回复则与当前用户继续聊天
3.2 如果不是,则让用户选择是否添加当前发送信息的用户到 receive_wechat_ids 列表,若输入的关键词不是添加则与当前用户继续聊天
若用户选择添加则让用户选择是否立即回复当前发送信息的用户,同3.1处理 - 可以选择发送图片,链接等,具体参考源码,不过个人感觉比较麻烦,可以通过判断 输入文字开头是否是系统盘或HTTP让系统自动识别发送文字还是图片/链接,而不需要用户选择发送图片,链接。
PS: 为什么搞这个东西?
上班时聊天不用打开微信啊。还可以捕获重要人的信息。而且他撤回的信息也可以看到(除非不是文字了)。