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

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

前言

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

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

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

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

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

思路

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

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

  • 第二件事:消息內(nèi)容的獲取和數(shù)據(jù)處理

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

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

消息通知工具分析

wechaty

文檔:wechaty

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

自動回復(fù)、加群、定時推送、回復(fù)、AI接口能力結(jié)合等等很多。。。

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

  • 方式一:聯(lián)系相關(guān)人員購買
  • 方式二:參與開發(fā)者計劃,貢獻(xiàn)項目并被采納,免費(fèi)提供

相關(guān)文檔:https://github.com/juzibot/Welcome/wiki/Everything-about-Wechaty

如果你有加過一些大佬的微信群,應(yīng)該接觸過由該能力實(shí)現(xiàn)的自動拉群、自動回復(fù)、自動每日播報的機(jī)器人

釘釘、飛書、企業(yè)微信

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

存在問題:

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

新的思路:

企業(yè)微信作為微信自己的產(chǎn)品,有著一些天然優(yōu)勢:微信支持在微信內(nèi)接受企業(yè)微信的消息

圍繞這個能力我們也可以實(shí)現(xiàn)相應(yīng)的功能需求,首先,我們先在微信內(nèi)關(guān)注我們創(chuàng)建的企業(yè)微信,然后允許微信內(nèi)接受企業(yè)微信內(nèi)的消息。

個人創(chuàng)建企業(yè)微信很簡單,只需提供手機(jī)號即可

釘釘、飛書則使用機(jī)器人通知

小結(jié)

有條件優(yōu)先使用 wechaty實(shí)現(xiàn),沒條件可以退而求其次采取 企業(yè)微信 + 微信 的方式。

準(zhǔn)備

1.注冊企業(yè)

用電腦打開企業(yè)微信官網(wǎng),注冊一個企業(yè)。有手機(jī)號就可以注冊,不用營業(yè)執(zhí)照!不用營業(yè)執(zhí)照!不用營業(yè)執(zhí)照!

2.創(chuàng)建應(yīng)用

注冊成功后,點(diǎn)「管理企業(yè)」進(jìn)入管理界面,選擇「應(yīng)用管理」 → 「自建」 → 「創(chuàng)建應(yīng)用」

應(yīng)用名稱隨意填,可見范圍可以選擇公司名。

創(chuàng)建完成后進(jìn)入應(yīng)用詳情頁,可以得到應(yīng)用ID( agentid ),應(yīng)用Secret( secret )。

3.獲取企業(yè)ID

進(jìn)入「我的企業(yè)」頁面,拉到最下邊,可以得到企業(yè)ID。

4.推送消息到微信

進(jìn)入「我的企業(yè)」 → 「微信插件」,拉到下邊掃描二維碼,關(guān)注以后即可收到推送的消息。

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

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

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

5.添加環(huán)境變量

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

  1. Name 是WX_APP_ID,Value 是第二步的 AgentId。
  2. Name 是WX_APP_SECRET,Value 是第二步 Secret。
  3. Name 是WX_COMPANY_ID,Value 是第三步的 企業(yè)ID。
WX_COMPANY_ID= 企業(yè)ID
WX_APP_ID= 應(yīng)用ID
WX_APP_SECRET= 應(yīng)用 Secret
TIAN_API_KEY= 天行數(shù)據(jù) key

6.GitHub Action每天自動執(zhí)行

核心代碼如下,詳細(xì)代碼見下面?zhèn)}庫鏈接

schedule:
  # `分 時 天 月 周` 時按照標(biāo)準(zhǔn)時間 北京時間=標(biāo)準(zhǔn)時間+8 18表示北京時間早上2點(diǎn)
  # 早上 7:30
  - cron: '30 23 * * *'

數(shù)據(jù)賦能API

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

注:免費(fèi)開源接口需要考慮服務(wù)穩(wěn)定性!

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

天行數(shù)據(jù):https://www.tianapi.com/

  • 會員免費(fèi)接口數(shù)量:15個
  • 每日贈送次數(shù):100次

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

功能和內(nèi)容

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

目前已添加的功能有:

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

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

部分代碼

接口代碼

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

  // 最美宋詞
  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]
  }

  // 獲取農(nóng)歷信息
  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()
  }
}

請求數(shù)據(jù)-goodMorning

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

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

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

效果

天氣信息

wx_love-1

其他信息

今日笑話:
名作家到我市舉行簽名活動。一大早我?guī)е鴥鹤觼頃曩I書,請作家簽名時,兒子在一旁不解地問:“我們買的書怎么寫他的名字?”

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

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

代碼

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

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

歡迎一起交流

開發(fā)

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

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

結(jié)語

怎么說呢,每天逛GitHub你都能發(fā)現(xiàn)很多有趣的項目和小工具,每天抽點(diǎn)時間看看不僅可以了解前言技術(shù),還能第一時間接觸到很多優(yōu)秀的內(nèi)容和項目,并參考學(xué)習(xí),以此積累技術(shù)也會不斷精進(jìn)。

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

今天你是暖男了嗎??

emoji
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容