Thank you for your interest in contributing to Miku! We welcome contributions from the community to make this Discord leveling bot even better.
- Code of Conduct
- Getting Started
- How to Contribute
- Development Setup
- Coding Standards
- Pull Request Process
- Reporting Bugs
- Feature Requests
By participating in this project, you agree to maintain a respectful and inclusive environment. We expect all contributors to:
- Be respectful and considerate of others
- Accept constructive criticism gracefully
- Focus on what's best for the community
- Show empathy towards other community members
-
Fork the repository on GitHub
-
Clone your fork locally:
git clone https://github.com/your-username/Miku.git cd Miku -
Create a branch for your changes:
git checkout -b feature/your-feature-name
We welcome various types of contributions:
- Bug fixes - Fix issues or bugs in the code
- New features - Add new commands or functionality
- Documentation - Improve or expand documentation
- UI/UX improvements - Enhance rank cards or embed designs
- Performance - Optimize code efficiency
- Tests - Add or improve test coverage
-
Install Python 3.14+
-
Install dependencies:
uv sync
-
Set up environment variables: Create a
.envfile in the root directory:DISCORD_TOKEN=your_bot_token_here
-
Run the bot:
uv run main.py
- Format all code files with isort Black (in that specific order)
- Use 4 spaces for indentation (no tabs)
- Maximum line length of 120 characters
- Use descriptive variable and function names
- Place bot commands in appropriate cog files under
src/cogs/ - Utility functions go in
src/utils/ - Keep database operations in
src/utils/database.py - Add doc-strings to functions and classes
async def example_function(user_id: int, amount: int) -> bool:
"""
Brief description of what the function does.
Args:
user_id: The Discord user ID
amount: The amount to add
Returns:
True if successful, False otherwise
Raises:
ValueError: If amount is less than 0.
"""
... # ImplementationWrite clear, concise commit messages:
- Use present tense ("Add feature" not "Added feature")
- First line should be 50 characters or less
- Add detailed description after a blank line if needed
- Reference issue numbers when applicable
Good commit messages:
Add pagination to leaderboard command
- Implement page navigation with reactions
- Display 10 users per page
- Fixes #123- Update documentation if you're changing functionality
- Test your changes thoroughly
- Update the CHANGELOG.md with your changes
- Ensure your code follows the coding standards
- Submit the pull request with a clear description
## Description
Brief description of what this PR does
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Documentation update
- [ ] Performance improvement
## Testing
Describe how you tested these changes
## Checklist
- [ ] My code follows the project's style guidelines
- [ ] I have tested my changes
- [ ] I have updated the documentation
- [ ] I have updated the CHANGELOG.mdBefore creating a bug report, please:
- Check existing issues to avoid duplicates
- Collect information about the bug:
- Python version
- Discord.py version
- Steps to reproduce
- Expected behavior
- Actual behavior
- Error messages or logs
**Describe the bug**
A clear description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Use command '...'
2. See error
**Expected behavior**
What you expected to happen.
**Screenshots/Logs**
If applicable, add screenshots or error logs.
**Environment:**
- OS: [e.g., Windows 11, Ubuntu 22.04]
- Python Version: [e.g., 3.14]
- discord.py Version: [e.g., 2.3.2]We love hearing new ideas! When suggesting a feature:
- Check existing feature requests first
- Describe the problem your feature would solve
- Describe your solution in detail
- Consider alternatives you've thought about
- Provide examples of how it would work
**Is your feature request related to a problem?**
A clear description of the problem.
**Describe the solution you'd like**
A clear description of what you want to happen.
**Describe alternatives you've considered**
Other solutions you've thought about.
**Additional context**
Any other context, mockups, or examples.If you have questions about contributing, feel free to:
- Open an issue with the
questionlabel - Start a discussion in the GitHub Discussions
By contributing to Miku, you agree that your contributions will be licensed under the same license as the project.
Thank you for contributing to Miku!