Edited at

仮想通貨を変換した時の金額を求めるTwitterBOT作ったお話

More than 1 year has passed since last update.


はじめに

気まぐれで作ったTwitter BOTです。

またこの記事は人畜無害のブログにて書いたものを更にQiita用にしたものです

仮想通貨を変換した時の金額を求めるBOT作った[Twitter, BOT]


目的


  • 選択した仮想通貨同士で計算してくれるサイトがなかった(Mona-BitZenyなど)

  • BTCなどで計算するとめんどい(やたらと小数点以下が多いので)

  • 変換サイトが重い

  • タブ増やしたくない

  • いつもTwitterは開いている

  • いちいちめんどい

  • めんどい

これらを解決するため楽するためにBOTを作成しました


使い方

TwitterにてBOTアカウントにリプライを飛ばすだけでできます

ExCrypto - Twitter


ツイート

@MultiCryptoEx ex [金額] [変換前の通貨] [変換後の通貨] [コメントなど]



現時点で使用できる通貨


  • BTC

  • JPY

  • MONA

  • NEM/XEM

  • BitZeny

例:


ツイート

@MultiCryptoEx ex 100 mona zny



環境

稼働マシン :Windows 10 Pro x64

PHP:7.1.7


仕組み

結構雑にできています


  • Twitter Streaming APIにてBOTに対するリプライを取得

  • リプライをスペースで区切り配列に変換

  • 交換前の通貨の対応する取引所にAPIを飛ばし、交換前の通貨をBTCで換算

  • 交換後の通貨の対応する取引所にAPIを飛ばし、BTCから交換後の通貨に換算

  • リプライを返す


困ったこと


目的の通貨とBTCの変換

例としてZaifをあげますが公式で対応しているのが


  • btc_jpy

  • xem_jpy

  • mona_jpy

  • mona_btc

JPYが基準となっているようです

そこは置いておいてmona_btcでMonaをBTCに変換する場合は特に問題ありませんがBTCからMonaに変換する方法がなかなか思いつきませんでした

1[Mona]:x[BTC] = 1/x[Mona]:1[BTC]この計算式になるように適時対応させました


指数変換

非常に大きい値、小数点以下が非常に長い場合、指数変換されてしまいます

php の関数number_formatを使用してカンマ区切りも同時に行っています


リプライ

BOTのリプライに対して更にリプライをすると記法ミスとして扱ってしまいます

無視すればいいかもしれませんが、単に入力ミスの可能性もあるためBOTが行ったリプライ以降はすべて無視するようにしました


今後必要なこと


Streaming APIの対応

Twitter APIはリプライ後すぐ返すためStreaming APIを使用していますがZaifもできればAPI制限にかからないよう、また負荷軽減のためにStreaming APIに対応したいです

ただ、複数のStreaming APIを同時に扱う方法がいまいちわかりません(というより情報がない)


実行環境の変更

現在ほぼ稼働しているメインPC(Windows)で動作させています

ただ、家族が電子レンジを稼働させるとネットワークが切れてしまうため(細かいことは私のTwitterを察してください)早急にサーバーを用意する予定です

現在CloudAtCostでやろうか、有志の方のサーバー借りるか検討中です


使用したAPI・ライブラリ


API


ライブラリ


最後に

ライブラリを作成して下さった方々やデバック作業を自ら手伝ってくださった方、ありがとうございました

今後も機能追加、バグ潰し頑張ります☆(ちゝω・ぇ)v