Welcome Contributors
Thank you for your interest in contributing to PFP Checker! This open-source Discord bot is built with Rust and tracks profile pictures, usernames, and server icons. We welcome contributions of all kinds: bug fixes, new features, documentation improvements, and more.Code of Conduct
By participating in this project, you are expected to uphold our Code of Conduct:- Be respectful: Treat all contributors with respect and professionalism
- Be constructive: Provide helpful feedback and suggestions
- Be collaborative: Work together to improve the project
Getting Started
To start contributing to PFP Checker, follow these steps:Fork the repository
Visit the GitHub repository and click the “Fork” button to create your own copy.
Before making significant changes, consider opening an issue to discuss your ideas with the maintainers.
Development Workflow
Once you’ve set up your development environment (see Setup Guide), follow this workflow:Making Changes
- Write your code: Make your changes in your feature branch
- Write or update tests: Ensure your changes are covered by tests
- Test your changes: Run the test suite to verify everything works
- Format your code: Use Rust’s standard formatter
- Run the linter: Check for common issues and code quality
- Update documentation: If you’ve changed functionality, update relevant documentation
Code Quality Standards
- Follow standard Rust style conventions
- Use meaningful variable and function names
- Comment complex sections of code
- Keep functions small and focused
- Avoid unwrap() in production code - use proper error handling
Submitting Changes
Commit your changes
Pull Request Process
When you submit a pull request:- Include tests: If adding functionality, include appropriate tests
- Update documentation: Update README.md or other docs if needed
- Await review: A maintainer will review your PR and may request changes
- Address feedback: Make any requested changes promptly
- Merge: Once approved, a maintainer will merge your PR
Pull requests are typically reviewed within a few days. Be patient and responsive to feedback.
Testing Approach
PFP Checker uses Rust’s built-in testing framework:- Unit tests: Test individual functions and modules
- Integration tests: Test component interactions
- Database tests: Use temporary databases for testing queries
Database Migrations
If your contribution requires database schema changes:Create a new migration
migrations/ directory with a timestamp prefix.Edit the migration file
Write your SQL schema changes in the generated file. Include both forward migrations and any necessary rollback logic in comments.
What to Contribute
Here are some ways you can contribute:Bug Fixes
- Fix issues listed in the GitHub issue tracker
- Resolve compiler warnings or clippy suggestions
- Improve error handling and edge cases
New Features
- Add new Discord commands
- Implement tracking for additional Discord entities
- Add statistics and analytics features
- Improve the automatic update scheduler
Documentation
- Improve inline code documentation
- Add examples to README.md
- Write tutorials or guides
- Fix typos or clarify existing docs
Performance
- Optimize database queries
- Reduce memory usage
- Improve response times
Code Quality
- Refactor complex functions
- Add missing tests
- Improve error messages
- Reduce code duplication
Getting Help
If you have questions or need assistance:- Open an issue: For bugs, feature requests, or questions
- Check existing issues: Someone may have already asked your question
- Read the documentation: Review the Architecture and Setup guides
- Review the code: The codebase is well-organized and documented
Don’t hesitate to ask questions! The maintainers are happy to help contributors get started.
Recognition
All contributors will be:- Listed in the project’s contributors page on GitHub
- Acknowledged in release notes for their contributions
- Part of an open-source community building useful tools
Next Steps
Setup Guide
Set up your development environment
Architecture
Learn about the codebase structure
Database Schema
Understand the database design
GitHub Repository
View the source code