当前位置:首页>python>震惊!用Python每天早上8点,我准时给女神发早安,只因这个脚本…

震惊!用Python每天早上8点,我准时给女神发早安,只因这个脚本…

  • 2026-10-11 08:18:25
震惊!用Python每天早上8点,我准时给女神发早安,只因这个脚本…

大家好,我是大力。

你是不是也曾经历过这些场景?

  • 每天早上要给对象/家人发一句早安,偶尔忘了还会引发“矛盾”?

  • 重要的工作提醒、项目节点,总是怕自己忙忘了?

  • 想给自己设定每日一句英语、天气提醒,却懒得每天复制粘贴?

今天,我就分享一个纯Python脚本,帮你彻底解决这个痛点!即使是完全不懂代码的小白,跟着我一步步操作,也能在30分钟内搞定一个专属的“微信定时提醒机器人”。

最终效果: 每天固定时间(比如早上9点),脚本自动打开微信,找到指定联系人,发送你提前设置好的当日消息。消息内容支持按日期定制,每天都不一样!

一、准备工作(仅需4步)

1. 安装Python环境

如果你电脑上还没有Python,请先安装(已安装可跳过)。

  • 访问Python官网下载最新版(建议3.10+)。

  • ❗关键一步: 安装时,务必勾选 “Add Python to PATH”,然后一路“下一步”完成。

2. 下载脚本文件

  • 复制文章最下方的完整代码,粘贴到你的文本编辑器(记事本、PyCharm、VS Code均可)。

  • 保存为 auto_send_msg.py(文件名随意,后缀必须是 .py)。

  • 建议新建一个文件夹,比如 D:\wechat_auto,把脚本放进去,方便管理。

3. 创建每日消息配置

  • 在同一文件夹下,新建一个文本文件,重命名为 daily_messages.json。

  • 用记事本打开,输入以下格式的内容:

{  "2026-03-10": "今天要完成项目报告!",  "2026-03-11": "有内鬼,停止交易。",  "2026-03-12": "英语每日一句:I have failed over and over again in my life. And that is why I succeed. 译文:我一生中失败了一次又一次,但正因如此,我才得以成功。",  "2026-03-13": "今天是想你的106天。",  "2026-03-14": "今天有时间吗?晚上一起吃饭吧。",  "2026-03-15": "离世界杯开始还有90天。",  "2026-03-16": "今日广州天气晴,25度,微风,穿个衬衫正好。",  "2026-03-17": "今天离高考还剩XXX天,加油!"}

⚠️ 注意:

  • 日期格式必须是 YYYY-MM-DD。

  • JSON最后一项后面不要有逗号。

  • 如果某天没配置,脚本会自动发送默认消息。

4. 安装Python依赖库

脚本需要几个第三方库,打开命令提示符(CMD),依次执行以下命令:
pip install pyautogui pygetwindow psutil schedule pyperclip
💡 小技巧: 如果下载慢,可以加上清华镜像源:pip install pyautogui -i https://pypi.tuna.tsinghua.edu.cn/simple

二、修改脚本配置(核心)

用记事本打开你的 auto_send_msg.py,找到开头的 配置区域,按你的实际情况修改:

# ========== 这里改成你的信息 ==========CONTACT_NAME = "文件传输助手"  # 你要发送的联系人昵称MESSAGE = "早上好,这是自动发送的消息。"  # 默认消息(当天无配置时发送)SEND_TIME = "09:00"  # 每天发送时间(24小时制)MESSAGE_JSON_PATH = "D:\\wechat_auto\\daily_messages.json"  # 你的json文件完整路径# ===================================

注意: 路径中的反斜杠 \ 要写成双份 \\,或者用正斜杠 /。

三、测试运行

  1. 登录微信,保持窗口打开(可以最小化到任务栏,但不能关闭或缩放到托盘图标)。

  2. 切换到你的脚本目录,运行脚本:

python auto_send_msg.py now # 此命令单次执行 可进行测试python auto_send_msg.py  # 正式设置定时 运行脚本

四、注意事项(必看!)

常见问题
解决方案
微信不能完全隐藏
脚本需要模拟鼠标操作,微信窗口必须可见(最小化到任务栏OK,但托盘退出不行)。
运行期间别动鼠标键盘
脚本执行那几秒钟,请勿操作电脑,否则会干扰鼠标点击导致失败。
联系人名称要准确
支持模糊匹配,但建议用完整昵称或备注名,避免找错人。
JSON格式务必正确
最后一项不要有逗号,所有符号用英文半角。

五、完整代码(直接复制)

import timeimport pygetwindow as gwimport pyautoguiimport psutilimport scheduleimport sysimport pyperclipimport jsonfrom datetime import datetimeimport os# ========== 配置区域(请根据实际情况修改)==========# 注意:不能将微信界面最小化,否则消息无法发送CONTACT_NAME = "张三"  # 要发送的联系人昵称MESSAGE = "早上好,这是自动发送的消息。"  # 默认消息(当JSON中无当日配置时使用)SEND_TIME = "11:11"  # 每天发送时间(24小时制,如 "09:00")MESSAGE_JSON_PATH = "F:\\python_work\\daily_message.json"  # 存放每日消息的JSON文件路径INPUT_BOX_Y_OFFSET = 80  # 输入框距离窗口底部的像素偏移量(可根据屏幕调整)# ===============================================def is_process_running(process_name):    """检查指定进程是否在运行"""    for proc in psutil.process_iter(['name']):        try:            if proc.info['name'] == process_name:                return True        except (psutil.NoSuchProcess, psutil.AccessDenied):            continue    return Falsedef launch_wechat_if_needed():    """如果微信未运行则启动,返回主窗口对象"""    # 等待微信主窗口出现(标题为“微信”)    wechat_window = None    for _ in range(30):  # 最多等待30秒        windows = gw.getWindowsWithTitle('微信')        if windows:            # 取第一个匹配的窗口(通常就是主窗口)            wechat_window = windows[0]            break        time.sleep(1)    if not wechat_window:        raise Exception("未找到微信主窗口,请检查微信是否已登录")    return wechat_windowdef ensure_window_active(window):    """确保窗口处于激活状态(如果最小化则还原)"""    if window.isMinimized:        window.restore()    window.activate()    time.sleep(1)  # 等待窗口获得焦点def search_and_open_chat(contact_name):    """    在微信主界面搜索联系人并打开聊天窗口    使用剪贴板粘贴联系人名称,避免输入法干扰    """    # 1. 聚焦搜索框 (Ctrl+F)    pyautogui.hotkey('ctrl', 'f')    time.sleep(1)    # 2. 清空搜索框(全选+删除)    pyautogui.hotkey('ctrl', 'a')    time.sleep(0.2)    pyautogui.press('backspace')    time.sleep(0.2)    # 3. 将要搜索的联系人名称复制到剪贴板    pyperclip.copy(contact_name)    time.sleep(0.2)    print("联系人已粘贴")    # 4. 粘贴到搜索框 (Ctrl+V)    pyautogui.hotkey('ctrl', 'v')    time.sleep(2)  # 等待搜索结果加载    print("已粘贴联系人名称,等待搜索结果...")    # 5. 按两次回车:第一次选中第一个结果,第二次进入聊天窗口    pyautogui.press('enter')    print("确认联系人已选择,准备发送消息...")    time.sleep(2)def send_message(wechat_win, message):    print("进入到发消息了。。")    """在当前激活的聊天窗口输入消息并发送"""    # 同样使用剪贴板粘贴消息,避免输入法问题(如果需要发送中文)    # 计算输入框的估算坐标(窗口底部向上偏移一定像素,水平居中)    input_x = wechat_win.left + wechat_win.width // 2    input_y = wechat_win.bottom - INPUT_BOX_Y_OFFSET    pyautogui.click(input_x, input_y)    time.sleep(0.5)    # 粘贴消息    pyperclip.copy(message)    pyautogui.hotkey('ctrl', 'v')    time.sleep(0.5)    pyautogui.press('enter')    time.sleep(1)    print("消息已发送")def send_wechat_message(contact, message):    """主流程:确保微信打开、激活、搜索联系人、发送消息"""    try:        print("开始执行微信自动发送任务...")        wechat_win = launch_wechat_if_needed()        ensure_window_active(wechat_win)        search_and_open_chat(contact)        send_message(wechat_win, message)        print("消息发送成功!")    except Exception as e:        print(f"发送失败: {e}")def get_today_message(json_path, default_msg):    """    从JSON文件中读取今日消息    JSON格式示例:{"2026-03-10": "今天想说的话", "2026-03-11": "明天的话"}    如果文件不存在、格式错误或无当日记录,返回默认消息    """    today = datetime.now().strftime("%Y-%m-%d")    print("今天日期是:" + today)    if not os.path.exists(json_path):        print(f"消息文件 {json_path} 不存在,使用默认消息")        return default_msg    try:        with open(json_path, 'r', encoding='utf-8') as f:            data = json.load(f)        if not isinstance(data, dict):            print("JSON格式错误,应为字典,使用默认消息")            return default_msg        message = data.get(today)        print(message)        if message is None:            print(f"今日 {today} 无配置消息,使用默认消息")            return default_msg        print(f"今日消息:{message}")        return message    except Exception as e:        print(f"读取JSON文件出错: {e},使用默认消息")        return default_msgdef job():    """定时任务要执行的函数"""    message = get_today_message(MESSAGE_JSON_PATH, MESSAGE)    send_wechat_message(CONTACT_NAME, message)if __name__ == "__main__":    # MESSAGE 我想读取json文件 根据    # 如果命令行参数包含 "now",则立即执行一次(用于测试)    if len(sys.argv) > 1 and sys.argv[1] == "now":        message = get_today_message(MESSAGE_JSON_PATH, MESSAGE)        send_wechat_message(CONTACT_NAME, message)        sys.exit(0)    # 设置定时任务    schedule.every().day.at(SEND_TIME).do(job)    print(f"定时任务已设置,每天 {SEND_TIME} 执行。")    print("脚本将一直运行,按 Ctrl+C 退出。")    # 持续运行调度器    try:        while True:            schedule.run_pending()            time.sleep(60)  # 每分钟检查一次    except KeyboardInterrupt:        print("脚本被用户中断。")

写在最后

这个脚本稍加改造,还能实现更多玩法:

  • 结合天气API,每天自动发送天气预报。

  • 对接 ChatGPT,每天生成一句暖心的话。

  • 定时给团队发送工作日报提醒。

如果觉得本篇教程对你有帮助,欢迎点赞、在看、转发支持!有任何问题,欢迎在评论区留言交流。

最新文章

随机文章