{"id":18318255,"url":"https://github.com/sinkaroid/jalter","last_synced_at":"2025-09-04T03:41:10.222Z","repository":{"id":57279159,"uuid":"450473686","full_name":"sinkaroid/jalter","owner":"sinkaroid","description":"A NodeJS wrapper for Discord Selfbot","archived":false,"fork":false,"pushed_at":"2022-05-18T22:51:21.000Z","size":121,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-07T20:17:51.084Z","etag":null,"topics":["discord","selfbot"],"latest_commit_sha":null,"homepage":"https://sinkaroid.github.io/jalter","language":"TypeScript","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/sinkaroid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null},"funding":{"github":"sinkaroid","custom":"https://paypal.me/sinkaroid"}},"created_at":"2022-01-21T11:58:36.000Z","updated_at":"2022-11-30T00:54:11.000Z","dependencies_parsed_at":"2022-09-11T19:50:36.056Z","dependency_job_id":null,"html_url":"https://github.com/sinkaroid/jalter","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinkaroid%2Fjalter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinkaroid%2Fjalter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinkaroid%2Fjalter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinkaroid%2Fjalter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sinkaroid","download_url":"https://codeload.github.com/sinkaroid/jalter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223221269,"owners_count":17108514,"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":["discord","selfbot"],"created_at":"2024-11-05T18:08:58.384Z","updated_at":"2024-11-05T18:08:59.316Z","avatar_url":"https://github.com/sinkaroid.png","language":"TypeScript","funding_links":["https://github.com/sponsors/sinkaroid","https://paypal.me/sinkaroid"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003ca href=\"https://sinkaroid.github.io/jalter\"\u003e\u003cimg width=\"470\" src=\"https://cdn.discordapp.com/attachments/952117487166705747/975121178857459795/jalter-gh.png\" alt=\"jalter\"\u003e\u003c/a\u003e\n\n\n\u003ch4 align=\"center\"\u003eA NodeJS wrapper for Discord Selfbot\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://github.com/sinkaroid/jalter/actions/workflows/docs.yml\"\u003e\u003cimg src=\"https://github.com/sinkaroid/jalter/actions/workflows/docs.yml/badge.svg\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://codeclimate.com/github/sinkaroid/jalter/maintainability\"\u003e\u003cimg src=\"https://api.codeclimate.com/v1/badges/385abc152872873786f4/maintainability\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nJalter is lightweight libs for Discord selfbot, yet it handle the most of Discord endpoint needs.  \nAutomating user is against [Discord's Terms of Service](#automated-user-accounts-self-bots). This may result in termination\n\n\u003ca href=\"https://github.com/sinkaroid/jalter/blob/master/CONTRIBUTING.md\"\u003eContributing\u003c/a\u003e •\n\u003ca href=\"https://sinkaroid.github.io/jalter\"\u003eDocumentation\u003c/a\u003e •\n\u003ca href=\"https://github.com/sinkaroid/jalter/issues/new/choose\"\u003eReport Issues\u003c/a\u003e\n\u003c/div\u003e\n\n---\n\n- [Jalter](#)\n  - [Features](#features)\n  - [Installationn](#Installation)\n    - [Prerequisites](#Prerequisites)\n    - [Get user token](#User-token)\n  - [Documentation](#Documentation)\n    - [Quick example](#Example)\n      - [Methods](#Methods)\n      - [Non standard methods](#Non-standard-methods)\n    - [Experimental](#Experimental)\n      - [Make your own tests](#Experimental)\n    - [Listen to events](#Listen-to-events) \n    - [Discord API docs](https://discord.com/developers/docs/intro)\n  - [Limitations](#limitations)\n  - [Pronunciation](#Pronunciation)\n  - [Automated user accounts (self-bots)](#automated-user-accounts-self-bots)\n\n## Features\n\n- Covers the most endpoints.\n- Non-standard stuff\n- Respect the rate limit\n- Documented and tested\n- Easy to use: check your intelisense\n\n## 🚀Installation\n`yarn add jalter` / `npm i jalter`\n\n## Prerequisites\n\u003ctable\u003e\n\t\u003ctd\u003e\u003cb\u003eNOTE:\u003c/b\u003e NodeJS 14.x or higher\u003c/td\u003e\n\u003c/table\u003e\n\n## User token\n\n\u003ctable\u003e\n\t\u003ctd\u003e\u003cb\u003eHow to get token?\u003c/b\u003e Open \u003ca href=\"http://prntscr.com/26epqp9\"\u003ebrowser devtools\u003c/a\u003e try to request something then check the network tab\u003c/td\u003e\n\u003c/table\u003e\n\n## Documentation\nThe documentation can be found [https://sinkaroid.github.io/jalter](https://sinkaroid.github.io/jalter)\n### Example\n```js\nimport Jalter from \"jalter\";\n\nconst jalter = new Jalter(\"wwgwgwgbadadaadpunopupupuu.X7hb5Q.-ngent00dinaLteer1213ngENt0dCcWW_1M\");\n\njalter.getMe().then((res) =\u003e { console.log(\"me\", res); });\n```\nCommonJS should do with `const Jalter = require(\"jalter\")`  \n\n\n### Methods\n- [`Jalter.banUser(options)`](https://sinkaroid.github.io/jalter/classes/index.Jalter.html#banUser)\n    - Ban a member from a guild\n- [`Jalter.createChannel(options)`](https://sinkaroid.github.io/jalter/classes/index.Jalter.html#createChannel)\n    - Create a new channel object for the guild\n- [`Jalter.deleteMessage(options)`](https://sinkaroid.github.io/jalter/classes/index.Jalter.html#deleteMessage)\n    - Delete a message\n- [`Jalter.getAuditLogs(options)`](https://sinkaroid.github.io/jalter/classes/index.Jalter.html#getAuditLogs)\n    - Returns an audit log object for the guild \n- [`Jalter.getChannels(options)`](https://sinkaroid.github.io/jalter/classes/index.Jalter.html#getChannels)\n    - Returns a list of guild channel objects. Does not include threads.\n- [`Jalter.getMe(options)`](https://sinkaroid.github.io/jalter/classes/index.Jalter.html#getMe)\n    - Returns the user object of the requester's account.\n- [`Jalter.getMessage(options)`](https://sinkaroid.github.io/jalter/classes/index.Jalter.html#getMessage)\n    - Returns the messages for a channel.\n- [`Jalter.getRoles(options)`](https://sinkaroid.github.io/jalter/classes/index.Jalter.html#getRoles)\n    - Returns a list of role objects for the guild.\n- [`Jalter.getUser(options)`](https://sinkaroid.github.io/jalter/classes/index.Jalter.html#getUser)\n    - Returns a user object for a given user ID.\n- [`Jalter.joinGuild(options)`](https://sinkaroid.github.io/jalter/classes/index.Jalter.html#joinGuild)\n    - Join a guild\n- [`Jalter.kickUser(options)`](https://sinkaroid.github.io/jalter/classes/index.Jalter.html#kickUser)\n    - Kick a member from a guild\n- [`Jalter.leaveGuild(options)`](https://sinkaroid.github.io/jalter/classes/index.Jalter.html#leaveGuild)\n    - Leave a guild. Returns a 204 empty response on success.\n- [`Jalter.replyMessage(options)`](https://sinkaroid.github.io/jalter/classes/index.Jalter.html#replyMessage)\n    - Reply to a message\n- [`Jalter.typingMessage(options)`](https://sinkaroid.github.io/jalter/classes/index.Jalter.html#typingMessage)\n    - Trigger typing indicator\n\n### Non standard methods\n- [`Jalter.sendInterval(options)`](https://sinkaroid.github.io/jalter/classes/index.Jalter.html#sendInterval)\n\n#### Example send message or random message every X seconds\n\nExample From array given:\n```js\njalter.sendInterval(\"974918359500075041\", 2000, [\"hey\", \"ho\", \"let's go\"])\n    .then((res) =\u003e { console.log(\"sendInterval\", res); });\n```\n\nIf not specified will use random [\"Hello World\"](https://github.com/sinkaroid/jalter/blob/master/src/const.ts#L4):\n```js\njalter.sendInterval(\"974918359500075041\", 2000)\n    .then((res) =\u003e { console.log(\"sendInterval\", res); });\n```\n\n- [`Jalter.sendCount(options)`](https://sinkaroid.github.io/jalter/classes/index.Jalter.html#sendCount)\n\n#### Automated send message and will stop once the count is reached\n\nDesired count is 5, and with 2 second interval\n```js\njalter.sendCount(\"974918359500075041\", 2000, \"hey\", 5)\n    .then((res) =\u003e { console.log(\"sendCount\", res); });\n```\n\n## Limitations\n- There is a hard rate limit every 1 seconds per request\n\n## Listen to events\nThe answer is no, This is intended for something raw and pure HTTP request without extended actions, If you still rely listen events to implement a full-featured bot, use real bot account.\n\n## Pronunciation\n[`id_ID`](https://www.localeplanet.com/java/id-ID/index.html) • **/jalter/** — Jalan Alternatif _(?)_ Jadikan ini sebagai jalan alternatif, bukan sebuah tujuan.\n\n## Experimental\nThis library is maintained but i never use it in production. However it is still somewhat experimental, You are encouraged to make your own tests with your specific endpoints and data types.\n\n## Automated user accounts (self-bots)\n\nCc: https://support.discord.com/hc/en-us/articles/115002192352-Automated-user-accounts-self-bots-  \nThe question regarding \"self bots\" has come up here and there, and we'd like to make our stance clear:\n\nDiscord's API provides a separate type of user account dedicated to automation, called a bot account. Bot accounts can be created through the applications page, and are authenticated using a token (rather than a username and password). Unlike the normal OAuth2 flow, bot accounts have full access to all API routes without using bearer tokens, and can connect to the Real Time Gateway. Automating normal user accounts (generally called \"self-bots\") outside of the OAuth2/bot API is forbidden, and can result in an account termination if found.  \u003c/table\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsinkaroid%2Fjalter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsinkaroid%2Fjalter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsinkaroid%2Fjalter/lists"}