前言

每天的午餐,你也有這些煩惱嗎?

  • 每次都在猶豫要去哪裡
  • 總是只去同一家店
  • 想開發新的店家

所以這次我使用

n8n + Google Maps API + Discord

做了一個

會自動推薦午餐的 Bot

做了什麼

會像這樣在 Discord 通知👇
image.png

整體架構

這次的 n8n 工作流程如下👇

  1. 初始設定(地點、API 金鑰等)
  2. 地址 → 轉換為緯度經度
  3. 搜尋附近的餐飲店
  4. 依條件篩選
  5. 隨機選出 1 筆
  6. 傳送到 Discord

使用的工作流程

image.png

各功能說明

① 初始設定

首先先把設定值統一定義好。

locationText: Mugitacho, Kanagawa, Japan
radiusMeters: 1500
maxResultCount: 20

可調整的重點

  • 搜尋範圍(半徑)
  • 最多取得筆數
  • 語言

② Geocoding(地址 → 緯度經度)

使用 Google Maps API 將地址轉換為座標。

https://maps.googleapis.com/maps/api/geocode/json

這樣就能把👇

Mugitacho → 緯度・經度

轉換完成。

③ 周邊搜尋(Places API)

這裡是主要處理流程。

<span>"includedTypes"</span><span>:</span><span> </span><span>[</span><span>
  </span><span>"ramen_restaurant"</span><span>,</span><span>
  </span><span>"cafe"</span><span>,</span><span>
  </span><span>"restaurant"</span><span>
</span><span>]</span><span>
</span>

重點

  • 限定為拉麵店 / 咖啡廳 / 餐廳
  • 只取得營業中的店家(openNow)
  • 依距離順序取得

④ 資料整理與篩選

<span>// 評價4.0以上で絞る</span>
<span>const</span> <span>highRated</span> <span>=</span> <span>valid</span><span>.</span><span>filter</span><span>(</span><span>p</span> <span>=></span> <span>{</span>
  <span>const</span> <span>rating</span> <span>=</span> <span>Number</span><span>(</span><span>p</span><span>.</span><span>rating</span> <span>||</span> <span>0</span><span>);</span>
  <span>return</span> <span>rating</span> <span>>=</span> <span>4.0</span><span>;</span>
<span>});</span>

做的事情如下👇

排除缺少資料的項目
只保留評價 4.0 以上

盡量避免出現「踩雷店家」的系統。

⑤ 隨機選擇

<span>const</span> <span>pick</span> <span>=</span> <span>highRated</span><span>[</span><span>Math</span><span>.</span><span>floor</span><span>(</span><span>Math</span><span>.</span><span>random</span><span>()</span> <span>*</span> <span>highRated</span><span>.</span><span>length</span><span>)];</span>

⑥ Discord 通知

🍜 今日的午餐推薦
🏠 店名
⭐ 評價
🍽️ 類別
📍 地址
👉 Google Maps

會發送成可直接點擊前往的訊息。

設計重點

  • 用評價篩選來確保品質
    → 只保留 4.0 以上
  • 隨機選擇避免膩
    → 每次都不同店
  • 只取得營業中的店家
    → 排除無效候選

總結

這次做的東西在技術上雖然很簡單,但

  • API 串接
  • 資料整理

都是很好的練習。


原文出處:https://qiita.com/wan-code/items/71b3c3188d19e2429ee0


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝3   💬3   ❤️1
198
🥈
我愛JS
💬2  
7
🥉
Gigi
2
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登