AforativeBot / app.py
measmonysuon's picture
Update app.py
cd1df65 verified
raw
history blame
2.81 kB
from flask import Flask, request
import telebot
import os
import requests
import google.generativeai as genai
import tempfile
import logging
import re
from telebot.apihelper import ApiTelegramException
import time
from huggingface_hub import webhook_endpoint, WebhookPayload
from gradio import Interface
# Replace with your actual API keys and bot token
GOOGLE_API_KEY = 'AIzaSyAYXUMnwmR4nUGDCs97FJJsafcQAPAAuzE'
BOT_TOKEN = '7484321656:AAFaswxTqaSHu_s4jd_pk2Q2OJJWYcWHwAM'
WEBHOOK_URL = f"https://measmonysuon-flyingbird.hf.space/bot{BOT_TOKEN}"
# Initialize the Telegram bot
bot = telebot.TeleBot(BOT_TOKEN)
# Configure logging
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('bot_debug.log'),
logging.StreamHandler()
]
)
logger = logging.getLogger(__name__)
def set_webhook():
"""Sets the webhook for the Telegram bot."""
try:
response = requests.get(f"https://api.telegram.org/bot{BOT_TOKEN}/setWebhook?url={WEBHOOK_URL}")
result = response.json()
if result.get('ok'):
logger.info("Webhook set successfully.")
else:
logger.error(f"Failed to set webhook: {result}")
except requests.exceptions.RequestException as e:
logger.error(f"Request exception: {e}")
@webhook_endpoint
async def handle_update(payload: WebhookPayload) -> None:
"""Handles incoming updates from Telegram."""
logger.debug(f"Received payload: {payload}")
if payload.message:
message_text = payload.message.get('text')
chat_id = payload.message.get('chat').get('id')
if message_text:
try:
# Generate a response using Google Generative AI or predefined responses
prompt = f"Respond to the user: {message_text}"
response = requests.post(
"https://api.your-ai-service.com/generate", # Replace with your AI service URL
json={"prompt": prompt, "api_key": GOOGLE_API_KEY}
).json()
response_text = response.get('text', 'Sorry, I didn\'t understand that.')
# Send the response back to the chat
bot.send_message(chat_id, response_text, parse_mode='Markdown')
logger.info(f"Response sent to chat_id {chat_id}")
except Exception as e:
logger.error(f"Error during message processing: {e}")
bot.send_message(chat_id, "Sorry, I can't answer this query right now.", parse_mode='Markdown')
# Initialize the Gradio interface
iface = Interface(fn=handle_update, inputs=[], outputs=[])
# Run the Gradio app
if __name__ == "__main__":
set_webhook() # Set the webhook for Telegram
iface.launch()