python实现微信提醒机器人

2022-10-01 10:14:22 浏览数 (1)

最近微信群里朋友们聊天,年纪大了需要养生了,每天八杯水~想着是否可以实现一个微信机器人每天定时给群内发消息提醒喝水的功能。

查阅资料发现微信开源了微信个人号接口itchat,可以使用python调用接口。

https://pypi.org/project/itchat/

登录微信发送消息只需要三行代码

代码语言:javascript复制
import itchat
itchat.auto_login()
itchat.send('Hello, filehelper', toUserName='filehelper')

所以我们实现一个定时机器人只需要以下几步:

  1. 使用itchat登录网页版微信
  2. 获取提醒器的user_name
  3. 实现定时机制
  4. 定点发送消息

完整代码如下:

代码语言:javascript复制
import time
import itchat

# 设置喝水时间
SEND_TINES = ["09:00", "10:00", "11:00", "12:00",  "14:00", "15:00", "16:00", "17:00"]
    
def drink_water_reminder(target_nick_names):
    target_user_names = []
    # 需要将群聊要添加到通讯录,不然get_chatrooms只显示最近聊天的群聊
    # 添加方法:群--右上角更多--添加到通讯录
    groups = itchat.get_chatrooms(update=False)
    for g in groups:
        for target_nick in target_nick_names:
            if target_nick in g["NickName"]:
                target_user_names.append(g["UserName"])
    # 待优化为定时器
    while True:
        time.sleep(60)
        now_time = time.strftime("%H:%M", time.localtime(time.time()))
        for i in range(0, len(SEND_TINES)):
            if now_time == SEND_TINES[i]:
                msg = "今天第{}次提醒喝水。".format(i   1)"
                for target_user_name in target_user_names:
                    itchat.send_msg(msg, target_user_name)



if __name__ == '__main__':
    # 登录网页版微信
    itchat.auto_login()
    # 设置提醒群昵称
    target_nick_names = ["提醒群1", "提醒群2"]
    # 定时提醒喝水
    drink_water_reminder(target_nick_names)

同样我们也可以自定义一个节假日祝福机器人~祝大家节日快乐~

代码语言:javascript复制
def calendar_reminder(target_nick_names):
    target_user_names = []
    groups = itchat.get_chatrooms(update=False)
    for g in groups:
        for target_nick in target_nick_names:
            if target_nick in g["NickName"]:
                target_user_names.append(g["UserName"])
    # 发送时间点
    send_times = ["09:00"]
    while True:
        # 1小时监测一次
        time.sleep(60*60)
        # 获取当前日期
        date = datetime.datetime.now().date()
        # 获取当前时间
        now_time = time.strftime("%H:%M", time.localtime(time.time()))
        for i in range(0, len(send_times)):
            # 是节假日并且到时间点,发送提醒消息
            if now_time == send_times[i] and is_holiday(date):
                msg = "@所有人 节日快乐!身体健康!"
                for target_user_name in target_user_names:
                    itchat.send_msg(msg, target_user_name)

参考:https://github.com/StrawberryStatement/drink-water-wechat-helper

0 人点赞