基于python的微信自动发消息脚本

由于轮到我每天在支部群里发学习强国打卡的提醒消息,而我擅长忘记事情。而且微信好像没有可以自动发群消息的机器人,并且这方面的微信小程序的使用都要收费。

所以直接写一个python脚本,实现自动化微信信息发送。

有两个代码,一个是我写的,用pc的电脑客户端,通过模拟键盘的方式发送消息(并且是正在使用的);另一个是让gpt写的,没有进行修改,但也是可以用的。

本文的方法都是基于pc的微信客户端,需要电脑打开,并微信打开(可以挂在后台)

我写的代码:

# -*- coding: utf-8 -*-
"""
实现定时自动发送消息
"""

import time
import pyperclip
import pywintypes
import win32api
import win32con
import win32gui
import os
import sys
import pygetwindow as gw


# 获取焦点
def set_focus_to_wechat():
    wechat_window_name = "WeChat"  # 请根据实际情况修改
    wechat_window = win32gui.FindWindow(None, wechat_window_name)

    if not wechat_window:
        print(f"找不到标题为 {wechat_window_name} 的窗口。")
        return

    win32gui.ShowWindow(wechat_window, win32con.SW_RESTORE)
    win32gui.SetForegroundWindow(wechat_window)


while True:
    time.sleep(300)  # 每5分钟检测一次,防止访问太多,过度占据cpu资源
    time_now = time.strftime("%H:%M:%S", time.localtime())  # 获取当前时间
    # sent_time = time.strftime("%H:%M:%S", time.localtime())  # 发送时间
    # sent_time = "23:30:00"
    if '23:25:00' <= time_now <= '23:35:00':  # 时间窗内
        def open_app(app_dir):
            os.startfile(app_dir)


        # 打开微信
        if __name__ == "__main__":
            app_dir = r'D:\tengxun\WeChat\WeChat.exe'  # 此处为微信的绝对路径
            open_app(app_dir)
            time.sleep(1)
            # 设置焦点
            set_focus_to_wechat()

            # 进入微信,模拟按键Ctrl+F
        win32api.keybd_event(17, 0, 0, 0)  # Ctrl
        win32api.keybd_event(70, 0, 0, 0)  # F
        win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
        win32api.keybd_event(70, 0, win32con.KEYEVENTF_KEYUP, 0)
        time.sleep(1)

        # 复制需要查找的人,按回车,进入聊天输入框
        pyperclip.copy('xxxxx')  # 联系人昵称
        # pyperclip.copy('xxx')  # 联系人昵称
        spam = pyperclip.paste()
        win32api.keybd_event(17, 0, 0, 0)  # Ctrl
        win32api.keybd_event(86, 0, 0, 0)  # 86→V;
        win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
        win32api.keybd_event(86, 0, win32con.KEYEVENTF_KEYUP, 0)
        time.sleep(1)
        win32api.keybd_event(13, 0, 0, 0)  # 13→Enter
        win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)
        time.sleep(1)

        # 聊天输入框复制聊天内容,然后按回车发送消息
        pyperclip.copy('学习强国 家人们')  # 聊天的内容
        # pyperclip.copy('测试小仔')  # 联系人昵称
        spam = pyperclip.paste()
        win32api.keybd_event(17, 0, 0, 0)  # Ctrl
        win32api.keybd_event(86, 0, 0, 0)  # 86→V
        win32api.keybd_event(86, 0, win32con.KEYEVENTF_KEYUP, 0)
        win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
        win32api.keybd_event(13, 0, 0, 0)
        win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)
        time.sleep(1)  # 确保程序只执行一次,防止重复执行

        sys.exit()  # 退出程序

代码写好,并调试好之后。
使用pyinstaller进行打包,命令:

Pyinstaller -F -w -D XXQG.py

在当前目录会出现一个dist文件夹,里面就有可执行的exe文件。
然后想运行可以直接运行这个exe文件。
img
在任务管理器中就会看到它一直在运行,
img

如果想让这个脚本程序开机自启动,就把这个exe文件的快捷方式放到自启动文件夹中,
在运行输入命令,打开自启动文件夹,新建一个快捷方式,

shell:startup

img
这样子就会开机自启动了,毕竟设置的每五分钟判断一次时间是否符合,对cpu的影响几乎没有,一天就执行一次,执行结束后,进程会退出。

gpt的代码:

# -*- coding: utf-8 -*-
"""
实现自动发送消息
"""

import time
import pygetwindow as gw
import pyautogui

def send_wechat_message(group_name, message_content):
    # 将当前活动窗口切换到微信客户端
    try:
        wechat_window = gw.getWindowsWithTitle('微信')[0]
        wechat_window.activate()
    except IndexError:
        print("请确保微信客户端已打开")
        return

    time.sleep(1)  # 等待窗口切换完成

    # 在搜索框中输入群聊名称并按回车键选择第一个结果
    pyautogui.hotkey('ctrl', 'f')
    time.sleep(1)
    pyautogui.write(group_name)
    time.sleep(1)
    pyautogui.press('enter')

    # 输入并发送消息内容
    time.sleep(1)
    pyautogui.write(message_content)
    time.sleep(1)
    pyautogui.press('enter')

# 示例:每天定时向指定群聊发送消息(例如:每天9点)
from apscheduler.schedulers.blocking import BlockingScheduler

def scheduled_send_message():
    group_name = "YourGroupName"
    message_content = "Hello, this is an automatic message."
    send_wechat_message(group_name, message_content)

scheduler = BlockingScheduler()
scheduler.add_job(scheduled_send_message, 'cron', hour='9')
scheduler.start()

# 若要立即发送一条消息,可以直接调用:
# send_wechat_message("YourGroupName", "Hello, this is an automatic message.")
  • 2
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 要在 Mac 上实现 Python 自动微信消息,你需要做以下几件事情: 1. 安装 Python。如果你的 Mac 已经自带了 Python,可以跳过这一步。如果没有,可以在官网下载最新版本并安装。 2. 安装依赖库。通常来说,你还需要安装一些依赖库来实现微信自动发送消息,比如 itchat。你可以使用 pip 命令来安装依赖库,例如:pip install itchat 3. 编写 Python 代码。使用 itchat 库,你可以编写 Python 代码来登录微信自动发送消息。具体方法可以参考 itchat 库的文档。 4. 运行 Python 代码。最后,在终端或者其他 Python 编辑器中运行你的 Python 代码即可。 希望这些信息能帮到你。 ### 回答2: 要实现在Mac上使用Python自动发送微信消息,可以借助第三方库itchat。itchat是一个基于微信网页版API的Python库,可以实现登录微信、发送消息、获取联系人等功能。 首先,需要在Mac上安装Python和itchat库。可以通过Homebrew或者官方网站安装Python,然后使用pip安装itchat库。 接下来,使用itchat库实现自动发送微信消息的步骤如下: 1. 导入itchat库:在Python程序中导入itchat库。 2. 登录微信:使用itchat的`login`函数登录微信账号,可以通过扫描二维码进行登录。 3. 获取好友列表:使用itchat的`get_friends`函数获取登录用户的好友列表。 4. 发送消息:使用itchat的`send`函数发送需要的消息。可以通过`search_friends`函数查找某个好友,然后使用好友对象的`send`方法发送消息。 完整的代码示例如下: ```python import itchat # 登录微信 itchat.auto_login() # 获取好友列表 friends = itchat.get_friends() # 遍历好友列表,发送消息 for friend in friends: # 判断好友是否是需要发送消息的目标好友 if friend['RemarkName'] == '需要发送的好友备注名': # 发送消息 friend.send('你好,这是自动发送的消息!') # 退出登录 itchat.logout() ``` 以上代码实现了登录微信、获取好友列表、发送消息等功能。在发送消息之前,需要将需要发送的好友的备注名修改为代码中`'需要发送的好友备注名'`的值。 请注意,使用itchat发送消息需要保持程序运行的状态,如果关闭了程序,发送的消息会中断。可以使用`itchat.run`函数保持程序的持续运行,以便随时发送消息。 同时,为了保障账号安全,在使用第三方库时,应尽量遵守使用规范,并避免异常操作,以免触发微信账号的安全防护机制。 ### 回答3: 要实现Mac上的Python自动微信发消息,可以使用itchat库来实现。itchat是一个开源的微信个人号接口,可以通过Python代码实现微信自动登录、消息发送、接收等功能。 具体步骤如下: 1. 在Mac上安装Python,并确保pip也已经安装。可以在终端中输入"python"和"pip",确认是否已安装。 2. 使用pip安装itchat库。在终端中输入以下命令: ``` pip install itchat ``` 3. 创建一个Python脚本,在脚本中导入itchat库,并编写发送消息的代码。 ```python import itchat # 登录微信账号 itchat.auto_login() # 查找要发送消息的好友,可以通过备注名、微信号、昵称等进行查找 friend = itchat.search_friends(name='微信好友备注名')[0] # 发送消息给好友 friend.send('这是一条自动发送的消息') # 退出登录 itchat.logout() ``` 4. 运行Python脚本,在终端中进入脚本所在目录,输入以下命令: ``` python your_script_name.py ``` 5. 运行后,会出现一个二维码,使用微信扫描登录即可。 通过以上步骤,就可以在Mac上使用Python实现自动发送微信消息了。可以根据实际需求,结合itchat库的其他功能来进一步扩展自动发送消息的功能。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值