ドル円FXアラートをPythonでDiscordに送る方法【LINE Notify終了後の移行ガイド】

自動化・運用

先月、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の過熱も加えて条件を絞りたい。

タイトルとURLをコピーしました