nicehashの出金手数料を通知してくれるdiscord botをgasで書いた

前書き

出金手数料通知してくれるdiscordサーバがあったので入っていたのですが、通知してくれなくなったので自分で書いた
サーバは公開したくないのでソースコードだけ貼っときます

ソースコード

  // ここの箇所は各自変更する必要あり
  const discordWebHookURL = "ディスコードのウェブフックURLをコピペするところ";

https://gist.githubusercontent.com/silenvx/100159c5931271cbb694a3d9fd49b0b0/raw/44917dbef5ef7586181b8936596d4073db06ddfd/%25E3%2582%25B3%25E3%2583%25BC%25E3%2583%2589.gs

// nicehashの手数料を取得
function get_nicehash_fee(coin='BTC'){
  var response = UrlFetchApp.fetch('https://api2.nicehash.com/main/api/v2/public/service/fee/info')
  var fee_info = JSON.parse(response.getContentText());
  return(fee_info['withdrawal']['BITGO']['rules'][coin]['intervals'][0]['element']['sndValue'])
}

// discordにウェブフックを使ってbotメッセージを送信
function send_discord(msg='', everyone = false){
  const discordWebHookURL = "ディスコードのウェブフックURLをコピペするところ";
  if(everyone){
    msg = '@everyone' + msg
  }
  const message = {
    "content": msg,
    "tts": false
  }
  const param = {
    "method": "POST",
    "headers": { 'Content-type': "application/json" },
    "payload": JSON.stringify(message)
  }
  UrlFetchApp.fetch(discordWebHookURL, param);
}

// 現在の時刻の文字列を返す
function get_now(){
  var date = new Date();
  return Utilities.formatDate( date, 'Asia/Tokyo', 'yyyy/MM/dd HH:mm:ss');
}

// main
function myFunction() {
  // 取得するコインの種類
  var coin = "BTC"
  // 前回の手数料
  var properties = PropertiesService.getScriptProperties();
  var fee_before = properties.getProperty("fee_before");

  var res_fee = get_nicehash_fee(coin);

  // 表示するメッセージの生成
  msg = '['+get_now()+'] '+coin+': '+res_fee;
  Logger.log(msg + ', before:' + fee_before);

  // 前回と違えば表示する
  if(fee_before != res_fee){
    send_discord(msg, everyone = res_fee <= 0.000001);
  }
  // 前回の手数料を保存
  properties.setProperty("fee_before", res_fee);
}

使い方

1.gasを作成

googleドライブを開いて、新規 -> その他 -> Google Apps Script
ここに先程のソースコード貼り付ける

2.ウェブフックURLの取得と書き換え

導入したいdiscordサーバの設定 -> 連携サービス -> ウェブフック -> 新しいウェブフック -> ウェブフックURLをコピー
これで得たURLを先程の貼り付けたソースコードの変更する必要のある場所を書き換える

3.トリガーの設定をして実行

gasでトリガー -> トリガーを追加 を選んで、実行する関数は「myFunction」
分ベースのタイマー、1分おきとかその辺は好みで設定して完了

動作について

前回と違う手数料に変わった時だけdiscordに通知されます
手数料が0.000001BTC以下だと@everyoneをつけて通知します

discordなんて使いたくねーよ

なんて人がいたらpythonで1分ごとに取得するものをgasで書く前に試しに書いたのでどうぞ
0.000001BTC以下だったらビープ音鳴らすなりしたらいいと思う(そこまで書いてません)

import json
import urllib.request
import datetime
import time

while True:
    url = 'https://api2.nicehash.com/main/api/v2/public/service/fee/info'
    req = urllib.request.Request(url)
    with urllib.request.urlopen(req) as res:
        dt_now = datetime.datetime.now()
    
        fee_info = json.load(res)
        coin = 'BTC'
        print("[{}] {}: {:.8f}".format(dt_now.strftime('%Y-%m-%d %H:%M:%S'), coin, fee_info['withdrawal']['BITGO']['rules'][coin]['intervals'][0]['element']['sndValue']))
    
    time.sleep(60)