{"id":39437767,"url":"https://github.com/doceazedo/emotettv","last_synced_at":"2026-01-18T04:15:23.445Z","repository":{"id":40269827,"uuid":"465552323","full_name":"doceazedo/emotettv","owner":"doceazedo","description":"💬 A Twitch (BTTV, FFZ \u0026 7TV) emotes and badges parser - built with TMI.js in mind","archived":false,"fork":false,"pushed_at":"2024-01-29T16:57:11.000Z","size":220,"stargazers_count":25,"open_issues_count":4,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-09T05:34:51.153Z","etag":null,"topics":["7tv","bttv","emotes","ffz","javascript","library","parser","tmi","tmijs","twitch","twurple","typescript"],"latest_commit_sha":null,"homepage":"https://emotettv.gitbook.io","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/doceazedo.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}},"created_at":"2022-03-03T03:19:47.000Z","updated_at":"2025-07-21T12:59:49.000Z","dependencies_parsed_at":"2024-01-27T05:20:50.215Z","dependency_job_id":"bd6a116d-0df1-4221-987d-7ab7d264f60d","html_url":"https://github.com/doceazedo/emotettv","commit_stats":{"total_commits":42,"total_committers":4,"mean_commits":10.5,"dds":0.6190476190476191,"last_synced_commit":"10713df4d558b6f60e2b178b1dc32bc6ff7693f3"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/doceazedo/emotettv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doceazedo%2Femotettv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doceazedo%2Femotettv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doceazedo%2Femotettv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doceazedo%2Femotettv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/doceazedo","download_url":"https://codeload.github.com/doceazedo/emotettv/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doceazedo%2Femotettv/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28529470,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["7tv","bttv","emotes","ffz","javascript","library","parser","tmi","tmijs","twitch","twurple","typescript"],"created_at":"2026-01-18T04:15:23.379Z","updated_at":"2026-01-18T04:15:23.439Z","avatar_url":"https://github.com/doceazedo.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1\u003eemoteTTV \u003cimg src=\"https://i.imgur.com/Qgc9fJ4.gif\" height=\"56\" width=\"56\" align=\"right\"\u003e\u003c/h1\u003e\n\n[![npm](https://badgen.net/npm/v/emotettv?ts=1706478283)](https://www.npmjs.com/package/emotettv)\n[![install size](https://badgen.net/packagephobia/install/emotettv)](https://packagephobia.com/result?p=emotettv)\n[![downloads](https://badgen.net/npm/dt/emotettv)](https://www.npmjs.com/package/emotettv)\n[![snyk](https://snyk.io/test/npm/emotettv/badge.svg)](https://snyk.io/test/npm/emotettv)\n[![snyk](https://badgen.net/github/license/doceazedo/emotettv)](/LICENSE)\n\n- \u003cimg src=\"https://cdn.betterttv.net/emote/5fa8f232eca18f6455c2b2e1/2x\" height=\"28\" align=\"left\"\u003e Supports Twitch, BTTV, FFZ and 7TV emotes and badges\n- \u003cimg src=\"https://cdn.7tv.app/emote/63071ba3449e6f5ff95cca6d/2x.webp\" height=\"28\" align=\"left\"\u003e Dead simple API — works seamlessly with \u003ca href=\"https://github.com/tmijs/tmi.js\"\u003eTMI.js\u003c/a\u003e and \u003ca href=\"https://twurple.js.org\"\u003eTwurple\u003c/a\u003e\n- \u003cimg src=\"https://static-cdn.jtvnw.net/emoticons/v2/81274/default/dark/2.0\" height=\"28\" align=\"left\"\u003e Works out of the box — no authentication needed\n- \u003cimg src=\"https://i.imgur.com/munRwdJ.png\" height=\"28\" align=\"left\"\u003e Flexible outputs to fit every need\n\n## Demo\n\nCheckout this [demo app](https://emotettv.gitbook.io/emotettv/examples) to see emoteTTV in action! ⛹️\n\n## Basic usage\n\n```js\nimport { parseEmotes } from \"emotettv\";\n\nconst parsed = await parseEmotes(\"Hello emotettv! D:\");\nconsole.log(parsed.toHTML());\n// \u003e Hello emotettv! \u003cfigure\u003e\u003cimg src=\"...\" alt=\"D:\" /\u003e\u003c/figure\u003e\n```\n\nIf you're using [TMI.js](https://github.com/tmijs/tmi.js), you can pass your tags directly to emoteTTV:\n\n```js\nimport { parseBadges, parseEmotes } from \"emotettv\";\nimport tmi from \"tmi.js\";\n\nconst client = new tmi.Client({\n  channels: [\"doceazedo911\"],\n});\n\nconst options = {\n  channelId: \"98776633\",\n};\n\nclient.connect();\nclient.on(\"message\", async (channel, tags, text, self) =\u003e {\n  const badges = await parseBadges(tags.badges, tags.username, options);\n  const message = await parseEmotes(text, tags.emotes, options);\n  const htmlBadges = badges.toHTML();\n  const htmlMessage = message.toHTML();\n  const displayName = tags[\"display-name\"];\n  document.body.innerHTML = `${htmlBadges} ${displayName}: ${htmlMessage}`;\n});\n```\n\n## Docs\n\nCheck more examples and API reference on the [emoteTTV docs](https://emotettv.gitbook.io).\n\n## License\n\nThe emoteTTV project is licensed under the [GPLv3 License](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoceazedo%2Femotettv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdoceazedo%2Femotettv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoceazedo%2Femotettv/lists"}