бот для отслеживания курса крипты
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()
пишу чат бота для отслеживания крпиты, не могу понять почему он не работает