Skip to content
AstrBot
Main Navigation HomeBlogRoadmapHTTP API

English

简体中文

English

简体中文

Toggle dark mode

Intro & DeployMessaging PlatformsAI IntegrationUsageDevelopment
Sidebar Navigation

Introduction

What is AstrBot

Community

FAQ

Deployment

Package Manager

One-click Launcher

Docker

Kubernetes

BT Panel

1Panel

Manual

Other Deployments

CasaOS

Compshare GPU

Community-provided Deployment

Support Us

Messaging Platforms

Quick Start

QQ Official Bot

Websockets

Webhook

OneBot v11

WeCom Application

WeCom AI Bot

WeChat Official Account

Personal WeChat

Lark

DingTalk

Telegram

LINE

Slack

Misskey

Discord

Satori

Connect Satori

Using server-satori

Community-provided

Matrix

KOOK

VoceChat

AI Integration

✨ Model Providers

NewAPI

AIHubMix

PPIO Cloud

SiliconFlow

TokenPony

302.AI

Ollama

LMStudio

⚙️ Agent Runners

Built-in Agent Runner

Dify

Coze

Alibaba Bailian

DeerFlow

Usage

WebUI

Plugins

Built-in Commands

Tool Use

Anthropic Skills

SubAgent Orchestration

Proactive Tasks

MCP

Web Search

Knowledge Base

Custom Rules

Agent Runner

Unified Webhook Mode

Auto Context Compression

Agent Sandbox

Development

Plugin Development

🌠 Getting Started

Minimal Example

Listen to Message Events

Send Messages

Plugin Configuration

AI

Storage

HTML to Image

Session Control

Publish Plugin

Platform Adapter Integration

AstrBot HTTP API

AstrBot Configuration File

Others

Self-hosted HTML to Image

Open Source Summer

OSPP 2025

On this page

AstrBot Plugin Development Guide 🌠 ​

Welcome to the AstrBot Plugin Development Guide! This section will guide you through developing AstrBot plugins. Before we begin, we hope you have the following foundational knowledge:

  1. Some experience with Python programming.
  2. Some experience with Git and GitHub.

Environment Setup ​

Obtain the Plugin Template ​

  1. Open the AstrBot plugin template: helloworld
  2. Click Use this template in the upper right corner
  3. Then click Create new repository.
  4. Fill in your plugin name in the Repository name field. Plugin naming conventions:
    • Recommended to start with astrbot_plugin_;
    • Must not contain spaces;
    • Keep all letters lowercase;
    • Keep it concise.
  5. Click Create repository in the lower right corner.

Clone the Project Locally ​

Clone both the AstrBot main project and the plugin repository you just created to your local machine.

bash
git clone https://github.com/AstrBotDevs/AstrBot
mkdir -p AstrBot/data/plugins
cd AstrBot/data/plugins
git clone <your-plugin-repository-url>

Then, use VSCode to open the AstrBot project. Navigate to the data/plugins/<your-plugin-name> directory.

Update the metadata.yaml file with your plugin's metadata information.

WARNING

Please make sure to modify this file, as AstrBot relies on the metadata.yaml file to recognize plugin metadata.

Set Plugin Logo (Optional) ​

You can add a logo.png file in the plugin directory as the plugin's logo. Please maintain an aspect ratio of 1:1, with a recommended size of 256x256.

Plugin logo example

Plugin Display Name (Optional) ​

You can modify (or add) the display_name field in the metadata.yaml file to serve as the plugin's display name in scenarios like the plugin marketplace, making it easier for users to read.

Declare Supported Platforms (Optional) ​

You can add a support_platforms field (list[str]) to metadata.yaml to declare which platform adapters your plugin supports. The WebUI plugin page will display this field.

yaml
support_platforms:
  - telegram
  - discord

The values in support_platforms must be keys from ADAPTER_NAME_2_TYPE. Currently supported:

  • aiocqhttp
  • qq_official
  • telegram
  • wecom
  • lark
  • dingtalk
  • discord
  • slack
  • kook
  • vocechat
  • weixin_official_account
  • satori
  • misskey
  • line

Declare AstrBot Version Range (Optional) ​

You can add an astrbot_version field in metadata.yaml to declare the required AstrBot version range for your plugin. The format follows dependency specifiers in pyproject.toml (PEP 440), and must not include a v prefix.

yaml
astrbot_version: ">=4.16,<5"

Examples:

  • >=4.17.0
  • >=4.16,<5
  • ~=4.17

If you only want to declare a minimum version, use:

  • >=4.17.0

If the current AstrBot version does not satisfy this range, the plugin will be blocked from loading with a compatibility error. In the WebUI installation flow, you can choose to "Ignore Warning and Install" to bypass this check.

Debugging Plugins ​

AstrBot uses a runtime plugin injection mechanism. Therefore, when debugging plugins, you need to start the AstrBot main application.

You can use AstrBot's hot reload feature to streamline the development process.

After modifying the plugin code, you can find your plugin in the AstrBot WebUI's plugin management section, click the ... button in the upper right corner, and select Reload Plugin.

If the plugin fails to load due to code errors or other reasons, you can also click "Try one-click reload fix" in the error prompt on the admin panel to reload it.

Plugin Dependency Management ​

Currently, AstrBot manages plugin dependencies using pip's built-in requirements.txt file. If your plugin requires third-party libraries, please be sure to create a requirements.txt file in the plugin directory and list the dependencies used, to prevent Module Not Found errors when users install your plugin.

For the complete format of requirements.txt, please refer to the pip official documentation.

Development Principles ​

Thank you for contributing to the AstrBot ecosystem. Please follow these principles when developing plugins, which are also good programming practices:

  • Features must be tested.
  • Include comprehensive comments.
  • Store persistent data in the data directory, not in the plugin's own directory, to prevent data loss when updating/reinstalling the plugin.
  • Implement robust error handling mechanisms; don't let a single error crash the plugin.
  • Before committing, please use the ruff tool to format your code.
  • Do not use the requests library for network requests; use asynchronous network request libraries such as aiohttp or httpx.
  • If you're extending functionality for an existing plugin, please prioritize submitting a PR to that plugin rather than creating a separate one (unless the original plugin author has stopped maintaining it).
Edit this page on GitHub

Last updated:

Pager
PreviousAgent Sandbox
NextMinimal Example

Deployed on Rainyun Logo