бот для отслеживания курса крипты

import requests
import time
from bs4 import BeautifulSoup
from telegram import InlineKeyboardButton, InlineKeyboardMarkup, Update
from telegram.ext import Updater, CommandHandler, CallbackContext, CallbackQueryHandler, filters


def start(update: Update, context: CallbackContext):
    keyboard = [
        [InlineKeyboardButton("Garantex", callback_data='garantex')],
        [InlineKeyboardButton("Bybit", callback_data='bybit')],
    ]
    reply_markup = InlineKeyboardMarkup(keyboard)
    update.message.reply_text('Выберите сайт:', reply_markup=reply_markup)


def button(update: Update, context: CallbackContext):
    query = update.callback_query
    query.answer()

    if 'job' in context.chat_data:
        context.chat_data['job'].schedule_removal()

    if query.data == 'garantex':
        context.chat_data['exchange_url'] = 'https://garantex.org/trading/btcrub'
        query.edit_message_text(text="Выбран Garantex")
    elif query.data == 'bybit':
        context.chat_data['exchange_url'] = 'https://www.bybit.com/ru-ru'
        query.edit_message_text(text="Выбран Bybit")

    job = context.job_queue.run_repeating(callback=update_exchange_rates, interval=10, first=0,
                                          context=context.chat_data)
    context.chat_data['job'] = job


def stop(update: Update, context: CallbackContext):
    if 'job' in context.chat_data:
        context.chat_data['job'].schedule_removal()
        del context.chat_data['job']
    update.message.reply_text('Обновление курса остановлено')


def update_exchange_rates(context: CallbackContext):
    exchange_url = context.job.context['exchange_url']

    response = requests.get(exchange_url)
    soup = BeautifulSoup(response.text, 'html.parser')

    usdt_buy = soup.find('span', {'id': 'USDT_buy'}).text.strip()
    usdt_sell = soup.find('span', {'id': 'USDT_sell'}).text.strip()

    eth_buy = soup.find('span', {'id': 'ETH_buy'}).text.strip()
    eth_sell = soup.find('span', {'id': 'ETH_sell'}).text.strip()

    dai_buy = soup.find('span', {'id': 'DAI_buy'}).text.strip()
    dai_sell = soup.find('span', {'id': 'DAI_sell'}).text.strip()

    usdc_buy = soup.find('span', {'id': 'USDC_buy'}).text.strip()
    usdc_sell = soup.find('span', {'id': 'USDC_sell'}).text.strip()

    
    context.bot.send_message(chat_id=context.job.job.context, text=f"USDT: Покупка - {usdt_buy}, Продажа - {usdt_sell}\n"
                                                                   f"ETH: Покупка - {eth_buy}, Продажа - {eth_sell}\n"
                                                                   f"DAI: Покупка - {dai_buy}, Продажа - {dai_sell}\n"
                                                                   f"USDC: Покупка - {usdc_buy}, Продажа - {usdc_sell}")


def main():
    updater = updater(token='', use_context=True)
    dispatcher = updater.dispatcher

   
    dispatcher.add_handler(CommandHandler("start", start))

    dispatcher.add_handler(CallbackQueryHandler(button, pattern='garantex'))
    dispatcher.add_handler(CallbackQueryHandler(button, pattern='bybit'))

    dispatcher.add_handler(CommandHandler("stop", stop))

    updater.start_polling()


if __name__ == '__main__':
    main()

пишу чат бота для отслеживания крпиты, не могу понять почему он не работает


Ответы (0 шт):