1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LINE Notifyの代替に!DiscordでMATLABのプログラム終了通知を受信する方法【Webhook活用】

Last updated at Posted at 2025-04-27

LINE Notifyの代替に!Discordで簡単プログラム終了通知【Webhook活用】

はじめに

2024年末,LINE Notifyのサービス終了が発表されました.
長い時間計算処理させる場合に終了通知やエラー発生の通知があると便利で,重宝していたのでサービス終了には困っていました...
どうにかできないかなと,色々調べたところDiscordのWebhookをLINE Notifyの代わりに使うことができそうだったので,それらを試した結果を記事としてまとめました.
この記事ではMATLABを使用していますが,Pythonなど他の言語にも応用できると思います.(余力があればPython版も追加します)


準備:DiscordのWebhook URLを取得する

  1. Discordをダウンロードして使える状態にする
  2. Discordで通知を送りたい「チャンネル」に移動
  3. チャンネル名,横の ⚙️ 歯車マークチャンネル設定」をクリック
  4. 連携サービス」→「Webhookを作成
  5. Webhookの名前を設定し「Webhook URLをコピー

WebhookのURLを使ってMATLABなどから通知を送信できます.


MATLABからDiscordにテスト通知を送るコード

以下がMATLABのコード例です.

webhook_url = '準備5でコピーしたURL';

% ==== 通知メッセージ ====
msg = struct('content', 'MATLABからの通知テストです!');

% ==== HTTP Body(JSON形式) ====
body = matlab.net.http.MessageBody;
body.Data = msg;  % ここでは構造体のままでOK(自動でJSON化される)

% ==== ヘッダー ====
headers = matlab.net.http.HeaderField('Content-Type', 'application/json');

% ==== POSTリクエスト作成 ====
request = matlab.net.http.RequestMessage('POST', headers, body);

% ==== リクエスト送信 ====
response = request.send(webhook_url);

% ==== 結果表示 ====
disp("ステータスコード:");
disp(response.StatusCode);

disp("レスポンス:");
disp(response.Body.Data);

MATLABからDiscordにループ処理の完了通知とエラーつうちを送るコード

ループ処理に組み込みたい場合は以下を参考に,適宜変更して使用してください.


clc; 
clear; 
close all;

webhook_url = '';  % ここにあなたのWebhook URLを記入

% ==== 通知送信用関数(メッセージだけ渡す) ====
function sendDiscordNotify(message, webhook_url)
    msg = struct('content', message);
    body = matlab.net.http.MessageBody;
    body.Data = msg;
    headers = matlab.net.http.HeaderField('Content-Type', 'application/json');
    request = matlab.net.http.RequestMessage('POST', headers, body);
    response = request.send(webhook_url);
    disp("通知ステータス: " + string(response.StatusCode));
end

% ==== メイン処理 ====
try
    % 処理ループ(例: 1~5まで繰り返す)
    for i = 1:5
        disp("処理中: " + i);

        % i == 3でエラーを意図的に発生させる
        if i == 3
            error("処理中にエラーが発生しました: i = %d", i);
        end

        pause(1); 
    end

    % ==== 正常に完了したときの通知 ====
    sendDiscordNotify("MATLABの処理が正常に完了しました!", webhook_url);

catch ME
    % ==== エラーが発生したときの通知 ====
    errMsg = sprintf("エラー発生: %s", ME.message);
    sendDiscordNotify(errMsg, webhook_url);
end

何かのお役に立てばうれしいです.
間違いやわからないことありましたら,ご連絡ください!

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?