前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python实现微信提醒机器人

python实现微信提醒机器人

原创
作者头像
languageX
发布2022-10-01 10:14:22
3.6K2
发布2022-10-01 10:14:22
举报
文章被收录于专栏:计算机视觉CV计算机视觉CV

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

查阅资料发现微信开源了微信个人号接口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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

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