We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's:
- Reporting a bug
- Discussing the current state of the code
- Submitting a fix
- Proposing new features
- Becoming a maintainer
We Use Github Flow, So All Code Changes Happen Through Pull Requests
Pull requests are the best way to propose changes to the codebase (we use Github Flow). We actively welcome your pull requests:
- Fork the repo and create your branch from
master. - If you've added code that should be tested, add tests.
- Ensure the test suite passes.
- Make sure your code lints (run Gradle formatting/formatKotlin command).
- Specify
devas target branch. - Issue that pull request!
Helpful gradle tasks are:
./gradlew apiDump- generates api dump./gradlew prepareRelease- formats code, does api validation, updates kdocs, runs api violations check.
Pre-push hook (optional): Run ./scripts/install-hooks.sh once to wire prepareRelease into your push flow. This ensures code is formatted and validated before it reaches the remote. To bypass for a single push, prefix with SKIP_PRE_PUSH=1 or pass --no-verify.
Tests load environment variables from a .env file (project root) or system environment.
Host environment variables take precedence over .env.
Setup:
- Copy
env.exampleto.envin the project root. - Fill in your values.
.envis gitignored.
Required for most tests:
| Variable | Description |
|---|---|
TELEGRAM_ID |
Your Telegram user ID (e.g. from @my_id_bot) |
BOT_TOKEN |
Bot token from @BotFather. Send a message to the bot first. |
Optional (enables additional tests):
| Variable | Description |
|---|---|
BOT_TOKEN_2 |
Second bot for rate-limit testing |
CHAT_ID |
Chat ID for chat-related tests |
CHANNEL_ID |
Channel ID for channel tests |
PAYMENT_PROVIDER_TOKEN |
Payment provider token for payment tests |
In short, when you submit code changes, your submissions are understood to be under the
same Apache 2.0 that covers the project.
Feel free to contact the
maintainers if that's a concern.
Report bugs using Github's issues
We use GitHub issues to track public bugs. Report a bug by opening a new issue; it's that easy!
Try to stick to the conventions of Kotlin.