Docs / Developers / Référence / manifest.json rules
GeneratedSDK 0.10.1

manifest.json rules

Required fields, limits and every validation code the upload check can return.

Fields

CléObligatoireRègle
idOuiPlugin id (e.g. "my_plugin"). Must match the id the Dev Portal gave the plugin.
nameOuiHuman-readable name shown on the marketplace.
versionOuiVersion string (e.g. "1.0.0"). Must match the version you upload.
descriptionNonUp to 2000 characters. Placeholder text is refused: description goes here, edit this, fill me in, lorem ipsum, placeholder, tbd, todo.
capabilities_requiredNonList of capability ids in namespace:action form. See the capability catalog. Declaring slash_commands adds interaction:respond for you.
slash_commandsNonList of command objects. Names match ^[-_\w]{1,32}$. Option names are lowercase, 1 to 32 characters. Option type is a Discord option type (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11). Groups nest at most two levels: group, subcommand, options. Noms réservés are refused.
cronNonUp to 5 entries of {"spec": "0 9 * * *", "name": "function_name"}. Five-field cron in UTC, day of week 0 is Sunday, no interval shorter than 5 minutes. Each name must be a function in your plugin decorated with @plugin.cron.
dashboard_manifestNonThe settings page definition. See dashboard widget vocabulary.
proxy_domains_requestedNonHosts your plugin may call through the HTTP proxy. Declaring any adds proxy:http for you.

Code rules

The upload check reads your Python too. These calls are refused: __import__, compile, eval, exec. A set of imports that reach the operating system, the network or other processes is refused as well; yourbot validate names them locally. SQL built with string formatting is flagged.

Validation errors

37 block an upload

Each code appears in the Dev Portal and in yourbot validate output with a message and, usually, a hint.

artifact_unreadablemissing_entry_pointmissing_manifestmanifest_encodingmanifest_not_objectmanifest_invalid_jsonmanifest_missing_fieldmanifest_plugin_id_mismatchmanifest_version_mismatchcapabilities_not_listcapability_malformedrequirements_line_not_allowedcapability_used_not_declaredbundled_submodule_missingdashboard_manifest_unparseabledashboard_manifest_invalidcommand_options_not_listcommand_option_malformedcommand_option_missing_namecommand_option_name_invalidcommand_option_missing_typecommand_option_type_invalidcommand_defs_not_listcommand_handler_not_lowercasecommand_def_malformedcommand_name_invalidcommand_name_duplicatecommand_name_reservedcommand_missing_handlercron_not_listcron_too_manycron_entry_malformedcron_name_invalidcron_name_duplicatecron_spec_invalidcron_spec_too_frequentcron_decorator_spec_invalid

Validation warnings

16 do not block
description_too_longdescription_placeholdercapability_declared_not_usedimport_not_bundled_or_declareddashboard_handler_without_manifestdashboard_declared_rpc_no_handlerdashboard_editor_rpc_method_missing_handlerbytecode_in_artifactgit_metadata_in_artifactcommand_name_not_lowercasecommand_handlers_not_foundcommand_not_declaredcron_task_not_in_manifestschedule_task_never_runscron_missing_taskcron_tasks_not_found
YourBot docs Reference tables are generated from the code that is running. Ask in Discord Suggest a correction