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", ) @app.route("/test") def test(): return "Hello, World!" DEFAULT_CAPTION = "Please provide a caption for the image." @app.route(f"/{BOT_TOKEN}", methods=["POST"]) 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)