torn-price-bot/main.py

43 lines
1.2 KiB
Python
Raw Permalink Normal View History

from urllib.error import HTTPError
from urllib.request import urlopen as get
from threading import Timer
import json
import os
from dotenv import load_dotenv
load_dotenv()
BINANCE_API_GET_ETH_PRICE_LINK = "https://api.binance.com/api/v3/ticker/price?symbol=TORNBUSD"
BOT_TOKEN = os.getenv("BOT_TOKEN")
TELEGRAM_CHANNEL_NAME = os.getenv("TELEGRAM_CHANNEL_NAME")
TELEGRAM_API_SEND_MESSAGE_LINK = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage?chat_id={TELEGRAM_CHANNEL_NAME}&text="
CHECK_PRICE_INTERVAL_IN_SECONDS = 10
def send_price_to_channel(price: float):
fixed_price = "{:10.2f}".format(price).strip()
full_request_link = f'{TELEGRAM_API_SEND_MESSAGE_LINK}{fixed_price}$'
try:
get(full_request_link)
except HTTPError:
pass
def get_eth_price_from_binance() -> float:
try:
data = json.load(get(BINANCE_API_GET_ETH_PRICE_LINK))
return float(data["price"])
except HTTPError:
return -1
def main():
Timer(CHECK_PRICE_INTERVAL_IN_SECONDS, main).start()
current_eth_price = get_eth_price_from_binance()
if current_eth_price == -1:
return
send_price_to_channel(current_eth_price)
main()