In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
Examples of behavior that contributes to creating a positive environment include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
*Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
*Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
- The use of sexualized language or imagery and unwelcome sexual attention or advances
- Trolling, insulting/derogatory comments, and personal or political attacks
-Public or private harassment
- Publishing others' private information, such as a physical or electronic address, without explicit permission
-Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at contact@premid.app or by contacting a staff member on our [Discord server](https://discord.gg/WvfVZ8T). All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at contact@premid.app or by contacting a staff member on our [Discord server](https://discord.premid.app). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
[](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/PreMiD/PreMiD)
[](https://chrome.google.com/webstore/detail/premid/agjnjboanicjcpenljmaaigopkgdnihi)
[](https://twitter.com/PreMiDapp)
This is the monorepo for PreMiD. PreMiD is a simple, configurable utility that allows you to show what you're watching/listening to on your Discord profile.
**If you are a user looking to install PreMiD, please visit the [official website](https://premid.app).**
**PreMiD** is a simple, configurable utility that allows you to show what you're doing on the web in your Discord **now playing status**. It supports many different websites, and will support multiple users watching the same content simultaneously in an upcoming update.
If you are a developer looking to contribute to PreMiD, read along.
# Features
## Table of Contents
· Displays your current web service in Discord as your status.<br>
· Grants full control over Presences.<br>
· Supports over 100 web services, still rising!<br>
· _Watch parties and more are coming soon!_
- [Packages](#packages)
- [License](#license)
# Installation/Troubleshooting
## Packages
### Installation instructions, Troubleshooting guides etc. can be found in our [**Wiki**](https://wiki.premid.app).
This monorepo is split into multiple packages / projects. Here's a list of them:
# Support us
- [apps/docs](apps/docs) - The official documentation for PreMiD.
- [apps/pd](apps/pd/README.md) - A simple url shortener service to shorten urls longer than 256 characters.
- [apps/schema-server](apps/schema-server) - Simple Schema server for the Presence manifest.
<div>
<a target="_blank" href="https://www.patreon.com/bePatron?u=4610890" data-patreon-widget-type="become-patron-button" title="Support me on Patreon!">
<img height="75px" draggable="false" src="https://discordapp.com/api/guilds/493130730549805057/widget.png?style=banner2" alt="Join my Discord!">
</a>
</div>
## Development
### Release
To release a new version of a package, run the following command:
```bash
cd apps/<app>
pnpm bumpp -y -t <app>-v
```
Replace `<app>` with the name of the package you want to release. For example, to release a new version of the `schema-server` package, you would run:
```bash
cd apps/schema-server
pnpm bumpp -y -t schema-server-v
```
This will use bumpp to bump the version of the package in the `package.json` file, create a tag for the new version, and push the changes to the remote repository.
## License
This project is licensed under the [MPL-2.0 License](LICENSE).
"description":"Metadata that describes a presence.",
"definitions":{
"user":{
"type":"object",
"description":"User information.",
"properties":{
"name":{
"type":"string",
"description":"The name of the user."
},
"id":{
"type":"string",
"description":"The Discord snowflake of the user.",
"pattern":"^\\d+$"
}
},
"additionalProperties":false,
"required":["name","id"]
}
},
"properties":{
"$schema":{
"$comment":"This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type":"string",
"description":"The metadata schema URL."
},
"author":{
"$ref":"#/definitions/user",
"description":"The author of this presence."
},
"contributors":{
"type":"array",
"description":"Any extra contributors to this presence.",
"items":{
"$ref":"#/definitions/user"
}
},
"service":{
"type":"string",
"description":"The service this presence is for."
},
"description":{
"type":"object",
"description":"A description of the presence in multiple languages.",
"propertyNames":{
"type":"string",
"description":"The language key. The key must be languagecode(_REGIONCODE).",
"pattern":"^[a-z]{2}(_[A-Z]{2})?$"
},
"patternProperties":{
"^[a-z]{2}(_[A-Z]{2})?$":{
"type":"string",
"description":"The description of the presence in the key's language."
}
},
"additionalProperties":false,
"required":["en"]
},
"url":{
"type":["string","array"],
"description":"The service's website URL, or an array of URLs. Protocols should not be added.",
"description":"Whether or not the presence should run in IFrames."
},
"regExp":{
"type":"string",
"description":"A regular expression used to match URLs for the presence to inject into."
},
"iFrameRegExp":{
"type":"string",
"description":"A regular expression used to match IFrames for the presence to inject into."
},
"button":{
"type":"boolean",
"description":"Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning":{
"type":"boolean",
"description":"Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings":{
"type":"array",
"description":"An array of settings the user can change in the presence.",
"items":{
"type":"object",
"description":"A setting.",
"properties":{
"id":{
"type":"string",
"description":"The ID of the setting."
},
"title":{
"type":"string",
"description":"The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon":{
"type":"string",
"description":"The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern":"^fa[bs] fa-[0-9a-z-]+$"
},
"if":{
"type":"object",
"description":"Restrict showing this setting if another setting is the defined value.",
"propertyNames":{
"type":"string",
"description":"The ID of the setting."
},
"patternProperties":{
"":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"additionalProperties":false
},
"placeholder":{
"type":"string",
"description":"The placeholder for settings that require input. Shown when the input is empty."
},
"value":{
"type":["string","number","boolean"],
"description":"The default value of the setting. Not compatible with `values`."
},
"values":{
"type":"array",
"description":"The default values of the setting. Not compatible with `value`.",
"items":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"multiLanguage":{
"type":["string","boolean","array"],
"description":"When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items":{
"type":"string",
"description":"The name of a file from the localization GitHub repository."
"description":"Metadata that describes a presence.",
"definitions":{
"user":{
"type":"object",
"description":"User information.",
"properties":{
"name":{
"type":"string",
"description":"The name of the user."
},
"id":{
"type":"string",
"description":"The Discord snowflake of the user.",
"pattern":"^\\d+$"
}
},
"additionalProperties":false,
"required":["name","id"]
}
},
"properties":{
"$schema":{
"$comment":"This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type":"string",
"description":"The metadata schema URL."
},
"author":{
"$ref":"#/definitions/user",
"description":"The author of this presence."
},
"contributors":{
"type":"array",
"description":"Any extra contributors to this presence.",
"items":{
"$ref":"#/definitions/user"
}
},
"service":{
"type":"string",
"description":"The service this presence is for."
},
"altnames":{
"type":"array",
"description":"Alternative names for the service.",
"items":{
"type":"string",
"description":"An alternative name."
},
"minItems":1
},
"description":{
"type":"object",
"description":"A description of the presence in multiple languages.",
"propertyNames":{
"type":"string",
"description":"The language key. The key must be languagecode(_REGIONCODE).",
"pattern":"^[a-z]{2}(_[A-Z]{2})?$"
},
"patternProperties":{
"^[a-z]{2}(_[A-Z]{2})?$":{
"type":"string",
"description":"The description of the presence in the key's language."
}
},
"additionalProperties":false,
"required":["en"]
},
"url":{
"type":["string","array"],
"description":"The service's website URL, or an array of URLs. Protocols should not be added.",
"description":"Whether or not the presence should run in IFrames."
},
"regExp":{
"type":"string",
"description":"A regular expression used to match URLs for the presence to inject into."
},
"iFrameRegExp":{
"type":"string",
"description":"A regular expression used to match IFrames for the presence to inject into."
},
"button":{
"type":"boolean",
"description":"Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning":{
"type":"boolean",
"description":"Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings":{
"type":"array",
"description":"An array of settings the user can change in the presence.",
"items":{
"type":"object",
"description":"A setting.",
"properties":{
"id":{
"type":"string",
"description":"The ID of the setting."
},
"title":{
"type":"string",
"description":"The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon":{
"type":"string",
"description":"The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern":"^fa[bs] fa-[0-9a-z-]+$"
},
"if":{
"type":"object",
"description":"Restrict showing this setting if another setting is the defined value.",
"propertyNames":{
"type":"string",
"description":"The ID of the setting."
},
"patternProperties":{
"":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"additionalProperties":false
},
"placeholder":{
"type":"string",
"description":"The placeholder for settings that require input. Shown when the input is empty."
},
"value":{
"type":["string","number","boolean"],
"description":"The default value of the setting. Not compatible with `values`."
},
"values":{
"type":"array",
"description":"The default values of the setting. Not compatible with `value`.",
"items":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"multiLanguage":{
"type":["string","boolean","array"],
"description":"When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items":{
"type":"string",
"description":"The name of a file from the localization GitHub repository."
"description":"Metadata that describes a presence.",
"definitions":{
"user":{
"type":"object",
"description":"User information.",
"properties":{
"name":{
"type":"string",
"description":"The name of the user."
},
"id":{
"type":"string",
"description":"The Discord snowflake of the user.",
"pattern":"^\\d+$"
}
},
"additionalProperties":false,
"required":["name","id"]
}
},
"properties":{
"$schema":{
"$comment":"This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type":"string",
"description":"The metadata schema URL."
},
"author":{
"$ref":"#/definitions/user",
"description":"The author of this presence."
},
"contributors":{
"type":"array",
"description":"Any extra contributors to this presence.",
"items":{
"$ref":"#/definitions/user"
}
},
"service":{
"type":"string",
"description":"The service this presence is for."
},
"altnames":{
"type":"array",
"description":"Alternative names for the service.",
"items":{
"type":"string",
"description":"An alternative name."
},
"minItems":1
},
"description":{
"type":"object",
"description":"A description of the presence in multiple languages.",
"propertyNames":{
"type":"string",
"description":"The language key. The key must be languagecode(_REGIONCODE).",
"description":"Whether or not the presence should run in IFrames."
},
"readLogs":{
"type":"boolean",
"description":"Whether or not the extension should be reading logs."
},
"regExp":{
"type":"string",
"description":"A regular expression used to match URLs for the presence to inject into."
},
"matches":{
"type":"array",
"description":"A glob pattern required to match Google's match pattern (https://developer.chrome.com/docs/extensions/develop/concepts/match-patterns). This is required for Presences.",
"items":{
"type":"string",
"description":"A glob pattern.",
"pattern":"^(https|http|[*])://.*/.*"
}
},
"iFrameMatches":{
"type":"array",
"description":"A glob pattern required to match Google's match pattern (https://developer.chrome.com/docs/extensions/develop/concepts/match-patterns). This is required for Presences.",
"items":{
"type":"string",
"description":"A glob pattern.",
"pattern":"^(https|http|[*])://.*/.*"
}
},
"iFrameRegExp":{
"type":"string",
"description":"A regular expression used to match IFrames for the presence to inject into."
},
"button":{
"type":"boolean",
"description":"Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning":{
"type":"boolean",
"description":"Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings":{
"type":"array",
"description":"An array of settings the user can change in the presence.",
"items":{
"type":"object",
"description":"A setting.",
"properties":{
"id":{
"type":"string",
"description":"The ID of the setting."
},
"title":{
"type":"string",
"description":"The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon":{
"type":"string",
"description":"The icon of the setting. Required only if `multiLanguage` is disabled.",
"description":"Restrict showing this setting if another setting is the defined value.",
"propertyNames":{
"type":"string",
"description":"The ID of the setting."
},
"patternProperties":{
"":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"additionalProperties":false
},
"placeholder":{
"type":"string",
"description":"The placeholder for settings that require input. Shown when the input is empty."
},
"value":{
"type":["string","number","boolean"],
"description":"The default value of the setting. Not compatible with `values`."
},
"values":{
"type":"array",
"description":"The default values of the setting. Not compatible with `value`.",
"items":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"multiLanguage":{
"type":["string","boolean","array"],
"description":"When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items":{
"type":"string",
"description":"The name of a file from the localization GitHub repository."
"description":"Metadata that describes a presence.",
"definitions":{
"user":{
"type":"object",
"description":"User information.",
"properties":{
"name":{
"type":"string",
"description":"The name of the user."
},
"id":{
"type":"string",
"description":"The Discord snowflake of the user.",
"pattern":"^\\d+$"
}
},
"additionalProperties":false,
"required":["name","id"]
}
},
"properties":{
"$schema":{
"$comment":"This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type":"string",
"description":"The metadata schema URL."
},
"author":{
"$ref":"#/definitions/user",
"description":"The author of this presence."
},
"contributors":{
"type":"array",
"description":"Any extra contributors to this presence.",
"items":{
"$ref":"#/definitions/user"
}
},
"service":{
"type":"string",
"description":"The service this presence is for."
},
"altnames":{
"type":"array",
"description":"Alternative names for the service.",
"items":{
"type":"string",
"description":"An alternative name."
},
"minItems":1
},
"description":{
"type":"object",
"description":"A description of the presence in multiple languages.",
"propertyNames":{
"type":"string",
"description":"The language key. The key must be languagecode(_REGIONCODE).",
"pattern":"^[a-z]{2}(_[A-Z]{2})?$"
},
"patternProperties":{
"^[a-z]{2}(_[A-Z]{2})?$":{
"type":"string",
"description":"The description of the presence in the key's language."
}
},
"additionalProperties":false,
"required":["en"]
},
"url":{
"type":["string","array"],
"description":"The service's website URL, or an array of URLs. Protocols should not be added.",
"description":"Whether or not the presence should run in IFrames."
},
"readLogs":{
"type":"boolean",
"description":"Whether or not the extension should be reading logs."
},
"regExp":{
"type":"string",
"description":"A regular expression used to match URLs for the presence to inject into."
},
"iFrameRegExp":{
"type":"string",
"description":"A regular expression used to match IFrames for the presence to inject into."
},
"button":{
"type":"boolean",
"description":"Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning":{
"type":"boolean",
"description":"Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings":{
"type":"array",
"description":"An array of settings the user can change in the presence.",
"items":{
"type":"object",
"description":"A setting.",
"properties":{
"id":{
"type":"string",
"description":"The ID of the setting."
},
"title":{
"type":"string",
"description":"The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon":{
"type":"string",
"description":"The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern":"^fa[bs] fa-[0-9a-z-]+$"
},
"if":{
"type":"object",
"description":"Restrict showing this setting if another setting is the defined value.",
"propertyNames":{
"type":"string",
"description":"The ID of the setting."
},
"patternProperties":{
"":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"additionalProperties":false
},
"placeholder":{
"type":"string",
"description":"The placeholder for settings that require input. Shown when the input is empty."
},
"value":{
"type":["string","number","boolean"],
"description":"The default value of the setting. Not compatible with `values`."
},
"values":{
"type":"array",
"description":"The default values of the setting. Not compatible with `value`.",
"items":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"multiLanguage":{
"type":["string","boolean","array"],
"description":"When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items":{
"type":"string",
"description":"The name of a file from the localization GitHub repository."
"description":"Metadata that describes a presence.",
"definitions":{
"user":{
"type":"object",
"description":"User information.",
"properties":{
"name":{
"type":"string",
"description":"The name of the user."
},
"id":{
"type":"string",
"description":"The Discord snowflake of the user.",
"pattern":"^\\d+$"
}
},
"additionalProperties":false,
"required":["name","id"]
}
},
"properties":{
"$schema":{
"$comment":"This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type":"string",
"description":"The metadata schema URL."
},
"author":{
"$ref":"#/definitions/user",
"description":"The author of this presence."
},
"contributors":{
"type":"array",
"description":"Any extra contributors to this presence.",
"items":{
"$ref":"#/definitions/user"
}
},
"service":{
"type":"string",
"description":"The service this presence is for."
},
"altnames":{
"type":"array",
"description":"Alternative names for the service.",
"items":{
"type":"string",
"description":"An alternative name."
},
"minItems":1
},
"description":{
"type":"object",
"description":"A description of the presence in multiple languages.",
"propertyNames":{
"type":"string",
"description":"The language key. The key must be languagecode(_REGIONCODE).",
"pattern":"^[a-z]{2}(_[A-Z]{2})?$"
},
"patternProperties":{
"^[a-z]{2}(_[A-Z]{2})?$":{
"type":"string",
"description":"The description of the presence in the key's language."
}
},
"additionalProperties":false,
"required":["en"]
},
"url":{
"type":["string","array"],
"description":"The service's website URL, or an array of URLs. Protocols should not be added.",
"description":"Whether or not the presence should run in IFrames."
},
"readLogs":{
"type":"boolean",
"description":"Whether or not the extension should be reading logs."
},
"regExp":{
"type":"string",
"description":"A regular expression used to match URLs for the presence to inject into."
},
"iFrameRegExp":{
"type":"string",
"description":"A regular expression used to match IFrames for the presence to inject into."
},
"button":{
"type":"boolean",
"description":"Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning":{
"type":"boolean",
"description":"Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings":{
"type":"array",
"description":"An array of settings the user can change in the presence.",
"items":{
"type":"object",
"description":"A setting.",
"properties":{
"id":{
"type":"string",
"description":"The ID of the setting."
},
"title":{
"type":"string",
"description":"The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon":{
"type":"string",
"description":"The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern":"^fa[bsd] fa-[0-9a-z-]+$"
},
"if":{
"type":"object",
"description":"Restrict showing this setting if another setting is the defined value.",
"propertyNames":{
"type":"string",
"description":"The ID of the setting."
},
"patternProperties":{
"":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"additionalProperties":false
},
"placeholder":{
"type":"string",
"description":"The placeholder for settings that require input. Shown when the input is empty."
},
"value":{
"type":["string","number","boolean"],
"description":"The default value of the setting. Not compatible with `values`."
},
"values":{
"type":"array",
"description":"The default values of the setting. Not compatible with `value`.",
"items":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"multiLanguage":{
"type":["string","boolean","array"],
"description":"When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items":{
"type":"string",
"description":"The name of a file from the localization GitHub repository."
"description":"Metadata that describes a presence.",
"definitions":{
"user":{
"type":"object",
"description":"User information.",
"properties":{
"name":{
"type":"string",
"description":"The name of the user."
},
"id":{
"type":"string",
"description":"The Discord snowflake of the user.",
"pattern":"^\\d+$"
}
},
"additionalProperties":false,
"required":["name","id"]
}
},
"properties":{
"$schema":{
"$comment":"This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type":"string",
"description":"The metadata schema URL."
},
"author":{
"$ref":"#/definitions/user",
"description":"The author of this presence."
},
"contributors":{
"type":"array",
"description":"Any extra contributors to this presence.",
"items":{
"$ref":"#/definitions/user"
}
},
"service":{
"type":"string",
"description":"The service this presence is for."
},
"altnames":{
"type":"array",
"description":"Alternative names for the service.",
"items":{
"type":"string",
"description":"An alternative name."
},
"minItems":1
},
"description":{
"type":"object",
"description":"A description of the presence in multiple languages.",
"propertyNames":{
"type":"string",
"description":"The language key. The key must be languagecode(_REGIONCODE).",
"pattern":"^[a-z]{2}(_[A-Z]{2})?$"
},
"patternProperties":{
"^[a-z]{2}(_[A-Z]{2})?$":{
"type":"string",
"description":"The description of the presence in the key's language."
}
},
"additionalProperties":false,
"required":["en"]
},
"url":{
"type":["string","array"],
"description":"The service's website URL, or an array of URLs. Protocols should not be added.",
"description":"Whether or not the presence should run in IFrames."
},
"readLogs":{
"type":"boolean",
"description":"Whether or not the extension should be reading logs."
},
"regExp":{
"type":"string",
"description":"A regular expression used to match URLs for the presence to inject into."
},
"iFrameRegExp":{
"type":"string",
"description":"A regular expression used to match IFrames for the presence to inject into."
},
"button":{
"type":"boolean",
"description":"Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning":{
"type":"boolean",
"description":"Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings":{
"type":"array",
"description":"An array of settings the user can change in the presence.",
"items":{
"type":"object",
"description":"A setting.",
"properties":{
"id":{
"type":"string",
"description":"The ID of the setting."
},
"title":{
"type":"string",
"description":"The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon":{
"type":"string",
"description":"The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern":"^fa[bsd] fa-[0-9a-z-]+$"
},
"if":{
"type":"object",
"description":"Restrict showing this setting if another setting is the defined value.",
"propertyNames":{
"type":"string",
"description":"The ID of the setting."
},
"patternProperties":{
"":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"additionalProperties":false
},
"placeholder":{
"type":"string",
"description":"The placeholder for settings that require input. Shown when the input is empty."
},
"value":{
"type":["string","number","boolean"],
"description":"The default value of the setting. Not compatible with `values`."
},
"values":{
"type":"array",
"description":"The default values of the setting. Not compatible with `value`.",
"items":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"multiLanguage":{
"type":["string","boolean","array"],
"description":"When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items":{
"type":"string",
"description":"The name of a file from the localization GitHub repository."
"description":"Metadata that describes a presence.",
"definitions":{
"user":{
"type":"object",
"description":"User information.",
"properties":{
"name":{
"type":"string",
"description":"The name of the user."
},
"id":{
"type":"string",
"description":"The Discord snowflake of the user.",
"pattern":"^\\d+$"
}
},
"additionalProperties":false,
"required":["name","id"]
}
},
"properties":{
"$schema":{
"$comment":"This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type":"string",
"description":"The metadata schema URL."
},
"author":{
"$ref":"#/definitions/user",
"description":"The author of this presence."
},
"contributors":{
"type":"array",
"description":"Any extra contributors to this presence.",
"items":{
"$ref":"#/definitions/user"
}
},
"service":{
"type":"string",
"description":"The service this presence is for."
},
"altnames":{
"type":"array",
"description":"Alternative names for the service.",
"items":{
"type":"string",
"description":"An alternative name."
},
"minItems":1
},
"description":{
"type":"object",
"description":"A description of the presence in multiple languages.",
"propertyNames":{
"type":"string",
"description":"The language key. The key must be languagecode(_REGIONCODE).",
"pattern":"^[a-z]{2}(_[A-Z]{2})?$"
},
"patternProperties":{
"^[a-z]{2}(_[A-Z]{2})?$":{
"type":"string",
"description":"The description of the presence in the key's language."
}
},
"additionalProperties":false,
"required":["en"]
},
"url":{
"type":["string","array"],
"description":"The service's website URL, or an array of URLs. Protocols should not be added.",
"description":"Whether or not the presence should run in IFrames."
},
"readLogs":{
"type":"boolean",
"description":"Whether or not the extension should be reading logs."
},
"regExp":{
"type":"string",
"description":"A regular expression used to match URLs for the presence to inject into."
},
"iFrameRegExp":{
"type":"string",
"description":"A regular expression used to match IFrames for the presence to inject into."
},
"button":{
"type":"boolean",
"description":"Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning":{
"type":"boolean",
"description":"Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings":{
"type":"array",
"description":"An array of settings the user can change in the presence.",
"items":{
"type":"object",
"description":"A setting.",
"properties":{
"id":{
"type":"string",
"description":"The ID of the setting."
},
"title":{
"type":"string",
"description":"The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon":{
"type":"string",
"description":"The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern":"^fa[bsd] fa-[0-9a-z-]+$"
},
"if":{
"type":"object",
"description":"Restrict showing this setting if another setting is the defined value.",
"propertyNames":{
"type":"string",
"description":"The ID of the setting."
},
"patternProperties":{
"":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"additionalProperties":false
},
"placeholder":{
"type":"string",
"description":"The placeholder for settings that require input. Shown when the input is empty."
},
"value":{
"type":["string","number","boolean"],
"description":"The default value of the setting. Not compatible with `values`."
},
"values":{
"type":"array",
"description":"The default values of the setting. Not compatible with `value`.",
"items":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"multiLanguage":{
"type":["string","boolean","array"],
"description":"When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items":{
"type":"string",
"description":"The name of a file from the localization GitHub repository."
"description":"Metadata that describes a presence.",
"definitions":{
"user":{
"type":"object",
"description":"User information.",
"properties":{
"name":{
"type":"string",
"description":"The name of the user."
},
"id":{
"type":"string",
"description":"The Discord snowflake of the user.",
"pattern":"^\\d+$"
}
},
"additionalProperties":false,
"required":["name","id"]
}
},
"properties":{
"$schema":{
"$comment":"This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type":"string",
"description":"The metadata schema URL."
},
"author":{
"$ref":"#/definitions/user",
"description":"The author of this presence."
},
"contributors":{
"type":"array",
"description":"Any extra contributors to this presence.",
"items":{
"$ref":"#/definitions/user"
}
},
"service":{
"type":"string",
"description":"The service this presence is for."
},
"altnames":{
"type":"array",
"description":"Alternative names for the service.",
"items":{
"type":"string",
"description":"An alternative name."
},
"minItems":1
},
"description":{
"type":"object",
"description":"A description of the presence in multiple languages.",
"propertyNames":{
"type":"string",
"description":"The language key. The key must be languagecode(_REGIONCODE).",
"description":"Whether or not the presence should run in IFrames."
},
"readLogs":{
"type":"boolean",
"description":"Whether or not the extension should be reading logs."
},
"regExp":{
"type":"string",
"description":"A regular expression used to match URLs for the presence to inject into."
},
"iFrameRegExp":{
"type":"string",
"description":"A regular expression used to match IFrames for the presence to inject into."
},
"button":{
"type":"boolean",
"description":"Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning":{
"type":"boolean",
"description":"Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings":{
"type":"array",
"description":"An array of settings the user can change in the presence.",
"items":{
"type":"object",
"description":"A setting.",
"properties":{
"id":{
"type":"string",
"description":"The ID of the setting."
},
"title":{
"type":"string",
"description":"The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon":{
"type":"string",
"description":"The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern":"^fa[bsd] fa-[0-9a-z-]+$"
},
"if":{
"type":"object",
"description":"Restrict showing this setting if another setting is the defined value.",
"propertyNames":{
"type":"string",
"description":"The ID of the setting."
},
"patternProperties":{
"":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"additionalProperties":false
},
"placeholder":{
"type":"string",
"description":"The placeholder for settings that require input. Shown when the input is empty."
},
"value":{
"type":["string","number","boolean"],
"description":"The default value of the setting. Not compatible with `values`."
},
"values":{
"type":"array",
"description":"The default values of the setting. Not compatible with `value`.",
"items":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"multiLanguage":{
"type":["string","boolean","array"],
"description":"When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items":{
"type":"string",
"description":"The name of a file from the localization GitHub repository."
"description":"Metadata that describes a presence.",
"definitions":{
"user":{
"type":"object",
"description":"User information.",
"properties":{
"name":{
"type":"string",
"description":"The name of the user."
},
"id":{
"type":"string",
"description":"The Discord snowflake of the user.",
"pattern":"^\\d+$"
}
},
"additionalProperties":false,
"required":["name","id"]
}
},
"properties":{
"$schema":{
"$comment":"This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type":"string",
"description":"The metadata schema URL."
},
"author":{
"$ref":"#/definitions/user",
"description":"The author of this presence."
},
"contributors":{
"type":"array",
"description":"Any extra contributors to this presence.",
"items":{
"$ref":"#/definitions/user"
}
},
"service":{
"type":"string",
"description":"The service this presence is for."
},
"altnames":{
"type":"array",
"description":"Alternative names for the service.",
"items":{
"type":"string",
"description":"An alternative name."
},
"minItems":1
},
"description":{
"type":"object",
"description":"A description of the presence in multiple languages.",
"propertyNames":{
"type":"string",
"description":"The language key. The key must be languagecode(_REGIONCODE).",
"description":"Restrict showing this setting if another setting is the defined value.",
"propertyNames":{
"type":"string",
"description":"The ID of the setting."
},
"patternProperties":{
"":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"additionalProperties":false
},
"placeholder":{
"type":"string",
"description":"The placeholder for settings that require input. Shown when the input is empty."
},
"value":{
"type":["string","number","boolean"],
"description":"The default value of the setting. Not compatible with `values`."
},
"values":{
"type":"array",
"description":"The default values of the setting. Not compatible with `value`.",
"items":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"multiLanguage":{
"type":["string","boolean","array"],
"description":"When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items":{
"type":"string",
"description":"The name of a file from the localization GitHub repository."
"description":"Metadata that describes a presence.",
"definitions":{
"user":{
"type":"object",
"description":"User information.",
"properties":{
"name":{
"type":"string",
"description":"The name of the user."
},
"id":{
"type":"string",
"description":"The Discord snowflake of the user.",
"pattern":"^\\d+$"
}
},
"additionalProperties":false,
"required":["name","id"]
}
},
"properties":{
"$schema":{
"$comment":"This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type":"string",
"description":"The metadata schema URL."
},
"author":{
"$ref":"#/definitions/user",
"description":"The author of this presence."
},
"contributors":{
"type":"array",
"description":"Any extra contributors to this presence.",
"items":{
"$ref":"#/definitions/user"
}
},
"service":{
"type":"string",
"description":"The service this presence is for."
},
"altnames":{
"type":"array",
"description":"Alternative names for the service.",
"items":{
"type":"string",
"description":"An alternative name."
},
"minItems":1
},
"description":{
"type":"object",
"description":"A description of the presence in multiple languages.",
"propertyNames":{
"type":"string",
"description":"The language key. The key must be languagecode(_REGIONCODE).",
"description":"Restrict showing this setting if another setting is the defined value.",
"propertyNames":{
"type":"string",
"description":"The ID of the setting."
},
"patternProperties":{
"":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"additionalProperties":false
},
"placeholder":{
"type":"string",
"description":"The placeholder for settings that require input. Shown when the input is empty."
},
"value":{
"type":["string","number","boolean"],
"description":"The default value of the setting. Not compatible with `values`."
},
"values":{
"type":"array",
"description":"The default values of the setting. Not compatible with `value`.",
"items":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"multiLanguage":{
"type":["string","boolean","array"],
"description":"When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items":{
"type":"string",
"description":"The name of a file from the localization GitHub repository."
"description":"Metadata that describes a presence.",
"definitions":{
"user":{
"type":"object",
"description":"User information.",
"properties":{
"name":{
"type":"string",
"description":"The name of the user."
},
"id":{
"type":"string",
"description":"The Discord snowflake of the user.",
"pattern":"^\\d+$"
}
},
"additionalProperties":false,
"required":["name","id"]
}
},
"properties":{
"$schema":{
"$comment":"This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type":"string",
"description":"The metadata schema URL."
},
"author":{
"$ref":"#/definitions/user",
"description":"The author of this presence."
},
"contributors":{
"type":"array",
"description":"Any extra contributors to this presence.",
"items":{
"$ref":"#/definitions/user"
}
},
"service":{
"type":"string",
"description":"The service this presence is for."
},
"altnames":{
"type":"array",
"description":"Alternative names for the service.",
"items":{
"type":"string",
"description":"An alternative name."
},
"minItems":1
},
"description":{
"type":"object",
"description":"A description of the presence in multiple languages.",
"propertyNames":{
"type":"string",
"description":"The language key. The key must be languagecode(_REGIONCODE).",
"description":"Restrict showing this setting if another setting is the defined value.",
"propertyNames":{
"type":"string",
"description":"The ID of the setting."
},
"patternProperties":{
"":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"additionalProperties":false
},
"placeholder":{
"type":"string",
"description":"The placeholder for settings that require input. Shown when the input is empty."
},
"value":{
"type":["string","number","boolean"],
"description":"The default value of the setting. Not compatible with `values`."
},
"values":{
"type":"array",
"description":"The default values of the setting. Not compatible with `value`.",
"items":{
"type":["string","number","boolean"],
"description":"The value of the setting."
}
},
"multiLanguage":{
"type":["string","boolean","array"],
"description":"When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items":{
"type":"string",
"description":"The name of a file from the localization GitHub repository."
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.