{"id":20598168,"url":"https://github.com/fboucher/cloudbot","last_synced_at":"2025-04-15T00:16:45.285Z","repository":{"id":40284144,"uuid":"273498102","full_name":"FBoucher/CloudBot","owner":"FBoucher","description":"ComfyJS Twitch Bot for Frank's Stream twitch","archived":false,"fork":false,"pushed_at":"2024-12-07T04:50:12.000Z","size":12752,"stargazers_count":5,"open_issues_count":13,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-15T00:16:24.642Z","etag":null,"topics":["chatbot","comfyjs","javascript","nodejs","stream","twitch"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/FBoucher.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-19T13:16:26.000Z","updated_at":"2024-06-22T15:33:57.000Z","dependencies_parsed_at":"2024-06-22T22:42:01.528Z","dependency_job_id":null,"html_url":"https://github.com/FBoucher/CloudBot","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FBoucher%2FCloudBot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FBoucher%2FCloudBot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FBoucher%2FCloudBot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FBoucher%2FCloudBot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FBoucher","download_url":"https://codeload.github.com/FBoucher/CloudBot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248981268,"owners_count":21193147,"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":["chatbot","comfyjs","javascript","nodejs","stream","twitch"],"created_at":"2024-11-16T08:25:28.141Z","updated_at":"2025-04-15T00:16:45.245Z","avatar_url":"https://github.com/FBoucher.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cloud Bot\n![Release Docker Image CI](https://github.com/FBoucher/CloudBot/workflows/Release%20Docker%20Image%20CI/badge.svg?branch=main) ![Build Beta Docker Images](https://github.com/FBoucher/CloudBot/workflows/Build%20Docker%20Images/badge.svg?branch=main)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n[![All Contributors](https://img.shields.io/badge/all_contributors-2-orange.svg?style=flat-square)](#contributors-)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\nSimple Twitch chatbot for Twitch Stream, build with [Comfy.JS](https://github.com/instafluff/ComfyJS). \n\n![cloudbot logo](medias/cloudbot_logo.png)\n\nFirst it was a pretext to learn (or refresh) my JavaScript knowledge, but it became quickly fun to add more and more feature to it. Have a look customize it. make suggestion... this is pure fun. :)\n\nCurrently Available Commands\n----------------------------\n\nGames:\n- **!stats**: Display current user stats\n\nSounds:\n- **!bonjour**: play sound \"Bonjour Hi\" 3 different version at random\n- **!bad**: play sound \"Bonjour Hi\"\n- **!yeah**: play sound \"Yeeeeeeaaaah!\"\n- **!knock** : Play sound \"Realistic knock on a door\"\n- **!previously** : Play sound \"Previously on Frank's channel\" said by Jeff Fritz\n\nCB:\n- **!cloud** : Show CD (aka Cloud Bot) GIF\n\nTools: \n- **!time** \u003ctext\u003e: Add a time log to the show notes (those are used to create timestamps on YouTube)\n- **!attention** \u003ctext\u003e: Play a notification sound and draw the text in the screen.\n- **!note** \u003ctext\u003e: Add a note/ code snippet / url useful during the stream\n- **!cmd**, **!command**, **!commands**: Display in the chat the URL back to this list.\n- **!referal**, **!referals**: Display in the chat the URL(s) of Frank's referal(s).\n- **!livecoder**, **!livecoders**: Provide more info about Live Codersin the chat.\n\nOnly Broadcaster:\n- **!scores**: display table of highest scores\n- **!clean**: hide/ clean all previous text in the screen\n- **!load**: Load the file containing the previous session data.\n- **!save**: Save in a local file `streamSession.json` the current session data.\n- **!talk**: The bot will repete the message\n- **!so**  \u003ctext\u003e: shout-out! to user.\n\n- **!todo-add** \u003ctext\u003e:  Add a new To-Do\n- **!todo-start** \u003cnumber\u003e:  Set the identified To-Do as active\n- **!todo-cancel** \u003cnumber\u003e:  Set the identified To-Do as cancelled\n- **!todo-done** \u003cnumber\u003e:  Set the identified To-Do as done/ closed\n\n- **!reminder-add** \u003creminder Key Name\u003e | reminder description:  Create a new reminder.\n- **!reminder-stop** \u003creminder Key Name\u003e:  Set the reminder with the name equal to \u003creminder Key Name\u003e to DONE.\n- **!reminder-pause** \u003creminder Key Name\u003e:  Pause the reminder with the name equal to \u003creminder Key Name\u003e. Set its status to inactive.\n\n\nUpcomming Available Commands\n----------------------------\n\n- lift\n- etc.\n\nHow to use it\n-------------\n\n### Directly from the code\n\nThe Cloudbot now required a server. A tiny one but it's not a static HTML web page anymore. It's using Node.js. You can run it locally or host it somewhere (ex: Azure).\nIf you decide to run it locally execute: `npm start` from inside the folder `src`.\n\nMake a new browser source overlay into your streaming tools (ex: OBS, StreamLabs OBS) and connect it to the root url where the server is running. (ex: `http://localhost:3000`.\n\nCreate a file `secret.js` with the following code in it: \n\n```js\nconst authToken = \"oauth:xxxxxxxxxxxxxxxxxxxxxxxxxxxxx\";\n```\n\nReplace the token by the value found on: https://twitchapps.com/tmi/\n\nFinally replace fboucheros by the name of your Twitch Channel on the last line. \n\n```js\n ComfyJS.Init( \"fboucheros\", authToken );\n```\n\n### Using Docker Container\n\nThis project is now available in a container. You can find it on: [https://hub.docker.com/repository/docker/fboucher/cloudbot](https://hub.docker.com/repository/docker/fboucher/cloudbot)\n\n- The container by default uses the port 3000, you can map it to a different one if you want to keep 3000 available for some other node development (in the command below, the chat bot will be available at http://localhost:3001). \n\n- The `${PWD}` is the current local folder on the host. This folder MUST CONTAINED: \n  - a file `secret.js`  with a auth key in it.\n\n    ```javascript\n    const authToken = \"oauth:____________________\";\n    ```\n\n  - a file `streamSession.json` To initialize the sessions.\n\n    ```json\n    {\n      \"Project\": \"\",\n      \"Id\": 42,\n      \"DateTimeStart\": \"\",\n      \"DateTimeEnd\": \"\",\n      \"Notes\": [],\n      \"UserSession\": [],\n      \"NewFollowers\": [],\n      \"Raiders\": [],\n      \"Subscribers\": [],\n      \"Hosts\": [],\n      \"Cheerers\": [],\n      \"TimeLogs\": [],\n      \"Todos\": [],\n      \"Reminders\": []\n    }\n    ```\n\nHere an example how to instantiate the chatbot.\n\n```bash\ndocker run -p 3001:3000 -d -v ${PWD}:/usr/src/app/io  --name ceebee fboucher/cloudbot:latest\n```\n\nThen on stream in the chat type !start [projectName]\n\n~ **Have fun!**\n\n---\n\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://cloud5mins.com\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/2404846?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFrank Boucher\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/FBoucher/CloudBot/commits?author=FBoucher\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/FBoucher/CloudBot/commits?author=FBoucher\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#ideas-FBoucher\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/surlydev\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/880671?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSurlyDev\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-surlydev\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-enable --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffboucher%2Fcloudbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffboucher%2Fcloudbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffboucher%2Fcloudbot/lists"}