Spaces:
Running
Running
from openai import OpenAI | |
from flask import Flask, request | |
import requests | |
from loguru import logger | |
app = Flask(__name__) | |
BOT_TOKEN = "8003439194:AAGQNjq3dQSZi4Ztv2Z0yyZx1ZnD0L5MR5o" | |
TELEGRAM_API_URL = f"https://api.telegram.org/bot{BOT_TOKEN}" | |
client = OpenAI( | |
api_key="0", | |
base_url="https://0f21-5-195-0-150.ngrok-free.app/v1", | |
) | |
def test(): | |
return "Hello, World!" | |
DEFAULT_CAPTION = "Please provide a caption for the image." | |
def telegram_webhook(): | |
data = request.json | |
chat_id = data["message"]["chat"]["id"] | |
messages: list[dict] = [{ | |
"role": "user", | |
"content": [] | |
}] | |
logger.debug(f"Received message: {data}") | |
if "text" in data["message"]: | |
user_message = data["message"]["text"] | |
messages[0]['content'].append({"type": "text", "text": user_message}) | |
if "photo" in data["message"]: | |
file_id = data["message"]["photo"][-1]["file_id"] | |
file_info = requests.get(f"{TELEGRAM_API_URL}/getFile?file_id={file_id}").json() | |
file_path = file_info["result"]["file_path"] | |
image_url = f"https://api.telegram.org/file/bot{BOT_TOKEN}/{file_path}" | |
messages[0]['content'].append({ | |
"type": "image_url", | |
"image_url": {"url": image_url}, | |
}) | |
if "caption" in data["message"]: | |
messages[0]['content'].append({"type": "text", "text": data["message"]["caption"]}) | |
else: | |
messages[0]['content'].append({"type": "text", "text": DEFAULT_CAPTION}) | |
if "text" not in data['message'] and "photo" not in data['message']: | |
send_message(chat_id, "Unsupported message type. Please send text or an image.") | |
return "ok", 200 | |
try: | |
logger.debug(f"Sending message to OpenAI: {messages}") | |
result = client.chat.completions.create(messages=messages, model="test") | |
response_text = result.choices[0].message.content | |
except Exception as e: | |
logger.error(f"Error processing message: {e}") | |
response_text = "There was an error processing your request." | |
send_message(chat_id, response_text) | |
return "ok", 200 | |
def send_message(chat_id, text): | |
url = f"{TELEGRAM_API_URL}/sendMessage" | |
payload = {"chat_id": chat_id, "text": text} | |
requests.post(url, json=payload) | |
if __name__ == "__main__": | |
app.run(port=5000) | |