CONTRIBUTING.md
# Contributing to the Gems of War bot
👍🎉 First off, thanks for taking the time to contribute! 🎉👍
The following is a set of guidelines for contributing to this repository.
These are mostly guidelines, not rules. Use your best judgment, and feel
free to propose changes to this document in a pull request.
## How can I contribute?
### Reporting bugs
* **Use a clear and descriptive title** for the issue to identify the problem.
* **Describe the exact steps which reproduce the problem** in as many details as possible. For example, start by explaining which command you entered, or how you tried inviting the bot. When listing steps, **don't just say what you did, but explain how you did it**.
* **Provide specific examples to demonstrate the steps**. Include copy/pasteable snippets, which you use in those examples. If you're providing snippets in the issue, use [Markdown code blocks](https://help.github.com/articles/markdown-basics/#multiple-lines).
* **Describe the behavior you observed after following the steps** and point out what exactly is the problem with that behavior.
* **Explain which behavior you expected to see instead and why.**
* **Include screenshots and animated GIFs** which show you following the described steps and clearly demonstrate the problem. You can use [this tool](https://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and [this tool](https://github.com/colinkeenan/silentcast) or [this tool](https://github.com/GNOME/byzanz) on Linux.
Provide more context by answering these questions:
* **Can you reproduce the problem in other servers or channels**?
* **Did the problem start happening recently**?
* **Can you reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens.
Include details about your configuration and environment:
* **What's the name and version of the OS you're using**?
* **Which language setting are you using**?
## Suggesting Enhancements
### Before Submitting An Enhancement Suggestion
* **Check if there's already a feature listed which provides that enhancement in #features.**
### How Do I Submit A (Good) Enhancement Suggestion?
* **Use a clear and descriptive title** for the issue to identify the suggestion.
* **Provide a step-by-step description of the suggested enhancement** in as many details as possible.
* **Provide specific examples to demonstrate the steps**.
* **Describe the current behavior** and **explain which behavior you expected to see instead** and why.
* **Explain why this enhancement would be useful** to most bot users.
## Submitting Code
### Workflow
1. Fork this repository.
2. Commit your changes into a branch of your choice.
3. File a pull request.
4. Gary will have a proper look and discards everything that is not of proper quality, see below.
### Code Quality Rules
* Code abides by [PEP8](https://www.python.org/dev/peps/pep-0008/).
* Avoid duplication at all costs ([DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself) principle).
* Aim for [SOLID](https://en.wikipedia.org/wiki/SOLID) code.
### Commit messages & history
* Use [Semantic Commit Messages](https://seesparkbox.com/foundry/semantic_commit_messages) for naming commits.
* Use rebase if possible.