# -*- coding: utf-8 -*-
"""
Created on Fri May 5 15:16:48 2023
@author: Administrator
"""
# 导入itchat库、time库和itchat库中的一些常量
import itchat, time
from itchat.content import *
import openpyxl
import os
# 将目标群聊名称替换为您要发送消息的群聊名称
TARGET_GROUP_NAME = "三人行"
# 在此处添加您要搜索的关键字
KEYWORDS = ["神单来了", "牛奶", "0元", "测试"]
# 检查Excel文件是否存在
filename = "wechat_messages.xlsx"
if os.path.exists(filename):
# 加载现有工作簿
workbook = openpyxl.load_workbook(filename)
# 获取活动工作表
worksheet = workbook.active
# 设置当前行号为最后一行的下一行
current_row = worksheet.max_row + 1
else:
# 创建一个新的Excel工作簿
workbook = openpyxl.Workbook()
# 获取活动工作表
worksheet = workbook.active
# 设置工作表的标题
worksheet.title = "WeChat Messages"
# 添加表头
worksheet.cell(row=1, column=1, value="Type")
worksheet.cell(row=1, column=2, value="Username")
worksheet.cell(row=1, column=3, value="Group Name")
worksheet.cell(row=1, column=4, value="Message")
# 设置当前行号
current_row = 2
# 将消息写入Excel文件的函数
def write_to_excel(msg_type, username, group_name, message):
global current_row
# 在当前行写入数据
worksheet.cell(row=current_row, column=1, value=msg_type)
worksheet.cell(row=current_row, column=2, value=username)
worksheet.cell(row=current_row, column=3, value=group_name)
worksheet.cell(row=current_row, column=4, value=message)
# 更新当前行号
current_row += 1
# 保存工作簿
workbook.save(filename)
# 获取目标群聊对象的函数
def get_target_group(name):
# 根据名称搜索群聊
groups = itchat.search_chatrooms(name)
# 遍历找到的群聊
for group in groups:
# 如果群聊名称与目标名称相同,返回群聊对象
if group['NickName'] == name:
return group
# 如果没有找到目标群聊,返回None
return None
# 当收到群聊中的文本消息时,执行以下函数
@itchat.msg_register(TEXT, isGroupChat=True)
def text_reply(msg):
# 获取群名称
group_name = msg.user.NickName
# 打印群聊文本消息
print(f"Group: {group_name} | User: {msg.actualNickName} | Message: {msg.text}")
# 将消息写入Excel
write_to_excel(msg.type, msg.actualNickName, group_name, msg.text)
# 查找目标群聊
target_group = get_target_group(TARGET_GROUP_NAME)
# 如果没有找到目标群聊,打印提示信息并返回
if target_group is None:
print(f"未找到名为 {TARGET_GROUP_NAME} 的群聊。")
return
# 如果消息中包含关键字列表中的任何一个关键字
if any(keyword in msg.text for keyword in KEYWORDS):
# 构建消息
response = u'@%s\u2005I received: %s' % (msg.actualNickName, msg.text)
# 发送消息到目标群聊
itchat.send_msg(response, toUserName=target_group['UserName'])
# 使用命令行显示登录二维码
# itchat.auto_login(True)
itchat.auto_login()
# 运行itchat,保持在线状态
itchat.run(True)