import os import streamlit as st from telegram import Update from telegram.ext import Application, CommandHandler, ContextTypes import logging import asyncio import threading import telebot from fastapi import FastAPI, Request import uvicorn app = FastAPI() # Enable logging logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO) logger = logging.getLogger(__name__) # Load bot token BOT_TOKEN = "6655373829:AAGduLdLyNx7zUtxH73Sp3Z1vHKS35tV9WU" if not BOT_TOKEN: raise ValueError("Bot token is not set in environment variables") # Create the bot application application = Application.builder().token(BOT_TOKEN).build() # Define the /start command handler async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: await update.message.reply_text("Hello! This bot is running on Hugging Face Spaces 🚀") # Add command handlers application.add_handler(CommandHandler("start", start)) # Function to run polling in a thread-safe way def run_polling(): loop = asyncio.new_event_loop() # Create a new event loop asyncio.set_event_loop(loop) # Set it for the current thread loop.run_until_complete(application.run_polling(close_loop=True)) # Run polling in the loop # Streamlit UI st.title("Telegram Bot on Streamlit") st.write("This bot is running using Streamlit and Python-Telegram-Bot.") # Button to start the bot if st.button("Start Bot"): thread = threading.Thread(target=run_polling, daemon=True) # Run polling in a background thread thread.start() st.write("Bot started successfully and is now polling Telegram!")