前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信群聊的监控2023.5.5

微信群聊的监控2023.5.5

作者头像
用户7138673
发布2023-08-16 20:34:34
4350
发布2023-08-16 20:34:34
举报
文章被收录于专栏:大大的小数据大大的小数据
代码语言:javascript
复制
# -*- 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)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大大的小数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档