{"id":15001730,"url":"https://github.com/vandercat/seiran","last_synced_at":"2026-02-03T22:06:57.388Z","repository":{"id":170387655,"uuid":"485551038","full_name":"VanderCat/Seiran","owner":"VanderCat","description":"Lightweight VK API library for Lua 5.1 named after Touhou character.","archived":false,"fork":false,"pushed_at":"2022-10-22T14:37:22.000Z","size":18,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-12T02:18:44.424Z","etag":null,"topics":["api","longpoll","longpoll-api","longpolling","lua","lua54","luajit","vk","vk-api","vk-longpoll","vk-lua","vk-sdk","vkapi","vkontakte","vkontakte-api"],"latest_commit_sha":null,"homepage":"","language":"Lua","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/VanderCat.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.MD","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":"2022-04-25T22:14:54.000Z","updated_at":"2023-08-03T20:12:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"da883749-c604-4aeb-b6e8-f21c286520cf","html_url":"https://github.com/VanderCat/Seiran","commit_stats":{"total_commits":15,"total_committers":1,"mean_commits":15.0,"dds":0.0,"last_synced_commit":"47b710111693a3d278aae0d1d893e6d57ce447f6"},"previous_names":["vandercat/seiran"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VanderCat%2FSeiran","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VanderCat%2FSeiran/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VanderCat%2FSeiran/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VanderCat%2FSeiran/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VanderCat","download_url":"https://codeload.github.com/VanderCat/Seiran/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243141239,"owners_count":20242819,"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":["api","longpoll","longpoll-api","longpolling","lua","lua54","luajit","vk","vk-api","vk-longpoll","vk-lua","vk-sdk","vkapi","vkontakte","vkontakte-api"],"created_at":"2024-09-24T18:05:18.605Z","updated_at":"2026-02-03T22:06:57.346Z","avatar_url":"https://github.com/VanderCat.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eSeiran\u003ca href=\"https://en.touhouwiki.net/wiki/Seiran\"\u003e*\u003c/a\u003e\u003c/h1\u003e\n\u003cp align=\"center\"\u003eLightweight VK API library for Lua 5.1+ named after Touhou character.\u003c/p\u003e\n\n**NOTICE:** This library only tested on linux! \n## Table of Content\n- [Table of Content](#table-of-content)\n- [Usage](#usage)\n- [Features](#features)\n- [Requirements](#requirements)\n- [TODO:](#todo)\n- [API](#api)\n  - [`seiran.api.\u003cGROUP\u003e.\u003cMETHOD\u003e{..}`](#seiranapigroupmethod)\n    - [Descirpton:](#descirpton)\n    - [Usage:](#usage-1)\n  - [`seiran:setJsonHandler(encode, decode)`](#seiransetjsonhandlerencode-decode)\n    - [Descirpton:](#descirpton-1)\n    - [Usage:](#usage-2)\n  - [`seiran:longPollStart{...}`](#seiranlongpollstart)\n    - [See:](#see)\n    - [Usage:](#usage-3)\n  - [`seiran:longPollListen{}`](#seiranlongpolllisten)\n    - [See:](#see-1)\n    - [Usage:](#usage-4)\n\n## Usage\n```lua\nlocal VK = require \"seiran\"\n\n-- if using a file:\nlocal at = io.open(\"accesstoken.vk\", \"r\")\nlocal vk1 = VK:new(at:read())\nat:close()\n\n-- Non-Secure way:\nlocal vk2 = VK:new(\"VK.a.b19c3403c42a6d0d85d86efa1784be286ff6e6fc94c18e82c421b906cc33aeea\")\n\nlocal user = vk1.api.users.get{\n    user_ids=\"vander_cat\"\n}[1]\nprint(user.first_name..\" \"..user.last_name)\n```\nYou can also execute the example:\n```sh\n$ lua examples/basic.lua vander_cat\n```\nYou will need to create an `accesstoken.vk` file contains your token though\n\n## Features\n- Longpoll\n- No special API code\n    - there's actually no method like users.get, so if vk will rename something, you will only need to rename same in code\n- lightweight\n    - this library is only about 200 lines\n- You only use a token to do everything (_not like in some python vk api libraries_)\n\n## Requirements\n```\nLua-cURLv3*\n```\n* You now can (!!!) write a new post function and dont use a Lua-cURLv3! just redefine `seiran:post(url, data, headers)`!\n\nOptional:\n```\nLua-cJSON\n```\nIf you're not using cJSON, then you must setup json handlers:\n```lua\nlocal vk = require \"seiran\"\nlocal json = require \"json\"\n\nseiran:setJsonHandler(json.encode, json.decode)\n```\n\n## TODO:\n- Add callback support\n- Login with credentials\n- Cleanup a code (?)\n- Test on other platforms\n\n## API\n### `seiran.api.\u003cGROUP\u003e.\u003cMETHOD\u003e{..}`\n- **Returns** decoded json response from server\n#### Descirpton:\nthis is how you access the api\n#### Usage:\n```lua\nlocal user = seiran.api.users.get{\n    user_ids=\"vander_cat\"\n}.response[1]\n\nprint(user.first_name..\" \"..user.last_name)\n```\n\n### `seiran:setJsonHandler(encode, decode)`\n- function **`encode`** - Function used for encoding to json\n- function **`decode`** - Function used for decoding from json\n#### Descirpton:\nUse this function if you don't have `cJSON` installed or do not want to use it\n#### Usage:\n```lua\nlocal json = require \"json\"\n\nseiran:setJsonHandler(json.encode, json.decode)\n```\n\n### `seiran:longPollStart{...}`\n#### See: \nhttps://dev.vk.com/method/messages.getLongPollServer\n#### Usage:\n```lua\nseiran:longPollStart{\n    need_pts = 1, --default\n    group_id = 12345 -- Only for group's token\n    lp_version=3 --default\n}\n```\n\n### `seiran:longPollListen{}`\n#### See: \nhttps://dev.vk.com/api/user-long-poll/getting-started#%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5\n#### Usage:\n```lua\nseiran:longPollStart()\n\nwhile true do\n    for i, v in ipairs(seiran:longPollListen()) do\n        if math.tointeger(v[1]) == 4 then\n            local msg = seiran.api.messages.getById{\n                message_ids=math.tointeger(v[2])\n            }.response.items[1]\n            local reciever = seiran.api.users.get{\n                user_ids=math.tointeger(v[4])..\",\"..math.tointeger(msg.from_id)\n            }.response\n            reciever[2] = reciever[2] or reciever[1]\n            io.write(reciever[2].first_name..\" \"..reciever[2].last_name..\" ( ID:\"..math.tointeger(reciever[2].id)..\") Wrote message \\\"\"..msg.text..\"\\\" \")\n            io.write(\"In chat \"..reciever[1].first_name..\" \"..reciever[1].last_name..\" ( ID:\"..math.tointeger(reciever[1].id)..\")\\n\")\n        end\n    end\nend\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvandercat%2Fseiran","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvandercat%2Fseiran","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvandercat%2Fseiran/lists"}