{"id":15134284,"url":"https://github.com/bivashy/java-vk-bots-long-poll-api","last_synced_at":"2025-03-30T18:31:26.789Z","repository":{"id":41892487,"uuid":"286996096","full_name":"bivashy/java-vk-bots-long-poll-api","owner":"bivashy","description":"A Java library to create VK bots using Bots Long Poll API","archived":false,"fork":false,"pushed_at":"2024-11-04T21:27:24.000Z","size":1982,"stargazers_count":4,"open_issues_count":5,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-20T23:33:39.581Z","etag":null,"topics":["bot","bots-long-poll-api","java","java-library","long-polling","longpoll","vk-api","vk-bot","vk-bots","vk-longpoll","vk-sdk","vkapi","vkbot"],"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/bivashy.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-12T11:28:15.000Z","updated_at":"2025-03-03T15:30:05.000Z","dependencies_parsed_at":"2023-02-19T00:00:58.895Z","dependency_job_id":"3f8bdd07-5fcd-4c60-9263-173f319427aa","html_url":"https://github.com/bivashy/java-vk-bots-long-poll-api","commit_stats":{"total_commits":495,"total_committers":9,"mean_commits":55.0,"dds":"0.12525252525252528","last_synced_commit":"c0c0d14a0a007a899a32c34c922e827018b245ec"},"previous_names":["yvasyliev/java-vk-bots-longpoll-api","bivashy/java-vk-bots-long-poll-api","yvasyliev/java-vk-bots-long-poll-api"],"tags_count":66,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bivashy%2Fjava-vk-bots-long-poll-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bivashy%2Fjava-vk-bots-long-poll-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bivashy%2Fjava-vk-bots-long-poll-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bivashy%2Fjava-vk-bots-long-poll-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bivashy","download_url":"https://codeload.github.com/bivashy/java-vk-bots-long-poll-api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246363631,"owners_count":20765323,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bot","bots-long-poll-api","java","java-library","long-polling","longpoll","vk-api","vk-bot","vk-bots","vk-longpoll","vk-sdk","vkapi","vkbot"],"created_at":"2024-09-26T05:04:12.187Z","updated_at":"2025-03-30T18:31:21.775Z","avatar_url":"https://github.com/bivashy.png","language":"Java","readme":"[![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.github.bivashy/java-vk-bots-longpoll-api/badge.svg?kill_cache=1)](https://search.maven.org/artifact/io.github.bivashy/java-vk-bots-longpoll-api)\n[![javadoc](https://javadoc.io/badge2/io.github.bivashy/java-vk-bots-longpoll-api/javadoc.svg?kill_cache=1)](https://javadoc.io/doc/io.github.bivashy/java-vk-bots-longpoll-api)\n[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](https://github.com/bivashy/java-vk-bots-long-poll-api/blob/master/LICENSE)\n![Build status](https://github.com/bivashy/java-vk-bots-long-poll-api/actions/workflows/build-maven-project.yml/badge.svg?branch=master)\n![CodeQL](https://github.com/bivashy/java-vk-bots-long-poll-api/workflows/CodeQL/badge.svg)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=yvasyliev_java-vk-bots-long-poll-api\u0026metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=yvasyliev_java-vk-bots-long-poll-api)\n[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=yvasyliev_java-vk-bots-long-poll-api\u0026metric=code_smells)](https://sonarcloud.io/summary/new_code?id=yvasyliev_java-vk-bots-long-poll-api)\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=yvasyliev_java-vk-bots-long-poll-api\u0026metric=ncloc)](https://sonarcloud.io/summary/new_code?id=yvasyliev_java-vk-bots-long-poll-api)\n[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=yvasyliev_java-vk-bots-long-poll-api\u0026metric=sqale_index)](https://sonarcloud.io/summary/new_code?id=yvasyliev_java-vk-bots-long-poll-api)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=yvasyliev_java-vk-bots-long-poll-api\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=yvasyliev_java-vk-bots-long-poll-api)\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=yvasyliev_java-vk-bots-long-poll-api\u0026metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=yvasyliev_java-vk-bots-long-poll-api)\n[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=yvasyliev_java-vk-bots-long-poll-api\u0026metric=duplicated_lines_density)](https://sonarcloud.io/summary/new_code?id=yvasyliev_java-vk-bots-long-poll-api)\n[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=yvasyliev_java-vk-bots-long-poll-api\u0026metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=yvasyliev_java-vk-bots-long-poll-api)\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=yvasyliev_java-vk-bots-long-poll-api\u0026metric=bugs)](https://sonarcloud.io/summary/new_code?id=yvasyliev_java-vk-bots-long-poll-api)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=yvasyliev_java-vk-bots-long-poll-api\u0026metric=security_rating)](https://sonarcloud.io/summary/new_code?id=yvasyliev_java-vk-bots-long-poll-api)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat)](http://makeapullrequest.com)\n\n# IMPORTANT\n\nThis project reached its end of life. No further updates/support are planned. Look for the other projects.\n\n---\n\n# Java VK Bots Long Poll API\n\nA Java library to create VK bots using Bots Long Poll API.\n\n## Description\n\nAn easy-to-use and lightweight Java library that implements [Bots Long Poll API](https://vk.com/dev/bots_longpoll). Uses\nAPI version: `5.131`.\n\n## Third-party dependencies\n\nThis library uses the next third-party dependencies:\n\n* `Gson`\n* `SLF4J`\n* `OkHttp`\n\n## Requirements\n\n1. `Java 8` or higher\n2. `Maven` or other build tool\n\n## Quickstart\n\n1. Create VK Community.\n2. Go to `Manage` - `API usage` - `Access tokens` and create `access_token`.\n3. Add the library to your `Maven` project:\n   ```xml\n   \u003cdependency\u003e\n       \u003cgroupId\u003eio.github.bivashy\u003c/groupId\u003e\n       \u003cartifactId\u003ejava-vk-bots-longpoll-api\u003c/artifactId\u003e\n       \u003cversion\u003eVERSION\u003c/version\u003e\n   \u003c/dependency\u003e\n   ```\n   * Replace `VERSION` with [the latest release](https://github.com/bivashy/java-vk-bots-long-poll-api/releases).\n4. Extend `LongPollBot` class and override necessary methods:\n   ```java\n   import api.longpoll.bots.LongPollBot;\n   import api.longpoll.bots.exceptions.VkApiException;\n   import api.longpoll.bots.model.events.messages.MessageNew;\n   import api.longpoll.bots.model.objects.basic.Message;\n   \n   public class HelloBot extends LongPollBot {\n      @Override\n      public void onMessageNew(MessageNew messageNew) {\n         try {\n            Message message = messageNew.getMessage();\n            if (message.hasText()) {\n               String response = \"Hello! Received your message: \" + message.getText();\n               vk.messages.send()\n                       .setPeerId(message.getPeerId())\n                       .setMessage(response)\n                       .execute();\n            }\n         } catch (VkApiException e) {\n             e.printStackTrace();\n         }\n      }\n   \n      @Override\n      public String getAccessToken() {\n         return \"your_access_token\";\n      }\n   \n      public static void main(String[] args) throws VkApiException {\n         new HelloBot().startPolling();\n      }\n   }\n   ```\n\n## How to send photos or documents?\n\nEasy:\n\n```java\nimport api.longpoll.bots.LongPollBot;\nimport api.longpoll.bots.exceptions.VkApiException;\nimport api.longpoll.bots.model.events.messages.MessageNew;\nimport api.longpoll.bots.model.objects.basic.Message;\nimport java.io.File;\n\npublic class HelloBot extends LongPollBot {\n   @Override\n   public void onMessageNew(MessageNew messageNew) {\n      try {\n         Message message = messageNew.getMessage();\n         vk.messages.send()\n                 .setPeerId(message.getPeerId())\n                 .setMessage(\"Sending some files to you...\")\n                 .addPhoto(new File(\"your_photo.png\")) // to send photo as photo\n                 .addDoc(new File(\"your_photo.png\")) // to send photo as document\n                 .execute();\n      } catch (VkApiException e) {\n         e.printStackTrace();\n      }\n   }\n}\n```\n\n## More Examples\n\nFind more examples of bot usage [here](https://github.com/bivashy/java-vk-bots-long-poll-api-examples).\n\n## Async execution\n\nEach API method can be executed asynchronously:\n\n```java\nimport api.longpoll.bots.LongPollBot;\nimport api.longpoll.bots.exceptions.VkApiException;\nimport api.longpoll.bots.methods.impl.messages.Send;\nimport api.longpoll.bots.model.events.messages.MessageNew;\nimport api.longpoll.bots.model.objects.basic.Message;\nimport java.io.File;\nimport java.util.concurrent.CompletableFuture;\n\npublic class HelloBot extends LongPollBot {\n   @Override\n   public void onMessageNew(MessageNew messageNew) {\n      CompletableFuture\u003cSend.ResponseBody\u003e future = vk.messages.send()\n               .setPeerId(message.getPeerId())\n               .setMessage(\"Sending message asynchronously...\")\n               .executeAsync();\n   }\n}\n```\n\n## Bot events\n\n`LongPollBot` can handle the next events:\n\n|                 VK event | Handler method                                                               |\n|-------------------------:|:-----------------------------------------------------------------------------|\n|            `app_payload` | `public void onAppPayload(AppPayload appPayload)`                            |\n|              `audio_new` | `public void onAudioNew(Audio audio)`                                        |\n|      `board_post_delete` | `public void onBoardPostDelete(BoardPostDelete boardPostDelete)`             |\n|        `board_post_edit` | `public void onBoardPostEdit(BoardPost boardPost)`                           |\n|         `board_post_new` | `public void onBoardPostNew(BoardPost boardPost)`                            |\n|     `board_post_restore` | `public void onBoardPostRestore(BoardPost boardPost)`                        |\n|     `group_change_photo` | `public void onGroupChangePhoto(GroupChangePhoto groupChangePhoto)`          |\n|  `group_change_settings` | `public void onGroupChangeSettings(GroupChangeSettings groupChangeSettings)` |\n|             `group_join` | `public void onGroupJoin(GroupJoin groupJoin)`                               |\n|            `group_leave` | `public void onGroupLeave(GroupLeave groupLeave)`                            |\n|               `like_add` | `public void onLikeAdd(Like like)`                                           |\n|            `like_remove` | `public void onLikeRemove(Like like)`                                        |\n|  `market_comment_delete` | `public void onMarketCommentDelete(MarketCommentDelete marketCommentDelete)` |\n|    `market_comment_edit` | `public void onMarketCommentEdit(MarketComment marketComment)`               |\n|     `market_comment_new` | `public void onMarketCommentNew(MarketComment marketComment)`                |\n| `market_comment_restore` | `public void onMarketCommentRestore(MarketComment marketComment)`            |\n|      `market_order_edit` | `public void onMarketOrderEdit(MarketOrder marketOrder)`                     |\n|       `market_order_new` | `public void onMarketOrderNew(MarketOrder marketOrder)`                      |\n|          `message_allow` | `public void onMessageAllow(MessageAllow messageAllow)`                      |\n|           `message_deny` | `public void onMessageDeny(MessageDeny messageDeny)`                         |\n|           `message_edit` | `public void onMessageEdit(Message message)`                                 |\n|          `message_event` | `public void onMessageEvent(MessageEvent messageEvent)`                      |\n|            `message_new` | `public void onMessageNew(MessageNew messageNew)`                            |\n|          `message_reply` | `public void onMessageReply(Message message)`                                |\n|   `message_typing_state` | `public void onMessageTypingState(MessageTypingState messageTypingState)`    |\n|   `photo_comment_delete` | `public void onPhotoCommentDelete(PhotoCommentDelete photoCommentDelete)`    |\n|     `photo_comment_edit` | `public void onPhotoCommentEdit(PhotoComment photoComment)`                  |\n|      `photo_comment_new` | `public void onPhotoCommentNew(PhotoComment photoComment)`                   |\n|  `photo_comment_restore` | `public void onPhotoCommentRestore(PhotoComment photoComment)`               |\n|      `photo_comment_new` | `public void onPhotoNew(Photo photo)`                                        |\n|          `poll_vote_new` | `public void onPollVoteNew(PollVoteNew pollVoteNew)`                         |\n|             `user_block` | `public void onUserBlock(UserBlock userBlock)`                               |\n|           `user_unblock` | `public void onUserUnblock(UserUnblock userUnblock)`                         |\n|   `video_comment_delete` | `public void onVideoCommentDelete(VideoCommentDelete videoCommentDelete)`    |\n|     `video_comment_edit` | `public void onVideoCommentEdit(VideoComment videoComment)`                  |\n|      `video_comment_new` | `public void onVideoCommentNew(VideoComment videoComment)`                   |\n|  `video_comment_restore` | `public void onVideoCommentRestore(VideoComment videoComment)`               |\n|              `video_new` | `public void onVideoNew(Video video)`                                        |\n|      `vkpay_transaction` | `public void onVkpayTransaction(VkpayTransaction vkpayTransaction)`          |\n|          `wall_post_new` | `public void onWallPostNew(WallPost wallPost)`                               |\n|      `wall_reply_delete` | `public void onWallReplyDelete(WallReplyDelete wallReplyDelete)`             |\n|        `wall_reply_edit` | `public void onWallReplyEdit(WallReply wallReply)`                           |\n|         `wall_reply_new` | `public void onWallReplyNew(WallReply wallReply)`                            |\n|     `wall_reply_restore` | `public void onWallReplyRestore(WallReply wallReply)`                        |\n|            `wall_repost` | `public void onWallRepost(WallPost wallPost)`                                |\n\n## Logging\n\nThis library uses `SLF4J` API to log all events. You can add any `SLF4J` binding to your project to register events the\nway you want.\n\nIt is highly recommended enabling `DEBUG` log level to see sent and received data.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbivashy%2Fjava-vk-bots-long-poll-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbivashy%2Fjava-vk-bots-long-poll-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbivashy%2Fjava-vk-bots-long-poll-api/lists"}