diff --git a/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md similarity index 100% rename from CODE_OF_CONDUCT.md rename to .github/CODE_OF_CONDUCT.md diff --git a/CONTRIBUTING.md b/.github/CONTRIBUTING.md similarity index 100% rename from CONTRIBUTING.md rename to .github/CONTRIBUTING.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..e5cc7c7 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,26 @@ +# Summary + + + +## Types of changes + +What types of changes does your code introduce to Catherine-Chan +_Put an `x` in the boxes that apply_ + +- [ ] Bugfix (non-breaking change which fixes an issue) +- [ ] New feature (non-breaking change which adds functionality) +- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) +- [ ] Documentation Update (Updates to README.md, the documentation, etc) +- [ ] Other (if none of the other choices apply) + + +## Checklist + + + +_Put an `x` in the boxes that apply_ + +- [ ] If code changes were made then they have been tested. + - [ ] I have updated the documentation to reflect the changes. (if appropriate) +- [ ] All workflows (except pre-commit.ci) pass with my new changes +- [ ] This PR does **not** address a duplicate issue or PR \ No newline at end of file diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 14aa069..11f0d55 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -8,19 +8,15 @@ updates: - package-ecosystem: "pip" directory: "/" schedule: - interval: "daily" + interval: "weekly" commit-message: prefix: "[pip]" include: "scope" target-branch: "main" - ignore: - # Ignore cystemd bc the newest release breaks all workflows - - dependency-name: "cysystemd" - update-types: ["version-update:semver-minor", "version-update:semver-major"] - package-ecosystem: "github-actions" directory: "/" schedule: - interval: "daily" + interval: "weekly" commit-message: prefix: "[Actions]" include: "scope" diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 52d1111..2e815fd 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -3,7 +3,6 @@ name: "CodeQL" on: push: branches: - - stable - main pull_request: @@ -49,7 +48,6 @@ jobs: uses: github/codeql-action/init@v3 with: languages: python - setup-python-dependencies: false - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4863e54..2d8c0ae 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,7 +2,7 @@ name: Release on: push: branches: - - stable + - main jobs: Release: runs-on: ubuntu-latest @@ -18,7 +18,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }} WITH_V: true - RELEASE_BRANCHES: stable + RELEASE_BRANCHES: main - name: Release New Version uses: ncipollo/release-action@v1 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 22df0f3..0d2a206 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,7 +5,7 @@ exclude: ".env,.yml,.gitignore,.git,.md,.txt" default_stages: [push, commit] repos: - repo: https://github.com/PyCQA/bandit - rev: 1.7.5 + rev: 1.7.8 hooks: - id: bandit args: ["-c", "pyproject.toml"] @@ -14,14 +14,14 @@ repos: additional_dependencies: ["bandit[toml]"] - repo: https://github.com/psf/black - rev: 23.7.0 + rev: 24.4.0 hooks: - id: black name: Black stages: [commit] - repo: https://github.com/PyCQA/autoflake - rev: v2.2.0 + rev: v2.3.1 hooks: - id: autoflake args: ["--in-place", "--remove-unused-variables", "--recursive"] @@ -30,14 +30,14 @@ repos: stages: [commit] - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.0.292 + rev: v0.4.1 hooks: - id: ruff name: Ruff args: ["--fix", "--exit-non-zero-on-fix", "--config", "pyproject.toml"] - repo: https://github.com/PyCQA/isort - rev: 5.12.0 + rev: 5.13.2 hooks: - id: isort name: ISort diff --git a/Makefile b/Makefile deleted file mode 100644 index 8eaf1f0..0000000 --- a/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -all: run - -run: - poetry run python bot/catherinebot.py - -prod-run: - ./venv/bin/python3 bot/catherinebot.py \ No newline at end of file diff --git a/README.md b/README.md index c0fdb62..185f5dc 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ # Catherine-Chan -[![Required Python Version](https://img.shields.io/badge/Python-3.8%20|%203.9%20|%203.10%20|%203.11-blue?logo=python&logoColor=white)](https://github.com/No767/Catherine-Chan/blob/main/pyproject.toml) [![CodeQL](https://github.com/No767/Catherine-Chan/actions/workflows/codeql.yml/badge.svg)](https://github.com/No767/Catherine-Chan/actions/workflows/codeql.yml) [![Lint](https://github.com/No767/Catherine-Chan/actions/workflows/lint.yml/badge.svg)](https://github.com/No767/Catherine-Chan/actions/workflows/lint.yml) [![Tests](https://github.com/No767/Catherine-Chan/actions/workflows/tests.yml/badge.svg)](https://github.com/No767/Catherine-Chan/actions/workflows/tests.yml) ![Read the Docs](https://img.shields.io/readthedocs/catherine-chan?label=Docs&logo=readthedocs&logoColor=white) [![codecov](https://codecov.io/gh/No767/Catherine-Chan/graph/badge.svg?token=mAPjhFgiGE)](https://codecov.io/gh/No767/Catherine-Chan) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=No767_Catherine-Chan&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=No767_Catherine-Chan) [![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=No767_Catherine-Chan&metric=ncloc)](https://sonarcloud.io/summary/new_code?id=No767_Catherine-Chan) ![GitHub release (with filter)](https://img.shields.io/github/v/release/No767/Catherine-Chan?label=Release&logo=github&sort=semver) ![GitHub](https://img.shields.io/github/license/No767/Catherine-Chan?logo=github&logoColor=white&label=License) [![Discord](https://img.shields.io/discord/1145897416160194590?logo=discord&logoColor=white&label=Discord&color=%235865F2)](https://discord.gg/ns3e74frqn) [![Catherine](https://img.shields.io/badge/Catherine-Kano%20(穫野)-pink)]() +[![Required Python Version](https://img.shields.io/badge/Python-3.9%20|%203.10%20|%203.11%20|%203.12-blue?logo=python&logoColor=white)](https://github.com/No767/Catherine-Chan/blob/main/pyproject.toml) [![CodeQL](https://github.com/No767/Catherine-Chan/actions/workflows/codeql.yml/badge.svg)](https://github.com/No767/Catherine-Chan/actions/workflows/codeql.yml) [![Lint](https://github.com/No767/Catherine-Chan/actions/workflows/lint.yml/badge.svg)](https://github.com/No767/Catherine-Chan/actions/workflows/lint.yml) ![Read the Docs](https://img.shields.io/readthedocs/catherine-chan?label=Docs&logo=readthedocs&logoColor=white) [![codecov](https://codecov.io/gh/No767/Catherine-Chan/graph/badge.svg?token=mAPjhFgiGE)](https://codecov.io/gh/No767/Catherine-Chan) [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/No767/Catherine-Chan/main.svg)](https://results.pre-commit.ci/latest/github/No767/Catherine-Chan/main) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=No767_Catherine-Chan&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=No767_Catherine-Chan) [![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=No767_Catherine-Chan&metric=ncloc)](https://sonarcloud.io/summary/new_code?id=No767_Catherine-Chan) ![GitHub release (with filter)](https://img.shields.io/github/v/release/No767/Catherine-Chan?label=Release&logo=github&sort=semver) ![GitHub](https://img.shields.io/github/license/No767/Catherine-Chan?logo=github&logoColor=white&label=License) [![Discord](https://img.shields.io/discord/1145897416160194590?logo=discord&logoColor=white&label=Discord&color=%235865F2)](https://discord.gg/ns3e74frqn) [![Catherine](https://img.shields.io/badge/Catherine-Kano%20(穫野)-pink)]() The modern all-in-one toolkit for LGBTQ+ folks @@ -43,7 +43,7 @@ If you would like to support me with projects like these, please consider starri If you would like to get started (either with development or as an end user), here are some links to help you with that: -- [Contributing](./CONTRIBUTING.md) +- [Contributing](./.github/CONTRIBUTING.md) - [Documentation](https://catherine-chan.readthedocs.io) ## Licensing diff --git a/bot/catherinebot.py b/bot/catherinebot.py index bd76a93..7d45efc 100644 --- a/bot/catherinebot.py +++ b/bot/catherinebot.py @@ -26,9 +26,12 @@ async def main() -> None: - async with ClientSession() as session, asyncpg.create_pool( - dsn=POSTGRES_URI, min_size=25, max_size=25, command_timeout=60 - ) as pool: + async with ( + ClientSession() as session, + asyncpg.create_pool( + dsn=POSTGRES_URI, min_size=25, max_size=25, command_timeout=60 + ) as pool, + ): async with Catherine( config=config, intents=intents, diff --git a/bot/cogs/pronouns.py b/bot/cogs/pronouns.py index 6fb786d..319e579 100644 --- a/bot/cogs/pronouns.py +++ b/bot/cogs/pronouns.py @@ -169,17 +169,19 @@ async def profile(self, interaction: discord.Interaction, username: str) -> None for words in v["words"] ], timezone=v["timezone"]["tz"], - circle=[ - PronounsProfileCircleEntry( - username=member["username"], - avatar=member["avatar"], - mutual=member["circleMutual"], - relationship=member["relationship"], - ) - for member in v["circle"] - ] - if len(v["circle"]) != 0 - else None, + circle=( + [ + PronounsProfileCircleEntry( + username=member["username"], + avatar=member["avatar"], + mutual=member["circleMutual"], + relationship=member["relationship"], + ) + for member in v["circle"] + ] + if len(v["circle"]) != 0 + else None + ), ) for k, v in data["profiles"].items() } diff --git a/bot/libs/ui/blacklist/pages.py b/bot/libs/ui/blacklist/pages.py index ccb66f7..c847ff4 100644 --- a/bot/libs/ui/blacklist/pages.py +++ b/bot/libs/ui/blacklist/pages.py @@ -21,7 +21,7 @@ def __init__( entries: List[Dict[int, bool]], *, ctx: commands.Context, - per_page: int = 10 + per_page: int = 10, ): converted = [BlacklistPageEntry(entry) for entry in entries] super().__init__(converted, per_page=per_page, ctx=ctx) diff --git a/bot/libs/ui/dictionary/pages.py b/bot/libs/ui/dictionary/pages.py index 79d366c..338381f 100644 --- a/bot/libs/ui/dictionary/pages.py +++ b/bot/libs/ui/dictionary/pages.py @@ -18,7 +18,7 @@ def __init__( entries: List[TermEntity], *, interaction: discord.Interaction, - per_page: int = 1 + per_page: int = 1, ): converted = [TermEntityEntry(entry).to_dict() for entry in entries] super().__init__( @@ -33,7 +33,7 @@ def __init__( entries: List[InclusiveEntity], *, interaction: discord.Interaction, - per_page: int = 1 + per_page: int = 1, ): converted = [InclusiveEntityEntry(entry).to_dict() for entry in entries] super().__init__( @@ -48,7 +48,7 @@ def __init__( entries: List[NounEntity], *, interaction: discord.Interaction, - per_page: int = 1 + per_page: int = 1, ): converted = [NounEntityEntry(entry).to_dict() for entry in entries] super().__init__( @@ -63,7 +63,7 @@ def __init__( entries: List[PronounsEntity], *, interaction: discord.Interaction, - per_page: int = 1 + per_page: int = 1, ): converted = [PronounsEntityEntry(entry).to_dict() for entry in entries] super().__init__( diff --git a/bot/libs/ui/dictionary/utils.py b/bot/libs/ui/dictionary/utils.py index b8ba43f..4cec955 100644 --- a/bot/libs/ui/dictionary/utils.py +++ b/bot/libs/ui/dictionary/utils.py @@ -66,9 +66,11 @@ def format_inclusive_content(content: InclusiveContent): f"### Instead of \n{format_instead_of_options(content.instead_of)}", f"### Better Say\n{format_title_options(content.say)}", f"### Because\n{content.because}", - f"### Clarification\n{content.clarification}" - if content.clarification is not None - else "", + ( + f"### Clarification\n{content.clarification}" + if content.clarification is not None + else "" + ), ) return "\n".join(final_content) diff --git a/bot/libs/ui/pride_profiles/pages.py b/bot/libs/ui/pride_profiles/pages.py index 00475b4..5304f58 100644 --- a/bot/libs/ui/pride_profiles/pages.py +++ b/bot/libs/ui/pride_profiles/pages.py @@ -13,7 +13,7 @@ def __init__( entries: List[SimpleProfileEntry], *, interaction: discord.Interaction, - per_page=1 + per_page=1, ): converted = [SimpleProfilesPageEntry(entry) for entry in entries] super().__init__( @@ -30,7 +30,7 @@ def __init__( entries: List[SimpleViewsEntry], *, interaction: discord.Interaction, - per_page=1 + per_page=1, ): converted = [ViewsProfilePageEntry(entry) for entry in entries] super().__init__( diff --git a/bot/libs/ui/tonetags/pages.py b/bot/libs/ui/tonetags/pages.py index 01ef0f5..614fc58 100644 --- a/bot/libs/ui/tonetags/pages.py +++ b/bot/libs/ui/tonetags/pages.py @@ -20,7 +20,7 @@ def __init__( entries: List[ToneTagInfo], *, interaction: discord.Interaction, - per_page: int = 1 + per_page: int = 1, ): converted = [ToneTagInfoPageEntry(entry).to_dict() for entry in entries] super().__init__( @@ -34,7 +34,7 @@ def __init__( self, entries: List[ExactAndSimilarTonetags], *, - interaction: discord.Interaction + interaction: discord.Interaction, ): converted = [ESTonetagsPageEntry(entry).to_dict() for entry in entries] super().__init__( @@ -49,7 +49,7 @@ def __init__( entries: List[SimpleToneTag], *, interaction: discord.Interaction, - per_page: int = 12 + per_page: int = 12, ): converted = [SimpleToneTagPageEntry(entry) for entry in entries] super().__init__(converted, per_page=per_page, interaction=interaction) @@ -61,7 +61,7 @@ def __init__( entries: List[BareToneTag], *, interaction: discord.Interaction, - per_page: int = 12 + per_page: int = 12, ): converted = [BareToneTagPageEntry(entry) for entry in entries] super().__init__(converted, per_page=per_page, interaction=interaction) @@ -73,7 +73,7 @@ def __init__( entries: List[StatsBareToneTag], *, interaction: discord.Interaction, - per_page: int = 10 + per_page: int = 10, ): converted = [StatsBareToneTagPageEntry(entry) for entry in entries] super().__init__(converted, per_page=per_page, interaction=interaction) diff --git a/bot/libs/utils/config.py b/bot/libs/utils/config.py index 92dc235..7b57c29 100644 --- a/bot/libs/utils/config.py +++ b/bot/libs/utils/config.py @@ -28,12 +28,10 @@ def postgres(self) -> _T: return self._config["postgres"] @overload - def get(self, key: Any) -> Optional[Union[_T, Any]]: - ... + def get(self, key: Any) -> Optional[Union[_T, Any]]: ... @overload - def get(self, key: Any, default: Any) -> Union[_T, Any]: - ... + def get(self, key: Any, default: Any) -> Union[_T, Any]: ... def get(self, key: Any, default: Any = None) -> Optional[Union[_T, Any]]: """Retrieves a config entry.""" diff --git a/catherine-chan-metrics-1696140631406.json b/catherine-chan-metrics-1696140631406.json deleted file mode 100644 index 11fce6a..0000000 --- a/catherine-chan-metrics-1696140631406.json +++ /dev/null @@ -1,1725 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": { - "type": "grafana", - "uid": "-- Grafana --" - }, - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "description": "The Metrics Dashboard for Catherine-Chan", - "editable": true, - "fiscalYearStartMonth": 0, - "graphTooltip": 0, - "id": 1, - "links": [], - "liveNow": false, - "panels": [ - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 7, - "panels": [], - "title": "Static Data", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "description": "Is Catherine-Chan connected to Discord?", - "fieldConfig": { - "defaults": { - "mappings": [ - { - "options": { - "0": { - "color": "red", - "index": 1, - "text": "False" - }, - "1": { - "color": "green", - "index": 0, - "text": "True" - } - }, - "type": "value" - } - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 4, - "x": 0, - "y": 1 - }, - "id": 15, - "options": { - "colorMode": "background", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "10.1.2", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "code", - "exemplar": false, - "expr": "discord_connected{job=\"catherine\"}", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": true, - "legendFormat": "{{label_name}}", - "range": false, - "refId": "A", - "useBackend": false - } - ], - "title": "Connected?", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "dateTimeAsIso" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 5, - "x": 4, - "y": 1 - }, - "id": 9, - "options": { - "colorMode": "none", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "10.1.2", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "code", - "expr": "(process_start_time_seconds{instance=\"localhost:6789\"} * 1000)", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "__auto", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "Process Started Time", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "s" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 9, - "y": 1 - }, - "id": 23, - "options": { - "colorMode": "none", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "10.1.2", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "process_cpu_seconds_total{job=\"catherine\"}", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "__auto", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "Total CPU Seconds", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "none" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 2, - "x": 12, - "y": 1 - }, - "id": 4, - "options": { - "colorMode": "none", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "10.1.2", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "discord_stat_app_total_commands{job=\"catherine\"}", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "__auto", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "Total Commands", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 4, - "x": 14, - "y": 1 - }, - "id": 17, - "options": { - "colorMode": "none", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "name" - }, - "pluginVersion": "10.1.2", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "builder", - "exemplar": false, - "expr": "version_info_info{job=\"catherine\"}", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": true, - "legendFormat": "{{build_version}}", - "range": false, - "refId": "A", - "useBackend": false - } - ], - "title": "Catherine-Chan Version", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "fieldConfig": { - "defaults": { - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 18, - "y": 1 - }, - "id": 16, - "options": { - "colorMode": "none", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "name" - }, - "pluginVersion": "10.1.2", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "builder", - "exemplar": false, - "expr": "version_info_info{job=\"catherine\"}", - "format": "time_series", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": true, - "legendFormat": "{{dpy_version}}", - "range": false, - "refId": "A", - "useBackend": false - } - ], - "title": "discord.py version", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 21, - "y": 1 - }, - "id": 18, - "options": { - "colorMode": "none", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "name" - }, - "pluginVersion": "10.1.2", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "builder", - "exemplar": false, - "expr": "version_info_info{job=\"catherine\"}", - "format": "time_series", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": true, - "legendFormat": "{{python_version}}", - "range": false, - "refId": "A", - "useBackend": false - } - ], - "title": "Python Version", - "type": "stat" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 5 - }, - "id": 25, - "panels": [], - "title": "Memory and GC Metrics", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "description": "Basically the current memory usage", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 8, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "decbytes" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 6 - }, - "id": 22, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "code", - "expr": "process_resident_memory_bytes{job=\"catherine\"}", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "Memory", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "Current Resident Memory Usage", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "description": "Python GC Objects Collected - Useful to track current objects", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 6 - }, - "id": 24, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "python_gc_objects_collected_total{generation=\"0\"}", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "Gen 1", - "range": true, - "refId": "A", - "useBackend": false - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "python_gc_objects_collected_total{generation=\"1\"}", - "fullMetaSearch": false, - "hide": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "Gen 2", - "range": true, - "refId": "B", - "useBackend": false - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "python_gc_objects_collected_total{generation=\"2\"}", - "fullMetaSearch": false, - "hide": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "Gen 3", - "range": true, - "refId": "C", - "useBackend": false - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "code", - "exemplar": false, - "expr": "sum(python_gc_objects_collected_total{generation=\"0\"}) + sum(python_gc_objects_collected_total{generation=\"1\"}) + sum(python_gc_objects_collected_total{generation=\"2\"})", - "fullMetaSearch": false, - "hide": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "Total", - "range": true, - "refId": "D", - "useBackend": false - } - ], - "title": "Objects Collected", - "type": "timeseries" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 14 - }, - "id": 6, - "panels": [], - "title": "Discord and Slash Invocations Metrics", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "axisWidth": -1, - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 8, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "ms" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 15 - }, - "id": 2, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "10.1.2", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "code", - "exemplar": false, - "expr": "discord_latency{shard=\"None\"} * 1000", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": false, - "interval": "", - "legendFormat": "Discord Ping", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "Ping to Discord", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "axisWidth": 1, - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 8, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineStyle": { - "fill": "solid" - }, - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "percentage", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 96 - } - ] - }, - "unit": "none" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 15 - }, - "id": 5, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "discord_on_app_command_total{job=\"catherine\"}", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "Commands Invoked", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "Slash Commands Invoked", - "type": "timeseries" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 23 - }, - "id": 8, - "panels": [], - "title": "Guild, Member and Channel Metrics", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "description": "Total guilds that can be seen", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 8, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "none" - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 8, - "x": 0, - "y": 24 - }, - "id": 3, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "10.1.2", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "discord_stat_total_guilds{job=\"catherine\"}", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "Total Guilds", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "Total Guilds", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "description": "Total channels that Catherine-Chan can see", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 8, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "percentage", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 95 - } - ] - }, - "unit": "none" - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 8, - "x": 8, - "y": 24 - }, - "id": 12, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "discord_stat_total_text_channels{job=\"catherine\"}", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "Text Channels", - "range": true, - "refId": "A", - "useBackend": false - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "discord_stat_total_voice_channels{job=\"catherine\"}", - "fullMetaSearch": false, - "hide": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "Voice Channels", - "range": true, - "refId": "B", - "useBackend": false - } - ], - "title": "Total Channels", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "description": "The total users that Catherine-Chan can see. Both unique and total users", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 8, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 75 - } - ] - }, - "unit": "none" - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 8, - "x": 16, - "y": 24 - }, - "id": 11, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "discord_stat_total_unique_users{job=\"catherine\"}", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "Total Unique Users", - "range": true, - "refId": "A", - "useBackend": false - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "discord_stat_total_users{job=\"catherine\"}", - "fullMetaSearch": false, - "hide": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "Total Users", - "range": true, - "refId": "B", - "useBackend": false - } - ], - "title": "Total Users", - "type": "timeseries" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 33 - }, - "id": 21, - "panels": [], - "title": "Blacklist Metrics", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "description": "Amount of blacklisted users trying to run commands", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 8, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "percentage", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "none" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 34 - }, - "id": 19, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "discord_attempted_commands_total{job=\"catherine\"}", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "Attempted Commands", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "Attempted Commands (Blacklist)", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "description": "The amount of users blacklisted from using Catherine-Chan", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 8, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "percentage", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 95 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 34 - }, - "id": 20, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "discord_blacklisted_users{job=\"catherine\"}", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "Users", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "Blacklisted Users", - "type": "timeseries" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 42 - }, - "id": 14, - "panels": [], - "title": "Feature Metrics", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "description": "The amount of successful pronouns tester runs made. ", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 8, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "percentage", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 95 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 43 - }, - "id": 13, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "cbc82798-775c-4d38-b8e9-0d74ea7bfee3" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "discord_pronouns_tester_total{job=\"catherine\"}", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "Successful Runs", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "Successful Pronouns Tester Runs", - "type": "timeseries" - } - ], - "refresh": false, - "schemaVersion": 38, - "style": "dark", - "tags": [], - "templating": { - "list": [] - }, - "time": { - "from": "now-5m", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Catherine-Chan Metrics", - "uid": "ae9ca4b5-bbda-4fa9-a228-b7bd099f6c88", - "version": 16, - "weekStart": "" -} \ No newline at end of file