Skip to content

# Development Guide ​

## How to Develop ​

Please read the Plugin Development and API Reference documents if you are developing a plugin.

If you need to submit code to the Liteyuki repository, please read the following:

1. First fork a copy of the Liteyuki repository to your personal/organization account.
2. Develop in your repository.
3. Create a new branch in your repository and submit your code to this branch.
4. Create a Pull Request in your repository to merge your branch into the `main` branch of the Liteyuki repository.

- Participation in development assumes that you are already familiar with the basic usage of the Python language and the Liteyuki framework.
- If you are developing documentation, please ensure that you are familiar with Markdown syntax and basic front-end knowledge.
- Contact the repository maintainer in case of conflicts.

### Suggestions ​

- During development, you can use tools such as `mypy`, `flake8`, and `black` for code checking and formatting.
- Enable developer mode by setting `dev_mode: true` in `config.yml` to see more debugging information in the console.

## Project Structure ​

- `main.py`: Bot entry file
- `liteyuki`: Framework directory (liteyukibot)
- `src`: Bot application source code directory
  - `liteyuki_plugins`: Liteyuki plugin directory
  - `nonebot_plugins`: Nonebot plugin directory
  - `resources`: Built-in resource packs directory
  - `utils`: Utility directory
- `tests`: Unit test directory
- `docs`: Documentation directory
  - `en`: English documentation
  - `zh`: Chinese documentation
- `docker`: Docker related content directory

The `liteyuki` framework is included in the `LiteyukiBot` application, so this project is both the `LiteyukiBot` application repository and the `liteyuki` framework repository.

The `src` directory is the application part, please develop business logic in this directory. `liteyuki_plugins` and `nonebot_plugins` directories are plugin directories, please develop plugins in these directories.

## Standardization ​

- Code should follow `PEP8` and `Google Python Style Guide`.
- In addition, code submitted to the Liteyuki repository should follow the following guidelines:
  - Ensure that the code is runnable and harmless.
  - Ensure that the type hints in the code are correct.
  - Ensure that the comment style is `Google Docstring` or `Liteyuki Docstring`(recommended) to ensure that Litedoc can parse and generate documentation correctly.
  - Strings should be enclosed in double quotes `"` as much as possible, and single quotes `'` should be used when nesting strings.
  - If there is a part for ordinary users, ensure that the documentation is complete (each language has corresponding documentation).
- commit message should follow the following guidelines:
  - You should commit the code after completing a feature or fixing a bug, and not mix the code of multiple features or bugs together.
  - We use gitmoji to mark the type of commit, such as `:sparkles:` for introducing new features, `:bug:` for fixing bugs, etc., please refer to gitmoji for details.
  - The format of the commit message is `<emoji> [module]: <message>`, such as `:sparkles: [liteyuki.event]: add new feature`, where the module field is the affected part, such as `liteyuki.message`, `docs.en.guide.md`, etc., not much is required, but please fill in as much as possible; the message field is a brief description, in summary, what you did.
  - There is no restriction on the language of the commit message, and bilingual use is possible if conditions permit.
- The documentation should follow `Markdown` syntax and support vitepress-related content:
  - Revise the documentation for each language when editing.
  - Ensure that the links in the document are correct and do not lead to inaccessible links.
  - Ensure that the User Documentation is easy to understand and the Development Documentation is detailed.

## Finally ​

- This project is a non-profit open-source project, and we welcome anyone to participate in development. Your contributions will make Liteyuki better.