Кто знает можете подсказать, писал тг бота, вроде все верно , но все же при запуске ничего не происходит

буду рад , если поможете с решением!

import logging
import requests
from telegram import Update, ReplyKeyboardMarkup, ReplyKeyboardRemove
from telegram.ext import Updater, CommandHandler, MessageHandler, filters, ConversationHandler, CallbackContext
from flask import Flask, request

TOKEN = ''

COINGECKO_API_URL = 'https://api.coingecko.com/api/v3'

START, LEARN, CHECK_PRICE = range(3)

logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
logger = logging.getLogger(__name__)


def start(update: Update, context: CallbackContext) -> int:
    update.message.reply_text(
        "Привет! Я бот для обучения криптовалютам. Что бы вы хотели узнать?",
        reply_markup=ReplyKeyboardMarkup([['Узнать о криптовалютах', 'Проверить цену']], one_time_keyboard=True)
    )
    return START


def learn(update: Update, context: CallbackContext) -> int:
    update.message.reply_text(
        "Криптовалюта – это цифровая или виртуальная форма валюты, которая использует криптографию для обеспечения безопасности. "
        "Она работает на децентрализованной сети, известной как блокчейн, который представляет собой распределенный реестр, "
        "записывающий все транзакции. Криптовалюты используют криптографию для обеспечения безопасности транзакций, контроля "
        "создания новых единиц и верификации передачи активов."
    )
    update.message.reply_text("Что бы еще вы хотели узнать?", reply_markup=ReplyKeyboardRemove())
    return START


def check_price(update: Update, context: CallbackContext) -> int:
    update.message.reply_text("Введите символ криптовалюты (например, BTC):")
    return CHECK_PRICE


def get_crypto_price(symbol: str) -> str:
    try:
        response = requests.get(f'{COINGECKO_API_URL}/simple/price?ids={symbol.lower()}&vs_currencies=usd')
        response.raise_for_status()  # Raise an HTTPError for bad responses (4xx or 5xx)

        data = response.json()

        if symbol.lower() in data and 'usd' in data[symbol.lower()]:
            price = data[symbol.lower()]['usd']
            return f"Текущая цена {symbol.upper()}: {price} USD"
        else:
            return f"Не удалось получить данные о цене {symbol.upper()}. Пожалуйста, проверьте символ криптовалюты."

    except requests.exceptions.RequestException as e:
        return f"Ошибка при запросе к API: {e}"

    except Exception as e:
        return f"Произошла неизвестная ошибка: {e}"



def handle_crypto_symbol(update: Update, context: CallbackContext) -> int:
    crypto_symbol = update.message.text.upper()
    price_message = get_crypto_price(crypto_symbol)
    update.message.reply_text(price_message)
    update.message.reply_text("Что бы еще вы хотели узнать?", reply_markup=ReplyKeyboardRemove())
    return START


def cancel(update: Update, context: CallbackContext) -> int:
    update.message.reply_text("Действие отменено.", reply_markup=ReplyKeyboardRemove())
    return START


def main() -> None:
    updater = Updater(TOKEN)

    dispatcher = updater.dispatcher

    conv_handler = ConversationHandler(
        entry_points=[CommandHandler('start', start)],
        states={
            START: [
                MessageHandler(filters.Regex('Узнать о криптовалютах'), learn),
                MessageHandler(filters.Regex('Проверить цену'), check_price),
            ],
            LEARN: [MessageHandler(filters.Text & ~filters.Command, cancel)],
            CHECK_PRICE: [MessageHandler(filters.Text & ~filters.Command, handle_crypto_symbol)],
        },
        fallbacks=[CommandHandler('cancel', cancel)],
    )

    dispatcher.add_handler(conv_handler)

    updater.start_polling()

    updater.idle()




if __name__ == 'main':
   app.run(threaded=True)

Updater.start_polling

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

Автор решения: Amgarak

Ошибка в строке if __name__ == 'main':, должно быть if __name__ == '__main__':.

В текущей версии она не запустит main(), отсюда ничего и не происходит.

if __name__ == '__main__':
    main()

И если других ошибок нет, то запустится.

→ Ссылка