narubox-bot for Discord. This bot uses Google PubSubHubbub and the YouTube Data API to send real-time notifications to Discord about channel livestreams and video updates.
- run
./gradlew buildFatJar - write config on
.API_KEY,.CALLBACK_ORIGIN,.JWT_SECRET - run
java -jarwith jar files which you built - expose listen-port with proxy e.g. Nginx, Cloudflare Tunnel
- enjoy!
manual : /docs/manual.md API reference : /docs/api-reference.md
- Realtime Notification for YouTube Live Stream & video uploads
- Discord Webhook Integration
| Name | Description |
|---|---|
| Routing | Provides a structured routing DSL |
| Authentication | Provides extension point for handling the Authorization header |
| Authentication JWT | Handles JSON Web Token (JWT) bearer authentication scheme |
| Content Negotiation | Provides automatic content conversion according to Content-Type and Accept headers |
| kotlinx.serialization | Handles JSON serialization using kotlinx.serialization library |
| Sessions | Adds support for persistent sessions through cookies or headers |
| Request Validation | Adds validation for incoming requests |
| Exposed | Adds Exposed database to your application |
| Name | Technology |
|---|---|
| Language | Kotlin |
| Web framework | Ktor (server & client) |
| Database | SQLite + Exposed ORM + HikariCP |
| Auth | JWT (Ktor authentication) + BCrypt |
| logging | Logback,SLF4J |
| API | YouTube Data API v3 |
To build or run the project, use one of the following tasks:
| Task | Description |
|---|---|
./gradlew test |
Run the tests |
./gradlew build |
Build everything |
./gradlew buildFatJar |
Build an executable JAR of the server with all dependencies included |
./gradlew buildImage |
Build the docker image to use with the fat JAR |
./gradlew publishImageToLocalRegistry |
Publish the docker image locally |
./gradlew run |
Run the server |
./gradlew runDocker |
Run using the local docker image |
If the server starts successfully, you'll see the following output:
2024-12-04 14:32:45.584 [main] INFO Application - Application started in 0.303 seconds.
2024-12-04 14:32:45.682 [main] INFO Application - Responding at http://0.0.0.0:8080