一、缘起
前几天
女票 -> 女同学甩给我上面那张图,
PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取
说她也想每天都能收到甜甜的彩虹屁。
好家伙,
我一寻思这不就是个彩虹屁 bot 嘛,
自欺欺人地说?
但既然她开口了,
那咱必须得给她整到位,
走起 :rocket:
二、准备工作
考虑到她最近在准备 考研 ,需要有人每天鼓励她,所以我打算给她每天来点毒鸡汤,然后做个考研倒计时的提示,再查询一下当天的天气,提醒她天冷加衣,小心着凉感冒(想到这里我都有被感动到), 暖暖的 bot,很贴心 ,哈哈哈。
先从网上整了个天气查询接口: http://wthrcdn.etouch.cn/weather_mini?city=
OK ,现在天气有了,冷暖也知道了,下面再整个彩虹屁接口:
https://chp.shadiao.app/api.php (感谢 shadiao.app | 2333.jpg)
然后再友情赠送一个毒鸡汤接口: https://www.iowen.cn/jitang/api/
OK,万事俱备,代码整起:sunglasses:
三、人生苦短,我用 Python
没时间解释了,快上车 :car:
# coding=utf-8 import io import sys import time import datetime import requests from email.mime.text import MIMEText from email.header import Header import smtplib import logging logger = logging.getLogger() logger.setLevel(logging.INFO) mail_host = "smtp.163.com" mail_user = "xxxxxxx@163.com" #此处填你的邮箱 mail_girl = "xxxxxxx@qq.com" #你女票的邮箱 mail_pass = "xxxxxxx" #邮箱密码 name_girl = "xxx" #你女票的名字 mail_port = 465 sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf8') def getWeather(): r = requests.get( 'http://wthrcdn.etouch.cn/weather_mini?city=%E6%9B%B2%E9%98%9C') if 'OK' in r.text: r = r.json()['data'] tip = r['ganmao'] temperature = r['wendu'] weather = r['forecast'][0]['type'] return f'天气:{weather} 当前温度:{temperature}\n{tip}' return '获取天气失败:(' def getTime(): today = datetime.datetime.now()+datetime.timedelta(hours=+8) date2 = time.strptime('2020-12-25', "%Y-%m-%d") date2 = datetime.datetime(date2[0], date2[1], date2[2]) t = today.timetuple() days = (date2-today).days return f'今天是{t.tm_year}年{t.tm_mon}月{t.tm_mday}日 星期{t.tm_wday+1} 考研倒计时:{days}天' def getSoup(): r = requests.get('https://www.iowen.cn/jitang/api/') if '数据获取成功' in r.text: return r.json()['data']['content']['content'] return '高考在昨天,考研在明天,今天没有什么事儿。' def getPi(): r = requests.get('https://chp.shadiao.app/api.php').text return r if len(r) > 3 else '你上辈子一定是碳酸饮料吧,为什么我一看到你就开心的冒泡' def morning(): return '\n'.join([getTime(), getSoup(), getWeather(), getPi()]) def night(): return '\n'.join([getSoup(), getPi(), f'晚安,{name_girl}同学,今天你也是最棒的,继续加油鸭!']) def getTimeX(): t = int(time.strftime("%H", time.localtime()))+8 if t > 24: t = t-24 return 'morning' if t < 11 else ('noon' if t < 17 else 'afterNoon') def main_handler(event, context): smtpObj = smtplib.SMTP_SSL(mail_host, mail_port) try: smtpObj.login(mail_user, mail_pass) except smtplib.SMTPException as e: logger.info(e) return False content = night() if getTimeX() == 'afterNoon' else morning() message = MIMEText(content, 'plain', 'utf-8') message['From'] = mail_user message['To'] = mail_girl message['Subject'] = f'早安,{name_girl}' if getTimeX() != 'afterNoon' else '晚安,xxx' try: smtpObj.sendmail(mail_user, [mail_girl], message.as_string()) logger.info("send email success") except smtplib.SMTPException as e: logger.info(e) logger.info("Error: send email fail") logger.info(content) return content
四、Serverless 助你一臂之力
整完上面那些差不多两分钟就过去了,别担心,剩下一分钟交给腾讯云函数足矣 :coffee:
Step 1:注册登录腾讯云(https://cloud.tencent.com/)
Step 2:打开腾讯云控制台(https://console.cloud.tencent.com/)
Step 3:打开云函数菜单,依次选择函数服务->地区(随便选个)->新建
Step 4:新建 Python 云函数,环境 python3.6,选择空白函数模板,下一步
Step 5:把前面改好的Python函数复制粘贴到index.py(覆盖原有代码),完成
Step 6:最后一步,添加定时触发器
打开刚才新建的 bot 云函数,选择触发管理,新建触发器,选择定时触发,自定义触发周期:0 30 6 * * * * ,即每天早上6点30分(北京时间)自动触发运行一次当前函数,以达到每天定时发送“彩虹屁”给女票的目的 :grinning:
这里我早晚各加了一个定时触发器,每天对女票不止早午晚安哦:stuck_out_tongue_winking_eye:
PS:腾讯云函数每月有免费的 100 万调用次数+ 40万GB·s 资源使用量哦,超级良心有木有,感动~
五、来吧,展示
早安
晚安
六、总结
以上,我们简单实现了
一个可盐可甜的彩虹屁 bot,
再也不用担心忘记跟女票 早午晚安 了,
哈哈哈哈哈哈哈哈哈哈哈嗝~