Slack에서 Zaif에서 구입할 수 있도록하는 방법 - (첫 번째)
목표
- 봇으로 자동 거래
- 중재 대형 격차 거래
그럼 이번에 갔던 일이지만,
"Slack을 이용하여 쉽게 구입, 가격 확인을 할 수 있도록 했습니다"
필요한 것
전제 조건
slack에서 봇에 대하여
가격 xem
price btc
price all
등으로 보내면 현재 가격표가 반환되도록합니다.
달성 후 이미지
작업 절차
1. 적절한 프로젝트 폴더 만들기
여기서 가는 것은 slackbot lib를 이용하는데 필요한 프로젝트 구성을 설명합니다.
- 프로젝트 폴더
-- -- run.py (실제로 실행할 수있는 앱 - 특히 변경 없음)
- - slackbot_settings.py (슬랙 봇 구성 파일)
- - 플러그인
- - - price_bot.py (가격표를 취하는 서비스)
- - - trade_bot.py (거래를 실제로 만드는 서비스)
run.py
#run.py
from slackbot.bot import Bot
def main():
bot = Bot()
bot.run()
if __name__ == "__main__":
print('slackbot start')
main()
slackbot_settings.py
#slackbot_settings.py
# slack bot API
API_TOKEN = "xoxb-<YOUR API TOKEN HERE>"
# ボットがキーワードを理解できなかった場合に返すデフォルトメッセージ
DEFAULT_REPLY = "ゴメン!理解ができなかったよ。(/ω・\)ナキッ"
# pluginsフォルダへパスを通すことによってpluginsフォルダ内に入っている全てのサービスを運用することが出来るようになる
PLUGINS = ['plugins']
위의 설정을 먼저 했으면 plugin 폴더 안에 우선 서비스 파일을 만들어 보자!!
2 . 가격표를 잡을 수 있도록(이번은 여기까지)
이번에는 현재 가격을 알 수 있도록 하기 위한 서비스를 만들어 본다.
price_bot.py
#price_bot.py
import re, requests, json
from slackbot.bot import respond_to # Slackで送られてきたキーワードに対して返答を返すため
필요한 글로벌 변수 설정
price_bot.py
# 今回利用する現物公開APIの元URL
API_URL = "https://api.zaif.jp/api/1/"
# サポートされている通貨リスト 全て日本円(fiat)との価格差を想定
SUPPORTED_COIN = ["zaif","sjcx","btc","ncxc","cicc","xcp","xem","pepecash","jpyz","bitcrystals","bch","eth","fscc","mona"]
# 私事ではあるが、メインで取引している通貨
MAIN_SUPPORTED_COIN = ["xem","zaif","btc","bch","mona","pepecash","eth"]
price_bot.py
@respond_to(r'^price\s+\S.*')
def price_coin_func(message):
slack_message = ""
text = message.body['text'].lower() # 大文字を全て小文字に
# 前提条件として送られてくるキーワードは2つ
# price coin名
method, coin_name = text.split(" ")
if coin_name == 'all':
# 最初に決めている私のメイン通貨のみの確認この場合は現在の価格のみを取得する
for main_coin in MAIN_SUPPORTED_COIN:
data = get_last_price_func(main_coin + "_jpy").json()
slack_message += main_coin + " - 現在の価格 : " + str(data['last_price']) + "\n"
elif coin_name not in SUPPORTED_COIN:
# サポート外の通貨に対するエラーメッセージ メッセージを直打ちにしたのはあまり意味はない
slack_message = "対象の通貨 : " + coin_name + " は、サポートされていません。\n サポート対象通貨は:\n"
slack_message += "\n".join(SUPPORTED_COIN)
else:
# 指定通貨の過去24時間の値動きなども併せて表示
data = get_trade_detail_func(coin_name + "_jpy").json()
slack_message = coin_name + 'の価格 : \n 買気配 : ' + str(data['bid']) + '\n 売気配 : ' + str(data['ask']) + '\n最高額 : ' + str(data['high']) + '\n最低額 : ' + str(data['low'])
message.reply(slack_message)
price_bot.py
# 指定通貨が存在した場合の詳細ticker情報を取る場合
def get_trade_detail_func(coin_type):
request_data = requests.get(
API_URL + 'ticker/' + coin_type
, headers = {
})
return request_data
price_bot.py
# 全てのメイン通貨現在価格を取得したい場合
def get_last_price_func(coin_type):
request_data = requests.get(
API_URL + 'last_price/' + coin_type
, headers = {
})
return request_data
여기까지 해 봐, 「아, 이것이라면 하나로 정리할 수 있어!」
라는 것을 깨닫는다. . .
조금 돌아와서
price_bot.py
#data = get_last_price_func(main_coin + "_jpy").json()
data = get_price_func(main_coin + "_jpy", 'last_price/').json()
*
**
****
#data = get_trade_detail_func(coin_name + "_jpy").json()
data = get_price_func(coin_name + "_jpy", 'ticker/').json()
# 一つにまとめてあげる
def get_price_func(currency_pair, action):
request_data = requests.get(
API_URL + action + currency_pair
, headers = {
})
return request_data
그리고 변경!
이쪽이 깔끔했습니다!
라고 할까 이것이라면 기본적으로 현금 거래의 API를 두드리고 싶을 때는 곧바로 호출할 수 있게 되었어요!
이상으로 종료!
볼륨이 커지고 있기 때문에 오늘은 지금까지입니다!
다음에는 실제로 거래를 어떻게 할 것인가를 써 가고 싶습니다.
Zaif에 관심이 있는 분은 이쪽으로부터 부디! (아피입니다만!)
Zaif 링크
향후 예정
- 이번에는 Slack을 사용하여 가격표를 쉽게 얻을 수 있습니다
(다음 번) Slack을 사용하여 쉽게 구입할 수 있습니다
Reference
이 문제에 관하여(Slack에서 Zaif에서 구입할 수 있도록하는 방법 - (첫 번째)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/GenkiAma/items/1a55e815a98da93ce9b1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)