Форум сайта python.su
Переписал по видео уроку простого бота, который узнает курс биткоина к доллару.
Хочу эту функцию усовершенствовать, но увы никак не получается, буду очень признателен если кто подскажет.
Вот так изначально выглядит код функции в отдельном файле:
import requests def get_btc(): #курс биткоина к доллару url = 'https://yobit.net/api/2/btc_usd/ticker' response = requests.get(url).json() price = response['ticker']['last'] return str(price) + ' usd'
import requests import misc from yobit import get_btc from time import sleep # import json token = misc.token URL = "https://api.telegram.org/bot" + token + "/" global last_update_id last_update_id = 0 def get_updates(): url = URL + "getupdates" r = requests.get(url) return r.json() def get_message(): data = get_updates() last_object = data["result"][-1] current_update_id = last_object['update_id'] global last_update_id if last_update_id != current_update_id: last_update_id = current_update_id chat_id = last_object["message"]["chat"]["id"] message_text = last_object["message"]["text"] message = {"chat_id": chat_id, "text": message_text} return message return None def send_message(chat_id, text="Wait a second, please..."): url = URL + "sendmessage?chat_id={}&text={}".format(chat_id, text) requests.get(url) def main(): # d = get_updates() #with open("updates.json", "w") as file: # json.dump(d, file, indent=2, ensure_ascii=False) while True: answer = get_message() if answer != None: chat_id = answer['chat_id'] text = answer['text'] if text == '/btc': send_message(chat_id, get_btc()) else: continue sleep(2) if __name__ == "__main__": main()
Офлайн
Понимаю что сделал корявое решение, но теперь имею следующее:
import requests def get_btc(pair): #курс биткоина к доллару url = 'https://yobit.net/api/3/ticker/' + pair + '-error_pair?ignore_invalid=1' response = requests.get(url).json() price = response[pair]['last'] return str(price)
if answer != None: chat_id = answer['chat_id'] text = answer['text'] if text != None: send_message(chat_id, get_btc(text)) else: continue sleep(2)
File "yobit.py", line 6, in get_btc
price = response[pair]['last']
KeyError: 'usd_eth'
Офлайн