{"id":13338847,"url":"https://github.com/Roout/chatterfinity","last_synced_at":"2025-03-11T10:32:09.669Z","repository":{"id":43210226,"uuid":"380812631","full_name":"Roout/chatterfinity","owner":"Roout","description":"Twitch bot based on WOW Blizzard and Twich APIs.","archived":false,"fork":false,"pushed_at":"2022-03-13T18:57:54.000Z","size":597,"stargazers_count":0,"open_issues_count":11,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-23T22:20:04.887Z","etag":null,"topics":["blizzard-wow-api","bot","twitch","twitch-bot","wow-api"],"latest_commit_sha":null,"homepage":"","language":"C++","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/Roout.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}},"created_at":"2021-06-27T18:33:55.000Z","updated_at":"2021-11-02T13:18:09.000Z","dependencies_parsed_at":"2022-08-24T14:36:16.736Z","dependency_job_id":null,"html_url":"https://github.com/Roout/chatterfinity","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Roout%2Fchatterfinity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Roout%2Fchatterfinity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Roout%2Fchatterfinity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Roout%2Fchatterfinity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Roout","download_url":"https://codeload.github.com/Roout/chatterfinity/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243015505,"owners_count":20222089,"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":["blizzard-wow-api","bot","twitch","twitch-bot","wow-api"],"created_at":"2024-07-29T19:17:22.437Z","updated_at":"2025-03-11T10:32:08.262Z","avatar_url":"https://github.com/Roout.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Chatterfinity\n\n![Linux](https://github.com/Roout/chatterfinity/actions/workflows/cmake.yml/badge.svg?branch=master)\n\nThis **Twitch Chat Bot** provides an information about **TBC Arena Leaderboard**, **Realm Status**, etc. Bot uses Blizzard WOW API.  \nBot is in development so some functionality will be added later.\n\n## Remote services\n\n- Discord (not added yet)\n- [Twitch API](https://dev.twitch.tv/docs/api)\n- [World of Warcraft API](https://develop.battle.net/documentation/world-of-warcraft-classic/game-data-apis)\n\n## Dependencies\n\n- OpenSSL 1.1.1L\n- Rapidjson 1.1.0\n- Boost.Asio 1.72.0\n\n## Quick Start\n\n1. Clone \u003chttps://github.com/Roout/chatterfinity.git\u003e\n2. Create `secret/services.json` file\n3. Build Project with CMake 3.12 or higher\n\n### Configuration\n\n- The example of the [services-example.json](secret/services.json) is provided.\n- You can get `client_id` and `secret` in [Twitch Developer Console](https://dev.twitch.tv/) and [Blizzard Developer Console](https://develop.battle.net/).\n- **Secret** is required only for Blizzard [Client Credential Flow](https://develop.battle.net/documentation/guides/using-oauth/client-credentials-flow) and **MUST NOT** be disclosed to any 3rd party.  \n- You can get Twitch `token` running [local server](https://github.com/Roout/twitch-token) and opening it in browser at \u003chttp://localhost:3000\u003e. More information is provided at the page of the [twitch-token generator](https://github.com/Roout/twitch-token).\n\n## Commands\n\nCommands can be invoked within either Console either Twitch chat. Chat messages can be russian.  \nCommands which have already been implemented are quite crude without any customization and flexibility because they are used to test core of the bot now.  \nBot sends messages in the chat using [PRIVMSG](https://dev.twitch.tv/docs/irc/guide) IRC command.\n\nBot supports [UTF8](https://en.wikipedia.org/wiki/UTF-8) charset:\n\n- Windows (can not print characters which required more than 2 code units (bytes) for encoding)\n- Linux (should work even with encoding which uses 4 code units (bytes))\n\n### Twitch chat\n\nFor now you can invoke the following custom commands within channel chat:\n\n| Name           |  Params        | Description                                         |\n|----------------|----------------|-----------------------------------------------------|\n| `!realm-status`|                | Show flamegor server status and queue information   |\n| `!arena`       |                | Show current top 1 of the EU region                 |\n| `!arena`       | -player \"nick\" | Show team name, rank, rating of the given player    |\n\nYou also can call alias within chat. But you can add alias only within console\n\n```bash\n# call already added beforehand alias\n!exodus\n# the output for alias above will be equal to output of the following arena command\n!arena -player \"Шаркии\"\n```\n\n### Console\n\nFor now you can invoke the following custom commands within console:\n\n| Name           |  Params            | Description                                                        |\n|----------------|--------------------|--------------------------------------------------------------------|\n| `!realm-status`|                    | Show flamegor server status and queue \u003cbr /\u003einformation to console only  |\n| `!realm-id`    |                    | Show flamegor server id to console only                            |\n| `!arena`       |                    | Show current top 1 EU to console only                              |\n| `!login`       |                    | Login to the `irc.chat.twitch.tv:6697`                             |\n| `!join`        | -channel \"chatroom\"| Join the chatroom                                                  |\n| `!chat`        | -channel \"chatroom\" -message \"message\" | Send message to provided chat (message in \"\")  |\n| `!leave`       | -channel \"chatroom\"| Leave a chatroom                                                   |\n| `!pong`        |                    | Send pong to the `irc.chat.twitch.tv:6697`                         |\n| `!validate`    |                    | Validate the current twitch token                                  |\n| `!alias`       | -alias \"alias_name\" -command \"command\" \u003cbr /\u003e-k1 v1 -k2 v2 ... (other params) | Add alias |\n\nAlias can be added only within console.\n\n```bash\n# add alias for displaying arena team data\n!alias -alias exodus -command arena -player \"Шаркии\"\n# call alias within console or within twitch chat\n!exodus\n# the output for alias above will be equal to output of the following arena command\n!arena -player \"Шаркии\"\n```\n\nAliases are being saved in alias.txt with executable. So they can be saved/soaded between sessions. You also can add alias manually there. But this may lead to errors e.g., coincidence of alias name and existing command name. If you do the same within console it won't add such alias.  \n\n**Not implemented:**\n\n- [ ] remove alias\n- [ ] print existing aliases\n\n## Future features\n\n### Chat bot commands\n\n- [ ] choose creature for user (customized **!dice** roll)\n- [ ] arena leaderboard:\n  - [x] top 1 team of the provided realm\n  - [ ] top 1 team of the provided region\n  - [x] rating for the team by player name from EU regin\n  - [ ] win-lose statistics for the team by player name\n- [ ] auction (don't know whether it will be usefull)\n\nArena leaderboard is one of the most interesting thing for WOW community so it will be the most important part of the bot.\n\n### Restrictions\n\nThere are several very imporatant restriction on the communication in twitch chat. They depend on MODE and Bot authority.\nBot doesn't consider some twitch restrictions yet.  \n\n**NOT implemented yet:**\n\n- Minimum 1 second delay between messages via IRC connection. For slow mode it can be greater.\n- Authority e.g., subscriber mode, etc\n\n**ALREADY implemented:**\n\n- [Rate Limit](https://dev.twitch.tv/docs/irc/guide) is used for **PRIVMSG**, **JOIN**, **PASS**.  \nOnly 2 buckets with the strictest restrictions supported now: general bucket(**JOIN**, **PASS**), channel bucket(**PRIVMSG**).\nBuckets doesn't take into account users authority and assuming this is simple account. Now you're neither moderator neither subscriber. Authority support is not implemented.\nBuckets doesn't take into account bans, slowmodes, etc. These features will be implemented later.\n\nIf IRC or HTTPS connection fails to connect/read/write it will try to reconnect 3 times with 2s, 4s, 8s timeouts.\n\n## Certificate Authorities\n\nThe following certificates are downloaded for application to be able to work with several APIs.\nThey are used by application when connection is trying to complete a handshake.\nConnection needs a CA information to verify if the certificate is \"valid\" or not.\nConnection uses (loads for [SSL Context](https://www.boost.org/doc/libs/1_72_0/doc/html/boost_asio/reference/ssl__context/load_verify_file.html)) root CA to verify a service.\n\n### Blizzard\n\n**Source:** [DigiCert list](https://www.digicert.com/kb/digicert-root-certificates.htm#roots)\nRoot certificate is DigiCert High Assurance EV Root CA;  \nUsed by **eu.battle.net** (Blizzard Auth)\n\n**Source:** [DigiCert list](https://www.digicert.com/kb/digicert-root-certificates.htm#roots)\nRoot certificate is DigiCert Global Root CA  \nUsed by **eu.api.blizzard.com** (Blizzard API)\n\n### Twitch\n\n**Source:** [Amazon CA](https://www.amazontrust.com/repository/)\n**Distinguished Name:**  \n\nCN=Starfield Services Root Certificate Authority - G2,  \nO=Starfield Technologies\\, Inc.,  \nL=Scottsdale,  \nST=Arizona,  \nC=US  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRoout%2Fchatterfinity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FRoout%2Fchatterfinity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRoout%2Fchatterfinity/lists"}