はじめに
気まぐれで作ったTwitter BOTです。
またこの記事は人畜無害のブログにて書いたものを更にQiita用にしたものです
仮想通貨を変換した時の金額を求めるBOT作った[Twitter, BOT]
目的
- 選択した仮想通貨同士で計算してくれるサイトがなかった(Mona-BitZenyなど)
- BTCなどで計算するとめんどい(やたらと小数点以下が多いので)
- 変換サイトが重い
- タブ増やしたくない
- いつもTwitterは開いている
- いちいちめんどい
- めんどい
これらを解決するため楽するためにBOTを作成しました
使い方
TwitterにてBOTアカウントにリプライを飛ばすだけでできます
@MultiCryptoEx ex [金額] [変換前の通貨] [変換後の通貨] [コメントなど]
現時点で使用できる通貨
- BTC
- JPY
- MONA
- NEM/XEM
- BitZeny
例:
@MultiCryptoEx ex 100 mona zny
100 [MONA] を [MONA] から [ZNY] へ変換: 25,323.8866396761 [ZNY]
— ExCrypto (@MultiCryptoEx) 2017年12月2日
2017-12-02 13:45:22
環境
稼働マシン :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
ライブラリ
-
phirehose / PHP Twitter
Streaming - cowitter / PHP Twitter REST
- Zaif4PHP / PHP Zaif REST, Streaming
- PHP-ccex-api / PHP C-CEX REST
最後に
ライブラリを作成して下さった方々やデバック作業を自ら手伝ってくださった方、ありがとうございました
今後も機能追加、バグ潰し頑張ります☆(ちゝω・ぇ)v