30
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

n8nで植物の水やりリマインドBOTを作ってみた(Discord連携)

30
Posted at

はじめに

植物って気づいたら水やり忘れませんか?

  • 忙しいとつい忘れる
  • 種類ごとに頻度が違う
  • いつ水やったか分からなくなる

そこで今回は、n8n + Discord + Data Tableを使って
「水やり管理を自動化するBOT」を作りました。

作ったもの

機能一覧

  • 水やりが必要な植物を自動判定
  • Discordに通知
  • 番号で返信すると水やり完了として記録
  • 次回の水やり日を自動更新

データ構造

n8nのData Tableで管理します。

カラム 内容
id string 一意キー
plant_name string 植物名
watering_interval_days number 水やり間隔(日)
last_watered_at datetime 最終水やり日
reminder_enabled boolean リマインドON/OFF
next_due_at datetime 次回水やり予定日

今回はシンプルにこの設計だけで完結させています。

全体の流れ

今回のワークフローはこちら
image.png

ざっくり流れはこんな感じです:

  1. 水やり対象を取得
  2. Discordに一覧送信
  3. ユーザーの返信を待つ
  4. 対象植物を特定
  5. DBを更新

機能①:水やり対象の抽出

Data Tableから「今日水やりが必要な植物」を取得します。

条件

  • reminder_enabled = true
  • next_due_at <= 現在時刻

この条件で「今日水やりするべき植物」が抽出されます

機能②:Discordに一覧表示

取得した植物をこんな形式で送ります

🪴 今日の水やり対象です

1. モンステラ
2. ポトス
3. サンスベリア

水やりした植物の番号を返信してください
例: 1,3
全部やったら: all
見送るなら: skip

ポイント

  • 番号付きにすることで入力を簡単に
  • 「all / skip」も用意してUX改善

機能③:返信待ち(ここが重要)

Discordの
Send and Wait を使います

これで

  • BOTがメッセージ送信
  • ユーザーの返信を待つ
  • そのまま次の処理に渡す

という流れが作れます

機能④:返信の解析

返信内容を解析して対象の植物を特定します。

対応パターン

  • 1,3 → 指定した植物だけ
  • all → 全部
  • skip → スキップ

処理内容

  • カンマ区切りを分解
  • 数値のみ抽出
  • 対応するrow_idに変換

機能⑤:水やり記録の更新

対象の植物だけ更新します。

更新内容

  • last_watered_at → 今
  • next_due_at → 今 + 間隔日数

自動で次回スケジュールが決まります

工夫ポイント

① 複数植物でも対応

返信をまとめて処理することで
1回のメッセージで複数更新可能

② ステートレス設計

会話履歴に依存しない
DBだけで状態管理

③ UX重視

番号入力
all / skip

まとめ

n8nを使えば

  • DB管理
  • 条件分岐
  • 外部通知
  • ユーザー入力

これらをノーコードに近い形で組み合わせられるので、

今回みたいな「日常のちょい面倒」を解決するのに最適です。

30
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?