PHPackages                             codelinered/twitch-chatbot - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. codelinered/twitch-chatbot

ActiveProject[HTTP &amp; Networking](/categories/http)

codelinered/twitch-chatbot
==========================

Twitch Chatbot made with Vue Skeleton

1.16.0(2y ago)45MITJavaScriptPHP ^7.4

Since Jan 30Pushed 2y ago1 watchersCompare

[ Source](https://github.com/CodelineRed/twitch-chatbot)[ Packagist](https://packagist.org/packages/codelinered/twitch-chatbot)[ Docs](https://tcb.codelinered.net)[ RSS](/packages/codelinered-twitch-chatbot/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (1)Versions (17)Used By (0)

Twitch Chatbot - CodelineRed
============================

[](#twitch-chatbot---codelinered)

Visit [screenshots](https://github.com/CodelineRed/twitch-chatbot/tree/main/screenshots) for an inside look.

This application based on [Vue Skeleton](https://github.com/CodelineRed/vue-skeleton/tree/1.x) (1.x).

***This software is meant to be installed on your local machine. If you want to install on a public web server, please secure `public` folder by `.htpasswd` or something similar.***

Table of contents
-----------------

[](#table-of-contents)

- [Included Third Party Code](#included)
- Install Guides
    - [Install Production Build (Recommended)](#install-production-build-recommended)
    - [Install Main/ Develop Build](#install-main-develop-build)
    - [Install with Docker (optional)](#install-with-docker-optional)
- [`chatbot.js`](#chatbotjs-options)
- [Project Commands](#project-commands)
- [Ports](#ports)
- [`chatbot.json`](#chatbotjson)
- [`gulpfile.json`](#gulpfilejson)
- [Chatbot Commands](#chatbot-commands)
    - [Chatbot Commands for Streamer and Moderators](#chatbot-commands-for-streamer-and-moderators)
    - [Custom Command Options for Streamer and Moderators](#custom-command-options-for-streamer-and-moderators)
    - [Bot List Options for Streamer and Moderators](#bot-list-options-for-streamer-and-moderators)
- [Web UI Features](#web-ui-features)
    - [Chat](#chat)
    - [Commands](#commands)
    - [Custom Commands](#custom-commands)
    - [Counter](#counter)
    - [Playlist](#playlist)
    - [Poll](#poll)
    - [Raffle](#raffle)
    - [Bots](#bots)
    - [Statistics](#statistics)
- [`import-videos-folder.js`](#import-videos-folderjs-options)
- [`migration.js`](#migrationjs-options)
- [Localization](#localization)
- [Links](#links)
- [Audio Files](#audio-files)
- [Known Issues](#known-issues)

Included
--------

[](#included)

- [jQuery 3](http://jquery.com)
- [Bootstrap 4](https://getbootstrap.com)
- [Font Awesome 5](https://fontawesome.com)
- [LazyLoad 17](https://www.andreaverlicchi.eu/vanilla-lazyload/)
- [CSS User Agent 2](https://www.npmjs.com/package/cssuseragent)
- [Moment 2](https://momentjs.com/docs/)
- [Datatables 1](https://datatables.net)
- [Sqlite3 5](https://www.npmjs.com/package/sqlite3)
- [Vue 2](https://vuejs.org/)
- [Vue Router 3](https://router.vuejs.org/)
- [Vue i18n 8](https://kazupon.github.io/vue-i18n/)
- [Vue Datetime Picker 2](https://github.com/chronotruck/vue-ctk-date-time-picker)
- [Vue SFC 1](https://github.com/nfplee/gulp-vue-single-file-component)

Install Production Build (Recommended)
--------------------------------------

[](#install-production-build-recommended)

### Required

[](#required)

- [Node.js](http://nodejs.org/en/download/) &gt;= 12.20
- [npm](http://www.npmjs.com/get-npm) `npm i npm@latest -g`

Open console on your OS and navigate to the place where you want to install the project.

### With Composer

[](#with-composer)

```
php composer create-project --ignore-platform-reqs --no-dev codelinered/twitch-chatbot twitch-chatbot "dev-production"
cd twitch-chatbot
npm i --only=prod
```

Add username, tmiToken, your channel and other channels to `src/app/chatbot.json`

```
node migration.js
node chatbot.js
```

### With GIT

[](#with-git)

```
git clone https://github.com/CodelineRed/twitch-chatbot.git
cd twitch-chatbot
git checkout production
npm i --only=prod
```

Add username, tmiToken, your channel and other channels to `src/app/chatbot.json`

```
node migration.js
node chatbot.js
```

### With ZIP

[](#with-zip)

Unix

```
wget -O tcb-prod.zip https://github.com/CodelineRed/twitch-chatbot/archive/production.zip
unzip tcb-prod.zip
```

Windows 10+

```
curl -L -o tcb-prod.zip https://github.com/CodelineRed/twitch-chatbot/archive/production.zip
tar -xf tcb-prod.zip
```

All OS

```
cd twitch-chatbot-production
npm i --only=prod
```

Add username, tmiToken, your channel and other channels to `src/app/chatbot.json`

```
node migration.js
node chatbot.js
```

[Generate tmiToken](https://twitchapps.com/tmi/) and click on "Connect".
If you need PHP, you have to go to [Install with Docker](#install-with-docker-optional).

Install Main/ Develop Build
---------------------------

[](#install-main-develop-build)

### Required

[](#required-1)

- [Node.js](http://nodejs.org/en/download/) &gt;= 12.20
- [npm](http://www.npmjs.com/get-npm) `npm i npm@latest -g`
- [gulp-cli](https://www.npmjs.com/package/gulp-cli) `npm i gulp-cli@latest -g`

Open 2 consoles on your OS and navigate to the place where you want to install the project.

### With Composer

[](#with-composer-1)

```
php composer create-project --ignore-platform-reqs codelinered/twitch-chatbot twitch-chatbot
cd twitch-chatbot
npm i
gulp build
```

Add username, tmiToken, your channel and other channels to `src/app/chatbot.json`

```
node migration.js
node chatbot.js
```

in 2nd console

```
gulp
```

### With GIT

[](#with-git-1)

```
git clone https://github.com/CodelineRed/twitch-chatbot.git
cd twitch-chatbot
git checkout main
npm i
gulp build
```

Add username, tmiToken, your channel and other channels to `src/app/chatbot.json`

```
node migration.js
node chatbot.js
```

in 2nd console

```
gulp
```

### With ZIP

[](#with-zip-1)

Unix

```
wget -O tcb-main.zip https://github.com/CodelineRed/twitch-chatbot/archive/main.zip
unzip tcb-main.zip
```

Windows 10+

```
curl -L -o tcb-main.zip https://github.com/CodelineRed/twitch-chatbot/archive/main.zip
tar -xf tcb-main.zip
```

All OS

```
cd twitch-chatbot-main
npm i
gulp build
```

Add username, tmiToken, your channel and other channels to `src/app/chatbot.json`

```
node migration.js
node chatbot.js
```

in 2nd console

```
gulp
```

[Generate tmiToken](https://twitchapps.com/tmi/) and click on "Connect".
Open [localhost:3000](http://localhost:3000) for Web UI.

Install with Docker (optional)
------------------------------

[](#install-with-docker-optional)

### Required

[](#required-2)

- [Docker](https://www.docker.com/)
- [Node.js](http://nodejs.org/en/download/) &gt;= 12.20
- [npm](http://www.npmjs.com/get-npm) `npm i npm@latest -g`

Open console on your OS and navigate to the unzipped or cloned app folder.

Unix

```
systemctl docker start
docker-compose up -d
docker run --rm --interactive --tty --volume $PWD:/app composer install --no-dev
docker exec -ti twitch-chatbot php /var/www/vendor/vrana/adminer/compile.php
-- Ignore error messages --
mv adminer-4.6.2.php ./adminer
```

Windows 10+

```
"c:\path\to\Docker Desktop.exe"
docker-compose up -d
docker run --rm --interactive --tty --volume %cd%:/app composer install --no-dev
docker exec -ti twitch-chatbot php /var/www/vendor/vrana/adminer/compile.php
-- Ignore error messages --
move adminer-4.6.2.php ./adminer
```

All OS

```
$ npm i
$ gulp build
$ node migration.js
$ node chatbot.js
```

Login[Web UI](http://localhost:3050)[Adminer](http://localhost:3050/adminer.php)Serverlocalhost:3050127.0.0.1Username--Password--Database-../data/chatbot.sqlite3[`chatbot.js`](https://github.com/CodelineRed/twitch-chatbot/blob/main/chatbot.js) Options
------------------------------------------------------------------------------------------

[](#chatbotjs-options)

OptionDescription--help, -hShows list of options--versionShow version number--recordchat, --rcRecord chat messages in database (default: true)--showversion, --svDisplay version text in console (default: true)--intro, -iDisplay intro in console (default: true)Project Commands
----------------

[](#project-commands)

Descriptiongulpwatch files and start [BrowserSync](https://www.npmjs.com/package/browser-sync)gulp buildexecutes following tasks: cleanUp, scss, scssLint, js, jsLint, jsRequire, json, img, font, svg, vue, vueLint, vueJs, vueJsLintgulp lintAllexecutes following tasks: scssLint, jsLint, vueJsLint, vueLint, chatbotLintgulp cleanUpclean up public foldergulp fontcopy font filesgulp imgcopy and compress imagesgulp jsuglify, minify and concat js filesgulp jsLintchecks js follows [lint rules](https://github.com/CodelineRed/twitch-chatbot/blob/main/src/app/js-lint.json)gulp jsRequirecopy, uglify and rename files for requirejsgulp jsoncopy and minify json filesgulp scsscompile, minify and concat scss filesgulp scssLintchecks scss follows [lint rules](https://github.com/CodelineRed/twitch-chatbot/blob/main/src/app/scss-lint.json)gulp svgcopy and compress svg filesgulp vuetranspile vue filesgulp vueLintchecks vue follows [lint rules](https://github.com/CodelineRed/twitch-chatbot/blob/main/src/app/vue-lint.json)gulp vueJstranspile vue js filesgulp vueJsLintchecks vue js follows [lint rules](https://github.com/CodelineRed/twitch-chatbot/blob/main/src/app/import-lint.json)gulp chatbotLintchecks chatbot js follows [lint rules](https://github.com/CodelineRed/twitch-chatbot/blob/main/src/app/import-lint.json)gulp watchwatch scss, js, json, vue, chatbot, img, font and svg filesPorts
-----

[](#ports)

Description3000Web UI with HTML ([BrowserSync](https://www.npmjs.com/package/browser-sync))3001[BrowserSync UI](https://www.npmjs.com/package/browser-sync)3050Web UI with PHP/ [twitch-chatbot](https://github.com/CodelineRed/twitch-chatbot/blob/main/docker-compose.yml) (Docker Container)3060Host for [twitch-chatbot-videos-folder](https://github.com/CodelineRed/twitch-chatbot/blob/main/docker-compose.videos-folder.yml) (Docker Container)3100Main Window (Skateboard Socket for Web UI)3110Chat Window (Skateboard Socket for Web UI)3120Player Window (Skateboard Socket for Web UI)3130Raffle Window (Skateboard Socket for Web UI)3140Poll Window (Skateboard Socket for Web UI)3150Counter Window (Skateboard Socket for Web UI)[`chatbot.json`](https://github.com/CodelineRed/twitch-chatbot/blob/main/src/app/chatbot.dist.json)
---------------------------------------------------------------------------------------------------

[](#chatbotjson)

DescriptionusernameRequired - Twitch User NametmiTokenRequired - [Twitch TMI Token](https://twitchapps.com/tmi/)clientIdTokenOptional - [Twitch Client ID Token](https://dev.twitch.tv/) (is presetted)youtubeTokenOptional - [YouTube API Token](https://console.developers.google.com)videosFolderOptional - Absolute path to videos folder with trailing slashbackupOptional - Daily backup yes or noperformanceOptional - 0 = low / 1 = highlocaleRequired - German (de) and English (en) are presettedchannelsRequired - List of Channels to connect[`gulpfile.json`](https://github.com/CodelineRed/twitch-chatbot/blob/main/src/app/gulpfile.dist.json)
-----------------------------------------------------------------------------------------------------

[](#gulpfilejson)

DescriptionbrowserSyncConfigRequired - Defines which config is used for [BrowserSync](https://www.npmjs.com/package/browser-sync) (default: browserSyncDev)sourcePathRequired - Path to raw files (default: src/)publicPathRequired - Path to transpiled files (default: public/)envRequired - Environment dev, test or prod (default: dev)Chatbot Commands
----------------

[](#chatbot-commands)

NameCommandabout!about, !chatbot, !cb, !bug, !bugs, !helpcommands!commands, !cccountercounter increased if users counts from 1 - X without interruptiondiceDuel!dd6 @User or !dd56w6 @User - first digit can be from 1 - 99 and second from 1 - 9 (automatically removed after 120 sec)diceDuelAccept!dda - accepting a dice duel requestplaylistInfo!plan, !program, !playlist, !videopoll!vote 1 - Xrafflecustom keyword (default: !raffle)rollDice!d6 or !d56w6 - first digit can be from 1 - 99 and second from 1 - 9customCommandwrapper for all custom commandsMention User(NEW) !yourcommand @UserNameChatbot Commands for Streamer and Moderators
--------------------------------------------

[](#chatbot-commands-for-streamer-and-moderators)

NameCommandCustom Command(NEW) !yourcommand \[Hello World!\] \[OPTIONS\]Bot List(NEW) !bots \[BotName\] \[OPTIONS\]addBot(Deprecated) !addbot BotNameremoveBot(Deprecated) !rmbot BotNameaddCustomCommand(Deprecated) !addcc !command\[@cooldown\] lorem ipsum e.g. !addcc !hw@10 hello worldremoveCustomCommand(Deprecated) !rmcc !commandtoggleCustomCommand(Deprecated) !tglcc !commandupdateCustomCommand(Deprecated) !updcc !command\[@cooldown\] lorem ipsum dolor e.g. !updcc !hw Hello World!Custom Command Options for Streamer and Moderators
--------------------------------------------------

[](#custom-command-options-for-streamer-and-moderators)

OptionDescription--onEnable command for all users (default: true, if is a new command)--offDisable command for all users, but not streamer and mods (default: false)--cd 30Cooldown for all users, but not streamer and mods (default: 30 seconds, if is a new command)--stShow command status in chat (default: false)--rmRemove command (default: false)Bot List Options for Streamer and Moderators
--------------------------------------------

[](#bot-list-options-for-streamer-and-moderators)

OptionDescription--tcShow bot list to chat (default: false)--rmRemove bot (default: false)Web UI Features
---------------

[](#web-ui-features)

### Chat

[](#chat)

- Timestamp
- Badges
- Custom User Color
- "/me" Messages in full color and italic style
- Cheers
- Subs, Resubs, Sub Gifts (random and specific), Gift Upgrades
- Bans, Timeouts, Deletes
- Now Hosting, Hosted By, Raided By, Unhost
- Clickable Links
- Twitch Emotes
- BetterTTV Emotes
- FrankerFaceZ Emotes
- Popout URL `/channel/[channel]/chat` to use browser source in OBS (No pixel recommendation)

### Commands

[](#commands)

- Cooldown
- Active State
- Last Execution Time

### Custom Commands

[](#custom-commands)

- Add Command (only in chat)
- Remove Command
- Toggle Command
- Update Command (only in chat)

### Counter

[](#counter)

- Popout URL `/channel/[channel]/counter` to use browser source in OBS (Pixel recommendation: 400x400px)

### Playlist

[](#playlist)

- Play Local MP4 files with `localhost:3060` domain. (See [`docker-compose.videos-folder.yml`](https://github.com/CodelineRed/twitch-chatbot/blob/main/docker-compose.videos-folder.yml))
- Play Twitch Clips and Videos (past broadcasts, highlights and video uploads)
- Play YouTube Videos
- Add Video
- Edit Video
- Skip Videos
- Move Videos
- Remove Video
- Remove Played Videos
- Remove Skipped Videos
- Add Playlist
- All Playlists
- Edit Playlist
- Switch Playlist
- Merge Playlists
- Remove Playlist
- Reset Playlist
- Clear Playlist
- playlistInfo Command
- Popout URL `/channel/[channel]/player` to use browser source in OBS (Pixel recommendation: 1920x1080px)
- Video name overlay in player
- Autofill video name, sub name and duration (Depence on `videosFolder`, `youtubeToken` and `clientIdToken` settings)
- Change stream title and / or game dynamic (If at least one Twitch account is connected to "Insanity Meets - Chatbot" App on Twitch)

### Autofill

[](#autofill)

PlayerNameSub NameDurationLocalYes1 (Parsed File Name)Yes (Modification Date)YesTwitch ClipYes (Clip Title)Yes (Game/ Category)YesTwitch VideoYes (Video Title)Yes (Game/ Category)YesYouTube VideoYes (Video Title)Yes (First Video Tag)Yes1 `example_video-2020.mp4` parsed to `Example Video - 2020`

### Poll

[](#poll)

- Start Poll
- Close Poll
- Remove Poll
- Copy Poll to Form
- All Polls Modal
- Announce Poll to Chat Button
- Result to Chat Button
- Animate Winner (If multiple options are equal than a random winner will be picked)
- Play Audio for Winner (Audio is only played in popout window)
- Play Audio loop for Poll (Audio is only played in popout window)
- Announce Winner to Chat
- Multiple Choice Yes/No
- Combine Poll with Raffle
- Start Datetime
- End Datetime
- Datime Picker
- Popout URL `/channel/[channel]/poll` to use browser source in OBS (Pixel recommendation: 1000x563px by max. 6 options)

### Raffle

[](#raffle)

- Start Raffle
- Close Raffle
- Remove Raffle
- Copy Raffle to Form
- All Raffles Modal
- Announce Raffle to Chat Button
- Result to Chat Button
- Animate Winner
- Play Audio for Winner (Audio is only played in popout window)
- Play Audio loop for Poll (Audio is only played in popout window)
- Announce Winner to Chat
- Custom Keyword
- Multiplicators
- Start Datetime
- End Datetime
- Datime Picker
- Popout URL `/channel/[channel]/raffle` to use browser source in OBS (Pixel recommendation: 1000x563px)

### Bots

[](#bots)

- Own [badge](https://fontawesome.com/icons/robot?style=solid) in Chat
- Preset of 5 Bots (Mod4YouBot, Moobot, Nightbot, StreamElements, Streamlabs)
- Bot autofilling with BetterTTV API

### Statistics

[](#statistics)

- Display Viewer Count as Chart
- Top 15 Emotes All
- Top 15 Twitch Emotes
- Top 15 BTTV Emotes
- Top 15 FFZ Emotes
- Top 15 Chatters
- Top 15 Hashtags
- Top 15 Commands
- Amount of Subs
- Amount of New Subs
- Amount of New Paid Subs
- Amount of New Prime Subs
- Amount of Gifted Directly Subs
- Amount of Gifted Random Subs
- Amount of Resubs
- Amount of Paid Resubs
- Amount of Prime Resubs
- Amount of Purges
- Amount of Deleted Messages
- Amount of Timeout Meassages
- Amount of Timeout Users
- Amount of Banned Users
- Amount of New Users
- Amount of All Users
- Amount of Chat Messages
- Amount of Used Emotes
- Amount of Cheers
- Amount of Bits
- Viewer Minimum
- Viewer Maximum
- Viewer Average

[`import-videos-folder.js`](https://github.com/CodelineRed/twitch-chatbot/blob/main/import-videos-folder.js) Options
--------------------------------------------------------------------------------------------------------------------

[](#import-videos-folderjs-options)

OptionDescription--help, -hShows list of options--versionShow version number--backup, -bOptional - Create an additional backup (default: false)--channel, -cRequired - Channel name which owns the videos--identity, -iOptional - Channel id / Room id. (required if channel is not in database)--locale, -lOptional - Locale to use in date generation and log messages (default: en)--logOptional - Show logs in CLI (default: true)--subname, --snOptional - Add date as sub name (default: true)Example execution: `node import-videos-folder.js -c CodelineRed`

### Import Requirements:

[](#import-requirements)

- `videosFolder` in [`chatbot.json`](https://github.com/CodelineRed/twitch-chatbot/blob/main/src/app/chatbot.dist.json) points to existing folder
- each folder under `videosFolder` corresponds to a playlist
- only MP4 files are allowed

The Script only imports videos which are not in the database.

[`migration.js`](https://github.com/CodelineRed/twitch-chatbot/blob/main/migration.js) Options
----------------------------------------------------------------------------------------------

[](#migrationjs-options)

OptionDescription--help, -hShows list of options--versionShow version number--direction, -dOptional - Migration direction (default: up)--file, -fOptional - Execute one specific migration file (e.g.: -f version-1.0.0)--locale, -lOptional - Locale for log messages (default: en)--logOptional - Show logs in CLI (default: true)Example execution: `node migration.js -d up`

Localization
------------

[](#localization)

- Web UI: [`i18n-locales.js`](https://github.com/CodelineRed/twitch-chatbot/blob/main/src/js/vue/app/i18n-locales.js)
- Web UI: [`langswitch.vue`](https://github.com/CodelineRed/twitch-chatbot/blob/main/src/js/vue/component/partial/langswitch.vue)
- Node: [`locales.js`](https://github.com/CodelineRed/twitch-chatbot/blob/main/src/js/chatbot/locales.js)

Links
-----

[](#links)

- [Twitch Messaging Interface](https://github.com/tmijs/docs/tree/gh-pages/_posts)
- [Twitch TMI Token](https://twitchapps.com/tmi/)
- [Twitch API Token](https://dev.twitch.tv/)
- [Twitch API Reference](https://dev.twitch.tv/docs/api/reference)
- [YouTube API Token](https://console.developers.google.com)
- [BetterTTV API](https://github.com/pajbot/pajbot/issues/495)
- [FrankerFaceZ API](https://www.frankerfacez.com/developers)
- [Twitch Clip API](https://dev.twitch.tv/docs/v5/reference/clips#get-clip)
- [Twitch Clip Embed](https://dev.twitch.tv/docs/embed/video-and-clips/#non-interactive-iframes-for-clips)
- [Twitch Video Embed](https://dev.twitch.tv/docs/embed/video-and-clips/#non-interactive-inline-frames-for-live-streams-and-vods)
- [ESLint Js Rules](https://eslint.org/docs/rules/)
- [ESLint Vue Rules](https://vuejs.github.io/eslint-plugin-vue/rules/)
- [ESLint Import Rules](https://github.com/benmosher/eslint-plugin-import/tree/main/docs/rules)
- [Sass Lint Rules](https://github.com/sasstools/sass-lint/tree/develop/docs/rules)
- [Vue SFC](https://github.com/nfplee/gulp-vue-single-file-component)
- [Path to RegExp](https://github.com/pillarjs/path-to-regexp/tree/v1.7.0#parameters)
- [Moment Parsing (Date Format)](https://momentjs.com/docs/#/parsing/)
- [SCSS Confetti](https://codepen.io/Event_Horizon/pen/wBKVQN)

Audio Files
-----------

[](#audio-files)

- Airy by [CodelineRed](https://twitter.com/CodelineRed)
- Ambi EP by [CodelineRed](https://twitter.com/CodelineRed)
- [Big Clap](https://freesound.org/people/kellieskitchen/sounds/209991/)
- Brassy by [CodelineRed](https://twitter.com/CodelineRed)
- C-Space by [CodelineRed](https://twitter.com/CodelineRed)
- [Cheering and Clapping](https://freesound.org/people/AlaskaRobotics/sounds/221568/)
- Ensemble by [CodelineRed](https://twitter.com/CodelineRed)
- [Fan Fare 1](https://freesound.org/people/Suburbanwizard/sounds/423293/)
- [Fan Fare 2](https://freesound.org/people/humanoide9000/sounds/466133/)
- [Fan Fare 3](https://freesound.org/people/plasterbrain/sounds/397355/)
- [Freedom](https://open.spotify.com/track/659q8BivbeVO80CFSL6TX8?si=UYgxjrv_SSKNPqoW6KMpVQ) by [Dracon](https://twitter.com/DraconTV)
- [Hope](https://open.spotify.com/track/4U23RsK09mQSeD3X0cu9Nl?si=rcsT2PESTP-7eHT_ESZaaA) by [Dracon](https://twitter.com/DraconTV)
- [Memory Palace](https://open.spotify.com/track/1h2TunOaZurxJ8SQi8mWzk?si=6svWgwWIQ_OUxfs8YP_1Cg) by [Dracon](https://twitter.com/DraconTV)
- [Peace](https://open.spotify.com/track/0agYShWAvAjEQDVXTQTw5a?si=j9wucASfQAqHdE4-CY0rpw) by [Dracon](https://twitter.com/DraconTV)
- [Valley](https://open.spotify.com/track/5GzLKIX57SZs36w0mzIqzT?si=wV9KcDdMRlqzeEB9Mo-Cvg) by [Dracon](https://twitter.com/DraconTV)
- [Voice of Doubt](https://open.spotify.com/track/2GlCtPZGHy26aTWQa0iebD?si=PrFHrX6aSKeDU_pdgRDaLA) by [Dracon](https://twitter.com/DraconTV)
- [Winner Deep Voice](https://freesound.org/people/dersuperanton/sounds/435878/)
- [Winner Female Voice](https://freesound.org/people/tim.kahn/sounds/80618/)
- [Winner Robot Voice](https://freesound.org/people/Ionicsmusic/sounds/196892/)

Known Issues
------------

[](#known-issues)

- Sometimes user are not inserted in channel\_user\_join. This is under investigation.
- Emotes in Chat component can flicker after new message was added
- An Emoji followed by a Twitch emote (e.g. 🧡 CoolCat) is wrong interpreted by `emote.encodeTwitch()`
    - The API sends a wrong `userstate.emotes` object

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~90 days

Recently: every ~40 days

Total

14

Last Release

762d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/ee6e31fe6d3d4e4195c529de51507adb97cad32e247d9b1be3bdce92c8837102?d=identicon)[CodelineRed](/maintainers/CodelineRed)

---

Top Contributors

[![CodelineRed](https://avatars.githubusercontent.com/u/35538671?v=4)](https://github.com/CodelineRed "CodelineRed (105 commits)")

---

Tags

bootstrapfontawesomejquerynodetwitchtwitch-apivuevuejsweb-guiwebsocketjquerydockerbootstrapgulptwitchFontAwesomevuechatbotvue-i18nvue routertwitch-tmi

### Embed Badge

![Health badge](/badges/codelinered-twitch-chatbot/health.svg)

```
[![Health](https://phpackages.com/badges/codelinered-twitch-chatbot/health.svg)](https://phpackages.com/packages/codelinered-twitch-chatbot)
```

###  Alternatives

[fortawesome/font-awesome

The iconic font, CSS, and SVG framework

76.5k7.3M126](/packages/fortawesome-font-awesome)[kartik-v/bootstrap-fileinput

An enhanced HTML 5 file input for Bootstrap 5.x, 4.x, and 3.x with features for file preview for many file types, multiple selection, ajax uploads, and more.

5.4k7.9M13](/packages/kartik-v-bootstrap-fileinput)[kartik-v/yii2-widget-timepicker

Enhanced Yii2 wrapper for the bootstrap timepicker plugin (sub repo split from yii2-widgets)

404.9M14](/packages/kartik-v-yii2-widget-timepicker)[kartik-v/yii2-widget-touchspin

A Yii2 wrapper widget for the Bootstrap Switch plugin to use checkboxes &amp; radios as toggle touchspines (sub repo split from yii2-widgets)

184.1M6](/packages/kartik-v-yii2-widget-touchspin)[contributte/bootstrap

Extra contrib to nette/boostrap

111.5M3](/packages/contributte-bootstrap)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
