先月、LINE Notifyが終了すると告知があって、アラートBotを作り直す羽目になりました。。。子育て中でチャートを見る時間がない分、通知だけは絶対に止めたくなかったので、Discordに乗り換えた話を書きます。
なぜDiscordを選んだか
Slackは個人で使うには重いし、LINEは終了。Discordはスマホ通知が確実で、Webhook URLで簡単に連携できる。ゲーマー向けのイメージがあったけど、個人開発の通知先として使うと便利だった。
実装コード
import yfinance as yf
import pandas as pd
import json
import urllib.request
DISCORD_WEBHOOK = "あなたのWebhook URL"
def get_usdjpy():
df = yf.download("JPY=X", period="5d", interval="1h", auto_adjust=True)
df.columns = [c[0] if isinstance(c, tuple) else c for c in df.columns]
return df
def send_discord(message):
data = json.dumps({"content": message}).encode("utf-8")
req = urllib.request.Request(
DISCORD_WEBHOOK,
data=data,
headers={"Content-Type": "application/json"},
method="POST"
)
urllib.request.urlopen(req)
def check_alert():
df = get_usdjpy()
latest = df["Close"].iloc[-1]
prev = df["Close"].iloc[-2]
change = (latest - prev) / prev * 100
if abs(change) >= 0.5:
direction = "📈上昇" if change > 0 else "📉下落"
send_discord(
f"【ドル円アラート】
"
f"{direction}: {latest:.2f}円 ({change:+.2f}%)
"
f"前時間比 {change:+.2f}%の動き"
)
print("Discord通知送信")
else:
print(f"動き小({change:+.2f}%)- 通知なし")
check_alert()
Discord Webhook URLの取得方法
Discordサーバー → チャンネル設定 → 連携サービス → ウェブフックを作成、でURLが発行される。このURLを上記コードの DISCORD_WEBHOOK に入れるだけ。
これをcronで30分ごとに実行している。夜中に子供が起きていても、スマホのDiscord通知でドル円の動きを把握できるようになった。LINE Notifyより動作が安定している印象。次はRSIの過熱も加えて条件を絞りたい。

