# -*- coding: utf-8 -*-
"""
Created on Fri May 5 15:16:48 2023
@author: Administrator
"""
# Импортируйте некоторые константы в библиотеку itchat, библиотеку времени и библиотеку 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'])
# Используйте командную строку для отображения QR-кода входа в систему.
# itchat.auto_login(True)
itchat.auto_login()
# Запустите itchat, чтобы оставаться онлайн
itchat.run(True)