【python实战】给女朋友做个聊天机器人

女朋友总觉得我话少,想每天一睁眼就看到99+叫她宝宝的消息,我一听,这还不简单。安排!

1.前期准备

由于微信限制了我登录网页版微信,itchat和wxpy就都用不了。所以选用企业微信,很高大上有没有。

  • 注册个企业微信,把你和女朋友拉个群

  • 添加群机器人,设置成你的头像和昵称

  • 复制webhook,下面会用到。

  • 准备个云服务器,学生版很便宜,怎么部署看我以前文章。传送门

2.实现原理

企业微信内置了机器人,并且开放了接口。点这里

其实质是发送了一条http请求,附带你要发送的信息。实现方式主要以下两种:

  • 利用curl发送请求,然后设置linux的定时任务。
  • 利用python的requests库,发送请求,并在linux后台一直运行。
  • 本文采用第二种

 3.操作步骤

  1. 在linux新建.py文件。【阿里云服务器内置python2,无需安装。只需pip安装requests库】

    pip install requests
    vim send.py
    

     

  2. 写入以下代码

    # -*- coding: utf-8 -*-
    # Date: 2021/4/6 11:24
    # Author: libiao
    # wechat: 一条IT
    # Software: PyCharm
    #! -*- coding: utf-8 -*-
    import requests, json
    import datetime
    import time
    import random
    
    wx_url = "写你自己的webhook"
    mslist=[发送内容的列表,可以随机选一个发送,不会过于单调,也可以下个爬虫获取更丰富的内容]
    
    
    
    def get_current_time():
        """获取当前时间,当前时分秒"""
        now_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        hour = datetime.datetime.now().strftime("%H")
        mm = datetime.datetime.now().strftime("%M")
        ss = datetime.datetime.now().strftime("%S")
        return now_time, hour, mm, ss
    
    
    def sleep_time(hour, m, sec):
        """返回总共秒数"""
        return hour * 3600 + m * 60 + sec
    
    
    def send_msg(content):
        """发送指定信息"""
        data = json.dumps({"msgtype": "text", "text": {"content": content}})
        r = requests.post(wx_url, data, auth=('Content-Type', 'application/json'))
        print(r.json)
    
    
    def every_time_send_msg(interval_h=0, interval_m=0, interval_s=0, special_h="00", special_m="00", mode="special"):
        """每天指定时间发送指定消息"""
    
        # 死循环
        while 1 == 1:
            interval_m = random.randint(1, 5)
            # 设置自动执行间隔时间
            second = sleep_time(interval_h, interval_m, interval_s)
            # 获取当前时间和当前时分秒
            c_now, c_h, c_m, c_s = get_current_time()
            print("当前时间:", c_now, c_h, c_m, c_s)
            if mode == "special":
                if c_h == special_h and c_m == special_m:
                    # 执行
                    print("正在发送...")
                    send_msg(send_message)
            else:
                send_message = mslist[random.randint(0, 6)]
                send_msg(send_message)
            print("每隔" + str(interval_h) + "小时" + str(interval_m) + "分" + str(interval_s) + "秒执行一次")
            # 延时
            time.sleep(second)
    
    
    if __name__ == '__main__':
        every_time_send_msg(mode="no")
    

     

  3. 使用挂起命令让程序后台运行,并将输出写入日志文件

    nohup python -u send.py > mysend_out.out 2>&1 &
  4. 关闭程序,获取到进程号之后,kill。

    ps -ef|grep send
    
    kill pid

     

4.效果展示

【python实战】给女朋友做个聊天机器人_第1张图片

自从有了它,我就多了个情敌。他还是个永动机,整不了。

不说了,我的地位没了,都是自找的。

 

 


道阻且长,行则将至。我是一条,感谢各位人才的:点赞收藏评论,我们下期见!

 

 

 

你可能感兴趣的:(从实战学python,云服务器,python,机器人,云服务器,linux)