??微信每天自動給女[男]朋友發早安和土味情話

微信通知,每天給女朋友發早安、情話、詩句、天氣信息等~

前言

之前逛GitHub的時候發現了一個自動簽到的小工具,b站、掘金等都可以,我看了下源碼發現也是很簡潔,也嘗試用了一下,配置也都很簡單,主要是他有一個自動打卡、抽獎的信息通知到微信的功能,不錯過運氣爆棚打卡抽獎時的中獎~??

雖然以前做過釘釘的消息通知,但是釘釘我也就上班用一下,日常很少使用,要說通訊工具在國內還是要微信,笑??,所以,第一接收信息通知的工具最好能是微信,懂得都懂

后來我根據這個功能的邏輯一想,借用這個消息通知的能力,不就可以自定義任何內容推送到微信了嗎,嘿嘿嘿,發現事情變的有趣了起來了~

想起之前看過一篇文章是通過郵箱每天給女朋友發土味情話的操作,郵箱哪有微信效果好呀,可不是??

話不多說直接開整,自己做個每天給女朋友發早安和土味情話的工具,你也可以每天都是暖男~

思路

接下來我們主要做兩件事:

  • 第一件事:消息通知到微信能力的工具

  • 第二件事:消息內容的獲取和數據處理

消息通知能力,我調研了下,其他方案或多或少都有限制和不足,采用以上工具中的方案算是當前比較合適的

消息內容獲取,一是通過開放API快速使用,二是通過自己編寫爬蟲腳本獲取,出于技術和時間成本考慮,目前優先考慮方案一,方案二可以作為拓展能力

消息通知工具分析

wechaty

文檔:wechaty

能做到微信幾乎所有的功能和能力,當你有個小號微信時,你完全可以把它交由 wechaty控制,再通過代碼設計各種能力,可玩性完全由你的想法決定

自動回復、加群、定時推送、回復、AI接口能力結合等等很多。。。

硬性條件是需要 wechaty官方提供的 token來獲取權限,目前方式有兩種

  • 方式一:聯系相關人員購買
  • 方式二:參與開發者計劃,貢獻項目并被采納,免費提供

相關文檔:https://github.com/juzibot/Welcome/wiki/Everything-about-Wechaty

如果你有加過一些大佬的微信群,應該接觸過由該能力實現的自動拉群、自動回復、自動每日播報的機器人

釘釘、飛書、企業微信

這三個工具定位都是企業級應用,企業級應用的好處就是可定制性很高,官方有開放提供很多API接口和權限,機器人、自定義應用、小程序等,可玩性還是蠻大的。

存在問題:

中國社交APP真實情況,排除企業組織使用,個人而言微信第一優先,不管是消息通知還是其他能力,但矛盾的地方是,個人微信限制很多,幾乎不提供這種開發API的能力。當然,如果你可以接受釘釘或飛書或企業微信,則不存在這種問題。

新的思路:

企業微信作為微信自己的產品,有著一些天然優勢:微信支持在微信內接受企業微信的消息

圍繞這個能力我們也可以實現相應的功能需求,首先,我們先在微信內關注我們創建的企業微信,然后允許微信內接受企業微信內的消息。

個人創建企業微信很簡單,只需提供手機號即可

釘釘、飛書則使用機器人通知

小結

有條件優先使用 wechaty實現,沒條件可以退而求其次采取 企業微信 + 微信 的方式。

準備

1.注冊企業

用電腦打開企業微信官網,注冊一個企業。有手機號就可以注冊,不用營業執照!不用營業執照!不用營業執照!

2.創建應用

注冊成功后,點「管理企業」進入管理界面,選擇「應用管理」 → 「自建」 → 「創建應用」

應用名稱隨意填,可見范圍可以選擇公司名。

創建完成后進入應用詳情頁,可以得到應用ID( agentid ),應用Secret( secret )。

3.獲取企業ID

進入「我的企業」頁面,拉到最下邊,可以得到企業ID。

4.推送消息到微信

進入「我的企業」 → 「微信插件」,拉到下邊掃描二維碼,關注以后即可收到推送的消息。

注:如果出現接口請求正常,企業微信接受消息正常,個人微信無法收到消息的情況:

1.進入「我的企業」 → 「微信插件」,拉到最下方,勾選 “允許成員在微信插件中接收和回復聊天消息”

2.在企業微信客戶端 「我」 → 「設置」 → 「新消息通知」中關閉 “僅在企業微信中接受消息” 限制條件

5.添加環境變量

在 Github 的 Secrets 中在添加三個變量:

  1. Name 是WX_APP_ID,Value 是第二步的 AgentId
  2. Name 是WX_APP_SECRET,Value 是第二步 Secret
  3. Name 是WX_COMPANY_ID,Value 是第三步的 企業ID
WX_COMPANY_ID= 企業ID
WX_APP_ID= 應用ID
WX_APP_SECRET= 應用 Secret
TIAN_API_KEY= 天行數據 key

6.GitHub Action每天自動執行

核心代碼如下,詳細代碼見下面倉庫鏈接

schedule:
  # `分 時 天 月 周` 時按照標準時間 北京時間=標準時間+8 18表示北京時間早上2點
  # 早上 7:30
  - cron: '30 23 * * *'

數據賦能API

這里我們可以自己選擇第三方開放API進行定制,或者自己定制

注:免費開源接口需要考慮服務穩定性!

目前接口數據能力主要由天行數據提供,隨便注冊一個賬戶會員即可,無門檻

天行數據:https://www.tianapi.com/

  • 會員免費接口數量:15個
  • 每日贈送次數:100次

注:如果采取該接口,需要在 5.添加環境變量這一步中,再添加Key的變量,作為天行數據接口使用時的必填參數

功能和內容

這里就看個人的想法和思路了,就各種免費接口基本可以提供很多各式各樣的信息了,你也可以自己寫服務和爬蟲腳本等,可玩性真的是很高

目前已添加的功能有:

  • 個人定制化信息
  • 天氣信息
  • 每日一言
  • 最美宋詞
  • 雷人笑話
  • 土味情話
  • 每日英語
  • 睡前故事

內容完全由你發揮,之后還可以開發自己的個人資訊和消息推送等,就很棒~

部分代碼

接口代碼

class API {
  key: string
  constructor(key?: string) {
    this.key = key || '' // 為了方便,key在 http中統一添加
  }

  // 最美宋詞
  async getSongLyrics() {
    const res = await getTian<IVerseProps[]>({ url: LoveMsgURL.songLyrics })
    return res?.[0]
  }

  // 每日一句美好英語
  async getDayEnglish() {
    const res = await getTian<ResEnglishProps[]>({ url: LoveMsgURL.dayEnglish })
    return res?.[0]
  }

  // 獲取農歷信息
  async getLunarDate(date: string) {
    const res = await getTian<ResLunarDateProps[]>({ url: LoveMsgURL.lunarDate, params: { date } })
    return res?.[0]
  }

  // 土味情話
  async getSaylove() {
    const res = await getTian<SayloveProps[]>({ url: LoveMsgURL.saylove })
    return res?.[0]
  }
}

export default new API()

早安、午安、晚安

const { MESSAGE_TYPE } = process.env

export default function main() {
  if (MESSAGE_TYPE === 'goodAfternoon') {
    // 午安
    goodAfternoon()
  } else if (MESSAGE_TYPE === 'goodEvening') {
    // 晚安
    goodEvening()
  } else {
    // 早安
    goodMorning()
  }
}

請求數據-goodMorning

/**
 * @name goodMorning
 * @description 說早安
 */

// 并行請求,優響相應
const dataSource = await Promise.allSettled([
  API.getSaylove(), // 土味情話
  API.getCaihongpi(), // 彩虹屁
  API.getOneWord(), // 一言
  API.getSongLyrics(), // 最美宋詞
  API.getOneMagazines(), // one雜志
  API.getNetEaseCloud(), // 網易云熱評
  API.getDayEnglish(), // 每日英語
])

// 過濾掉異常數據
const [sayLove, caiHongpi, oneWord, songLyrics, oneMagazines, netEaseCloud, dayEnglish] =
  dataSource.map((n) => (n.status === 'fulfilled' ? n.value : null))

效果

天氣信息

wx_love-1

其他信息

今日笑話:
名作家到我市舉行簽名活動。一大早我帶著兒子來書店買書,請作家簽名時,兒子在一旁不解地問:“我們買的書怎么寫他的名字?”

一言:
冬天之所以那么冷是為了告訴大家身邊人的溫暖有多重要。

今日英語(Dec 18 2021):
While there is life, there is hope.
生命不息,希望不止。

代碼

本項目使用 TypeScript開發,包管理工具為 pnpm

完整代碼見倉庫,已開源 https://github.com/JS-banana/notify-server

歡迎一起交流

開發

復制 .env.example文件重命名為 .env,并按照要求填寫對應值,可以直接測試

如果要通過 GitHub Action使用,需要在 Secrets 中一一添加變量

結語

怎么說呢,每天逛GitHub你都能發現很多有趣的項目和小工具,每天抽點時間看看不僅可以了解前言技術,還能第一時間接觸到很多優秀的內容和項目,并參考學習,以此積累技術也會不斷精進。

這個項目總的來說還是很簡單的,比日常工作寫業務要簡單多了,但是它卻是很有趣的,這未嘗不是愛上編碼的一種方式呢。無聊繁雜的業務工作很容易讓人產生厭煩和頹態,但技術本身應是帶給我們樂趣和快樂的,不是嗎

今天你是暖男了嗎??

emoji
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容