地震警報批次檔通知到line notify或官方推播方式

最近地震頻傳,但因為工作關係不見得都在電腦旁~於是思考另一種方式。把程式另存成ansi的bat檔案

一、使用line notify

@echo off
:: 檢查是否提供了兩個參數
if "%1"=="" goto usage
if "%2"=="" goto usage

:: 將參數存入變數
set magnitude=%1
set seconds=%2

:: 檢查震度是否大於 2
if %magnitude% LSS 2.0 (
echo 震度小於2.0,不發送通知
goto end
)

:: LINE Notify
set LINE_TOKEN=你的line notify token

:: 準備訊息內容
set "message=地震警報! 震度: %magnitude%, 預計抵達時間: %seconds%秒"

:: 使用 curl 發送 LINE Notify
curl -X POST https://notify-api.line.me/api/notify ^
-H "Authorization: Bearer %LINE_TOKEN%" ^
-F "message=%message%"

if %ERRORLEVEL% EQU 0 (
echo LINE通知發送成功!
) else (
echo LINE通知發送失敗...
echo 錯誤代碼: %ERRORLEVEL%
)
goto end

:usage
echo 使用方式: %0 震度 秒數
echo 範例: %0 6.0 30

:end

二、官方帳號推播給個人

@echo off
:: 檢查是否提供了兩個參數
if "%1"=="" goto usage
if "%2"=="" goto usage

:: 將參數存入變數
set magnitude=%1
set seconds=%2

:: 檢查震度是否大於 2
if %magnitude% LSS 2.0 (
echo 震度小於2.0,不發送通知
goto end
)

:: LINE Messaging API 設定
set CHANNEL_TOKEN=你的chaneel token
set USER_ID=你的id

:: 使用 curl 發送訊息 (使用單引號並直接寫入JSON)
curl -v -X POST https://api.line.me/v2/bot/message/push ^
-H "Content-Type: application/json" ^
-H "Authorization: Bearer %CHANNEL_TOKEN%" ^
-d "{\"to\":\"%USER_ID%\",\"messages\":[{\"type\":\"text\",\"text\":\"地震警報!震度:%magnitude%,預計抵達時間:%seconds%秒\"}]}"

if %ERRORLEVEL% EQU 0 (
echo LINE訊息發送成功!
) else (
echo LINE訊息發送失敗...
echo 錯誤代碼: %ERRORLEVEL%
)

goto end

:usage
echo 使用方式: %0 震度 秒數
echo 範例: %0 6.0 30

:end

作者: 林壽山

林壽山 目前任職於軟體公司研究開發部門主管,主要採用.net core/.net 5/6 開發,收銀機pos系統開發,第三方支付設計(綠界、馬來西亞epay/happypay、台新one碼),金流設計,行動支付設計(悠遊卡/一卡通),支付寶,微信,街口支付,信用卡機(聯合信用卡),擅長PHP網頁設計(CodeIgniter、Laravel)框架、Delphi程式設計、資料庫設計、C# WinForm/WebForm程式設計、ASP.net MVC、LINE串接、API串接設計