Discord and Telegram bot that roll dices using using commands like /roll 4d6+4
.
/help
Show available commands and how to use them./roll
Roll dices. Example:/roll 3D6+3
./history
Lists your lasts 10 rolls with the results.
-
super-dice-roll: Bot code for interaction via webhooks and rolling dices.
-
parenthesin/components: Helpers and component wrappers to give a foundation to create new services in clojure, you can find components for database, http, webserver and tools for db migrations.
Verb | URL | Description |
---|---|---|
POST | /discord/webhook | Receives Discord's interaction object |
POST | /telegram/webhook/{bot-token} | Receives Telegram's update object |
Set the resources/config.edn
with your keys or the corresponding enviroment variables.
Start containers with postgres user: postgres, password: postgres, hostname: db, port: 5432
and pg-admin email: pg@pg.cc, password: pg, port: 5433
docker-compose -f docker/docker-compose.yml up -d
Stop containers
docker-compose -f docker/docker-compose.yml stop
First you need to have the database running, for this you can use the docker command in the step above.
You can start a repl open and evaluate the file src/super_dice_roll/server.clj
and execute following code:
(start-system! (build-system-map))
You can generate an uberjar and execute it via java in the terminal:
# genarate a target/service.jar
clj -T:build uberjar
# execute it via java
java -jar target/service.jar
To open a nrepl
clj -M:nrepl
To open a nrepl with all test extra-deps on it
clj -M:test:nrepl
To run unit tests inside ./test/unit
clj -M:test :unit
To run integration tests inside ./test/integration
clj -M:test :integration
To run all tests inside ./test
clj -M:test
To generate a coverage report
clj -M:test --plugin kaocha.plugin/cloverage
Runs LSP to fix format and namespaces
clojure -M:clojure-lsp format
clojure -M:clojure-lsp clean-ns
Runs LSP to check format and namespaces
clojure -M:clojure-lsp format --dry
clojure -M:clojure-lsp clean-ns --dry
clojure -M:clojure-lsp diagnostics
To create a new migration with a name
clj -M:migratus create migration-name
To execute all pending migrations
clj -M:migratus migrate
To rollback the latest migration
clj -M:migratus rollback
See Migratus Usage for documentation on each command.
./
├── .clj-kondo -- clj-kondo configuration and classes
├── .github
│ └── workflows -- Github workflows folder.
├── docker -- docker and docker-compose files for the database
├── resources -- Application resources assets folder and configuration files
│ └── migrations -- Current database schemas, synced on service startup.
├── src -- Library source code and headers.
│ ├── parenthesin -- Source for common utilities and helpers.
│ └── super_dice_roll -- Source for the bot.
└── test -- Test source code.
├── integration -- Integration tests source (uses state-flow).
│ ├── parenthesin -- Tests for common utilities and helpers.
│ └── super_dice_roll -- Tests for bot.
└── unit -- Unity tests source (uses clojure.test).
├── parenthesin -- Tests for common utilities.
└── super_dice_roll -- Tests for bot.
This is free and unencumbered software released into the public domain.
For more information, please refer to http://unlicense.org