1 line
21 KiB
JSON
1 line
21 KiB
JSON
{"repo": "aaaaaaaaaasssssssssssssss/telegram-bot", "files": {"src/main/kotlin/com/example/bot/Main.kt": {"3bc29df60047cd425f1c119c75cefa20d623f09c": {"t": 1785745729.2930758, "n": 2470, "h": "27074f8158e8e09a", "c": "package com.example.bot\n\nimport org.telegram.telegrambots.meta.TelegramBotsApi\nimport org.telegram.telegrambots.updatesreceivers.DefaultBotSession\nimport com.theokanning.openai.service.OpenAiService\nimport java.net.HttpURLConnection\nimport java.net.URL\nimport java.time.Duration\n\nfun main() {\n // Запускаем health check в отдельном потоке\n Thread {\n startHealthServer()\n }.apply {\n isDaemon = true\n start()\n }\n \n // Даем время health серверу запуститься\n Thread.sleep(2000)\n \n try {\n val openAiService = OpenAiService(System.getenv(\"DEEPSEEK_API_KEY\") ?: throw IllegalArgumentException(\"DEEPSEEK_API_KEY not set\"), Duration.ofSeconds(30), \"https://api.deepseek.com/v1\")\n \n val botsApi = TelegramBotsApi(DefaultBotSession::class.java)\n val bot = TelegramBot(openAiService)\n botsApi.registerBot(bot)\n \n println(\"✅ Bot started with Java ${System.getProperty(\"java.version\")}\")\n \n // Держим приложение живым\n Thread.currentThread().join()\n } catch (e: Exception) {\n println(\"❌ Failed to start bot: ${e.message}\")\n e.printStackTrace()\n System.exit(1)\n }\n}\n\nfun startHealthServer() {\n val port = System.getenv(\"PORT\")?.toIntOrNull() ?: 8080\n \n try {\n // Простой HTTP сервер на чистом Java\n val server = com.sun.net.httpserver.HttpServer.create(\n java.net.InetSocketAddress(port), 0\n )\n \n server.createContext(\"/health\") { exchange ->\n val response = \"OK\"\n exchange.sendResponseHeaders(200, response.length.toLong())\n exchange.responseBody.use { it.write(response.toByteArray()) }\n }\n \n server.createContext(\"/\") { exchange ->\n val response = \"\"\"\n Telegram Bot Status: ONLINE\n Java: ${System.getProperty(\"java.version\")}\n Memory: ${Runtime.getRuntime().totalMemory() / 1024 / 1024}MB\n \"\"\".trimIndent()\n exchange.sendResponseHeaders(200, response.length.toLong())\n exchange.responseBody.use { it.write(response.toByteArray()) }\n }\n \n server.executor = null // Используем текущий поток\n server.start()\n println(\"🏥 Health server started on port $port\")\n } catch (e: Exception) {\n println(\"⚠️ Health server failed: ${e.message}\")\n // Не падаем, если health server не запустился\n }\n}\n"}, "053a0b6e21fdb0a4e53f488dffbb3d89c518f73b": {"t": 1785755958.7365665, "n": 2385, "h": "0e2a93c7d314a9b0", "c": "package com.example.bot\n\nimport org.telegram.telegrambots.meta.TelegramBotsApi\nimport org.telegram.telegrambots.updatesreceivers.DefaultBotSession\nimport com.theokanning.openai.service.OpenAiService\nimport java.net.HttpURLConnection\nimport java.net.URL\n\nfun main() {\n // Запускаем health check в отдельном потоке\n Thread {\n startHealthServer()\n }.apply {\n isDaemon = true\n start()\n }\n \n // Даем время health серверу запуститься\n Thread.sleep(2000)\n \n try {\n val openAiService = OpenAiService(System.getenv(\"OPENAI_API_KEY\") ?: throw IllegalArgumentException(\"OPENAI_API_KEY not set\"))\n \n val botsApi = TelegramBotsApi(DefaultBotSession::class.java)\n val bot = TelegramBot(openAiService)\n botsApi.registerBot(bot)\n \n println(\"✅ Bot started with Java ${System.getProperty(\"java.version\")}\")\n \n // Держим приложение живым\n Thread.currentThread().join()\n } catch (e: Exception) {\n println(\"❌ Failed to start bot: ${e.message}\")\n e.printStackTrace()\n System.exit(1)\n }\n}\n\nfun startHealthServer() {\n val port = System.getenv(\"PORT\")?.toIntOrNull() ?: 8080\n \n try {\n // Простой HTTP сервер на чистом Java\n val server = com.sun.net.httpserver.HttpServer.create(\n java.net.InetSocketAddress(port), 0\n )\n \n server.createContext(\"/health\") { exchange ->\n val response = \"OK\"\n exchange.sendResponseHeaders(200, response.length.toLong())\n exchange.responseBody.use { it.write(response.toByteArray()) }\n }\n \n server.createContext(\"/\") { exchange ->\n val response = \"\"\"\n Telegram Bot Status: ONLINE\n Java: ${System.getProperty(\"java.version\")}\n Memory: ${Runtime.getRuntime().totalMemory() / 1024 / 1024}MB\n \"\"\".trimIndent()\n exchange.sendResponseHeaders(200, response.length.toLong())\n exchange.responseBody.use { it.write(response.toByteArray()) }\n }\n \n server.executor = null // Используем текущий поток\n server.start()\n println(\"🏥 Health server started on port $port\")\n } catch (e: Exception) {\n println(\"⚠️ Health server failed: ${e.message}\")\n // Не падаем, если health server не запустился\n }\n}\n"}, "9b3917288f29e6789e307d211c687061b6970251": {"t": 1785755960.250504, "n": 2176, "h": "c04dafd9bea6702c", "c": "package com.example.bot\n\nimport org.telegram.telegrambots.meta.TelegramBotsApi\nimport org.telegram.telegrambots.updatesreceivers.DefaultBotSession\nimport java.net.HttpURLConnection\nimport java.net.URL\n\nfun main() {\n // Запускаем health check в отдельном потоке\n Thread {\n startHealthServer()\n }.apply {\n isDaemon = true\n start()\n }\n \n // Даем время health серверу запуститься\n Thread.sleep(2000)\n \n try {\n val botsApi = TelegramBotsApi(DefaultBotSession::class.java)\n val bot = TelegramBot()\n botsApi.registerBot(bot)\n \n println(\"✅ Bot started with Java ${System.getProperty(\"java.version\")}\")\n \n // Держим приложение живым\n Thread.currentThread().join()\n } catch (e: Exception) {\n println(\"❌ Failed to start bot: ${e.message}\")\n e.printStackTrace()\n System.exit(1)\n }\n}\n\nfun startHealthServer() {\n val port = System.getenv(\"PORT\")?.toIntOrNull() ?: 8080\n \n try {\n // Простой HTTP сервер на чистом Java\n val server = com.sun.net.httpserver.HttpServer.create(\n java.net.InetSocketAddress(port), 0\n )\n \n server.createContext(\"/health\") { exchange ->\n val response = \"OK\"\n exchange.sendResponseHeaders(200, response.length.toLong())\n exchange.responseBody.use { it.write(response.toByteArray()) }\n }\n \n server.createContext(\"/\") { exchange ->\n val response = \"\"\"\n Telegram Bot Status: ONLINE\n Java: ${System.getProperty(\"java.version\")}\n Memory: ${Runtime.getRuntime().totalMemory() / 1024 / 1024}MB\n \"\"\".trimIndent()\n exchange.sendResponseHeaders(200, response.length.toLong())\n exchange.responseBody.use { it.write(response.toByteArray()) }\n }\n \n server.executor = null // Используем текущий поток\n server.start()\n println(\"🏥 Health server started on port $port\")\n } catch (e: Exception) {\n println(\"⚠️ Health server failed: ${e.message}\")\n // Не падаем, если health server не запустился\n }\n}\n"}, "8b4e5c8e0ec8e7d8fb291c18e9812d17468aa2ef": {"t": 1785755962.014706, "n": 1004, "h": "ea48d06ab1a70fcc", "c": "// build.gradle.kts\nplugins {\n kotlin(\"jvm\") version \"1.9.22\"\n application\n}\n\ngroup = \"com.example\"\nversion = \"1.0.0\"\n\napplication {\n mainClass.set(\"com.example.bot.MainKt\")\n}\n\njava {\n toolchain {\n languageVersion.set(JavaLanguageVersion.of(21))\n }\n}\n\nrepositories {\n mavenCentral()\n}\n\ndependencies {\n // Только самое необходимое\n implementation(\"org.telegram:telegrambots:6.9.7.1\")\n \n // Минимальные HTTP зависимости вместо Ktor\n implementation(\"com.squareup.okhttp3:okhttp:4.12.0\")\n \n // Логирование\n implementation(\"org.slf4j:slf4j-simple:2.0.9\")\n}\n\ntasks {\n withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {\n kotlinOptions.jvmTarget = \"21\"\n }\n \n jar {\n manifest {\n attributes[\"Main-Class\"] = \"com.example.bot.MainKt\"\n }\n from(configurations.runtimeClasspath.get()\n .map { if (it.isDirectory) it else zipTree(it) })\n duplicatesStrategy = DuplicatesStrategy.EXCLUDE\n }\n}\n"}, "18bd15cccbc9d91602c5c0efb89c25fa321591e5": {"t": 1785755963.542583, "n": 1989, "h": "a9f0737f54c9377c", "c": "package com.example.bot\n\nimport io.ktor.http.*\nimport io.ktor.server.application.*\nimport io.ktor.server.engine.*\nimport io.ktor.server.netty.*\nimport io.ktor.server.response.*\nimport io.ktor.server.routing.*\nimport io.ktor.server.plugins.statuspages.*\nimport org.telegram.telegrambots.meta.TelegramBotsApi\nimport org.telegram.telegrambots.updatesreceivers.DefaultBotSession\nimport kotlin.system.exitProcess\n\nfun main() {\n val token = System.getenv(\"TELEGRAM_BOT_TOKEN\") ?: run {\n println(\"❌ ERROR: TELEGRAM_BOT_TOKEN environment variable is not set\")\n println(\"🔧 Please set it in Render dashboard -> Environment\")\n exitProcess(1)\n }\n \n val port = System.getenv(\"PORT\")?.toIntOrNull() ?: 8080\n \n startHealthServer(port)\n \n try {\n // СТАРЫЙ API\n val botsApi = TelegramBotsApi(DefaultBotSession::class.java)\n val bot = TelegramBot() // Создаем бота (токен берется из переменных окружения внутри класса)\n botsApi.registerBot(bot)\n \n println(\"✅ Bot successfully started on Render!\")\n println(\"🌐 Health check available at: http://localhost:$port/health\")\n println(\"🤖 Bot username: @${bot.botUsername}\")\n \n while (true) {\n Thread.sleep(1000)\n }\n } catch (e: Exception) {\n println(\"❌ Failed to start bot: ${e.message}\")\n e.printStackTrace()\n exitProcess(1)\n }\n}\n\nfun startHealthServer(port: Int) {\n val server = embeddedServer(Netty, port = port) {\n install(StatusPages) {\n status(HttpStatusCode.NotFound) { call, _ ->\n call.respondText(\"Not Found\", status = HttpStatusCode.NotFound)\n }\n }\n \n routing {\n get(\"/\") {\n call.respondText(\"Telegram Bot is running! 🤖\")\n }\n \n get(\"/health\") {\n call.respondText(\"OK\")\n }\n }\n }\n \n server.start(wait = false)\n} \n"}, "0cf4112b9ddb69de9ac932196a60356911df75cb": {"t": 1785755964.8376365, "n": 2798, "h": "27449815bec5eae0", "c": "package com.example.bot\n\n\nimport io.ktor.http.*\nimport io.ktor.server.application.*\nimport io.ktor.server.engine.*\nimport io.ktor.server.netty.*\nimport io.ktor.server.response.*\nimport io.ktor.server.routing.*\nimport io.ktor.server.plugins.statuspages.*\nimport org.telegram.telegrambots.longpolling.TelegramBotsLongPollingApplication\nimport org.telegram.telegrambots.meta.exceptions.TelegramApiException\nimport kotlin.system.exitProcess\n\nfun main() {\n val token = System.getenv(\"TELEGRAM_BOT_TOKEN\") ?: run {\n println(\"❌ ERROR: TELEGRAM_BOT_TOKEN environment variable is not set\")\n println(\"🔧 Please set it in Render dashboard -> Environment\")\n exitProcess(1)\n }\n \n val port = System.getenv(\"PORT\")?.toIntOrNull() ?: 8080\n \n // Запуск HTTP сервера для health check\n startHealthServer(port)\n \n try {\n val botApplication = TelegramBotsLongPollingApplication()\n botApplication.registerBot(token, TelegramBot(token))\n \n println(\"✅ Bot successfully started on Render!\")\n println(\"🌐 Health check available at: http://localhost:$port/health\")\n println(\"🤖 Bot username: @${TelegramBot(token).botUsername}\")\n \n // Keep the application running\n while (true) {\n Thread.sleep(1000)\n }\n } catch (e: TelegramApiException) {\n println(\"❌ Failed to start bot: ${e.message}\")\n exitProcess(1)\n } catch (e: Exception) {\n println(\"❌ Unexpected error: ${e.message}\")\n e.printStackTrace()\n exitProcess(1)\n }\n}\n\nfun startHealthServer(port: Int) {\n val server = embeddedServer(Netty, port = port) {\n install(StatusPages) {\n status(HttpStatusCode.NotFound) { call, _ ->\n call.respondText(\"Not Found\", status = HttpStatusCode.NotFound)\n }\n }\n \n routing {\n get(\"/\") {\n call.respondText(\"\"\"\n Telegram Bot is running! 🤖\n \n Endpoints:\n - GET /health - Health check\n - GET /status - Bot status\n \n Made with ❤️ on Render\n \"\"\".trimIndent())\n }\n \n get(\"/health\") {\n call.respondText(\"OK\")\n }\n \n get(\"/status\") {\n call.respondText(\"\"\"\n Bot Status: ✅ Active\n Platform: Render\n Java: ${System.getProperty(\"java.version\")}\n Memory: ${Runtime.getRuntime().maxMemory() / 1024 / 1024} MB\n \"\"\".trimIndent())\n }\n }\n }\n \n // Запуск в отдельном потоке\n Thread {\n server.start(wait = true)\n }.start()\n}\n"}, "a97b526deb341a0f78baaa95ebb026e4e302e8d9": {"t": 1785755966.4384778, "n": 2775, "h": "5b4c14ed7b93303c", "c": "package com.example.bot\n\nimport io.ktor.server.application.*\nimport io.ktor.server.engine.*\nimport io.ktor.server.netty.*\nimport io.ktor.server.response.*\nimport io.ktor.server.routing.*\nimport io.ktor.server.plugins.statuspages.*\nimport org.telegram.telegrambots.longpolling.TelegramBotsLongPollingApplication\nimport org.telegram.telegrambots.meta.exceptions.TelegramApiException\nimport kotlin.system.exitProcess\n\nfun main() {\n val token = System.getenv(\"TELEGRAM_BOT_TOKEN\") ?: run {\n println(\"❌ ERROR: TELEGRAM_BOT_TOKEN environment variable is not set\")\n println(\"🔧 Please set it in Render dashboard -> Environment\")\n exitProcess(1)\n }\n \n val port = System.getenv(\"PORT\")?.toIntOrNull() ?: 8080\n \n // Запуск HTTP сервера для health check\n startHealthServer(port)\n \n try {\n val botApplication = TelegramBotsLongPollingApplication()\n botApplication.registerBot(token, TelegramBot(token))\n \n println(\"✅ Bot successfully started on Render!\")\n println(\"🌐 Health check available at: http://localhost:$port/health\")\n println(\"🤖 Bot username: @${TelegramBot(token).botUsername}\")\n \n // Keep the application running\n while (true) {\n Thread.sleep(1000)\n }\n } catch (e: TelegramApiException) {\n println(\"❌ Failed to start bot: ${e.message}\")\n exitProcess(1)\n } catch (e: Exception) {\n println(\"❌ Unexpected error: ${e.message}\")\n e.printStackTrace()\n exitProcess(1)\n }\n}\n\nfun startHealthServer(port: Int) {\n val server = embeddedServer(Netty, port = port) {\n install(StatusPages) {\n status(HttpStatusCode.NotFound) { call, _ ->\n call.respondText(\"Not Found\", status = HttpStatusCode.NotFound)\n }\n }\n \n routing {\n get(\"/\") {\n call.respondText(\"\"\"\n Telegram Bot is running! 🤖\n \n Endpoints:\n - GET /health - Health check\n - GET /status - Bot status\n \n Made with ❤️ on Render\n \"\"\".trimIndent())\n }\n \n get(\"/health\") {\n call.respondText(\"OK\")\n }\n \n get(\"/status\") {\n call.respondText(\"\"\"\n Bot Status: ✅ Active\n Platform: Render\n Java: ${System.getProperty(\"java.version\")}\n Memory: ${Runtime.getRuntime().maxMemory() / 1024 / 1024} MB\n \"\"\".trimIndent())\n }\n }\n }\n \n // Запуск в отдельном потоке\n Thread {\n server.start(wait = true)\n }.start()\n}\n"}, "dfd80c5c0c0b9382a63374916aaa236d84ce08ef": {"t": 1785755967.7181926, "n": 2802, "h": "e249934089fc6569", "c": "package com.example.bot\n\nimport io.ktor.server.application.*\nimport io.ktor.server.engine.*\nimport io.ktor.server.netty.*\nimport io.ktor.server.response.*\nimport io.ktor.server.routing.*\nimport io.ktor.server.plugins.statuspages.*\nimport org.telegram.telegrambots.longpolling.TelegramBotsLongPollingApplication\nimport org.telegram.telegrambots.meta.exceptions.TelegramApiException\nimport kotlin.system.exitProcess\n\nfun main() {\n val token = System.getenv(\"8428502125:AAH6aR4molAk8gKdvBwoMUXCorSeXLxBMEk\") ?: run {\n println(\"❌ ERROR: TELEGRAM_BOT_TOKEN environment variable is not set\")\n println(\"🔧 Please set it in Render dashboard -> Environment\")\n exitProcess(1)\n }\n \n val port = System.getenv(\"PORT\")?.toIntOrNull() ?: 8080\n \n // Запуск HTTP сервера для health check\n startHealthServer(port)\n \n try {\n val botApplication = TelegramBotsLongPollingApplication()\n botApplication.registerBot(token, TelegramBot(token))\n \n println(\"✅ Bot successfully started on Render!\")\n println(\"🌐 Health check available at: http://localhost:$port/health\")\n println(\"🤖 Bot username: @${TelegramBot(token).botUsername}\")\n \n // Keep the application running\n while (true) {\n Thread.sleep(1000)\n }\n } catch (e: TelegramApiException) {\n println(\"❌ Failed to start bot: ${e.message}\")\n exitProcess(1)\n } catch (e: Exception) {\n println(\"❌ Unexpected error: ${e.message}\")\n e.printStackTrace()\n exitProcess(1)\n }\n}\n\nfun startHealthServer(port: Int) {\n val server = embeddedServer(Netty, port = port) {\n install(StatusPages) {\n status(HttpStatusCode.NotFound) { call, _ ->\n call.respondText(\"Not Found\", status = HttpStatusCode.NotFound)\n }\n }\n \n routing {\n get(\"/\") {\n call.respondText(\"\"\"\n Telegram Bot is running! 🤖\n \n Endpoints:\n - GET /health - Health check\n - GET /status - Bot status\n \n Made with ❤️ on Render\n \"\"\".trimIndent())\n }\n \n get(\"/health\") {\n call.respondText(\"OK\")\n }\n \n get(\"/status\") {\n call.respondText(\"\"\"\n Bot Status: ✅ Active\n Platform: Render\n Java: ${System.getProperty(\"java.version\")}\n Memory: ${Runtime.getRuntime().maxMemory() / 1024 / 1024} MB\n \"\"\".trimIndent())\n }\n }\n }\n \n // Запуск в отдельном потоке\n Thread {\n server.start(wait = true)\n }.start()\n}"}}}} |