AforativeBot / app.py
measmonysuon's picture
Update app.py
4c3fb36 verified
raw
history blame
3.59 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
# Replace with your actual API keys and bot token
GOOGLE_API_KEY = 'AIzaSyAYXUMnwmR4nUGDCs97FJJsafcQAPAAuzE'
BOT_TOKEN = '7484321656:AAFaswxTqaSHu_s4jd_pk2Q2OJJWYcWHwAM'
# Initialize the Telegram bot
bot = telebot.TeleBot(BOT_TOKEN)
# Configure logging
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
# Configure Google Generative AI
genai.configure(api_key=GOOGLE_API_KEY)
# Create the model
generation_config = {
"temperature": 1,
"top_p": 0.95,
"top_k": 64,
"max_output_tokens": 8192,
"response_mime_type": "text/plain",
}
model = genai.GenerativeModel(
model_name="gemini-1.5-pro",
generation_config=generation_config,
system_instruction="Please respond to user input"
)
chat_session = model.start_chat(
history=[
{"role": "user", "parts": ["hi\n"]},
{"role": "model", "parts": ["Hello! πŸ‘‹ How can I help you today? 😊 \n"]},
{"role": "user", "parts": ["I am looking for photo booth service?"]},
{"role": "model", "parts": ["That's great! πŸŽ‰ I can definitely help you with information about Aforative Media's photo booth services. \n\nTo give you the most relevant information, could you tell me a little more about what you're looking for? ..."]},
{"role": "user", "parts": ["How much for photo booth services?"]},
{"role": "model", "parts": ["You're smart to ask about pricing upfront! πŸ˜‰ \n\nAforative Media's Mr. & Ms. Booth photo booth services start at **USD 390 for a minimum of 2 hours**. ..."]},
{"role": "user", "parts": ["How about videography service?"]},
{"role": "model", "parts": ["You're thinking about capturing the memories on film too? Excellent choice! Videography adds a whole other dimension to remembering special events. \n\nAforative Media offers excellent videography services, and just like their photo booths, their videography packages are competitively priced and flexible. ..."]},
]
)
# Initialize Flask app
app = Flask(__name__)
@app.route(f'/bot{BOT_TOKEN}', methods=['POST'])
def webhook():
"""Handles incoming updates from Telegram."""
json_str = request.get_data(as_text=True)
update = telebot.types.Update.de_json(json_str)
bot.process_new_updates([update])
return 'ok', 200
@bot.message_handler(content_types=['text'])
def handle_text_messages(message):
"""Handles text messages and responds based on predefined questions or Generative AI."""
try:
prompt = f"Respond to the user: {message.text}"
response = chat_session.send_message(prompt) # Generate response using text and prompt
response_text = response.text
# Determine whether to reply in private or group chat with Markdown formatting
bot.send_message(message.chat.id, response_text, parse_mode='Markdown')
logger.info(f"Response sent to chat_id {message.chat.id}")
except Exception as e:
logger.error(f"Error during GenAI processing: {e}")
error_message = "Sorry, I can't answer this query right now but I will improve from time to time."
bot.send_message(message.chat.id, error_message, parse_mode='Markdown')
logger.error(f"Error message sent to chat_id {message.chat.id}")
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000)