{"id":19372845,"url":"https://github.com/java-repositories/nasa_bot","last_synced_at":"2026-05-15T17:04:09.226Z","repository":{"id":196811798,"uuid":"697187956","full_name":"java-repositories/NASA_bot","owner":"java-repositories","description":"Telegram бот на Java","archived":false,"fork":false,"pushed_at":"2023-09-27T11:42:11.000Z","size":1541,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-24T14:55:10.683Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/java-repositories.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-09-27T08:25:52.000Z","updated_at":"2024-10-02T06:46:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"80820af2-0303-4dc0-a7de-73b467ede9a4","html_url":"https://github.com/java-repositories/NASA_bot","commit_stats":null,"previous_names":["atdushi/nasa_bot","java-repositories/nasa_bot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/java-repositories/NASA_bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/java-repositories%2FNASA_bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/java-repositories%2FNASA_bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/java-repositories%2FNASA_bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/java-repositories%2FNASA_bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/java-repositories","download_url":"https://codeload.github.com/java-repositories/NASA_bot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/java-repositories%2FNASA_bot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33072971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T08:25:31.135Z","updated_at":"2026-05-15T17:04:09.200Z","avatar_url":"https://github.com/java-repositories.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Пишем Telegram бота на Java для получения картинки от NASA\n\n![telegram bot](images/diagram.drawio.png)\n\n### Что нужно сделать\n\n1. Получить ключ для API NASA по адресу: https://api.nasa.gov/ \u003cbr\u003e\n2. Сделать запрос из кода: https://api.nasa.gov/planetary/apod?api_key=ВАШ_КЛЮЧ \u003cbr\u003e\n3. Создать класс ответа и разобрать json-ответ с помощью Jackson или Gson \u003cbr\u003e\n4. Найти поле url в ответе и скачать массив byte, который сохранить в файл \u003cbr\u003e\n5. Имя файла должно быть взято из части url\n6. Зарегистрировать бота в приложении Telegram\n7. Получить ключ для нашего бота\n8. Получить наш chatID\n9. Подключить зависимость Telegram API к нашему проекту\n10. Написать бота\n11. Задеплоить его в Azure\n\n### Описание\n\nНужно воспользоваться публичным API NASA и скачать ежедневно выгружаемое им изображение. Несмотря на то, что API публичный, доступ к нему предоставляется по ключу, который достаточно просто получить по адресу: https://api.nasa.gov/. Перейдя по ссылке, заполняем личными данными поля:\n* First Name\n* Last Name\n* Email\n\nВ ответ (а так же на почтовый адрес) будет выслан ключ. С этим ключом нужно делать запросы к API.\n\nИтак, чтобы получить ссылку на картинку или другой контент, нужно:\n\n1. Сделать запрос по адресу: https://api.nasa.gov/planetary/apod?api_key=ВАШ_КЛЮЧ\n2. Разобрать полученный ответ\n3. В ответе найти поле `url` - оно содержит адрес на изображение, которое нужно скачать и сохранить локально (на своем компьютере), имя сохраняемого файла нужно взять из части url (из примера ниже DSC1028_PetersNEOWISEAuroralSpike_800.jpg)\n4. Проверить что сохраненный файл открывается.\n\nПример ответа сервиса NASA\n\n```json\n{\n  \"copyright\": \"Bill Peters\",\n  \"date\": \"2020-07-17\",\n  \"explanation\": \"After local midnight on July 14 comet NEOWISE was still above the horizon for Goldenrod, Alberta, Canada, just north of Calgary, planet Earth. In this snapshot it makes for an awesome night with dancing displays of the northern lights. The long-tailed comet and auroral displays are beautiful apparitions in the north these days. Both show the influence of spaceweather and the wind from the Sun. Skygazers have widely welcomed the visitor from the Oort cloud, though C/2020 F3 (NEOWISE) is in an orbit that is now taking it out of the inner Solar System.  Comet NEOWISE Images: July 16 | July 15 | July 14 | July 13 | July 12 | July 11 | July 10 \u0026 earlier\",\n  \"hdurl\": \"https://apod.nasa.gov/apod/image/2007/DSC1028_PetersNEOWISEAuroralSpike.jpg\",\n  \"media_type\": \"image\",\n  \"service_version\": \"v1\",\n  \"title\": \"NEOWISE of the North\",\n  \"url\": \"https://apod.nasa.gov/apod/image/2007/DSC1028_PetersNEOWISEAuroralSpike_800.jpg\"\n}\n```\n\n### Реализация\n\n#### Написание бота\n\n1. Создайте проект `maven` или `gradle` и добавьте в pom.xml или gradle.build библиотеку apache httpclient\n\nПример:\n\n```xml\n\u003cdependency\u003e\n   \u003cgroupId\u003eorg.apache.httpcomponents\u003c/groupId\u003e\n   \u003cartifactId\u003ehttpclient\u003c/artifactId\u003e\n   \u003cversion\u003e4.5.12\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n2. Создайте метод в который добавьте и настройте класс `CloseableHttpClient` например с помощью builder\n\n```cs\nCloseableHttpClient httpClient = HttpClientBuilder.create()\n    .setDefaultRequestConfig(RequestConfig.custom()\n        .setConnectTimeout(5000)    // максимальное время ожидание подключения к серверу\n        .setSocketTimeout(30000)    // максимальное время ожидания получения данных\n        .setRedirectsEnabled(false) // возможность следовать редиректу в ответе\n        .build())\n    .build();\n```\n\n3. Добавьте объект запроса HttpGet request = new HttpGet(\"https://api.nasa.gov/planetary/apod?api_key=ВАШ_КЛЮЧ\") и вызовите удаленный сервис `CloseableHttpResponse response = httpClient.execute(request)`;\u003cbr\u003e\n4. Добавьте в pom.xml или gradle.build библиотеку для работы с json\n\nПример:\n\n```xml\n\u003cdependency\u003e\n   \u003cgroupId\u003ecom.fasterxml.jackson.core\u003c/groupId\u003e\n   \u003cartifactId\u003ejackson-databind\u003c/artifactId\u003e\n   \u003cversion\u003e2.11.1\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n5. Создайте класс, в который будем преобразовывать json ответ от сервера\n6. Преобразуйте json в java-объект\n7. В java-объекте найдите поле url и сделайте с ним еще один http-запрос с помощью уже созданного httpClient\n8. Сохраните тело ответа в файл с именем части url\n9. Проверьте, что файл скачивается и открывается\n\n#### Регистрация в Telegram\n\n10. Зарегистрируйте бота в Telegram (@BotFather) и получите токен\n\n11. Протестируйте бот локально\n```bash\ndocker build -t nasa1 .\ndocker run --env TOKEN=ваш_токен --env USERNAME=ваш_бот --env NASA_KEY=ваш_ключ --rm nasa1\n```\n\n#### Деплой в Azure\n\nХороший туториал можно найти [здесь](https://blog.danielabg.com/how-to-create-a-telegram-bot-using-docker-and-host-it-on-azure#heading-step-6-deploy-your-docker-app-in-azure-container-instances-service).\n\n12. Сбилдите и запуште образ в ваш docker hub.\n```bash\ndocker login\ndocker build -t ваш_пользователь/nasa1:1.0.0 .\ndocker image push ваш_пользователь/nasa1:1.0.0\n```\n\n\u003cdetails\u003e\n  \u003csummary\u003eПодробное описание деплоя в Azure\u003c/summary\u003e\n\n- Resource group: Create new -\u003e choose a name for the workspace where your container app will live, for example \"container_group\"\n- Container name: Choose a name for your app, for example \"mybot\"\n- Region: Choose the region closest to you, but avoid us-east-1 because sometimes it's very full. Example: Canada central.\n- Availability zones: none\n- Image source: Other registry\n- Image type: Public\n- Image: Here you will type your dockerhub username, image name and tag as we wrote it when we did the push command in step 5. Example: danibish/my_first_bot:1.0.0\n- Os type: Linux\n- Size: Select change size to use only 1 GiB of memory, and then click \"ok\"\n\n![Basics](images/azure1.png)\n\n- Now, we move on to the Networking Page\n- Add the port 443.\n \n![Networking](images/azure2.png)\n\nThis is the place where you will write the API Token value, and nowhere else.\n\nMark it as secure, type the word TOKEN in upper case, and copy-paste your API token\n\n![Advanced ](images/azure3.png)\n\n\u003c/details\u003e\n\nГотово!\n\n![result](./images/bot.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjava-repositories%2Fnasa_bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjava-repositories%2Fnasa_bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjava-repositories%2Fnasa_bot/lists"}