Skip to main content

An advanced API client for python botters.

Project description

PyPI PyPI - Python Version PyPI - License Downloads

pytest publish Code style: black Documentation Status

GitHub Repo stars GitHub forks Discord

[Preview] pybotters

An advanced API client for python botters.

📌 Description

pybotters仮想通貨 botter 向けの Python ライブラリです。

複数取引所に対応した非同期 I/O の API クライアントであり、bot 開発により素晴らしい DX を提供します。

🚧 In development

pybotters は現在 ** Previewバージョン ** です。 一部機能は開発中です。

開発状況については こちら(Issues) を参照してください。

🚀 Features

  • ✨ HTTP / WebSocket Client
    • 複数取引所のプライベート API を自動認証
    • aiohttp ライブラリを基盤とした非同期通信
    • WebSocket の自動再接続、自動ハートビート
  • ✨ DataStore
    • WebSocket 用のデータ保管クラス
    • ピュア Python データモデルによる高速なデータ参照
    • 取引所別モデルの実装
  • ✨ Developer Experience
    • asyncio ライブラリを利用した非同期プログラミング
    • 型ヒントのサポート

🏦 Exchanges

Name API auth DataStore API docs
Bybit ✅ (Futures v2) Official v5 / Futures v2
Binance Official
OKX Official
Phemex Official
Bitget Official
MEXC WIP Official / v3
KuCoin Official
BitMEX Official
bitFlyer Official
GMO Coin Official
bitbank Official
Coincheck Official

🐍 Requires

Python 3.7+

🔧 Installation

pip install pybotters

🌏 Quickstart

Single exchange

import asyncio
import pybotters

apis = {
    "bybit": ["BYBIT_API_KEY", "BYBIT_API_SECRET"],
}

async def main():
    async with pybotters.Client(apis=apis, base_url="https://api.bybit.com") as client:
        # REST API
        resp = await client.get("/v2/private/position/list", params={"symbol": "BTCUSD"})
        data = await resp.json()
        print(data)

        # WebSocket API (with defautl print handler)
        ws = await client.ws_connect(
            url="wss://stream.bybit.com/realtime",
            send_json={"op": "subscribe", "args": ["trade.BTCUSD", "order", "position"]},
        )
        await ws # Ctrl+C to break

try:
    asyncio.run(main())
except KeyboardInterrupt:
    pass

Multiple exchanges

apis = {
    "bybit": ["BYBIT_API_KEY", "BYBIT_API_SECRET"],
    "binance": ["BINANCE_API_KEY", "BINANCE_API_SECRET"],
}

async def main():
    async with pybotters.Client(apis=apis) as client:
        await client.post("https://api.bybit.com/v2/private/order/create", data={"symbol": "BTCUSD", ...: ...})
        ...
        await client.post("https://dapi.binance.com/dapi/v1/order", data={"symbol": "BTCUSD_PERP", ...: ...})
        ...

📖 Documents

👉 Read the Docs

🗽 License

MIT

💖 Author

Twitter:

Twitter Follow

Discord:

Discord Widget

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pybotters-0.17.0.tar.gz (44.8 kB view details)

Uploaded Source

Built Distribution

pybotters-0.17.0-py3-none-any.whl (58.0 kB view details)

Uploaded Python 3

File details

Details for the file pybotters-0.17.0.tar.gz.

File metadata

  • Download URL: pybotters-0.17.0.tar.gz
  • Upload date:
  • Size: 44.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for pybotters-0.17.0.tar.gz
Algorithm Hash digest
SHA256 a4e5e18a15c095fda3eebe9e28eaf4d90faa454ece9d51ae12f5987ac9531fef
MD5 cf40fb71006a98de39ab0ee10e384c25
BLAKE2b-256 0a2eaee6cf99c6795ca4d7ddf5065daf8d150053faf9ee0d3f6c6897025c6597

See more details on using hashes here.

File details

Details for the file pybotters-0.17.0-py3-none-any.whl.

File metadata

  • Download URL: pybotters-0.17.0-py3-none-any.whl
  • Upload date:
  • Size: 58.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for pybotters-0.17.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bd3050ca98bbe8c31a9b7d33a8644ac62112543dad420bdfe5ef8f3fe9dd2f73
MD5 fb0ba2e9717c3c99065b85de77526753
BLAKE2b-256 565ecc73ea813f6e7547a0e89d40e7dfc2c6088e1c18f1fc72c5eb11d31c182c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page