Chat bot with Web UI. Challenge for the holidays.

Project 19 web, click for a higher resolution picture.
Since the project is still a work in progress, all updates will most likely introduce breaking changes. This is not a production-ready project.
- For the front-end:
- Back-end: AdonisJS, node-sass
- Front-end: lighterhtml, babel-polyfill, adonis-websocket-client
- For the bots:
- dank-twitch-irc
- @mixer/client-node
- Database support:
- PostgreSQL
- SQLite 3 (recommended for development only)
npm i- Copy
.env.exampleand rename copy to.env. - Edit the .env file, make sure you set
APP_KEYto something random.
- All configurations are inside
web/config/. - Notable configuration files:
- db.js
- logs.js
- twitch.js
- mixer.js
- trustedSources.js
- jokes.js
cd .\bot\npm inpm start
- Install PostgreSQL. Make sure uuid-ossp is included in your installation, which it should be on PostgreSQL versions +9.4. My personal setup runs PostgreSQL version 12.
cd .\web\npm run migration
cd .\web\npm inpm start- If the
.envsettings are default, browse to http://localhost:3333/. - Dashboard url is http://localhost:3333/dashboard.
- Make sure to click on "Update bots" after tracking a new user.
- Sometimes websocket connection from bot may repeat itself if the web server was to crash / disconnect, leading to multiple single, as well as multiple batched, messages/events which ultimately crashes the bot and fills logs & connected websockets to receive repeated, already seen, messages/events.
- Platform support:
- Twitch.
- Mixer.
- Logs storage.
- General activity:
- View count every X minutes.
- Dashboard:
- Adding/Removing streamers.
- Bug fixing.
- General chatting statistics. (+ Leaderboard system)
- Level of user "toxicity".
- General chat activity:
- Chats per minute.
- Users per minute.
- Most used emotes every minute (Twitch, Mixer, BTTV, FFZ).
- Displaying emotes in the live chat.
- Points system (Maybe streaming site offers API for their points system?)
- Moderation actions:
- Time out phrase list.
- PerspectiveAPI?
- Video requests (Cytube implementation, or custom?)
- Login system in Web UI.
- Twitch oauth.
- Does Mixer have auth support?
- Use a text compression algorithm for logging, maybe Huffman coding?
Feel free to fork & contribute. Use the provided eslint file to lint your files.
See LICENSE. Karar Al-Remahy