Thanks to visit codestin.com
Credit goes to github.com

Skip to content

ItsMavey/ItsBagelBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Forks Stargazers Issues Personal

Logo

ItsBagelBot

Zero downtime, Infinite bagels.
Because a monolith wasn't complicated enough.

Explore the docs »
Report Bug · Request Feature

CodeScene Hotspot Code Health CodeScene Average Code Health CodeScene System Mastery


Email GitHub


Table of Contents
  1. About The Project
  2. Architecture Overview
  3. Contributors
  4. Contributing
  5. License
  6. Contact
  7. Acknowledgements

About The Project

There are thousands of Twitch bots out there, yet none that quite fit my needs. ItsBagelBot is my attempt at creating a bot that is.

I have been running so many bots at once to get the features I want, that I decided to make my own bot that can handle everything I need in one place. ItsBagelBot is designed to be modular, so I can easily add or remove features as needed.

After years of research on making my stream better, I have finally decided to share my creation with the world. ItsBagelBot is the culmination of all my knowledge and experience in the Twitch community. All this in a single cloud-native, zero-downtime, microservices-based Twitch bot.

Some might say it's over-engineered for a Twitch bot. It is.

The reason? Because I can.

And because I want to learn more and apply modern software engineering practices to a fun project while showcasing my capabilities.

The entirety of the bot is hosted on Oracle Cloud Infrastructure's in Canadian region. The location was chosen for higher availability of the resources I need, as well as the advantages of data sovereignty and Canadian privacy laws. Moreover, the data centers are located in a region where hydroelectric power is abundant, making it an environmentally conscious choice.


Architecture Overview

ItsBagelBot is built using a microservices architecture, with each feature being its own service. This allows for zero-downtime updates, as services can be updated independently without affecting the entire system.

The main flow of the bot is as follows:

  • Ingress Service: Handles incoming Twitch chat messages and routes them to the appropriate service. It is based on Twitch's conduit architecture for scalability and reliability. Twitch's EventSub WebSockets connections are managed here for chat data while other events are handled via Twitch's EventSub webhooks.
  • Message Broker: RabbitMQ is used as the message broker to facilitate communication between services.
  • Services: Each feature of the bot is implemented as a separate service, which subscribes to relevant messages from the message broker and processes them accordingly.
  • Egress Service: Sends messages back to Twitch chat based on the processed data from the services.

Tech Stack

Currently in development, but will be built with the following technologies:

Languages

Go

Technologies & Tools

Watermill RabbitMQ Ent PostgreSQL Redis Gin

Security & Encryption

Tink Linkerd Doppler

DevOps

Docker Kubernetes GitHub Actions KEDA

Infrastructure

Oracle Cloudflare Tailscale

Monitoring & Logging

Zap New Relic

Security

I take security seriously. ItsBagelBot uses Tink for encryption of sensitive data at rest and in transit. To ensure that I are not using the insecurecleartextkeyset function of Tink, I have acquired a Vault (KMS) from Oracle to secure my keysets.

The internal services communicate using a service mesh (Linkerd) to ensure secure communication between services and the message broker.

The Oracle VPS hosting the bot is secured using Tailscale VPN, ensuring that only authorized devices can access the services. The VPS is completely locked down with a strict firewall allowing only necessary ports. A VCN will eventually be used for further isolation and avoiding Kubernetes public exposure.

Cloudflare is used for DNS management and DDoS protection.


Contributors

This project exists thanks to the people who contribute.


Contributing

If you have suggestions for how ItsBagelBot could be improved, or want to report a bug, please open an issue! I'd love to hear your ideas and help you fix any problems.

For contributing code, please contact me directly at [email protected] before making any changes or submitting a pull request.


License

This project is licensed under the Proprietary License Agreement - see the LICENSE file for details.


Contact

ItsMavey - GitHub - Email


Acknowledgements

README template inspired by othneildrew/Best-README-Template

About

A Twitch Bot for ItsMavey

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages