diff --git a/.github/workflows/code_quality.yml b/.github/workflows/code_quality.yml new file mode 100644 index 0000000..27d925a --- /dev/null +++ b/.github/workflows/code_quality.yml @@ -0,0 +1,25 @@ +name: Qodana +on: + workflow_dispatch: + pull_request: + push: + branches: + - main + - 'releases/*' + +jobs: + qodana: + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + checks: write + steps: + - uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.head.sha }} # to check out the actual pull request commit, not the merge commit + fetch-depth: 0 # a full history is required for pull request analysis + - name: 'Qodana Scan' + uses: JetBrains/qodana-action@v2023.3 + env: + QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }} diff --git a/.github/workflows/qodana.sarif.json b/.github/workflows/qodana.sarif.json new file mode 100644 index 0000000..22c36f7 --- /dev/null +++ b/.github/workflows/qodana.sarif.json @@ -0,0 +1,44625 @@ +{ + "$schema": "https://raw.githubusercontent.com/schemastore/schemastore/master/src/schemas/json/sarif-2.1.0-rtm.5.json", + "version": "2.1.0", + "runs": [ + { + "tool": { + "driver": { + "name": "QDPYC", + "fullName": "Qodana Community for Python", + "version": "233.14241.160", + "rules": [], + "taxa": [ + { + "id": "Python", + "name": "Python" + }, + { + "id": "EditorConfig", + "name": "EditorConfig" + }, + { + "id": "Shell script", + "name": "Shell script" + }, + { + "id": "XML", + "name": "XML" + }, + { + "id": "YAML", + "name": "YAML" + }, + { + "id": "JSON and JSON5", + "name": "JSON and JSON5" + }, + { + "id": "RegExp", + "name": "RegExp" + }, + { + "id": "Properties files", + "name": "Properties files" + }, + { + "id": "HTML", + "name": "HTML" + }, + { + "id": "General", + "name": "General" + }, + { + "id": "Qodana", + "name": "Qodana" + }, + { + "id": "RELAX NG", + "name": "RELAX NG" + }, + { + "id": "Proofreading", + "name": "Proofreading" + }, + { + "id": "Internationalization", + "name": "Internationalization" + }, + { + "id": "TOML", + "name": "TOML" + }, + { + "id": "Version control", + "name": "Version control" + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + "extensions": [ + { + "name": "PythonCore", + "version": "233.14241", + "rules": [ + { + "id": "PyPandasSeriesToListInspection", + "shortDescription": { + "text": "Method Series.to_list() is recommended" + }, + "fullDescription": { + "text": "Reports redundant 'list' in 'list(Series.values)' statement for pandas and polars libraries. Such 'Series' values extraction can be replaced with the 'to_list()' function call. Example: list(df['column'].values)\n When the quick-fix is applied, the code changes to: df['column'].to_list()", + "markdown": "Reports redundant `list` in `list(Series.values)` statement for pandas and polars libraries.\nSuch `Series` values extraction can be replaced with the `to_list()` function call.\n\n**Example:**\n\n```\nlist(df['column'].values)\n```\n\nWhen the quick-fix is applied, the code changes to:\n\n```\ndf['column'].to_list()\n```" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyPackages", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PySetFunctionToLiteralInspection", + "shortDescription": { + "text": "Function call can be replaced with set literal" + }, + "fullDescription": { + "text": "Reports calls to the 'set' function that can be replaced with the 'set' literal. Example: 'def do_mult(a, b):\n c = a * b\n return set([c, a, b])' When the quick-fix is applied, the code changes to: 'def do_mult(a, b):\n c = a * b\n return {c, a, b}'", + "markdown": "Reports calls to the `set` function that can be replaced with\nthe `set` literal.\n\n**Example:**\n\n\n def do_mult(a, b):\n c = a * b\n return set([c, a, b])\n\nWhen the quick-fix is applied, the code changes to:\n\n\n def do_mult(a, b):\n c = a * b\n return {c, a, b}\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PySetFunctionToLiteral", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyStatementEffectInspection", + "shortDescription": { + "text": "Statement has no effect" + }, + "fullDescription": { + "text": "Reports statements that have no effect. Example: 'class Car:\n def __init__(self, speed=0):\n self.speed = speed\n self.time # has no effect\n\n2 + 3 # has no effect' In this example, you can either add a field 'time' to the 'Car' class or introduce variables for the problematic statements.", + "markdown": "Reports statements that have no effect.\n\n**Example:**\n\n\n class Car:\n def __init__(self, speed=0):\n self.speed = speed\n self.time # has no effect\n\n 2 + 3 # has no effect\n\nIn this example, you can either add a field `time` to the `Car` class or\nintroduce variables for the problematic statements." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyStatementEffect", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyMandatoryEncodingInspection", + "shortDescription": { + "text": "No encoding specified for file" + }, + "fullDescription": { + "text": "Reports a missing encoding comment in Python 2. Example: 'class Book(object):\n def __init__(self):\n pass' When the quick-fix is applied, the missing comment is added: '# coding=utf-8\nclass Book(object):\n def __init__(self):\n pass'", + "markdown": "Reports a missing encoding comment in Python 2.\n\n**Example:**\n\n\n class Book(object):\n def __init__(self):\n pass\n\nWhen the quick-fix is applied, the missing comment is added:\n\n\n # coding=utf-8\n class Book(object):\n def __init__(self):\n pass\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "PyMandatoryEncoding", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyOverridesInspection", + "shortDescription": { + "text": "Invalid usages of @override decorator" + }, + "fullDescription": { + "text": "Reports when a method decorated with @override doesn't have a matching method in its ancestor classes Example: 'from typing import override\n\nclass Parent:\n def foo(self) -> int:\n return 1\n\n def bar(self, x: str) -> str:\n return x\n\nclass Child(Parent):\n @override\n def foo(self) -> int:\n return 2\n\n @override # Missing super method for override function\n def baz(self) -> int:\n return 1'", + "markdown": "Reports when a method decorated with @override doesn't have a matching method in its ancestor classes\n\n**Example:**\n\n\n from typing import override\n\n class Parent:\n def foo(self) -> int:\n return 1\n\n def bar(self, x: str) -> str:\n return x\n\n class Child(Parent):\n @override\n def foo(self) -> int:\n return 2\n\n @override # Missing super method for override function\n def baz(self) -> int:\n return 1\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyOverrides", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyInconsistentIndentationInspection", + "shortDescription": { + "text": "Inconsistent indentation" + }, + "fullDescription": { + "text": "Reports inconsistent indentation in Python source files when, for example, you use a mixture of tabs and spaces in your code.", + "markdown": "Reports inconsistent indentation in Python source files when, for example,\nyou use a mixture of tabs and spaces in your code." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyInconsistentIndentation", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyAttributeOutsideInitInspection", + "shortDescription": { + "text": "An instance attribute is defined outside `__init__`" + }, + "fullDescription": { + "text": "Reports a problem when instance attribute definition is outside '__init__' method. Example: 'class Book:\n def __init__(self):\n self.author = 'Mark Twain'\n\n def release(self):\n self.year = '1889'' When the quick-fix is applied, the code sample changes to: 'class Book:\n def __init__(self):\n self.year = '1889'\n self.author = 'Mark Twain'\n\n def release(self):\n pass'", + "markdown": "Reports a problem when instance attribute definition is outside `__init__` method.\n\n**Example:**\n\n\n class Book:\n def __init__(self):\n self.author = 'Mark Twain'\n\n def release(self):\n self.year = '1889'\n\n\nWhen the quick-fix is applied, the code sample changes to:\n\n\n class Book:\n def __init__(self):\n self.year = '1889'\n self.author = 'Mark Twain'\n\n def release(self):\n pass\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyAttributeOutsideInit", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyTypedDictInspection", + "shortDescription": { + "text": "Invalid TypedDict definition and usages" + }, + "fullDescription": { + "text": "Reports invalid definition and usage of TypedDict. Example: 'from typing import TypedDict\n\n\nclass Movie(TypedDict):\n name: str\n year: int\n rate: int = 10 # Right-hand side values are not supported\n\n def method(self): # Invalid statement in TypedDict\n pass\n\n\nm = Movie(name=\"name\", year=1000, rate=9)\nprint(m[\"director\"]) # There is no the 'director' key in 'Movie'\ndel m[\"name\"] # The 'name' key cannot be deleted\nm[\"year\"] = \"1001\" # Expected 'int', got 'str''", + "markdown": "Reports invalid definition and usage of\n[TypedDict](https://www.python.org/dev/peps/pep-0589/).\n\n**Example:**\n\n\n from typing import TypedDict\n\n\n class Movie(TypedDict):\n name: str\n year: int\n rate: int = 10 # Right-hand side values are not supported\n\n def method(self): # Invalid statement in TypedDict\n pass\n\n\n m = Movie(name=\"name\", year=1000, rate=9)\n print(m[\"director\"]) # There is no the 'director' key in 'Movie'\n del m[\"name\"] # The 'name' key cannot be deleted\n m[\"year\"] = \"1001\" # Expected 'int', got 'str'\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyTypedDict", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyPep8Inspection", + "shortDescription": { + "text": "PEP 8 coding style violation" + }, + "fullDescription": { + "text": "Reports violations of the PEP 8 coding style guide by running the bundled pycodestyle.py tool.", + "markdown": "Reports violations of the [PEP 8 coding style guide](https://www.python.org/dev/peps/pep-0008/) by running the bundled [pycodestyle.py](https://github.com/PyCQA/pycodestyle) tool." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyPep8", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyMissingTypeHintsInspection", + "shortDescription": { + "text": "Missing type hinting for function definition" + }, + "fullDescription": { + "text": "Reports missing type hints for function declaration in one of the two formats: parameter annotations or a type comment. Select the Only when types are known checkbox if you want the inspection check the types collected from runtime or inferred.", + "markdown": "Reports missing type hints for function declaration in\none of the two formats: parameter annotations or a type comment.\n\nSelect the **Only when types are known** checkbox if you want the inspection check\nthe types collected from runtime or inferred." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "PyMissingTypeHints", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyTupleItemAssignmentInspection", + "shortDescription": { + "text": "Tuple item assignment is prohibited" + }, + "fullDescription": { + "text": "Reports assignments to a tuple item. Example: 't = ('red', 'blue', 'green', 'white')\nt[3] = 'black'' A quick-fix offers to replace the tuple with a list.", + "markdown": "Reports assignments to a tuple item.\n\n**Example:**\n\n\n t = ('red', 'blue', 'green', 'white')\n t[3] = 'black'\n\nA quick-fix offers to replace the tuple with a list." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyTupleItemAssignment", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyInitNewSignatureInspection", + "shortDescription": { + "text": "Incompatible signatures of __new__ and __init__" + }, + "fullDescription": { + "text": "Reports incompatible signatures of the '__new__' and '__init__' methods. Example: 'class MyClass(object):\n def __new__(cls, arg1):\n return super().__new__(cls)\n\n def __init__(self):\n pass' If the '__new__' and '__init__' have different arguments, then the 'MyClass' cannot be instantiated. As a fix, the IDE offers to apply the Change Signature refactoring.", + "markdown": "Reports incompatible signatures of the `__new__` and `__init__` methods.\n\n**Example:**\n\n\n class MyClass(object):\n def __new__(cls, arg1):\n return super().__new__(cls)\n\n def __init__(self):\n pass\n\nIf the `__new__` and `__init__` have different arguments, then the `MyClass`\ncannot be instantiated.\n\nAs a fix, the IDE offers to apply the Change Signature refactoring." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyInitNewSignature", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyDunderSlotsInspection", + "shortDescription": { + "text": "Invalid usages of classes with '__slots__' definitions" + }, + "fullDescription": { + "text": "Reports invalid usages of a class with '__slots__' definitions. Example: 'class Foo:\n __slots__ = ['foo', 'bar']\n\n\nfoo = Foo()\nfoo.baz = 'spam''", + "markdown": "Reports invalid usages of a class with `__slots__` definitions.\n\n**Example:**\n\n\n class Foo:\n __slots__ = ['foo', 'bar']\n\n\n foo = Foo()\n foo.baz = 'spam'\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyDunderSlots", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyMissingConstructorInspection", + "shortDescription": { + "text": "Missed call to '__init__' of the super class" + }, + "fullDescription": { + "text": "Reports cases when a call to the 'super' constructor in a class is missed. Example: 'class Fruit:\n def __init__(self):\n pass\n\n\nclass Pear(Fruit):\n def __init__(self):\n pass' The 'Pear' class should have a 'super' call in the '__init__' method. When the quick-fix is applied, the code changes to: 'class Fruit:\n def __init__(self):\n pass\n\n\nclass Pear(Fruit):\n def __init__(self):\n super().__init__()'", + "markdown": "Reports cases when a call to the `super` constructor in a class is missed.\n\n**Example:**\n\n\n class Fruit:\n def __init__(self):\n pass\n\n\n class Pear(Fruit):\n def __init__(self):\n pass\n\nThe `Pear` class should have a `super` call in the `__init__`\nmethod.\n\nWhen the quick-fix is applied, the code changes to:\n\n\n class Fruit:\n def __init__(self):\n pass\n\n\n class Pear(Fruit):\n def __init__(self):\n super().__init__()\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyMissingConstructor", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyDefaultArgumentInspection", + "shortDescription": { + "text": "The default argument is mutable" + }, + "fullDescription": { + "text": "Reports a problem when a mutable value as a list or dictionary is detected in a default value for an argument. Default argument values are evaluated only once at function definition time, which means that modifying the default value of the argument will affect all subsequent calls of that function. Example: 'def func(s, cache={}):\n cache[s] = None' When the quick-fix is applied, the code changes to: 'def func(s, cache=None):\n if cache is None:\n cache = {}\n cache[s] = None'", + "markdown": "Reports a problem when a mutable value as a list or dictionary is detected in a default value for\nan argument. \n\nDefault argument values are evaluated only once at function definition time,\nwhich means that modifying the\ndefault value of the argument will affect all subsequent calls of that function.\n\n**Example:**\n\n\n def func(s, cache={}):\n cache[s] = None\n\nWhen the quick-fix is applied, the code changes to:\n\n\n def func(s, cache=None):\n if cache is None:\n cache = {}\n cache[s] = None\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyDefaultArgument", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyTestUnpassedFixtureInspection", + "shortDescription": { + "text": "Fixture is not requested by test functions" + }, + "fullDescription": { + "text": "Reports if a fixture is used without being passed to test function parameters or to '@pytest.mark.usefixtures' decorator", + "markdown": "Reports if a fixture is used without being passed to test function parameters or to `@pytest.mark.usefixtures` decorator" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyTestUnpassedFixture", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyShadowingBuiltinsInspection", + "shortDescription": { + "text": "Shadowing built-in names" + }, + "fullDescription": { + "text": "Reports shadowing built-in names, such as 'len' or 'list'. Example: 'def len(a, b, c):\n d = a + b + c\n return d' In this code fragment, the 'len' built-in name is used. The IDE offers to apply the Rename refactoring as a fix.", + "markdown": "Reports shadowing built-in names, such as `len` or `list`.\n\n**Example:**\n\n\n def len(a, b, c):\n d = a + b + c\n return d\n\nIn this code fragment, the `len` built-in name is used. The IDE offers to\napply the Rename refactoring as a fix." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyShadowingBuiltins", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PySimplifyBooleanCheckInspection", + "shortDescription": { + "text": "Redundant boolean variable check" + }, + "fullDescription": { + "text": "Reports equality comparison with a boolean literal. Example: 'def func(s):\n if s.isdigit() == True:\n return int(s)' With the quick-fix applied, the code fragment will be simplified to: 'def func(s):\n if s.isdigit():\n return int(s)'", + "markdown": "Reports equality comparison with a boolean literal.\n\n**Example:**\n\n\n def func(s):\n if s.isdigit() == True:\n return int(s)\n\nWith the quick-fix applied, the code fragment will be simplified to:\n\n\n def func(s):\n if s.isdigit():\n return int(s)\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PySimplifyBooleanCheck", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyMethodOverridingInspection", + "shortDescription": { + "text": "Method signature does not match signature of overridden method" + }, + "fullDescription": { + "text": "Reports inconsistencies in overriding method signatures. Example: 'class Book:\n def add_title(self):\n pass\n\n\nclass Novel(Book):\n def add_title(self, text):\n pass' Parameters of the 'add_title' method in the 'Novel' class do not match the method signature specified in the 'Book' class. As a fix, the IDE offers to apply the Change Signature refactoring.", + "markdown": "Reports inconsistencies in overriding method signatures.\n\n**Example:**\n\n\n class Book:\n def add_title(self):\n pass\n\n\n class Novel(Book):\n def add_title(self, text):\n pass\n\nParameters of the `add_title` method in the `Novel` class do not match the method\nsignature specified in the `Book` class. As a fix, the IDE offers to apply the Change Signature\nrefactoring." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyMethodOverriding", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PoetryPackageVersionsInspection", + "shortDescription": { + "text": "Poetry package versions" + }, + "fullDescription": { + "text": "Reports outdated versions of packages in '[tool.poetry.dependencies]' and '[tool.poetry.dev-dependencies]' sections of 'pyproject.toml'.", + "markdown": "Reports outdated versions of packages in `[tool.poetry.dependencies]` and `[tool.poetry.dev-dependencies]`\nsections of `pyproject.toml`." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PoetryPackageVersions", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyTestParametrizedInspection", + "shortDescription": { + "text": "Incorrect arguments in @pytest.mark.parametrize" + }, + "fullDescription": { + "text": "Reports functions that are decorated with @pytest.mark.parametrize but do not have arguments to accept parameters of the decorator.", + "markdown": "Reports functions that are decorated with [@pytest.mark.parametrize](https://docs.pytest.org/en/stable/parametrize.html) but do not have arguments to accept\nparameters of the decorator." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyTestParametrized", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyDecoratorInspection", + "shortDescription": { + "text": "Class-specific decorator is used outside the class" + }, + "fullDescription": { + "text": "Reports usages of '@classmethod' or '@staticmethod' decorators in methods outside a class. Example: 'class State(object):\n\n @classmethod\n def my_state(cls, name):\n cls.name = name\n\n\n@classmethod\ndef change_state(self):\n pass' The 'change_state' method should not use the '@classmethod' decorator or it should be moved to the 'State' class declaration. If you apply the 'Remove decorator' action, the code changes to: 'class State(object):\n\n @classmethod\n def my_state(cls, name):\n cls.name = name\n\n\ndef change_state(self):\n pass'", + "markdown": "Reports usages of `@classmethod` or `@staticmethod` decorators\nin methods outside a class.\n\n**Example:**\n\n\n class State(object):\n\n @classmethod\n def my_state(cls, name):\n cls.name = name\n\n\n @classmethod\n def change_state(self):\n pass\n\nThe `change_state` method should not use the `@classmethod` decorator or it should be\nmoved to the `State` class declaration.\n\nIf you apply the `Remove decorator` action, the code changes to:\n\n\n class State(object):\n\n @classmethod\n def my_state(cls, name):\n cls.name = name\n\n\n def change_state(self):\n pass\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyDecorator", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyAsyncCallInspection", + "shortDescription": { + "text": "Missing `await` syntax in coroutine calls" + }, + "fullDescription": { + "text": "Reports coroutines that were called without using the 'await' syntax. Example: 'async def bar():\n pass\n\n\nasync def foo():\n bar()' After the quick-fix is applied, the code changes to: 'async def bar():\n pass\n\n\nasync def foo():\n await bar()'", + "markdown": "Reports coroutines that were called\nwithout using the `await` syntax.\n\n**Example:**\n\n\n async def bar():\n pass\n\n\n async def foo():\n bar()\n\nAfter the quick-fix is applied, the code changes to:\n\n\n async def bar():\n pass\n\n\n async def foo():\n await bar()\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyAsyncCall", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CommandLineInspection", + "shortDescription": { + "text": "Incorrect CLI syntax" + }, + "fullDescription": { + "text": "Reports the problems if the arguments of the command you type in the console are not in the proper order. The inspection also verifies that option names and arguments are correct. Do not disable the inspection if you are going to use command-line interfaces like manage.py in Django.", + "markdown": "Reports the problems if the arguments of the command you type in the console are not in the proper order. The inspection also verifies\nthat option names and arguments are correct.\n\nDo not disable the inspection if you are going to use command-line interfaces like [manage.py in Django](https://www.jetbrains.com/help/pycharm/running-manage-py.html)." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "CommandLineInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyComparisonWithNoneInspection", + "shortDescription": { + "text": "Using equality operators to compare with None" + }, + "fullDescription": { + "text": "Reports comparisons with 'None'. That type of comparisons should always be done with 'is' or 'is not', never the equality operators. Example: 'a = 2\n\n\nif a == None:\n print(\"Success\")' Once the quick-fix is applied, the code changes to: 'a = 2\n\n\nif a is None:\n print(\"Success\")'", + "markdown": "Reports comparisons with `None`. That type of comparisons\nshould always be done with `is` or `is not`, never\nthe equality operators.\n\n**Example:**\n\n\n a = 2\n\n\n if a == None:\n print(\"Success\")\n\nOnce the quick-fix is applied, the code changes to:\n\n\n a = 2\n\n\n if a is None:\n print(\"Success\")\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyComparisonWithNone", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyCallingNonCallableInspection", + "shortDescription": { + "text": "Attempt to call a non-callable object" + }, + "fullDescription": { + "text": "Reports a problem when you are trying to call objects that are not callable, like, for example, properties: Example: 'class Record:\n @property\n def as_json(self):\n\njson = Record().as_json()'", + "markdown": "Reports a problem when you are trying\nto call objects that are not callable, like, for example, properties:\n\n**Example:**\n\n\n class Record:\n @property\n def as_json(self):\n\n json = Record().as_json()\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyCallingNonCallable", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyUnreachableCodeInspection", + "shortDescription": { + "text": "Unreachable code" + }, + "fullDescription": { + "text": "Reports code fragments that cannot be normally reached. Example: 'if True:\n print('Yes')\nelse:\n print('No')' As a fix, you might want to check and modify the algorithm to ensure it implements the expected logic.", + "markdown": "Reports code fragments that cannot be normally reached.\n\n**Example:**\n\n\n if True:\n print('Yes')\n else:\n print('No')\n\nAs a fix, you might want to check and modify the algorithm to ensure it implements\nthe expected logic." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyUnreachableCode", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyMethodParametersInspection", + "shortDescription": { + "text": "Improper first parameter" + }, + "fullDescription": { + "text": "Reports methods that lack the first parameter that is usually named 'self'. Example: 'class Movie:\n\n def show():\n pass' When the quick-fix is applied, the code changes to: 'class Movie:\n\n def show(self):\n pass' The inspection also reports naming issues in class methods. Example: 'class Movie:\n @classmethod\n def show(abc):\n pass' Since the first parameter of a class method should be 'cls', the IDE provides a quick-fix to rename it.", + "markdown": "Reports methods that lack the first parameter that is usually\nnamed `self`.\n\n**Example:**\n\n\n class Movie:\n\n def show():\n pass\n\nWhen the quick-fix is applied, the code changes to:\n\n\n class Movie:\n\n def show(self):\n pass\n\nThe inspection also reports naming issues in class methods.\n\n**Example:**\n\n\n class Movie:\n @classmethod\n def show(abc):\n pass\n\nSince the first parameter of a class method should be `cls`, the IDE provides a quick-fix\nto rename it." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyMethodParameters", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyChainedComparisonsInspection", + "shortDescription": { + "text": "Too complex chained comparisons" + }, + "fullDescription": { + "text": "Reports chained comparisons that can be simplified. Example: 'def do_comparison(x):\n xmin = 10\n xmax = 100\n if x >= xmin and x <= xmax:\n pass' The IDE offers to simplify 'if x >= xmin and x <= xmax'. When the quick-fix is applied, the code changes to: 'def do_comparison(x):\n xmin = 10\n xmax = 100\n if xmin <= x <= xmax:\n pass'", + "markdown": "Reports chained comparisons that can be simplified.\n\n**Example:**\n\n\n def do_comparison(x):\n xmin = 10\n xmax = 100\n if x >= xmin and x <= xmax:\n pass\n\nThe IDE offers to simplify `if x >= xmin and x <= xmax`.\nWhen the quick-fix is applied, the code changes to:\n\n\n def do_comparison(x):\n xmin = 10\n xmax = 100\n if xmin <= x <= xmax:\n pass\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyChainedComparisons", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyDocstringTypesInspection", + "shortDescription": { + "text": "Type in docstring does not match inferred type" + }, + "fullDescription": { + "text": "Reports types in docstring that do not match dynamically inferred types.", + "markdown": "Reports types in docstring that do not match dynamically inferred types." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyDocstringTypes", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyCompatibilityInspection", + "shortDescription": { + "text": "Code is incompatible with specific Python versions" + }, + "fullDescription": { + "text": "Reports incompatibility with the specified versions of Python. Enable this inspection if you need your code to be compatible with a range of Python versions, for example, if you are building a library. To define the range of the inspected Python versions, select the corresponding checkboxes in the Options section. For more information about the Python versions supported by the IDE, see the web help.", + "markdown": "Reports incompatibility with the specified versions of Python.\nEnable this inspection if you need your code to be compatible with a range of Python versions, for example,\nif you are building a library.\n\nTo define the range of the inspected Python versions, select the corresponding checkboxes in the **Options**\nsection.\n\nFor more information about the Python versions supported by the IDE, see the\n[web help](https://www.jetbrains.com/help/pycharm/python.html#support)." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "PyCompatibility", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyGlobalUndefinedInspection", + "shortDescription": { + "text": "Global variable is not defined at the module level" + }, + "fullDescription": { + "text": "Reports problems when a variable defined through the 'global' statement is not defined in the module scope. Example: 'def foo():\n global bar\n print(bar)\n\nfoo()' As a fix, you can move the global variable declaration: 'global bar\n\n\ndef foo():\n print(bar)'", + "markdown": "Reports problems when a variable defined through the `global`\nstatement is not defined in the module scope.\n\n**Example:**\n\n\n def foo():\n global bar\n print(bar)\n\n foo()\n\nAs a fix, you can move the global variable declaration:\n\n\n global bar\n\n\n def foo():\n print(bar)\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyGlobalUndefined", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyMethodFirstArgAssignmentInspection", + "shortDescription": { + "text": "First argument of the method is reassigned" + }, + "fullDescription": { + "text": "Reports cases when the first parameter, such as 'self' or 'cls', is reassigned in a method. Because in most cases, there are no objectives in such reassignment, the IDE indicates an error. Example: 'class Account:\n def calc(self, balance):\n if balance == 0:\n self = balance\n return self' As a fix, you might want to check and modify the algorithm to ensure that reassignment is needed. If everything is correct, you can invoke intention actions for this code and opt to ignore the warning.", + "markdown": "Reports cases when the first parameter,\nsuch as `self` or `cls`, is reassigned in a method.\nBecause in most cases, there are no objectives in such reassignment, the\nIDE indicates an error.\n\n**Example:**\n\n\n class Account:\n def calc(self, balance):\n if balance == 0:\n self = balance\n return self\n\nAs a fix, you might want to check and modify the algorithm to ensure that reassignment is needed. If everything is correct,\nyou can invoke intention actions for this code and opt to ignore the warning." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyMethodFirstArgAssignment", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyNewStyleGenericSyntaxInspection", + "shortDescription": { + "text": "Invalid usage of new-style type parameters and type aliases" + }, + "fullDescription": { + "text": "Reports invalid usage of PEP 695 type parameter syntax Finds the following problems in function and class definitions and new-style type alias statements: Extending typing.Generic in new-style generic classes Extending parameterized typing.Protocol in new-style generic classes Using generic upper bounds and constraints with type parameters for ParamSpec and TypeVarTuple Mixing traditional and new-style type variables Using traditional type variables in new-style type aliases Examples: 'from typing import Generic\n\n class Example[T](Generic[T]): ... # Classes with type parameter list should not extend 'Generic'' 'class Example[T: (list[S], str)]: ... # Generic types are not allowed inside constraints and bounds of type parameters' 'from typing import TypeVar\n\n K = TypeVar(\"K\")\n\n class ClassC[V]:\n def method2[M](self, a: M, b: K) -> M | K: ... # Mixing traditional and new-style TypeVars is not allowed'", + "markdown": "Reports invalid usage of [PEP 695](https://www.python.org/dev/peps/pep-0695/) type parameter syntax\n\n\nFinds the following problems in function and class definitions and new-style type alias statements:\n\n* Extending typing.Generic in new-style generic classes\n* Extending parameterized typing.Protocol in new-style generic classes\n* Using generic upper bounds and constraints with type parameters for ParamSpec and TypeVarTuple\n* Mixing traditional and new-style type variables\n* Using traditional type variables in new-style type aliases\n\n\nExamples:\n\n\n from typing import Generic\n\n class Example[T](Generic[T]): ... # Classes with type parameter list should not extend 'Generic'\n\n\n class Example[T: (list[S], str)]: ... # Generic types are not allowed inside constraints and bounds of type parameters\n\n\n from typing import TypeVar\n\n K = TypeVar(\"K\")\n\n class ClassC[V]:\n def method2[M](self, a: M, b: K) -> M | K: ... # Mixing traditional and new-style TypeVars is not allowed\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyNewStyleGenericSyntax", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyProtocolInspection", + "shortDescription": { + "text": "Invalid protocol definitions and usages" + }, + "fullDescription": { + "text": "Reports invalid definitions and usages of protocols introduced in PEP-544. Example: 'from typing import Protocol\n\n\nclass MyProtocol(Protocol):\n def method(self, p: int) -> str:\n pass\n\n\nclass MyClass(MyProtocol):\n def method(self, p: str) -> int: # Type of 'method' is not compatible with 'MyProtocol'\n pass\n\n\nclass MyAnotherProtocol(MyClass, Protocol): # All bases of a protocol must be protocols\n pass'", + "markdown": "Reports invalid definitions and usages of protocols introduced in\n[PEP-544](https://www.python.org/dev/peps/pep-0544/).\n\n**Example:**\n\n\n from typing import Protocol\n\n\n class MyProtocol(Protocol):\n def method(self, p: int) -> str:\n pass\n\n\n class MyClass(MyProtocol):\n def method(self, p: str) -> int: # Type of 'method' is not compatible with 'MyProtocol'\n pass\n\n\n class MyAnotherProtocol(MyClass, Protocol): # All bases of a protocol must be protocols\n pass\n\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyProtocol", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyTypeHintsInspection", + "shortDescription": { + "text": "Invalid type hints definitions and usages" + }, + "fullDescription": { + "text": "Reports invalid usages of type hints. Example: 'from typing import TypeVar\n\nT0 = TypeVar('T1') # Argument of 'TypeVar' must be 'T0'\n\n\ndef b(p: int) -> int: # Type specified both in a comment and annotation\n # type: (int) -> int\n pass\n\n\ndef c(p1, p2): # Type signature has too many arguments\n # type: (int) -> int\n pass' Available quick-fixes offer various actions. You can rename, remove, or move problematic elements. You can also manually modify type declarations to ensure no warning is shown.", + "markdown": "Reports invalid usages of type hints.\n\n**Example:**\n\n\n from typing import TypeVar\n\n T0 = TypeVar('T1') # Argument of 'TypeVar' must be 'T0'\n\n\n def b(p: int) -> int: # Type specified both in a comment and annotation\n # type: (int) -> int\n pass\n\n\n def c(p1, p2): # Type signature has too many arguments\n # type: (int) -> int\n pass\n\nAvailable quick-fixes offer various actions. You can rename, remove, or move problematic elements. You can also manually modify type declarations to ensure no warning is shown." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyTypeHints", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyMethodMayBeStaticInspection", + "shortDescription": { + "text": "Method is not declared static" + }, + "fullDescription": { + "text": "Reports any methods that do not require a class instance creation and can be made static. Example: 'class MyClass(object):\n def my_method(self, x):\n print(x)' If a Make function from method quick-fix is applied, the code changes to: 'def my_method(x):\n print(x)\n\n\nclass MyClass(object):\n pass' If you select the Make method static quick-fix, the '@staticmethod' decorator is added: 'class MyClass(object):\n @staticmethod\n def my_method(x):\n print(x)'", + "markdown": "Reports any methods that do not require a class instance creation and can be\nmade static.\n\n**Example:**\n\n\n class MyClass(object):\n def my_method(self, x):\n print(x)\n\nIf a **Make function from method** quick-fix is applied, the code changes to:\n\n\n def my_method(x):\n print(x)\n\n\n class MyClass(object):\n pass\n\nIf you select the **Make method static** quick-fix, the `@staticmethod` decorator is added:\n\n\n class MyClass(object):\n @staticmethod\n def my_method(x):\n print(x)\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyMethodMayBeStatic", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyTupleAssignmentBalanceInspection", + "shortDescription": { + "text": "Tuple assignment balance is incorrect" + }, + "fullDescription": { + "text": "Reports cases when the number of expressions on the right-hand side and targets on the left-hand side are not the same. Example: 't = ('red', 'blue', 'green', 'white')\n(c1, c2, c3) = t' As a quick-fix, you can modify the highlighted code fragment to restore the tuple balance.", + "markdown": "Reports cases when the number of expressions on the right-hand side\nand targets on the left-hand side are not the same.\n\n**Example:**\n\n\n t = ('red', 'blue', 'green', 'white')\n (c1, c2, c3) = t\n\nAs a quick-fix, you can modify the highlighted code fragment to restore the tuple\nbalance." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyTupleAssignmentBalance", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyClassHasNoInitInspection", + "shortDescription": { + "text": "Class has no `__init__` method" + }, + "fullDescription": { + "text": "Reports cases in Python 2 when a class has no '__init__' method, neither its parent classes. Example: 'class Book():\n pass' The quick-fix adds the '__init__' method: 'class Book():\n def __init__(self):\n pass'", + "markdown": "Reports cases in Python 2 when a class has no `__init__` method, neither its parent\nclasses.\n\n**Example:**\n\n\n class Book():\n pass\n\nThe quick-fix adds the `__init__` method:\n\n\n class Book():\n def __init__(self):\n pass\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyClassHasNoInit", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyArgumentEqualDefaultInspection", + "shortDescription": { + "text": "The function argument is equal to the default parameter value" + }, + "fullDescription": { + "text": "Reports a problem when an argument passed to the function is equal to the default parameter value. This inspection is disabled by default to avoid performance degradation. Example: 'def my_function(a: int = 2):\n print(a)\n\n\nmy_function(2)'", + "markdown": "Reports a problem when an argument\npassed to the function is equal to the default parameter value.\n\nThis inspection is disabled by default to avoid performance degradation.\n\n**Example:**\n\n\n def my_function(a: int = 2):\n print(a)\n\n\n my_function(2)\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "PyArgumentEqualDefault", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyClassVarInspection", + "shortDescription": { + "text": "Invalid usage of ClassVar variables" + }, + "fullDescription": { + "text": "Reports invalid usages of ClassVar annotations. Example: 'from typing import ClassVar\n\n\nclass Cat:\n color: ClassVar[str] = \"white\"\n weight: int\n\n def __init__(self, weight: int):\n self.weight = weight\n\n\nCat.color = \"black\" # OK\nmy_cat = Cat(5)\nmy_cat.color = \"gray\" # Error, setting class variable on instance'", + "markdown": "Reports invalid usages of [ClassVar](https://docs.python.org/3/library/typing.html#typing.ClassVar) annotations.\n\n**Example:**\n\n\n from typing import ClassVar\n\n\n class Cat:\n color: ClassVar[str] = \"white\"\n weight: int\n\n def __init__(self, weight: int):\n self.weight = weight\n\n\n Cat.color = \"black\" # OK\n my_cat = Cat(5)\n my_cat.color = \"gray\" # Error, setting class variable on instance\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyClassVar", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyDictCreationInspection", + "shortDescription": { + "text": "Dictionary creation can be rewritten by dictionary literal" + }, + "fullDescription": { + "text": "Reports situations when you can rewrite dictionary creation by using a dictionary literal. This approach brings performance improvements. Example: 'dic = {}\ndic['var'] = 1' When the quick-fix is applied, the code changes to: 'dic = {'var': 1}'", + "markdown": "Reports situations when you can rewrite dictionary creation\nby using a dictionary literal.\n\nThis approach brings performance improvements.\n\n**Example:**\n\n\n dic = {}\n dic['var'] = 1\n\nWhen the quick-fix is applied, the code changes to:\n\n\n dic = {'var': 1}\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyDictCreation", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyStringFormatInspection", + "shortDescription": { + "text": "Errors in string formatting operations" + }, + "fullDescription": { + "text": "Reports errors in string formatting operations. Example 1: '\"Hello {1}\".format(\"people\")' Example 2: 'def bar():\n return 1\n\n\n\"%s %s\" % bar()' As a fix, you need to rewrite string formatting fragments to adhere to the formatting syntax.", + "markdown": "Reports errors in string formatting operations.\n\n**Example 1:**\n\n\n \"Hello {1}\".format(\"people\")\n\n**Example 2:**\n\n\n def bar():\n return 1\n\n\n \"%s %s\" % bar()\n\nAs a fix, you need to rewrite string formatting fragments to\nadhere to the [formatting syntax](https://docs.python.org/3/library/string.html#format-string-syntax)." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyStringFormat", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyExceptionInheritInspection", + "shortDescription": { + "text": "Exceptions do not inherit from standard 'Exception' class" + }, + "fullDescription": { + "text": "Reports cases when a custom exception class is raised but does not inherit from the builtin Exception class. Example: 'class A:\n pass\n\n\ndef me_exception():\n raise A()' The proposed quick-fix changes the code to: 'class A(Exception):\n pass\n\n\ndef me_exception():\n raise A()'", + "markdown": "Reports cases when a custom exception class is\nraised but does not inherit from the\n[builtin Exception class](https://docs.python.org/3/library/exceptions.html).\n\n**Example:**\n\n\n class A:\n pass\n\n\n def me_exception():\n raise A()\n\nThe proposed quick-fix changes the code to:\n\n\n class A(Exception):\n pass\n\n\n def me_exception():\n raise A()\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyExceptionInherit", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyAssignmentToLoopOrWithParameterInspection", + "shortDescription": { + "text": "Assignments to 'for' loop or 'with' statement parameter" + }, + "fullDescription": { + "text": "Reports the cases when you rewrite a loop variable with an inner loop. Example: 'for i in range(5):\n for i in range(20, 25):\n print(\"Inner\", i)\n print(\"Outer\", i)' It also warns you if a variable declared in the 'with' statement is redeclared inside the statement body: 'with open(\"file\") as f:\n f.read()\n with open(\"file\") as f:'", + "markdown": "Reports the cases when you rewrite a loop variable with an inner loop.\n\n**Example:**\n\n\n for i in range(5):\n for i in range(20, 25):\n print(\"Inner\", i)\n print(\"Outer\", i)\n \nIt also warns you if a variable declared in the `with` statement is redeclared inside the statement body:\n\n\n with open(\"file\") as f:\n f.read()\n with open(\"file\") as f:\n \n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyAssignmentToLoopOrWithParameter", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyFromFutureImportInspection", + "shortDescription": { + "text": "Improper position of from __future__ import" + }, + "fullDescription": { + "text": "Reports 'from __future__ import' statements that are used not at the beginning of a file. Example: 'a = 1\nfrom __future__ import print_function\nprint()' When the quick-fix is applied, the code changes to: 'from __future__ import print_function\n\na = 1\nprint()'", + "markdown": "Reports `from __future__ import`\nstatements that are used not at\nthe beginning of a file.\n\n**Example:**\n\n\n a = 1\n from __future__ import print_function\n print()\n\nWhen the quick-fix is applied, the code changes to:\n\n\n from __future__ import print_function\n\n a = 1\n print()\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyFromFutureImport", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyUnresolvedReferencesInspection", + "shortDescription": { + "text": "Unresolved references" + }, + "fullDescription": { + "text": "Reports references in your code that cannot be resolved. In a dynamically typed language, this is possible in a limited number of cases. If a reference type is unknown, then its attributes are not highlighted as unresolved even if you know that they should be: 'def print_string(s):\n print(s.abc())' In this code fragment 's' is always a string and 'abc' should be highlighted as unresolved. However, 's' type is inferred as 'Any' and no warning is reported. The IDE provides quick-fix actions to add missing references on-the-fly.", + "markdown": "Reports references in your code that cannot be resolved.\n\nIn a dynamically typed language, this is possible in a limited number of cases.\n\nIf a reference type is unknown, then its attributes are not highlighted as unresolved even if you know that they should be:\n\n\n def print_string(s):\n print(s.abc())\n\nIn this code fragment `s` is always a string and `abc` should be highlighted as unresolved. However, `s`\ntype is inferred as `Any` and no warning is reported.\n\nThe IDE provides quick-fix actions to add missing references on-the-fly." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "PyUnresolvedReferences", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PySuperArgumentsInspection", + "shortDescription": { + "text": "Wrong arguments to call super" + }, + "fullDescription": { + "text": "Reports cases when any call to 'super(A, B)' does not meet the following requirements: 'B' is an instance of 'A' 'B' a subclass of 'A' Example: 'class Figure:\n def color(self):\n pass\n\n\nclass Rectangle(Figure):\n def color(self):\n pass\n\n\nclass Square(Figure):\n def color(self):\n return super(Rectangle, self).color() # Square is not an instance or subclass of Rectangle' As a fix, you can make the 'Square' an instance of the 'Rectangle' class.", + "markdown": "Reports cases when any call to `super(A, B)` does not meet the\nfollowing requirements:\n\n* `B` is an instance of `A`\n* `B` a subclass of `A`\n\n**Example:**\n\n\n class Figure:\n def color(self):\n pass\n\n\n class Rectangle(Figure):\n def color(self):\n pass\n\n\n class Square(Figure):\n def color(self):\n return super(Rectangle, self).color() # Square is not an instance or subclass of Rectangle\n\nAs a fix, you can make the `Square` an instance of the `Rectangle` class." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PySuperArguments", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyPackageRequirementsInspection", + "shortDescription": { + "text": "Unsatisfied package requirements" + }, + "fullDescription": { + "text": "Reports packages mentioned in requirements files (for example, 'requirements.txt' or 'Pipfile') but not installed, or imported but not mentioned in requirements files. The IDE shows a quick-fix banner so that you can install the missing packages in one click.", + "markdown": "Reports packages mentioned in requirements files (for example, `requirements.txt` or `Pipfile`) but not installed,\nor imported but not mentioned in requirements files.\n\n\nThe IDE shows a quick-fix banner so that you can install the missing packages in one click." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyPackageRequirements", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyNonAsciiCharInspection", + "shortDescription": { + "text": "File contains non-ASCII character" + }, + "fullDescription": { + "text": "Reports cases in Python 2 when a file contains non-ASCII characters and does not have an encoding declaration at the top. Example: 'class A(object):\n# №5\n def __init__(self):\n pass' In this example, the IDE reports a non-ASCII symbol in a comment and a lack of encoding declaration. Apply the proposed quick-fix to add a missing encoding declaration: '# coding=utf-8\nclass A(object)\n# №5\n def __init__(self):\n pass'", + "markdown": "Reports cases in Python 2 when a file contains non-ASCII characters and does not\nhave an encoding declaration at the top.\n\n**Example:**\n\n\n class A(object):\n # №5\n def __init__(self):\n pass\n\nIn this example, the IDE reports a non-ASCII symbol in a comment and a lack of encoding\ndeclaration. Apply the proposed quick-fix to add a missing encoding declaration:\n\n\n # coding=utf-8\n class A(object)\n # №5\n def __init__(self):\n pass\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyNonAsciiChar", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyRedundantParenthesesInspection", + "shortDescription": { + "text": "Redundant parentheses" + }, + "fullDescription": { + "text": "Reports about redundant parentheses in expressions. The IDE provides the quick-fix action to remove the redundant parentheses.", + "markdown": "Reports about redundant parentheses in expressions.\n\nThe IDE provides the quick-fix action to remove the redundant parentheses." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyRedundantParentheses", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyTrailingSemicolonInspection", + "shortDescription": { + "text": "Prohibited trailing semicolon in a statement" + }, + "fullDescription": { + "text": "Reports trailing semicolons in statements. Example: 'def my_func(a):\n c = a ** 2;\n return c' IDE provides a quick-fix that removes a trailing semicolon. When you apply it, the code changes to: 'def my_func(a):\n c = a ** 2\n return c'", + "markdown": "Reports trailing semicolons in statements.\n\n**Example:**\n\n\n def my_func(a):\n c = a ** 2;\n return c\n\nIDE provides a quick-fix that removes a trailing semicolon. When you\napply it, the code changes to:\n\n\n def my_func(a):\n c = a ** 2\n return c\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyTrailingSemicolon", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyOldStyleClassesInspection", + "shortDescription": { + "text": "Old-style class contains new-style class features" + }, + "fullDescription": { + "text": "Reports occurrences of new-style class features in old-style classes. The inspection highlights '__slots__', '__getattribute__', and 'super()' inside old-style classes.", + "markdown": "Reports occurrences of\n[new-style class features](https://www.python.org/doc/newstyle/)\nin old-style classes. The inspection highlights\n`__slots__`, `__getattribute__`, and `super()`\ninside old-style classes." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyOldStyleClasses", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyAbstractClassInspection", + "shortDescription": { + "text": "Class must implement all abstract methods" + }, + "fullDescription": { + "text": "Reports cases when not all abstract properties or methods are defined in a subclass. Example: 'from abc import abstractmethod, ABC\n\n\nclass Figure(ABC):\n\n @abstractmethod\n def do_figure(self):\n pass\n\n\nclass Triangle(Figure):\n def do_triangle(self):\n pass' When the quick-fix is applied, the IDE implements an abstract method for the 'Triangle' class: 'from abc import abstractmethod, ABC\n\n\nclass Figure(ABC):\n\n @abstractmethod\n def do_figure(self):\n pass\n\n\nclass Triangle(Figure):\n def do_figure(self):\n pass\n\n def do_triangle(self):\n pass'", + "markdown": "Reports cases when not all abstract properties or methods are defined in\na subclass.\n\n**Example:**\n\n\n from abc import abstractmethod, ABC\n\n\n class Figure(ABC):\n\n @abstractmethod\n def do_figure(self):\n pass\n\n\n class Triangle(Figure):\n def do_triangle(self):\n pass\n\nWhen the quick-fix is applied, the IDE implements an abstract method for the `Triangle` class:\n\n\n from abc import abstractmethod, ABC\n\n\n class Figure(ABC):\n\n @abstractmethod\n def do_figure(self):\n pass\n\n\n class Triangle(Figure):\n def do_figure(self):\n pass\n\n def do_triangle(self):\n pass\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyAbstractClass", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyArgumentListInspection", + "shortDescription": { + "text": "Incorrect call arguments" + }, + "fullDescription": { + "text": "Reports discrepancies between declared parameters and actual arguments, as well as incorrect arguments, for example, duplicate named arguments, and incorrect argument order. Example: 'class Foo:\n def __call__(self, p1: int, *, p2: str = \"%\"):\n return p2 * p1\n\n\nbar = Foo()\nbar.__call__() # unfilled parameter\nbar(5, \"#\") # unexpected argument' The correct code fragment looks at follows: 'class Foo:\n def __call__(self, p1: int, *, p2: str = \"%\"):\n return p2 * p1\n\n\nbar = Foo()\nbar.__call__(5)\nbar(5, p2=\"#\")'", + "markdown": "Reports discrepancies between declared parameters and actual arguments, as well as\nincorrect arguments, for example, duplicate named arguments, and incorrect argument order.\n\n**Example:**\n\n\n class Foo:\n def __call__(self, p1: int, *, p2: str = \"%\"):\n return p2 * p1\n\n\n bar = Foo()\n bar.__call__() # unfilled parameter\n bar(5, \"#\") # unexpected argument\n\nThe correct code fragment looks at follows:\n\n\n class Foo:\n def __call__(self, p1: int, *, p2: str = \"%\"):\n return p2 * p1\n\n\n bar = Foo()\n bar.__call__(5)\n bar(5, p2=\"#\")\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyArgumentList", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyInterpreterInspection", + "shortDescription": { + "text": "An invalid interpreter" + }, + "fullDescription": { + "text": "Reports problems if there is no Python interpreter configured for the project or if the interpreter is invalid. Without a properly configured interpreter, you cannot execute your Python scripts and benefit from some Python code insight features. The IDE provides quick access to the interpreter settings.", + "markdown": "Reports problems if there is no Python interpreter configured for the project or if the interpreter is invalid. Without a properly\nconfigured interpreter, you cannot execute your Python scripts and benefit from some Python code insight features.\n\nThe IDE provides quick access to the interpreter settings." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "PyInterpreter", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyBroadExceptionInspection", + "shortDescription": { + "text": "Unclear exception clauses" + }, + "fullDescription": { + "text": "Reports exception clauses that do not provide specific information about the problem. Example: Clauses that do not specify an exception class Clauses that are specified as 'Exception'", + "markdown": "Reports exception clauses that do not provide specific information\nabout the problem.\n\n**Example:**\n\n* Clauses that do not specify an exception class\n* Clauses that are specified as `Exception`" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyBroadException", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyTypeCheckerInspection", + "shortDescription": { + "text": "Incorrect type" + }, + "fullDescription": { + "text": "Reports type errors in function call expressions, targets, and return values. In a dynamically typed language, this is possible in a limited number of cases. Types of function parameters can be specified in docstrings or in Python 3 function annotations. Example: 'def foo() -> int:\n return \"abc\" # Expected int, got str\n\n\na: str\na = foo() # Expected str, got int' With the quick-fix, you can modify the problematic types: 'def foo() -> str:\n return \"abc\"\n\n\na: str\na = foo()'", + "markdown": "Reports type errors in function call expressions, targets, and return values. In a dynamically typed language, this is possible in a limited number of cases.\n\nTypes of function parameters can be specified in\ndocstrings or in Python 3 function annotations.\n\n**Example:**\n\n\n def foo() -> int:\n return \"abc\" # Expected int, got str\n\n\n a: str\n a = foo() # Expected str, got int\n\nWith the quick-fix, you can modify the problematic types:\n\n\n def foo() -> str:\n return \"abc\"\n\n\n a: str\n a = foo()\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyTypeChecker", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyPropertyAccessInspection", + "shortDescription": { + "text": "Inappropriate access to properties" + }, + "fullDescription": { + "text": "Reports cases when properties are accessed inappropriately: Read-only properties are set Write-only properties are read Non-deletable properties are deleted Example: 'class MyClass:\n @property\n def read_only(self): return None\n\n def __write_only_setter(self, value): pass\n\n write_only = property(None, __write_only_setter)\n\n\na = MyClass()\na.read_only = 10 # property cannot be set\ndel a.read_only # property cannot be deleted\nprint(a.write_only) # property cannot be read'", + "markdown": "Reports cases when properties are accessed inappropriately:\n\n* Read-only properties are set\n* Write-only properties are read\n* Non-deletable properties are deleted\n\n**Example:**\n\n\n class MyClass:\n @property\n def read_only(self): return None\n\n def __write_only_setter(self, value): pass\n\n write_only = property(None, __write_only_setter)\n\n\n a = MyClass()\n a.read_only = 10 # property cannot be set\n del a.read_only # property cannot be deleted\n print(a.write_only) # property cannot be read\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyPropertyAccess", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyStubPackagesAdvertiser", + "shortDescription": { + "text": "Stub packages advertiser" + }, + "fullDescription": { + "text": "Reports availability of stub packages. Stub package is a package that contains type information for the corresponding runtime package. Using stub packages ensures better coding assistance for the corresponding python package.", + "markdown": "Reports availability of stub packages.\n\n\n[Stub package](https://www.python.org/dev/peps/pep-0561/) is a package that contains type information for the corresponding\nruntime package.\n\nUsing stub packages ensures better coding assistance for the corresponding python package." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyStubPackagesAdvertiser", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyByteLiteralInspection", + "shortDescription": { + "text": "A byte literal contains a non-ASCII character" + }, + "fullDescription": { + "text": "Reports characters in byte literals that are outside ASCII range. Example: 's = b'№5''", + "markdown": "Reports characters in byte literals that are outside ASCII range.\n\n**Example:**\n\n\n s = b'№5'\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyByteLiteral", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyRelativeImportInspection", + "shortDescription": { + "text": "Suspicious relative imports" + }, + "fullDescription": { + "text": "Reports usages of relative imports inside plain directories, for example, directories neither containing '__init__.py' nor explicitly marked as namespace packages.", + "markdown": "Reports usages of relative imports inside plain directories, for example, directories neither containing `__init__.py` nor\nexplicitly marked as namespace packages." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyPackages", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyAugmentAssignmentInspection", + "shortDescription": { + "text": "Assignment can be replaced with augmented assignment" + }, + "fullDescription": { + "text": "Reports assignments that can be replaced with augmented assignments. Example: 'a = 23\nb = 3\na = a + b' After the quick-fix is applied, the code changes to: 'a = 23\nb = 3\na += b'", + "markdown": "Reports assignments that can be replaced with augmented assignments.\n\n**Example:**\n\n\n a = 23\n b = 3\n a = a + b\n\nAfter the quick-fix is applied, the code changes to:\n\n\n a = 23\n b = 3\n a += b\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "PyAugmentAssignment", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyDeprecationInspection", + "shortDescription": { + "text": "Deprecated function, class, or module" + }, + "fullDescription": { + "text": "Reports usages of Python functions, or methods that are marked as deprecated and raise the 'DeprecationWarning' or 'PendingDeprecationWarning' warning. Also, this inspection highlights usages of 'abc.abstractstaticmethod', 'abc.abstractproperty', and 'abc.abstractclassmethod' decorators. Example: 'class Foo:\n @property\n def bar(self):\n import warnings\n warnings.warn(\"this is deprecated\", DeprecationWarning, 2)\n return 5\n\n\nfoo = Foo()\nprint(foo.bar)'", + "markdown": "Reports usages of Python functions, or methods that are marked as\ndeprecated and raise the `DeprecationWarning` or `PendingDeprecationWarning` warning.\n\nAlso, this inspection highlights usages of `abc.abstractstaticmethod`, `abc.abstractproperty`, and `abc.abstractclassmethod`\ndecorators.\n\n**Example:**\n\n\n class Foo:\n @property\n def bar(self):\n import warnings\n warnings.warn(\"this is deprecated\", DeprecationWarning, 2)\n return 5\n\n\n foo = Foo()\n print(foo.bar)\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyDeprecation", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyUnnecessaryBackslashInspection", + "shortDescription": { + "text": "Unnecessary backslash" + }, + "fullDescription": { + "text": "Reports backslashes in places where line continuation is implicit inside '()', '[]', and '{}'. Example: 'a = ('first', \\\n 'second', 'third')' When the quick-fix is applied, the redundant backslash is deleted.", + "markdown": "Reports backslashes in places where line continuation is implicit inside `()`,\n`[]`, and `{}`.\n\n**Example:**\n\n\n a = ('first', \\\n 'second', 'third')\n\nWhen the quick-fix is applied, the redundant backslash is deleted." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyUnnecessaryBackslash", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyRedeclarationInspection", + "shortDescription": { + "text": "Redeclared names without usages" + }, + "fullDescription": { + "text": "Reports unconditional redeclarations of names without being used in between. Example: 'def x(): pass\n\n\nx = 2' It applies to function and class declarations, and top-level assignments. When the warning is shown, you can try a recommended action, for example, you might be prompted to rename the variable.", + "markdown": "Reports unconditional redeclarations of names without being used in between.\n\n**Example:**\n\n\n def x(): pass\n\n\n x = 2\n\nIt applies to function and class declarations, and top-level assignments.\n\nWhen the warning is shown, you can try a recommended action, for example, you might be prompted to\nrename the variable." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyRedeclaration", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyShadowingNamesInspection", + "shortDescription": { + "text": "Shadowing names from outer scopes" + }, + "fullDescription": { + "text": "Reports shadowing names defined in outer scopes. Example: 'def outer(p):\n def inner(p):\n pass' As a quick-fix, the IDE offers to remove a parameter or rename it.", + "markdown": "Reports shadowing names defined in outer scopes.\n\n**Example:**\n\n\n def outer(p):\n def inner(p):\n pass\n\nAs a quick-fix, the IDE offers to remove a parameter or rename it." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyShadowingNames", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyFinalInspection", + "shortDescription": { + "text": "Invalid usages of final classes, methods, and variables" + }, + "fullDescription": { + "text": "Reports invalid usages of final classes, methods and variables. Example: 'from typing import final\n\n\n@final\nclass A:\n def a_method(self):\n pass\n\n\nclass B(A):\n def a_method(self):\n pass'", + "markdown": "Reports invalid usages of final classes,\nmethods and variables.\n\n**Example:**\n\n\n from typing import final\n\n\n @final\n class A:\n def a_method(self):\n pass\n\n\n class B(A):\n def a_method(self):\n pass\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyFinal", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyStubPackagesCompatibilityInspection", + "shortDescription": { + "text": "Incompatible stub packages" + }, + "fullDescription": { + "text": "Reports stub packages that do not support the version of the corresponding runtime package. A stub package contains type information for some runtime package.", + "markdown": "Reports stub packages that do not support the version of the corresponding runtime package.\n\nA [stub package](https://www.python.org/dev/peps/pep-0561/) contains type information for some runtime package." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyStubPackagesCompatibility", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyProtectedMemberInspection", + "shortDescription": { + "text": "Accessing a protected member of a class or a module" + }, + "fullDescription": { + "text": "Reports cases when a protected member is accessed outside the class, a descendant of the class where it is defined, or a module. Example: 'class Foo:\n def _protected_method(self):\n pass\n\n\nclass Bar(Foo):\n def public_method(self):\n self._protected_method()\n\n\nfoo = Foo()\nfoo._protected_method() # Access to a protected method'", + "markdown": "Reports cases when a protected member is accessed outside the class,\na descendant of the class where it is defined, or a module.\n\n**Example:**\n\n\n class Foo:\n def _protected_method(self):\n pass\n\n\n class Bar(Foo):\n def public_method(self):\n self._protected_method()\n\n\n foo = Foo()\n foo._protected_method() # Access to a protected method\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyProtectedMember", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyUnboundLocalVariableInspection", + "shortDescription": { + "text": "Unbound local variables" + }, + "fullDescription": { + "text": "Reports local variables referenced before assignment. Example: 'x = 0\nif x > 10:\n b = 3\nprint(b)' The IDE reports a problem for 'print(b)'. A possible fix is: 'x = 0\nif x > 10:\n b = 3\n print(b)'", + "markdown": "Reports local variables referenced before assignment.\n\n**Example:**\n\n\n x = 0\n if x > 10:\n b = 3\n print(b)\n\nThe IDE reports a problem for `print(b)`. A possible fix is:\n\n\n x = 0\n if x > 10:\n b = 3\n print(b)\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyUnboundLocalVariable", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyNamedTupleInspection", + "shortDescription": { + "text": "Invalid definition of 'typing.NamedTuple'" + }, + "fullDescription": { + "text": "Reports invalid definition of a typing.NamedTuple. Example: 'import typing\n\n\nclass FullName(typing.NamedTuple):\n first: str\n last: str = \"\"\n middle: str' As a fix, place the field with the default value after the fields without default values: 'import typing\n\n\nclass FullName(typing.NamedTuple):\n first: str\n middle: str\n last: str = \"\"'", + "markdown": "Reports invalid definition of a\n[typing.NamedTuple](https://docs.python.org/3/library/typing.html#typing.NamedTuple).\n\n**Example:**\n\n\n import typing\n\n\n class FullName(typing.NamedTuple):\n first: str\n last: str = \"\"\n middle: str\n\nAs a fix, place the field with the default value after the fields without default values:\n\n\n import typing\n\n\n class FullName(typing.NamedTuple):\n first: str\n middle: str\n last: str = \"\"\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyNamedTuple", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PySingleQuotedDocstringInspection", + "shortDescription": { + "text": "Single quoted docstring" + }, + "fullDescription": { + "text": "Reports docstrings that do not adhere to the triple double-quoted string format. Example: 'def calc(self, balance=0):\n 'param: balance'\n self.balance = balance' When the quick-fix is applied, the code changes to: 'def calc(self, balance=0):\n \"\"\"param: balance\"\"\"\n self.balance = balance'", + "markdown": "Reports docstrings that do not adhere to the triple double-quoted string format.\n\n**Example:**\n\n\n def calc(self, balance=0):\n 'param: balance'\n self.balance = balance\n\nWhen the quick-fix is applied, the code changes to:\n\n\n def calc(self, balance=0):\n \"\"\"param: balance\"\"\"\n self.balance = balance\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PySingleQuotedDocstring", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyUnusedLocalInspection", + "shortDescription": { + "text": "Unused local symbols" + }, + "fullDescription": { + "text": "Reports local variables, parameters, and functions that are locally defined, but not used name in a function.", + "markdown": "Reports local variables, parameters, and functions that are locally defined, but not used name in a function." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyUnusedLocal", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyReturnFromInitInspection", + "shortDescription": { + "text": "__init__ method that returns a value" + }, + "fullDescription": { + "text": "Reports occurrences of 'return' statements with a return value inside '__init__' methods of classes. Example: 'class Sum:\n def __init__(self, a, b):\n self.a = a\n self.b = b\n self.sum = a + b\n return self.sum' A constructor should not return any value. The '__init__' method should only initialize the values of instance members for news objects. As a quick-fix, the IDE offers to remove the 'return' statement.", + "markdown": "Reports occurrences of `return` statements with a return value inside\n`__init__` methods of classes.\n\n**Example:**\n\n\n class Sum:\n def __init__(self, a, b):\n self.a = a\n self.b = b\n self.sum = a + b\n return self.sum\n\nA constructor should not return any value. The `__init__` method should\nonly initialize the values of instance members for news objects.\n\nAs a quick-fix, the IDE offers to remove the `return` statement." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyReturnFromInit", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyNestedDecoratorsInspection", + "shortDescription": { + "text": "Problematic nesting of decorators" + }, + "fullDescription": { + "text": "Reports problems with nesting decorators. The inspection highlights the cases when 'classmethod' or 'staticmethod' is applied before another decorator. Example: 'def innocent(f):\n return f\n\n\nclass A:\n @innocent # Decorator will not receive a callable it may expect\n @classmethod\n def f2(cls):\n pass\n\n @innocent # Decorator will not receive a callable it may expect\n @staticmethod\n def f1():\n pass' As a quick-fix, the IDE offers to remove the decorator.", + "markdown": "Reports problems with nesting decorators. The inspection highlights the cases when `classmethod` or `staticmethod`\nis applied before another decorator.\n\n**Example:**\n\n\n def innocent(f):\n return f\n\n\n class A:\n @innocent # Decorator will not receive a callable it may expect\n @classmethod\n def f2(cls):\n pass\n\n @innocent # Decorator will not receive a callable it may expect\n @staticmethod\n def f1():\n pass\n\nAs a quick-fix, the IDE offers to remove the decorator." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyNestedDecorators", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyMissingOrEmptyDocstringInspection", + "shortDescription": { + "text": "Missing or empty docstring" + }, + "fullDescription": { + "text": "Reports missing and empty docstrings. Example of a missing docstring 'def demo(a):\n c = a ** 2' Example of an empty docstring 'def demo(a):\n \"\"\"\n \"\"\"\n c = a ** 2' When the quick-fix is applied, the code fragments change to: 'def demo(a):\n \"\"\"\n\n :param a:\n \"\"\"\n c = a ** 2' You need to provide some details about the parameter in the generated template.", + "markdown": "Reports missing and empty docstrings.\n\n**Example of a missing docstring**\n\n\n def demo(a):\n c = a ** 2\n\n**Example of an empty docstring**\n\n\n def demo(a):\n \"\"\"\n \"\"\"\n c = a ** 2\n\nWhen the quick-fix is applied, the code fragments change to:\n\n\n def demo(a):\n \"\"\"\n\n :param a:\n \"\"\"\n c = a ** 2\n\nYou need to provide some details about the parameter in the generated template." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "PyMissingOrEmptyDocstring", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyOverloadsInspection", + "shortDescription": { + "text": "Overloads in regular Python files" + }, + "fullDescription": { + "text": "Reports cases when overloads in regular Python files are placed after the implementation or when their signatures are not compatible with the implementation. Example: 'from typing import overload\n\n\n@overload\ndef foo(p1, p2): # Overload signature is not compatible with the implementation\n pass\n\n\n@overload\ndef foo(p1): # Overload signature is not compatible with the implementation\n pass\n\n\ndef foo(p1, p2, p3):\n print(p1, p2, p3)'", + "markdown": "Reports cases when overloads in regular Python files are placed after the implementation or when their signatures are\nnot compatible with the implementation.\n\n**Example:**\n\n\n from typing import overload\n\n\n @overload\n def foo(p1, p2): # Overload signature is not compatible with the implementation\n pass\n\n\n @overload\n def foo(p1): # Overload signature is not compatible with the implementation\n pass\n\n\n def foo(p1, p2, p3):\n print(p1, p2, p3)\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyOverloads", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyPep8NamingInspection", + "shortDescription": { + "text": "PEP 8 naming convention violation" + }, + "fullDescription": { + "text": "Reports violations of the PEP8 naming conventions. Example: 'class mammalia(object):\n extremities = 4\n\n def feeds(self):\n print(\"milk\")' In this code fragment, IDE offers to rename 'mammalia' to 'Mammalia'. When the quick-fix is applied, the code change to: 'class Mammalia(object):\n extremities = 4\n\n def feeds(self):\n print(\"milk\")'", + "markdown": "Reports violations of the\n[PEP8](https://www.python.org/dev/peps/pep-0008/) naming conventions.\n\n**Example:**\n\n\n class mammalia(object):\n extremities = 4\n\n def feeds(self):\n print(\"milk\")\n\nIn this code fragment, IDE offers to rename `mammalia` to `Mammalia`.\nWhen the quick-fix is applied, the code change to:\n\n\n class Mammalia(object):\n extremities = 4\n\n def feeds(self):\n print(\"milk\")\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyPep8Naming", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyDictDuplicateKeysInspection", + "shortDescription": { + "text": "Dictionary contains duplicate keys" + }, + "fullDescription": { + "text": "Reports using the same value as the dictionary key twice. Example: 'dic = {\"a\": [1, 2], \"a\": [3, 4]}'", + "markdown": "Reports using the same value as the dictionary key twice.\n\n**Example:**\n\n\n dic = {\"a\": [1, 2], \"a\": [3, 4]}\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyDictDuplicateKeys", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyExceptClausesOrderInspection", + "shortDescription": { + "text": "Wrong order of 'except' clauses" + }, + "fullDescription": { + "text": "Reports cases when 'except' clauses are not in the proper order, from the more specific to the more generic, or one exception class is caught twice. If you do not fix the order, some exceptions may not be caught by the most specific handler. Example: 'try:\n call()\nexcept ValueError:\n pass\nexcept UnicodeError:\n pass' The IDE recommends moving the clause up. When the quick-fix is applied, the code changes to: 'try:\n call()\nexcept UnicodeError:\n pass\nexcept ValueError:\n pass'", + "markdown": "Reports cases when `except` clauses are not in the proper order,\nfrom the more specific to the more generic, or one exception class is caught twice.\n\n\nIf you do not fix the order, some exceptions may not be caught by the most specific handler.\n\n**Example:**\n\n\n try:\n call()\n except ValueError:\n pass\n except UnicodeError:\n pass\n\nThe IDE recommends moving the clause up. When the quick-fix is applied, the code changes to:\n\n\n try:\n call()\n except UnicodeError:\n pass\n except ValueError:\n pass\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyExceptClausesOrder", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyDataclassInspection", + "shortDescription": { + "text": "Invalid definition and usage of Data Classes" + }, + "fullDescription": { + "text": "Reports invalid definitions and usages of classes created with 'dataclasses' or 'attr' modules. Example: 'import dataclasses\n\n\n@dataclasses.dataclass\nclass FullName:\n first: str\n middle: str = \"\"\n last: str'", + "markdown": "Reports invalid definitions and usages of classes created with\n`dataclasses` or `attr` modules.\n\n**Example:**\n\n\n import dataclasses\n\n\n @dataclasses.dataclass\n class FullName:\n first: str\n middle: str = \"\"\n last: str\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyDataclass", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyClassicStyleClassInspection", + "shortDescription": { + "text": "Classic style class usage" + }, + "fullDescription": { + "text": "Reports classic style classes usage. This inspection applies only to Python 2. Example: 'class A:\n pass' With quick-fixes provided by the IDE, this code fragment changes to: 'class A(object):\n def __init__(self):\n pass'", + "markdown": "Reports [classic style classes](https://docs.python.org/2/reference/datamodel.html#new-style-and-classic-classes) usage. This inspection applies only to Python 2.\n\n**Example:**\n\n\n class A:\n pass\n\nWith quick-fixes provided by the IDE, this code fragment changes to:\n\n\n class A(object):\n def __init__(self):\n pass\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "PyClassicStyleClass", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyprojectInspection", + "shortDescription": { + "text": "Depencencies in pyproject.toml" + }, + "fullDescription": { + "text": "Reports unsatisfied dependencies, declared [project.dependencies] table in pyproject.toml. Shows a quick-fix to install missing packages.", + "markdown": "Reports unsatisfied dependencies, declared \\[project.dependencies\\] table in pyproject.toml.\n\n\nShows a quick-fix to install missing packages." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyprojectInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyNoneFunctionAssignmentInspection", + "shortDescription": { + "text": "Assigning function calls that don't return anything" + }, + "fullDescription": { + "text": "Reports cases when an assignment is done on a function that does not return anything. This inspection is similar to pylint inspection E1111. Example: 'def just_print():\n print(\"Hello!\")\n\n\naction = just_print()' As a quick-fix, the IDE offers to remove the assignment.", + "markdown": "Reports cases when an assignment is done on a function that does not return anything.\nThis inspection is similar to [pylint inspection E1111](https://docs.pylint.org/en/1.6.0/features.html#id6).\n\n**Example:**\n\n\n def just_print():\n print(\"Hello!\")\n\n\n action = just_print()\n\nAs a quick-fix, the IDE offers to remove the assignment." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyNoneFunctionAssignment", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyPropertyDefinitionInspection", + "shortDescription": { + "text": "Incorrect property definition" + }, + "fullDescription": { + "text": "Reports problems with the arguments of 'property()' and functions annotated with '@property'. 'class C:\n @property\n def abc(self): # Getter should return or yield something\n pass\n\n @abc.setter\n def foo(self, value): # Names of function and decorator don't match\n pass\n\n @abc.setter\n def abc(self, v1, v2): # Setter signature should be (self, value)\n pass\n\n @abc.deleter\n def abc(self, v1): # Delete signature should be (self)\n pass' A quick-fix offers to update parameters.", + "markdown": "Reports problems with the arguments of `property()` and functions\nannotated with `@property`.\n\n\n class C:\n @property\n def abc(self): # Getter should return or yield something\n pass\n\n @abc.setter\n def foo(self, value): # Names of function and decorator don't match\n pass\n\n @abc.setter\n def abc(self, v1, v2): # Setter signature should be (self, value)\n pass\n\n @abc.deleter\n def abc(self, v1): # Delete signature should be (self)\n pass\n\nA quick-fix offers to update parameters." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyPropertyDefinition", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyIncorrectDocstringInspection", + "shortDescription": { + "text": "Incorrect docstring" + }, + "fullDescription": { + "text": "Reports mismatched parameters in a docstring. For example, 'b' is highlighted, because there is no such a parameter in the 'add' function. 'def add(a, c):\n \"\"\"\n @param a:\n @param b:\n @return:\n \"\"\"\n pass' The inspection does not warn you of missing parameters if none of them is mentioned in a docstring: 'def mult(a, c):\n \"\"\"\n @return:\n \"\"\"\n pass'", + "markdown": "Reports mismatched parameters in a docstring. For example, `b` is highlighted, because there is no\nsuch a parameter in the `add` function.\n\n\n def add(a, c):\n \"\"\"\n @param a:\n @param b:\n @return:\n \"\"\"\n pass\n\nThe inspection does not warn you of missing parameters if none of them is mentioned in a docstring:\n\n\n def mult(a, c):\n \"\"\"\n @return:\n \"\"\"\n pass\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyIncorrectDocstring", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyListCreationInspection", + "shortDescription": { + "text": "Non-optimal list declaration" + }, + "fullDescription": { + "text": "Reports cases when a list declaration can be rewritten with a list literal. This ensures better performance of your application. Example: 'l = [1]\nl.append(2)' When the quick-fix is applied, the code changes to: 'l = [1, 2]'", + "markdown": "Reports cases when a list declaration\ncan be rewritten with a list literal.\n\nThis ensures better performance of your application.\n\n**Example:**\n\n\n l = [1]\n l.append(2)\n\nWhen the quick-fix is applied, the code changes to:\n\n\n l = [1, 2]\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyListCreation", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "org.editorconfig.editorconfigjetbrains", + "version": "233.14241", + "rules": [ + { + "id": "EditorConfigCharClassRedundancy", + "shortDescription": { + "text": "Unnecessary character class" + }, + "fullDescription": { + "text": "Reports character classes that consist of a single character. Such classes can be simplified to a character, for example '[a]'→'a'.", + "markdown": "Reports character classes that consist of a single character. Such classes can be simplified to a character, for example `[a]`→`a`." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigCharClassRedundancy", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigDeprecatedDescriptor", + "shortDescription": { + "text": "Deprecated property" + }, + "fullDescription": { + "text": "Reports EditorConfig properties that are no longer supported.", + "markdown": "Reports EditorConfig properties that are no longer supported." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigDeprecatedDescriptor", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigRootDeclarationUniqueness", + "shortDescription": { + "text": "Extra top-level declaration" + }, + "fullDescription": { + "text": "Reports multiple top-level declarations. There can be only one optional “root=true” top-level declaration in the EditorConfig file. Using multiple top-level declarations is not allowed.", + "markdown": "Reports multiple top-level declarations. There can be only one optional \"root=true\" top-level declaration in the EditorConfig file. Using multiple top-level declarations is not allowed." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigRootDeclarationUniqueness", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigNumerousWildcards", + "shortDescription": { + "text": "Too many wildcards" + }, + "fullDescription": { + "text": "Reports sections that contain too many wildcards. Using a lot of wildcards may lead to performance issues.", + "markdown": "Reports sections that contain too many wildcards. Using a lot of wildcards may lead to performance issues." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "EditorConfigNumerousWildcards", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigWildcardRedundancy", + "shortDescription": { + "text": "Redundant wildcard" + }, + "fullDescription": { + "text": "Reports wildcards that become redundant when the “**” wildcard is used in the same section. The “**” wildcard defines a broader set of files than any other wildcard. That is why, any other wildcard used in the same section has no affect and can be removed.", + "markdown": "Reports wildcards that become redundant when the \"\\*\\*\" wildcard is used in the same section.\n\n\nThe \"\\*\\*\" wildcard defines a broader set of files than any other wildcard.\nThat is why, any other wildcard used in the same section has no affect and can be removed." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigWildcardRedundancy", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigPartialOverride", + "shortDescription": { + "text": "Overlapping sections" + }, + "fullDescription": { + "text": "Reports subsets of files specified in the current section that overlap with other subsets in other sections. For example: '[{foo,bar}]' and '[{foo,bas}]' both contain “foo”.", + "markdown": "Reports subsets of files specified in the current section that overlap with other subsets in other sections. For example: `[{foo,bar}]` and `[{foo,bas}]` both contain \"foo\"." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "EditorConfigPartialOverride", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigEmptySection", + "shortDescription": { + "text": "Empty section" + }, + "fullDescription": { + "text": "Reports sections that do not contain any EditorConfig properties.", + "markdown": "Reports sections that do not contain any EditorConfig properties." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigEmptySection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigHeaderUniqueness", + "shortDescription": { + "text": "EditorConfig section is not unique" + }, + "fullDescription": { + "text": "Reports sections that define the same file pattern as other sections.", + "markdown": "Reports sections that define the same file pattern as other sections." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigHeaderUniqueness", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigShadowingOption", + "shortDescription": { + "text": "Overriding property" + }, + "fullDescription": { + "text": "Reports properties that override the same properties defined earlier in the file. For example: '[*.java]\nindent_size=4\n[{*.java,*.js}]\nindent_size=2' The second section includes the same files as '[*.java]' but also sets indent_size to value 2. Thus the first declaration 'indent_size=4'will be ignored.", + "markdown": "Reports properties that override the same properties defined earlier in the file.\n\nFor example:\n\n\n [*.java]\n indent_size=4\n [{*.java,*.js}]\n indent_size=2\n\nThe second section includes the same files as `[*.java]` but also sets indent_size to value 2. Thus the first declaration `indent_size=4`will be ignored." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigShadowingOption", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigListAcceptability", + "shortDescription": { + "text": "Unexpected value list" + }, + "fullDescription": { + "text": "Reports lists of values that are used in properties in which lists are not supported. In this case, only a single value can be specified.", + "markdown": "Reports lists of values that are used in properties in which lists are not supported. In this case, only a single value can be specified." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigListAcceptability", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigShadowedOption", + "shortDescription": { + "text": "Overridden property" + }, + "fullDescription": { + "text": "Reports properties that are already defined in other sections. For example: '[*.java]\nindent_size=4\n[{*.java,*.js}]\nindent_size=2' The second section includes all '*.java' files too but it also redefines indent_size. As a result the value 2 will be used for files matching '*.java'.", + "markdown": "Reports properties that are already defined in other sections.\n\nFor example:\n\n\n [*.java]\n indent_size=4\n [{*.java,*.js}]\n indent_size=2\n\nThe second section includes all `*.java` files too but it also redefines indent_size. As a result the value 2 will be used for files matching `*.java`." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigShadowedOption", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigEmptyHeader", + "shortDescription": { + "text": "Empty header" + }, + "fullDescription": { + "text": "Reports sections with an empty header. Section header must contain file path globs in the format similar to one supported by 'gitignore'.", + "markdown": "Reports sections with an empty header. Section header must contain file path globs in the format similar to one supported by `gitignore`." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigEmptyHeader", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigValueCorrectness", + "shortDescription": { + "text": "Invalid property value" + }, + "fullDescription": { + "text": "Reports property values that do not meet value restrictions. For example, some properties may be only “true” or “false”, others contain only integer numbers etc. If a value has a limited set of variants, use code completion to see all of them.", + "markdown": "Reports property values that do not meet value restrictions. For example, some properties may be only \"true\" or \"false\", others contain only integer numbers etc. If a value has a limited set of variants, use code completion to see all of them." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigValueCorrectness", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigVerifyByCore", + "shortDescription": { + "text": "Invalid .editorconfig file" + }, + "fullDescription": { + "text": "Verifies the whole file using the backing EditorConfig core library and reports any failures. Any such failure would prevent EditorConfig properties from being correctly applied.", + "markdown": "Verifies the whole file using the backing EditorConfig core library and reports any failures. Any such failure would prevent EditorConfig properties from being correctly applied." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigVerifyByCore", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigValueUniqueness", + "shortDescription": { + "text": "Non-unique list value" + }, + "fullDescription": { + "text": "Reports duplicates in lists of values.", + "markdown": "Reports duplicates in lists of values." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigValueUniqueness", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigMissingRequiredDeclaration", + "shortDescription": { + "text": "Required declarations are missing" + }, + "fullDescription": { + "text": "Reports properties that miss the required declarations. Refer to the documentation for more information.", + "markdown": "Reports properties that miss the required declarations. Refer to the documentation for more information." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigMissingRequiredDeclaration", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigCharClassLetterRedundancy", + "shortDescription": { + "text": "Duplicate character class letter" + }, + "fullDescription": { + "text": "Reports wildcard patterns in the EditorConfig section that contain a duplicate character in the character class, for example '[aa]'.", + "markdown": "Reports wildcard patterns in the EditorConfig section that contain a duplicate character in the character class, for example `[aa]`." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigCharClassLetterRedundancy", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigKeyCorrectness", + "shortDescription": { + "text": "Unknown property" + }, + "fullDescription": { + "text": "Reports properties that are not supported by the IDE. Note: some “ij” domain properties may require specific language plugins.", + "markdown": "Reports properties that are not supported by the IDE. Note: some \"ij\" domain properties may require specific language plugins." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigKeyCorrectness", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigPatternEnumerationRedundancy", + "shortDescription": { + "text": "Unnecessary braces" + }, + "fullDescription": { + "text": "Reports pattern lists that are either empty '{}' or contain just one pattern, for example '{foo}' in contrast to a list containing multiple patterns, for example '{foo,bar}'. In this case braces are handled as a part of the name. For example, the pattern '*.{a}' will match the file 'my.{a}' but not 'my.a'.", + "markdown": "Reports pattern lists that are either empty `{}` or contain just one pattern, for example `{foo}` in contrast to a list containing multiple patterns, for example `{foo,bar}`. In this case braces are handled as a part of the name. For example, the pattern `*.{a}` will match the file `my.{a}` but not `my.a`." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigPatternEnumerationRedundancy", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigEncoding", + "shortDescription": { + "text": "File encoding doesn't match EditorConfig charset" + }, + "fullDescription": { + "text": "Checks that current file encoding matches the encoding defined in \"charset\" property of .editorconfig file.", + "markdown": "Checks that current file encoding matches the encoding defined in \"charset\" property of .editorconfig file." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigEncoding", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigSpaceInHeader", + "shortDescription": { + "text": "Space in file pattern" + }, + "fullDescription": { + "text": "Reports space characters in wildcard patterns that affect pattern matching. If these characters are not intentional, they should be removed.", + "markdown": "Reports space characters in wildcard patterns that affect pattern matching. If these characters are not intentional, they should be removed." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "EditorConfigSpaceInHeader", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigOptionRedundancy", + "shortDescription": { + "text": "Redundant property" + }, + "fullDescription": { + "text": "Reports properties that are redundant when another applicable section already contains the same property and value. For example: '[*]\nindent_size=4\n[*.java]\nindent_size=4' are both applicable to '*.java' files and define the same 'indent_size' value.", + "markdown": "Reports properties that are redundant when another applicable section already contains the same property and value.\n\n\nFor example:\n\n\n [*]\n indent_size=4\n [*.java]\n indent_size=4\n\nare both applicable to `*.java` files and define the same `indent_size` value." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigOptionRedundancy", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigRootDeclarationCorrectness", + "shortDescription": { + "text": "Unexpected top-level declaration" + }, + "fullDescription": { + "text": "Reports unexpected top-level declarations. Top-level declarations other than “root=true” are not allowed in the EditorConfig file.", + "markdown": "Reports unexpected top-level declarations. Top-level declarations other than \"root=true\" are not allowed in the EditorConfig file." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigRootDeclarationCorrectness", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigReferenceCorrectness", + "shortDescription": { + "text": "Invalid reference" + }, + "fullDescription": { + "text": "Reports identifiers that are either unknown or have a wrong type.", + "markdown": "Reports identifiers that are either unknown or have a wrong type." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigReferenceCorrectness", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigUnusedDeclaration", + "shortDescription": { + "text": "Unused declaration" + }, + "fullDescription": { + "text": "Reports unused declarations. Such declarations can be removed.", + "markdown": "Reports unused declarations. Such declarations can be removed." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigUnusedDeclaration", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigPairAcceptability", + "shortDescription": { + "text": "Unexpected key-value pair" + }, + "fullDescription": { + "text": "Reports key-value pairs that are not allowed in the current context.", + "markdown": "Reports key-value pairs that are not allowed in the current context." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigPairAcceptability", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigPatternRedundancy", + "shortDescription": { + "text": "Duplicate or redundant pattern" + }, + "fullDescription": { + "text": "Reports file patterns that are redundant as there already are other patterns that define the same scope of files or even a broader one. For example, in '[{*.java,*}]' the first '*.java' pattern defines a narrower scope compared to '*'. That is why it is redundant and can be removed.", + "markdown": "Reports file patterns that are redundant as there already are other patterns that define the same scope of files or even a broader one. For example, in `[{*.java,*}]` the first `*.java` pattern defines a narrower scope compared to `*`. That is why it is redundant and can be removed." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigPatternRedundancy", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigNoMatchingFiles", + "shortDescription": { + "text": "No matching files" + }, + "fullDescription": { + "text": "Reports sections with wildcard patterns that do not match any files under the directory in which the '.editorconfig' file is located.", + "markdown": "Reports sections with wildcard patterns that do not match any files under the directory in which the `.editorconfig` file is located." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigNoMatchingFiles", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigUnexpectedComma", + "shortDescription": { + "text": "Unexpected comma" + }, + "fullDescription": { + "text": "Reports commas that cannot be used in the current context. Commas are allowed only as separators for values in lists.", + "markdown": "Reports commas that cannot be used in the current context. Commas are allowed only as separators for values in lists." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigUnexpectedComma", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "com.jetbrains.sh", + "version": "233.14241", + "rules": [ + { + "id": "ShellCheck", + "shortDescription": { + "text": "ShellCheck" + }, + "fullDescription": { + "text": "Reports shell script bugs detected by the integrated ShellCheck static analysis tool.", + "markdown": "Reports shell script bugs detected by the integrated [ShellCheck](https://github.com/koalaman/shellcheck) static analysis tool." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "ShellCheck", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "Shell script", + "index": 2, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "com.intellij", + "version": "233.14241.160", + "rules": [ + { + "id": "XmlHighlighting", + "shortDescription": { + "text": "XML highlighting" + }, + "fullDescription": { + "text": "Reports XML validation problems in the results of a batch code inspection.", + "markdown": "Reports XML validation problems in the results of a batch code inspection." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "XmlHighlighting", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "JsonSchemaDeprecation", + "shortDescription": { + "text": "Deprecated JSON property" + }, + "fullDescription": { + "text": "Reports a deprecated property in a JSON file. Note that deprecation mechanism is not defined in the JSON Schema specification yet, and this inspection uses a non-standard extension 'deprecationMessage'.", + "markdown": "Reports a deprecated property in a JSON file. \nNote that deprecation mechanism is not defined in the JSON Schema specification yet, and this inspection uses a non-standard extension 'deprecationMessage'." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "JsonSchemaDeprecation", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 5, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XmlDuplicatedId", + "shortDescription": { + "text": "Duplicate 'id' attribute" + }, + "fullDescription": { + "text": "Reports a duplicate 'id' attribute in XML.", + "markdown": "Reports a duplicate `id` attribute in XML." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "XmlDuplicatedId", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpDuplicateCharacterInClass", + "shortDescription": { + "text": "Duplicate character in character class" + }, + "fullDescription": { + "text": "Reports duplicate characters inside a RegExp character class. Duplicate characters are unnecessary and can be removed without changing the semantics of the regex. Example: '[aabc]' After the quick-fix is applied: '[abc]'", + "markdown": "Reports duplicate characters inside a RegExp character class. Duplicate characters are unnecessary and can be removed without changing the semantics of the regex.\n\n**Example:**\n\n\n [aabc]\n\nAfter the quick-fix is applied:\n\n\n [abc]\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpDuplicateCharacterInClass", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "JsonSchemaRefReference", + "shortDescription": { + "text": "Unresolved '$ref' and '$schema' references" + }, + "fullDescription": { + "text": "Reports an unresolved '$ref' or '$schema' path in a JSON schema.", + "markdown": "Reports an unresolved `$ref` or `$schema` path in a JSON schema. " + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "JsonSchemaRefReference", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 5, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HtmlUnknownBooleanAttribute", + "shortDescription": { + "text": "Incorrect boolean attribute" + }, + "fullDescription": { + "text": "Reports an HTML non-boolean attribute without a value. Suggests configuring attributes that should not be reported.", + "markdown": "Reports an HTML non-boolean attribute without a value. Suggests configuring attributes that should not be reported." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "HtmlUnknownBooleanAttribute", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XmlInvalidId", + "shortDescription": { + "text": "Unresolved 'id' reference" + }, + "fullDescription": { + "text": "Reports an unresolved 'id' reference in XML.", + "markdown": "Reports an unresolved `id` reference in XML." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "XmlInvalidId", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XmlUnboundNsPrefix", + "shortDescription": { + "text": "Unbound namespace prefix" + }, + "fullDescription": { + "text": "Reports an unbound namespace prefix in XML.", + "markdown": "Reports an unbound namespace prefix in XML." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "XmlUnboundNsPrefix", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RequiredAttributes", + "shortDescription": { + "text": "Missing required attribute" + }, + "fullDescription": { + "text": "Reports a missing mandatory attribute in an XML/HTML tag. Suggests configuring attributes that should not be reported.", + "markdown": "Reports a missing mandatory attribute in an XML/HTML tag. Suggests configuring attributes that should not be reported." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "RequiredAttributes", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "InconsistentLineSeparators", + "shortDescription": { + "text": "Inconsistent line separators" + }, + "fullDescription": { + "text": "Reports files with line separators different from the ones that are specified in the project's settings. For example, the inspection will be triggered if you set the line separator to '\\n' in Settings | Editor | Code Style | Line separator, while the file you are editing uses '\\r\\n' as a line separator. The inspection also warns you about mixed line separators within a file.", + "markdown": "Reports files with line separators different from the ones that are specified in the project's settings.\n\nFor example, the inspection will be triggered if you set the line separator to `\\n` in\n[Settings \\| Editor \\| Code Style \\| Line separator](settings://preferences.sourceCode?Line%20separator),\nwhile the file you are editing uses `\\r\\n` as a line separator.\n\nThe inspection also warns you about mixed line separators within a file." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "InconsistentLineSeparators", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 9, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "ReassignedToPlainText", + "shortDescription": { + "text": "Reassigned to plain text" + }, + "fullDescription": { + "text": "Reports files that were explicitly re-assigned to Plain Text File Type. This association is unnecessary because the platform auto-detects text files by content automatically. You can dismiss this warning by removing the file type association in Settings | Editor | File Types | Text.", + "markdown": "Reports files that were explicitly re-assigned to Plain Text File Type. This association is unnecessary because the platform auto-detects text files by content automatically.\n\nYou can dismiss this warning by removing the file type association\nin **Settings \\| Editor \\| File Types \\| Text**." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "ReassignedToPlainText", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 9, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RedundantSuppression", + "shortDescription": { + "text": "Redundant suppression" + }, + "fullDescription": { + "text": "Reports usages of the following elements that can be safely removed because the inspection they affect is no longer applicable in this context: '@SuppressWarning' annotation, or '// noinspection' line comment, or '/** noinspection */' JavaDoc comment Example: 'public class C {\n // symbol is already private,\n // but annotation is still around\n @SuppressWarnings({\"WeakerAccess\"})\n private boolean CONST = true;\n void f() {\n CONST = false;\n }\n}'", + "markdown": "Reports usages of the following elements that can be safely removed because the inspection they affect is no longer applicable in this context:\n\n* `@SuppressWarning` annotation, or\n* `// noinspection` line comment, or\n* `/** noinspection */` JavaDoc comment\n\nExample:\n\n\n public class C {\n // symbol is already private,\n // but annotation is still around\n @SuppressWarnings({\"WeakerAccess\"})\n private boolean CONST = true;\n void f() {\n CONST = false;\n }\n }\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "RedundantSuppression", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 9, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "ProblematicWhitespace", + "shortDescription": { + "text": "Problematic whitespace" + }, + "fullDescription": { + "text": "Reports the following problems: Tabs used for indentation when the code style is configured to use only spaces. Spaces used for indentation when the code style is configured to use only tabs. Spaces used for indentation and tabs used for alignment when the code style is configured to use smart tabs.", + "markdown": "Reports the following problems:\n\n* Tabs used for indentation when the code style is configured to use only spaces.\n* Spaces used for indentation when the code style is configured to use only tabs.\n* Spaces used for indentation and tabs used for alignment when the code style is configured to use smart tabs." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "ProblematicWhitespace", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 9, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HtmlUnknownTarget", + "shortDescription": { + "text": "Unresolved file in a link" + }, + "fullDescription": { + "text": "Reports an unresolved file in a link.", + "markdown": "Reports an unresolved file in a link." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "HtmlUnknownTarget", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "LongLine", + "shortDescription": { + "text": "Line is longer than allowed by code style" + }, + "fullDescription": { + "text": "Reports lines that are longer than the Hard wrap at parameter specified in Settings | Editor | Code Style | General.", + "markdown": "Reports lines that are longer than the **Hard wrap at** parameter specified in [Settings \\| Editor \\| Code Style \\| General](settings://preferences.sourceCode?Hard%20wrap%20at)." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "LongLine", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 9, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XmlUnusedNamespaceDeclaration", + "shortDescription": { + "text": "Unused schema declaration" + }, + "fullDescription": { + "text": "Reports an unused namespace declaration or location hint in XML.", + "markdown": "Reports an unused namespace declaration or location hint in XML." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "XmlUnusedNamespaceDeclaration", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpRedundantClassElement", + "shortDescription": { + "text": "Redundant '\\d', '[:digit:]', or '\\D' class elements" + }, + "fullDescription": { + "text": "Reports redundant '\\d' or '[:digit:]' that are used in one class with '\\w' or '[:word:]' ('\\D' with '\\W') and can be removed. Example: '[\\w\\d]' After the quick-fix is applied: '[\\w]' New in 2022.2", + "markdown": "Reports redundant `\\d` or `[:digit:]` that are used in one class with `\\w` or `[:word:]` (`\\D` with `\\W`) and can be removed.\n\n**Example:**\n\n\n [\\w\\d]\n\nAfter the quick-fix is applied:\n\n\n [\\w]\n\nNew in 2022.2" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "RegExpRedundantClassElement", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpSimplifiable", + "shortDescription": { + "text": "Regular expression can be simplified" + }, + "fullDescription": { + "text": "Reports regular expressions that can be simplified. Example: '[a] xx* [ah-hz]' After the quick-fix is applied: 'a x+ [ahz]' New in 2022.1", + "markdown": "Reports regular expressions that can be simplified.\n\n**Example:**\n\n\n [a] xx* [ah-hz]\n\nAfter the quick-fix is applied:\n\n\n a x+ [ahz]\n\nNew in 2022.1" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "RegExpSimplifiable", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XmlWrongRootElement", + "shortDescription": { + "text": "Wrong root element" + }, + "fullDescription": { + "text": "Reports a root tag name different from the name specified in the '' tag.", + "markdown": "Reports a root tag name different from the name specified in the `` tag." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "XmlWrongRootElement", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpEmptyAlternationBranch", + "shortDescription": { + "text": "Empty branch in alternation" + }, + "fullDescription": { + "text": "Reports empty branches in a RegExp alternation. An empty branch will only match the empty string, and in most cases that is not what is desired. This inspection will not report a single empty branch at the start or the end of an alternation. Example: '(alpha||bravo)' After the quick-fix is applied: '(alpha|bravo)' New in 2017.2", + "markdown": "Reports empty branches in a RegExp alternation. An empty branch will only match the empty string, and in most cases that is not what is desired. This inspection will not report a single empty branch at the start or the end of an alternation.\n\n**Example:**\n\n\n (alpha||bravo)\n\nAfter the quick-fix is applied:\n\n\n (alpha|bravo)\n\nNew in 2017.2" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpEmptyAlternationBranch", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CheckValidXmlInScriptTagBody", + "shortDescription": { + "text": "Malformed content of 'script' tag" + }, + "fullDescription": { + "text": "Reports contents of 'script' tags that are invalid XML. Example: '' After the quick-fix is applied: ''", + "markdown": "Reports contents of `script` tags that are invalid XML. \n\n**Example:**\n\n\n \n\nAfter the quick-fix is applied:\n\n\n \n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "CheckValidXmlInScriptTagBody", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "Annotator", + "shortDescription": { + "text": "Annotator" + }, + "fullDescription": { + "text": "Reports issues essential to this file (e.g., syntax errors) in the result of a batch code inspection run. These issues are usually always highlighted in the editor and can't be configured, unlike inspections. These options control the scope of checks performed by this inspection: Option \"Report syntax errors\": report parser-related issues. Option \"Report issues from language-specific annotators\": report issues found by annotators configured for the relevant language. See Custom Language Support: Annotators for details. Option \"Report other highlighting problems\": report issues specific to the language of the current file (e.g., type mismatches or unreported exceptions). See Custom Language Support: Highlighting for details.", + "markdown": "Reports issues essential to this file (e.g., syntax errors) in the result of a batch code inspection run. These issues are usually always highlighted in the editor and can't be configured, unlike inspections. These options control the scope of checks performed by this inspection:\n\n* Option \"**Report syntax errors**\": report parser-related issues.\n* Option \"**Report issues from language-specific annotators** \": report issues found by annotators configured for the relevant language. See [Custom Language Support: Annotators](https://plugins.jetbrains.com/docs/intellij/annotator.html) for details.\n* Option \"**Report other highlighting problems** \": report issues specific to the language of the current file (e.g., type mismatches or unreported exceptions). See [Custom Language Support: Highlighting](https://plugins.jetbrains.com/docs/intellij/syntax-highlighting-and-error-highlighting.html#semantic-highlighting) for details." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "Annotator", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 9, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpSuspiciousBackref", + "shortDescription": { + "text": "Suspicious back reference" + }, + "fullDescription": { + "text": "Reports back references that will not be resolvable at runtime. This means that the back reference can never match anything. A back reference will not be resolvable when the group is defined after the back reference, or if the group is defined in a different branch of an alternation. Example of a group defined after its back reference: '\\1(abc)' Example of a group and a back reference in different branches: 'a(b)c|(xy)\\1z' New in 2022.1", + "markdown": "Reports back references that will not be resolvable at runtime. This means that the back reference can never match anything. A back reference will not be resolvable when the group is defined after the back reference, or if the group is defined in a different branch of an alternation.\n\n**Example of a group defined after its back reference:**\n\n\n \\1(abc)\n\n**Example of a group and a back reference in different branches:**\n\n\n a(b)c|(xy)\\1z\n\nNew in 2022.1" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpSuspiciousBackref", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XmlPathReference", + "shortDescription": { + "text": "Unresolved file reference" + }, + "fullDescription": { + "text": "Reports an unresolved file reference in XML.", + "markdown": "Reports an unresolved file reference in XML." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "XmlPathReference", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpSingleCharAlternation", + "shortDescription": { + "text": "Single character alternation" + }, + "fullDescription": { + "text": "Reports single char alternation in a RegExp. It is simpler to use a character class instead. This may also provide better matching performance. Example: 'a|b|c|d' After the quick-fix is applied: '[abcd]' New in 2017.1", + "markdown": "Reports single char alternation in a RegExp. It is simpler to use a character class instead. This may also provide better matching performance.\n\n**Example:**\n\n\n a|b|c|d\n\nAfter the quick-fix is applied:\n\n\n [abcd]\n\n\nNew in 2017.1" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpSingleCharAlternation", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpUnnecessaryNonCapturingGroup", + "shortDescription": { + "text": "Unnecessary non-capturing group" + }, + "fullDescription": { + "text": "Reports unnecessary non-capturing groups, which have no influence on the match result. Example: 'Everybody be cool, (?:this) is a robbery!' After the quick-fix is applied: 'Everybody be cool, this is a robbery!' New in 2021.1", + "markdown": "Reports unnecessary non-capturing groups, which have no influence on the match result.\n\n**Example:**\n\n\n Everybody be cool, (?:this) is a robbery!\n\nAfter the quick-fix is applied:\n\n\n Everybody be cool, this is a robbery!\n\nNew in 2021.1" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpUnnecessaryNonCapturingGroup", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "TodoComment", + "shortDescription": { + "text": "TODO comment" + }, + "fullDescription": { + "text": "Reports TODO comments in your code. You can configure the format for TODO comments in Settings | Editor | TODO. Enable the Only warn on TODO comments without any details option to only warn on empty TODO comments, that don't provide any description on the task that should be done. Disable to report all TODO comments.", + "markdown": "Reports **TODO** comments in your code.\n\nYou can configure the format for **TODO** comments in [Settings \\| Editor \\| TODO](settings://preferences.toDoOptions).\n\nEnable the **Only warn on TODO comments without any details** option to only warn on empty TODO comments, that\ndon't provide any description on the task that should be done. Disable to report all TODO comments." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "TodoComment", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 9, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HtmlUnknownAttribute", + "shortDescription": { + "text": "Unknown attribute" + }, + "fullDescription": { + "text": "Reports an unknown HTML attribute. Suggests configuring attributes that should not be reported.", + "markdown": "Reports an unknown HTML attribute. Suggests configuring attributes that should not be reported." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "HtmlUnknownAttribute", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CheckTagEmptyBody", + "shortDescription": { + "text": "Empty element content" + }, + "fullDescription": { + "text": "Reports XML elements without contents. Example: '\n \n ' After the quick-fix is applied: '\n \n '", + "markdown": "Reports XML elements without contents.\n\n**Example:**\n\n\n \n \n \n\nAfter the quick-fix is applied:\n\n\n \n \n \n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "CheckTagEmptyBody", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpRedundantEscape", + "shortDescription": { + "text": "Redundant character escape" + }, + "fullDescription": { + "text": "Reports redundant character escape sequences that can be replaced with unescaped characters preserving the meaning. Many escape sequences that are necessary outside of a character class are redundant inside square brackets '[]' of a character class. Although unescaped opening curly braces '{' outside of character classes are allowed in some dialects (JavaScript, Python, and so on), it can cause confusion and make the pattern less portable, because there are dialects that require escaping curly braces as characters. For this reason the inspection does not report escaped opening curly braces. Example: '\\-\\;[\\.]' After the quick-fix is applied: '-;[.]' The Ignore escaped closing brackets '}' and ']' option specifies whether to report '\\}' and '\\]' outside of a character class when they are allowed to be unescaped by the RegExp dialect. New in 2017.3", + "markdown": "Reports redundant character escape sequences that can be replaced with unescaped characters preserving the meaning. Many escape sequences that are necessary outside of a character class are redundant inside square brackets `[]` of a character class.\n\n\nAlthough unescaped opening curly braces `{` outside of character classes are allowed in some dialects (JavaScript, Python, and so on),\nit can cause confusion and make the pattern less portable, because there are dialects that require escaping curly braces as characters.\nFor this reason the inspection does not report escaped opening curly braces.\n\n**Example:**\n\n\n \\-\\;[\\.]\n\nAfter the quick-fix is applied:\n\n\n -;[.]\n\n\nThe **Ignore escaped closing brackets '}' and '\\]'** option specifies whether to report `\\}` and `\\]` outside of a character class\nwhen they are allowed to be unescaped by the RegExp dialect.\n\nNew in 2017.3" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpRedundantEscape", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "Json5StandardCompliance", + "shortDescription": { + "text": "Compliance with JSON5 standard" + }, + "fullDescription": { + "text": "Reports inconsistency with the language specification in a JSON5 file.", + "markdown": "Reports inconsistency with [the language specification](http://json5.org) in a JSON5 file." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "Json5StandardCompliance", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 5, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "JsonDuplicatePropertyKeys", + "shortDescription": { + "text": "Duplicate keys in object literals" + }, + "fullDescription": { + "text": "Reports a duplicate key in an object literal.", + "markdown": "Reports a duplicate key in an object literal." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "JsonDuplicatePropertyKeys", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 5, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "UnresolvedReference", + "shortDescription": { + "text": "Unresolved reference" + }, + "fullDescription": { + "text": "Reports an unresolved reference to a named pattern ('define') in RELAX-NG files that use XML syntax. Suggests creating the referenced 'define' element.", + "markdown": "Reports an unresolved reference to a named pattern (`define`) in RELAX-NG files that use XML syntax. Suggests creating the referenced `define` element." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "UnresolvedReference", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "RELAX NG", + "index": 11, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HtmlMissingClosingTag", + "shortDescription": { + "text": "Missing closing tag" + }, + "fullDescription": { + "text": "Reports an HTML element without a closing tag. Some coding styles require that HTML elements have closing tags even where this is optional. Example: '\n \n

Behold!\n \n ' After the quick-fix is applied: '\n \n

Behold!

\n \n '", + "markdown": "Reports an HTML element without a closing tag. Some coding styles require that HTML elements have closing tags even where this is optional.\n\n**Example:**\n\n\n \n \n

Behold!\n \n \n\nAfter the quick-fix is applied:\n\n\n \n \n

Behold!

\n \n \n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "HtmlMissingClosingTag", + "ideaSeverity": "INFORMATION", + "qodanaSeverity": "Info" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpRedundantNestedCharacterClass", + "shortDescription": { + "text": "Redundant nested character class" + }, + "fullDescription": { + "text": "Reports unnecessary nested character classes. Example: '[a-c[x-z]]' After the quick-fix is applied: '[a-cx-z]' New in 2020.2", + "markdown": "Reports unnecessary nested character classes.\n\n**Example:**\n\n\n [a-c[x-z]]\n\nAfter the quick-fix is applied:\n\n\n [a-cx-z]\n\nNew in 2020.2" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpRedundantNestedCharacterClass", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XmlDeprecatedElement", + "shortDescription": { + "text": "Deprecated symbol" + }, + "fullDescription": { + "text": "Reports a deprecated XML element or attribute. Symbols can be marked by XML comment or documentation tag with text 'deprecated'.", + "markdown": "Reports a deprecated XML element or attribute.\n\nSymbols can be marked by XML comment or documentation tag with text 'deprecated'." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "XmlDeprecatedElement", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CustomRegExpInspection", + "shortDescription": { + "text": "Custom RegExp inspection" + }, + "fullDescription": { + "text": "Custom Regex Inspection", + "markdown": "Custom Regex Inspection" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "CustomRegExpInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "IncorrectFormatting", + "shortDescription": { + "text": "Incorrect formatting" + }, + "fullDescription": { + "text": "Reports formatting issues that appear if your code doesn't follow your project's code style settings. This inspection is not compatible with languages that require third-party formatters for code formatting, for example, Go or C with CLangFormat enabled.", + "markdown": "Reports formatting issues that appear if your code doesn't\nfollow your project's code style settings.\n\n\nThis inspection is not compatible with languages that require\nthird-party formatters for code formatting, for example, Go or\nC with CLangFormat enabled." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "IncorrectFormatting", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 9, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HtmlWrongAttributeValue", + "shortDescription": { + "text": "Wrong attribute value" + }, + "fullDescription": { + "text": "Reports an incorrect HTML attribute value.", + "markdown": "Reports an incorrect HTML attribute value." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "HtmlWrongAttributeValue", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XmlDefaultAttributeValue", + "shortDescription": { + "text": "Redundant attribute with default value" + }, + "fullDescription": { + "text": "Reports a redundant assignment of the default value to an XML attribute.", + "markdown": "Reports a redundant assignment of the default value to an XML attribute." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "XmlDefaultAttributeValue", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpOctalEscape", + "shortDescription": { + "text": "Octal escape" + }, + "fullDescription": { + "text": "Reports octal escapes, which are easily confused with back references. Use hexadecimal escapes to avoid confusion. Example: '\\07' After the quick-fix is applied: '\\x07' New in 2017.1", + "markdown": "Reports octal escapes, which are easily confused with back references. Use hexadecimal escapes to avoid confusion.\n\n**Example:**\n\n\n \\07\n\nAfter the quick-fix is applied:\n\n\n \\x07\n\nNew in 2017.1" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "RegExpOctalEscape", + "ideaSeverity": "INFORMATION", + "qodanaSeverity": "Info" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HtmlExtraClosingTag", + "shortDescription": { + "text": "Redundant closing tag" + }, + "fullDescription": { + "text": "Reports redundant closing tags on empty elements, for example, 'img' or 'br'. Example: '\n \n

\n \n ' After the quick-fix is applied: '\n \n
\n \n '", + "markdown": "Reports redundant closing tags on empty elements, for example, `img` or `br`.\n\n**Example:**\n\n\n \n \n

\n \n \n\nAfter the quick-fix is applied:\n\n\n \n \n
\n \n \n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "HtmlExtraClosingTag", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "UnusedDefine", + "shortDescription": { + "text": "Unused define" + }, + "fullDescription": { + "text": "Reports an unused named pattern ('define') in a RELAX-NG file (XML or Compact Syntax). 'define' elements that are used through an include in another file are ignored.", + "markdown": "Reports an unused named pattern (`define`) in a RELAX-NG file (XML or Compact Syntax). `define` elements that are used through an include in another file are ignored." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "UnusedDefine", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RELAX NG", + "index": 11, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HtmlUnknownAnchorTarget", + "shortDescription": { + "text": "Unresolved fragment in a link" + }, + "fullDescription": { + "text": "Reports an unresolved last part of an URL after the '#' sign.", + "markdown": "Reports an unresolved last part of an URL after the `#` sign." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "HtmlUnknownAnchorTarget", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "JsonSchemaCompliance", + "shortDescription": { + "text": "Compliance with JSON schema" + }, + "fullDescription": { + "text": "Reports inconsistence between a JSON file and the JSON schema that is assigned to it.", + "markdown": "Reports inconsistence between a JSON file and the [JSON schema](https://json-schema.org) that is assigned to it. " + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "JsonSchemaCompliance", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 5, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpUnexpectedAnchor", + "shortDescription": { + "text": "Begin or end anchor in unexpected position" + }, + "fullDescription": { + "text": "Reports '^' or '\\A' anchors not at the beginning of the pattern and '$', '\\Z' or '\\z' anchors not at the end of the pattern. In the wrong position these RegExp anchors prevent the pattern from matching anything. In case of the '^' and '$' anchors, most likely the literal character was meant and the escape forgotten. Example: '(Price $10)' New in 2018.1", + "markdown": "Reports `^` or `\\A` anchors not at the beginning of the pattern and `$`, `\\Z` or `\\z` anchors not at the end of the pattern. In the wrong position these RegExp anchors prevent the pattern from matching anything. In case of the `^` and `$` anchors, most likely the literal character was meant and the escape forgotten.\n\n**Example:**\n\n\n (Price $10)\n\n\nNew in 2018.1" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpUnexpectedAnchor", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EmptyDirectory", + "shortDescription": { + "text": "Empty directory" + }, + "fullDescription": { + "text": "Reports empty directories. Available only from Code | Inspect Code or Code | Analyze Code | Run Inspection by Name and isn't reported in the editor. Use the Only report empty directories located under a source folder option to have only directories under source roots reported.", + "markdown": "Reports empty directories.\n\nAvailable only from **Code \\| Inspect Code** or\n**Code \\| Analyze Code \\| Run Inspection by Name** and isn't reported in the editor.\n\nUse the **Only report empty directories located under a source folder** option to have only directories under source\nroots reported." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EmptyDirectory", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 9, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpAnonymousGroup", + "shortDescription": { + "text": "Anonymous capturing group or numeric back reference" + }, + "fullDescription": { + "text": "Reports anonymous capturing groups and numeric back references in a RegExp. These are only reported when the RegExp dialect supports named group and named group references. Named groups and named back references improve code readability and are recommended to use instead. When a capture is not needed, matching can be more performant and use less memory by using a non-capturing group, i.e. '(?:xxx)' instead of '(xxx)'. Example: '(\\d\\d\\d\\d)\\1' A better regex pattern could look like this: '(?\\d\\d\\d\\d)\\k' New in 2017.2", + "markdown": "Reports anonymous capturing groups and numeric back references in a RegExp. These are only reported when the RegExp dialect supports named group and named group references. Named groups and named back references improve code readability and are recommended to use instead. When a capture is not needed, matching can be more performant and use less memory by using a non-capturing group, i.e. `(?:xxx)` instead of `(xxx)`.\n\n**Example:**\n\n\n (\\d\\d\\d\\d)\\1\n\nA better regex pattern could look like this:\n\n\n (?\\d\\d\\d\\d)\\k\n\nNew in 2017.2" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpAnonymousGroup", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CheckDtdRefs", + "shortDescription": { + "text": "Unresolved DTD reference" + }, + "fullDescription": { + "text": "Reports inconsistency in a DTD-specific reference, for example, in a reference to an XML entity or to a DTD element declaration. Works in DTD an XML files.", + "markdown": "Reports inconsistency in a DTD-specific reference, for example, in a reference to an XML entity or to a DTD element declaration. Works in DTD an XML files." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "CheckDtdRefs", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "SpellCheckingInspection", + "shortDescription": { + "text": "Typo" + }, + "fullDescription": { + "text": "Reports typos and misspellings in your code, comments, and literals and fixes them with one click.", + "markdown": "Reports typos and misspellings in your code, comments, and literals and fixes them with one click." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "SpellCheckingInspection", + "ideaSeverity": "TYPO", + "qodanaSeverity": "Low" + } + }, + "relationships": [ + { + "target": { + "id": "Proofreading", + "index": 12, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CheckXmlFileWithXercesValidator", + "shortDescription": { + "text": "Failed external validation" + }, + "fullDescription": { + "text": "Reports a discrepancy in an XML file with the specified DTD or schema detected by the Xerces validator.", + "markdown": "Reports a discrepancy in an XML file with the specified DTD or schema detected by the Xerces validator." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "CheckXmlFileWithXercesValidator", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "NonAsciiCharacters", + "shortDescription": { + "text": "Non-ASCII characters" + }, + "fullDescription": { + "text": "Reports code elements that use non-ASCII symbols in an unusual context. Example: Non-ASCII characters used in identifiers, strings, or comments. Identifiers written in different languages, such as 'myСollection' with the letter 'C' written in Cyrillic. Comments or strings containing Unicode symbols, such as long dashes and arrows.", + "markdown": "Reports code elements that use non-ASCII symbols in an unusual context.\n\nExample:\n\n* Non-ASCII characters used in identifiers, strings, or comments.\n* Identifiers written in different languages, such as `my`**С**`ollection` with the letter **C** written in Cyrillic.\n* Comments or strings containing Unicode symbols, such as long dashes and arrows." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "NonAsciiCharacters", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Internationalization", + "index": 13, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HtmlUnknownTag", + "shortDescription": { + "text": "Unknown tag" + }, + "fullDescription": { + "text": "Reports an unknown HTML tag. Suggests configuring tags that should not be reported.", + "markdown": "Reports an unknown HTML tag. Suggests configuring tags that should not be reported." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "HtmlUnknownTag", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpEscapedMetaCharacter", + "shortDescription": { + "text": "Escaped meta character" + }, + "fullDescription": { + "text": "Reports escaped meta characters. Some RegExp coding styles specify that meta characters should be placed inside a character class, to make the regular expression easier to understand. This inspection does not warn about the meta character '[', ']' and '^', because those would need additional escaping inside a character class. Example: '\\d+\\.\\d+' After the quick-fix is applied: '\\d+[.]\\d+' New in 2017.1", + "markdown": "Reports escaped meta characters. Some RegExp coding styles specify that meta characters should be placed inside a character class, to make the regular expression easier to understand. This inspection does not warn about the meta character `[`, `]` and `^`, because those would need additional escaping inside a character class.\n\n**Example:**\n\n\n \\d+\\.\\d+\n\nAfter the quick-fix is applied:\n\n\n \\d+[.]\\d+\n\nNew in 2017.1" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "RegExpEscapedMetaCharacter", + "ideaSeverity": "INFORMATION", + "qodanaSeverity": "Info" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "LossyEncoding", + "shortDescription": { + "text": "Lossy encoding" + }, + "fullDescription": { + "text": "Reports characters that cannot be displayed because of the current document encoding. Examples: If you type international characters in a document with the US-ASCII charset, some characters will be lost on save. If you load a UTF-8-encoded file using the ISO-8859-1 one-byte charset, some characters will be displayed incorrectly. You can fix this by changing the file encoding either by specifying the encoding directly in the file, e.g. by editing 'encoding=' attribute in the XML prolog of XML file, or by changing the corresponding options in Settings | Editor | File Encodings.", + "markdown": "Reports characters that cannot be displayed because of the current document encoding.\n\nExamples:\n\n* If you type international characters in a document with the **US-ASCII** charset, some characters will be lost on save.\n* If you load a **UTF-8** -encoded file using the **ISO-8859-1** one-byte charset, some characters will be displayed incorrectly.\n\nYou can fix this by changing the file encoding\neither by specifying the encoding directly in the file, e.g. by editing `encoding=` attribute in the XML prolog of XML file,\nor by changing the corresponding options in **Settings \\| Editor \\| File Encodings**." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "LossyEncoding", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Internationalization", + "index": 13, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpDuplicateAlternationBranch", + "shortDescription": { + "text": "Duplicate branch in alternation" + }, + "fullDescription": { + "text": "Reports duplicate branches in a RegExp alternation. Duplicate branches slow down matching and obscure the intent of the expression. Example: '(alpha|bravo|charlie|alpha)' After the quick-fix is applied: '(alpha|bravo|charlie)' New in 2017.1", + "markdown": "Reports duplicate branches in a RegExp alternation. Duplicate branches slow down matching and obscure the intent of the expression.\n\n**Example:**\n\n\n (alpha|bravo|charlie|alpha)\n\nAfter the quick-fix is applied:\n\n\n (alpha|bravo|charlie)\n\nNew in 2017.1" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpDuplicateAlternationBranch", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpRepeatedSpace", + "shortDescription": { + "text": "Consecutive spaces" + }, + "fullDescription": { + "text": "Reports multiple consecutive spaces in a RegExp. Because spaces are not visible by default, it can be hard to see how many spaces are required. The RegExp can be made more clear by replacing the consecutive spaces with a single space and a counted quantifier. Example: '( )' After the quick-fix is applied: '( {5})' New in 2017.1", + "markdown": "Reports multiple consecutive spaces in a RegExp. Because spaces are not visible by default, it can be hard to see how many spaces are required. The RegExp can be made more clear by replacing the consecutive spaces with a single space and a counted quantifier.\n\n**Example:**\n\n\n ( )\n\nAfter the quick-fix is applied:\n\n\n ( {5})\n\n\nNew in 2017.1" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpRepeatedSpace", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "IgnoreFileDuplicateEntry", + "shortDescription": { + "text": "Ignore file duplicates" + }, + "fullDescription": { + "text": "Reports duplicate entries (patterns) in the ignore file (e.g. .gitignore, .hgignore). Duplicate entries in these files are redundant and can be removed. Example: '# Output directories\n /out/\n /target/\n /out/'", + "markdown": "Reports duplicate entries (patterns) in the ignore file (e.g. .gitignore, .hgignore). Duplicate entries in these files are redundant and can be removed.\n\nExample:\n\n\n # Output directories\n /out/\n /target/\n /out/\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "IgnoreFileDuplicateEntry", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Version control", + "index": 15, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "JsonStandardCompliance", + "shortDescription": { + "text": "Compliance with JSON standard" + }, + "fullDescription": { + "text": "Reports the following discrepancies of a JSON file with the language specification: A line or block comment (configurable). Multiple top-level values (expect for JSON Lines files, configurable for others). A trailing comma in an object or array (configurable). A single quoted string. A property key is a not a double quoted strings. A NaN or Infinity/-Infinity numeric value as a floating point literal (configurable).", + "markdown": "Reports the following discrepancies of a JSON file with [the language specification](https://tools.ietf.org/html/rfc7159):\n\n* A line or block comment (configurable).\n* Multiple top-level values (expect for JSON Lines files, configurable for others).\n* A trailing comma in an object or array (configurable).\n* A single quoted string.\n* A property key is a not a double quoted strings.\n* A NaN or Infinity/-Infinity numeric value as a floating point literal (configurable)." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "JsonStandardCompliance", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 5, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CheckEmptyScriptTag", + "shortDescription": { + "text": "Empty tag" + }, + "fullDescription": { + "text": "Reports empty tags that do not work in some browsers. Example: '\n \n '", + "markdown": "Reports empty tags that do not work in some browsers.\n\n**Example:**\n\n\n \n \n \n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "CheckEmptyScriptTag", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "org.jetbrains.plugins.yaml", + "version": "233.14241", + "rules": [ + { + "id": "YAMLRecursiveAlias", + "shortDescription": { + "text": "Recursive alias" + }, + "fullDescription": { + "text": "Reports recursion in YAML aliases. Alias can't be recursive and be used inside the data referenced by a corresponding anchor. Example: 'some_key: &some_anchor\n sub_key1: value1\n sub_key2: *some_anchor'", + "markdown": "Reports recursion in YAML aliases.\n\nAlias can't be recursive and be used inside the data referenced by a corresponding anchor.\n\n**Example:**\n\n\n some_key: &some_anchor\n sub_key1: value1\n sub_key2: *some_anchor\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "YAMLRecursiveAlias", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "YAML", + "index": 4, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "YAMLSchemaValidation", + "shortDescription": { + "text": "Validation by JSON Schema" + }, + "fullDescription": { + "text": "Reports inconsistencies between a YAML file and a JSON Schema if the schema is specified. Scheme example: '{\n \"properties\": {\n \"SomeNumberProperty\": {\n \"type\": \"number\"\n }\n }\n }' The following is an example with the corresponding warning: 'SomeNumberProperty: hello world'", + "markdown": "Reports inconsistencies between a YAML file and a JSON Schema if the schema is specified.\n\n**Scheme example:**\n\n\n {\n \"properties\": {\n \"SomeNumberProperty\": {\n \"type\": \"number\"\n }\n }\n }\n\n**The following is an example with the corresponding warning:**\n\n\n SomeNumberProperty: hello world\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "YAMLSchemaValidation", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "YAML", + "index": 4, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "YAMLIncompatibleTypes", + "shortDescription": { + "text": "Suspicious type mismatch" + }, + "fullDescription": { + "text": "Reports a mismatch between a scalar value type in YAML file and types of the values in the similar positions. Example: 'myElements:\n - value1\n - value2\n - false # <- reported, because it is a boolean value, while other values are strings'", + "markdown": "Reports a mismatch between a scalar value type in YAML file and types of the values in the similar positions.\n\n**Example:**\n\n\n myElements:\n - value1\n - value2\n - false # <- reported, because it is a boolean value, while other values are strings\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "YAMLIncompatibleTypes", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "YAML", + "index": 4, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "YAMLDuplicatedKeys", + "shortDescription": { + "text": "Duplicated YAML keys" + }, + "fullDescription": { + "text": "Reports duplicated keys in YAML files. Example: 'same_key: some value\n same_key: another value'", + "markdown": "Reports duplicated keys in YAML files.\n\n**Example:**\n\n\n same_key: some value\n same_key: another value\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "YAMLDuplicatedKeys", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "YAML", + "index": 4, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "YAMLUnusedAnchor", + "shortDescription": { + "text": "Unused anchor" + }, + "fullDescription": { + "text": "Reports unused anchors. Example: 'some_key: &some_anchor\n key1: value1'", + "markdown": "Reports unused anchors.\n\n**Example:**\n\n\n some_key: &some_anchor\n key1: value1\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "YAMLUnusedAnchor", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "YAML", + "index": 4, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "YAMLUnresolvedAlias", + "shortDescription": { + "text": "Unresolved alias" + }, + "fullDescription": { + "text": "Reports unresolved aliases in YAML files. Example: 'some_key: *unknown_alias'", + "markdown": "Reports unresolved aliases in YAML files.\n\n**Example:**\n\n\n some_key: *unknown_alias\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "YAMLUnresolvedAlias", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "YAML", + "index": 4, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "YAMLSchemaDeprecation", + "shortDescription": { + "text": "Deprecated YAML key" + }, + "fullDescription": { + "text": "Reports deprecated keys in YAML files. Deprecation is checked only if there exists a JSON schema associated with the corresponding YAML file. Note that the deprecation mechanism is not defined in the JSON Schema specification yet, and this inspection uses a non-standard 'deprecationMessage' extension. Scheme deprecation example: '{\n \"properties\": {\n \"SomeDeprecatedProperty\": {\n \"deprecationMessage\": \"Baz\",\n \"description\": \"Foo bar\"\n }\n }\n }' The following is an example with the corresponding warning: 'SomeDeprecatedProperty: some value'", + "markdown": "Reports deprecated keys in YAML files.\n\nDeprecation is checked only if there exists a JSON schema associated with the corresponding YAML file.\n\nNote that the deprecation mechanism is not defined in the JSON Schema specification yet,\nand this inspection uses a non-standard `deprecationMessage` extension.\n\n**Scheme deprecation example:**\n\n\n {\n \"properties\": {\n \"SomeDeprecatedProperty\": {\n \"deprecationMessage\": \"Baz\",\n \"description\": \"Foo bar\"\n }\n }\n }\n\n**The following is an example with the corresponding warning:**\n\n\n SomeDeprecatedProperty: some value\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "YAMLSchemaDeprecation", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "YAML", + "index": 4, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "com.intellij.properties", + "version": "233.14241", + "rules": [ + { + "id": "DuplicatePropertyInspection", + "shortDescription": { + "text": "Duplicate property" + }, + "fullDescription": { + "text": "Reports duplicate property keys with different values, duplicate keys, or duplicate property values. Example: 'property1=value;\nproperty2=value;' The Options list allows selecting the area in which the inspection should search for duplicates.", + "markdown": "Reports duplicate property keys with different values, duplicate keys, or duplicate property values.\n\nExample:\n\n\n property1=value;\n property2=value;\n\nThe **Options** list allows selecting the area in which the inspection should search for duplicates." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "DuplicatePropertyInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Properties files", + "index": 7, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "UseEllipsisInPropertyInspection", + "shortDescription": { + "text": "Three dot characters instead of the ellipsis" + }, + "fullDescription": { + "text": "Reports three \"dot\" characters which are used instead of the ellipsis character for UTF-8 properties files.", + "markdown": "Reports three \"dot\" characters which are used instead of the ellipsis character for UTF-8 properties files." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "UseEllipsisInPropertyInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Properties files", + "index": 7, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "AlphaUnsortedPropertiesFile", + "shortDescription": { + "text": "Properties file or resource bundle is alphabetically unsorted" + }, + "fullDescription": { + "text": "Reports alphabetically unsorted resource bundles or .properties files.", + "markdown": "Reports alphabetically unsorted resource bundles or .properties files." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "AlphaUnsortedPropertiesFile", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Properties files", + "index": 7, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "TrailingSpacesInProperty", + "shortDescription": { + "text": "Trailing spaces in property" + }, + "fullDescription": { + "text": "Reports properties whose keys or values end with a whitespace.", + "markdown": "Reports properties whose keys or values end with a whitespace." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "TrailingSpacesInProperty", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Properties files", + "index": 7, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "UnusedProperty", + "shortDescription": { + "text": "Unused property" + }, + "fullDescription": { + "text": "Reports properties that are not referenced outside of the .properties file they are contained in.", + "markdown": "Reports properties that are not referenced outside of the .properties file they are contained in." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "UnusedProperty", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Properties files", + "index": 7, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "WrongPropertyKeyValueDelimiter", + "shortDescription": { + "text": "Property key/value delimiter doesn't match code style settings" + }, + "fullDescription": { + "text": "Reports properties in which key or value delimiters do not match code style settings.", + "markdown": "Reports properties in which key or value delimiters do not match code style settings." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "WrongPropertyKeyValueDelimiter", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Properties files", + "index": 7, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "org.intellij.qodana", + "version": "233.14241", + "rules": [ + { + "id": "QodanaSanity", + "shortDescription": { + "text": "Sanity" + }, + "fullDescription": { + "text": "Reports issues essential to this file like syntax errors, unresolved methods and variables, etc...", + "markdown": "Reports issues essential to this file like syntax errors, unresolved methods and variables, etc..." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "QodanaSanity", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "Qodana", + "index": 10, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "org.intellij.intelliLang", + "version": "233.14241", + "rules": [ + { + "id": "InjectedReferences", + "shortDescription": { + "text": "Injected references" + }, + "fullDescription": { + "text": "Reports unresolved references injected by Language Injections. Example: '@Language(\"file-reference\")\n String fileName = \"/home/user/nonexistent.file\"; // highlighted if file doesn't exist'", + "markdown": "Reports unresolved references injected by [Language Injections](https://www.jetbrains.com/help/idea/using-language-injections.html).\n\nExample:\n\n\n @Language(\"file-reference\")\n String fileName = \"/home/user/nonexistent.file\"; // highlighted if file doesn't exist\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "InjectedReferences", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 9, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "tanvd.grazi", + "version": "233.14241", + "rules": [ + { + "id": "LanguageDetectionInspection", + "shortDescription": { + "text": "Natural language detection" + }, + "fullDescription": { + "text": "Detects natural languages and suggests enabling corresponding grammar and spelling checks.", + "markdown": "Detects natural languages and suggests enabling corresponding grammar and spelling checks." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "LanguageDetectionInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Proofreading", + "index": 12, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GrazieInspection", + "shortDescription": { + "text": "Grammar" + }, + "fullDescription": { + "text": "Reports grammar mistakes in your text. You can configure the inspection in Settings | Editor | Natural Languages | Grammar.", + "markdown": "Reports grammar mistakes in your text. You can configure the inspection in [Settings \\| Editor \\| Natural Languages \\| Grammar](settings://reference.settingsdialog.project.grazie)." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "GrazieInspection", + "ideaSeverity": "GRAMMAR_ERROR", + "qodanaSeverity": "Info" + } + }, + "relationships": [ + { + "target": { + "id": "Proofreading", + "index": 12, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "org.toml.lang", + "version": "233.14241", + "rules": [ + { + "id": "TomlUnresolvedReference", + "shortDescription": { + "text": "Unresolved reference" + }, + "fullDescription": { + "text": "Reports unresolved references in TOML files.", + "markdown": "Reports unresolved references in TOML files." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "TomlUnresolvedReference", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "TOML", + "index": 14, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + } + ] + }, + "invocations": [ + { + "startTimeUtc": "2024-01-30T05:06:47.002120052Z", + "exitCode": 0, + "toolExecutionNotifications": [ + { + "message": { + "text": "Analysis by sanity inspection \"Unresolved references\" was suspended due to high number of problems." + }, + "level": "error", + "timeUtc": "2024-01-30T05:07:18.917424873Z", + "properties": { + "qodanaKind": "sanityFailure" + } + } + ], + "executionSuccessful": true + } + ], + "language": "en-US", + "versionControlProvenance": [ + { + "repositoryUri": "https://github.com/Student-Labs-2023/BoilerPoint.git", + "revisionId": "d771aa19bdcc5dfb7b9f6f605ba3d5c94b11f796", + "branch": "refs/heads/main", + "properties": { + "repoUrl": "https://github.com/Student-Labs-2023/BoilerPoint.git", + "lastAuthorName": "Vladislav Mikhaylyuck", + "vcsType": "Git", + "lastAuthorEmail": "39564937+whitehodok@users.noreply.github.com" + } + } + ], + "results": [ + { + "ruleId": "PyBroadExceptionInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Too broad exception clause", + "markdown": "Too broad exception clause" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 44, + "startColumn": 9, + "charOffset": 2524, + "charLength": 6, + "snippet": { + "text": "except" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 42, + "startColumn": 1, + "charOffset": 2180, + "charLength": 688, + "snippet": { + "text": " else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"\n except:\n if user[\"gender\"]:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3d5d518642ddd9c1309987a256c8f42c7fc798e03c6e9a1a8fa1cb5a5b5efc77" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyBroadExceptionInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Too broad exception clause", + "markdown": "Too broad exception clause" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 271, + "startColumn": 12, + "charOffset": 10222, + "charLength": 9, + "snippet": { + "text": "Exception" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 269, + "startColumn": 1, + "charOffset": 10057, + "charLength": 351, + "snippet": { + "text": " await bot.send_message(chat_id, \"Введите количество вопросов в коллекции:\")\r\n await EventMakerPanel.taskmenu_collection_counterwait.set()\r\n except Exception as e:\r\n await bot.send_message(chat_id, \"Произошла ошибка, отправьте пожалуйста фотографию в хорошем качестве.\")\r\n await EventMakerPanel.taskmenu_photowait.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6cf764b10a5d1e0490894d276b4e554eb2752b1ea0d95c3430fca2fa444b2116" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyBroadExceptionInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Too broad exception clause", + "markdown": "Too broad exception clause" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 79, + "startColumn": 9, + "charOffset": 5431, + "charLength": 6, + "snippet": { + "text": "except" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 77, + "startColumn": 1, + "charOffset": 5087, + "charLength": 688, + "snippet": { + "text": " else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"\n except:\n if user[\"gender\"]:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "75d0e4cd1d1300775faed7fa66445359fb3d796e71b6403cfa5587ebcd2904ae" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyBroadExceptionInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Too broad exception clause", + "markdown": "Too broad exception clause" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1651, + "startColumn": 5, + "charOffset": 75696, + "charLength": 6, + "snippet": { + "text": "except" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1649, + "startColumn": 1, + "charOffset": 75547, + "charLength": 306, + "snippet": { + "text": " await bot.send_message(chat_id, \"Заявка успешно отправлена! В ближайшее время с вами свяжется администратор.\", reply_markup=userhelp)\r\n\r\n except:\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, \"Извините, произошла ошибка при отправке заявки\", reply_markup=userhelp)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a9dd13878d304441b9cdb06fb23731a81baf7e729a252f173f4a79d3873b75cf" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyBroadExceptionInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Too broad exception clause", + "markdown": "Too broad exception clause" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1066, + "startColumn": 12, + "charOffset": 47585, + "charLength": 9, + "snippet": { + "text": "Exception" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1064, + "startColumn": 1, + "charOffset": 47426, + "charLength": 339, + "snippet": { + "text": " await bot.send_message(chat_id,\"Введите количество вопросов в коллекции:\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n except Exception as e:\r\n await bot.send_message(chat_id,\"Произошла ошибка, отправьте пожалуйста фотографию в хорошем качестве.\")\r\n await AdminPanel.taskmenu_photowait.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c6e13dc7cff95b755a6ec9a74971534cc619b277eb6cb7dd8acf6c94616e2659" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyChainedComparisonsInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Simplify chained comparison", + "markdown": "Simplify chained comparison" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1236, + "startColumn": 8, + "charOffset": 55410, + "charLength": 69, + "snippet": { + "text": "name.replace(\" \", \"\").isalpha() and len(name) < 40 and len(name) >= 5" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1234, + "startColumn": 1, + "charOffset": 55345, + "charLength": 250, + "snippet": { + "text": " if FIO[word][0].istitle():\r\n cnt += 1\r\n if name.replace(\" \", \"\").isalpha() and len(name) < 40 and len(name) >= 5 and detector(name) == False and cnt == len(FIO):\r\n user = users.get(chat_id)\r\n user.full_name = name\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4e0b9620b9370a101facde56954713963d77ac58d4bf8802329dc50883796e73" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyChainedComparisonsInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Simplify chained comparison", + "markdown": "Simplify chained comparison" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 585, + "startColumn": 8, + "charOffset": 25941, + "charLength": 93, + "snippet": { + "text": "new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 583, + "startColumn": 1, + "charOffset": 25876, + "charLength": 349, + "snippet": { + "text": " if FIO[word][0].istitle():\r\n cnt += 1\r\n if new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO):\r\n data = await state.get_data()\r\n username = data.get(\"username\") # получаем сохраненный username из данных состояния\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "58396f53e4287e3119f1be6c17de21cba55455ff4b76546e7b4939db336a92d7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyChainedComparisonsInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Simplify chained comparison", + "markdown": "Simplify chained comparison" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1338, + "startColumn": 8, + "charOffset": 60711, + "charLength": 93, + "snippet": { + "text": "new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1336, + "startColumn": 1, + "charOffset": 60646, + "charLength": 290, + "snippet": { + "text": " if FIO[word][0].istitle():\r\n cnt += 1\r\n if new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO):\r\n user = users.get(chat_id)\r\n user.full_name = new_fullname\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5fb7c929e7247caf2b0893e03497ee1cfea8d7ac0bd097d40c7008ecd4806c03" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1542, + "startColumn": 10, + "charOffset": 70233, + "charLength": 14, + "snippet": { + "text": "tgname != None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1540, + "startColumn": 1, + "charOffset": 70084, + "charLength": 355, + "snippet": { + "text": " await bot.send_message(chat_id, \"Ваш профиль был удален!\", reply_markup=types.ReplyKeyboardRemove())\r\n await state.finish()\r\n elif tgname != None and select == \"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\":\r\n tgname = \"@\" + tgname\r\n user = users.get(tgname)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "13713db500a615d2fee8d2ebfbf4613d77d4113e432d1f51bfab64bec23f6b84" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 304, + "startColumn": 8, + "charOffset": 11826, + "charLength": 20, + "snippet": { + "text": "numberPoints == None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 302, + "startColumn": 1, + "charOffset": 11768, + "charLength": 143, + "snippet": { + "text": " if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r\n numberPoints: dict = {}\r\n if rightAnswers == None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "137b7169b52171d1ca2ffbdf38fe588c9eec40af143c20086365606e4de267f7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1099, + "startColumn": 8, + "charOffset": 49190, + "charLength": 20, + "snippet": { + "text": "rightAnswers == None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1097, + "startColumn": 1, + "charOffset": 49121, + "charLength": 180, + "snippet": { + "text": " if numberPoints == None:\r\n numberPoints:dict = {}\r\n if rightAnswers == None:\r\n rightAnswers:dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "360e1b40e9aa1ee4d5ae6c862a2dd22373d4ad00ef446594e219a88f4e89d563" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 22, + "startColumn": 32, + "charOffset": 795, + "charLength": 14, + "snippet": { + "text": "gender != None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 20, + "startColumn": 1, + "charOffset": 658, + "charLength": 262, + "snippet": { + "text": " pseudo = user_data.get('full_name', 'Unknown')\r\n gender = user_data.get('gender')\r\n gender = gender if gender != None else False\r\n age = user_data.get('age', 'Unknown')\r\n balance = user_data.get('balance')\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "420d12f3b172619a823d386380a3fa977ade5fed62716439c743d0d4f2773628" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1097, + "startColumn": 8, + "charOffset": 49128, + "charLength": 20, + "snippet": { + "text": "numberPoints == None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1095, + "startColumn": 1, + "charOffset": 49070, + "charLength": 142, + "snippet": { + "text": " if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r\n numberPoints:dict = {}\r\n if rightAnswers == None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "647a6df39813714a9789eadedf27ca19fe1d94361f399e7bf812246c14cb17e4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 302, + "startColumn": 8, + "charOffset": 11775, + "charLength": 17, + "snippet": { + "text": "querylist == None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 300, + "startColumn": 1, + "charOffset": 11678, + "charLength": 170, + "snippet": { + "text": " numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6d26fbd04e257569a48bd2ab7e58c5b8e77c9775c9fdf4d525ae5d1dcfcfe0a6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1165, + "startColumn": 12, + "charOffset": 52462, + "charLength": 21, + "snippet": { + "text": "telegram_name == None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1163, + "startColumn": 1, + "charOffset": 52382, + "charLength": 171, + "snippet": { + "text": "\r\n user.user_state = str(RegistrationStates.waiting_for_age)\r\n if telegram_name == None:\r\n user.tgusr = \"У пользователя нет имени\"\r\n else:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "865090002e1d05363e804534aa512ec34a93565f9252349771491ae97fbad93e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1095, + "startColumn": 8, + "charOffset": 49077, + "charLength": 17, + "snippet": { + "text": "querylist == None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1093, + "startColumn": 1, + "charOffset": 48980, + "charLength": 170, + "snippet": { + "text": " numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a3051498134d08f73926c83d0fbf6fb31737c19a1c622b470ec2b77ef2c2e39c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1605, + "startColumn": 8, + "charOffset": 73571, + "charLength": 11, + "snippet": { + "text": "tgu == None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1603, + "startColumn": 1, + "charOffset": 73495, + "charLength": 214, + "snippet": { + "text": " chat_id = message.chat.id\r\n tgu = message.from_user.username\r\n if tgu == None:\r\n nome = 'имени пользователя'\r\n url = 'https://ru.the-hitech.net/7264375-how-to-create-a-username-on-telegram'\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "be2dd6e9860581518c2cadcbc81cce17366d15e57bfe37dc7622b051e2bf36d0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1535, + "startColumn": 8, + "charOffset": 69721, + "charLength": 14, + "snippet": { + "text": "tgname == None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1533, + "startColumn": 1, + "charOffset": 69642, + "charLength": 283, + "snippet": { + "text": " chat_id = message.chat.id\r\n tgname = message.from_user.username\r\n if tgname == None and select == \"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\":\r\n user = users.get(chat_id)\r\n users.delete(user)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c946b27974ccd844279802888b7a7ed2fc6a2bcd480d653ba0ff6ec06f4ced5c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 306, + "startColumn": 8, + "charOffset": 11889, + "charLength": 20, + "snippet": { + "text": "rightAnswers == None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 304, + "startColumn": 1, + "charOffset": 11819, + "charLength": 182, + "snippet": { + "text": " if numberPoints == None:\r\n numberPoints: dict = {}\r\n if rightAnswers == None:\r\n rightAnswers: dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d78a14e14f4fdda93426d27cde4cbc6296df6ebf5677dffdb81dfd664dc6ebf9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 84733, + "snippet": { + "text": "from dotenv import load_dotenv\r\nimport json\r\nimport PIL.Image\r\nimport io\r\nimport pyzbar.pyzbar as pyzbar\r\nfrom aiogram import Bot, types\r\nfrom io import BytesIO\r\nimport qrcode\r\nimport logging\r\nimport random\r\nimport string\r\nimport asyncio\r\nfrom aiogram.utils import executor , markdown\r\nfrom aiogram.utils.markdown import hlink, escape_md , code\r\nfrom aiogram.dispatcher import Dispatcher, FSMContext\r\nfrom aiogram.contrib.fsm_storage.memory import MemoryStorage\r\nimport os\r\nfrom typing import Optional\r\nfrom aiogram.dispatcher.filters import Command\r\nfrom aiogram.dispatcher.filters.state import State, StatesGroup\r\nfrom buttons import *\r\nfrom pydantic import ValidationError\r\nfrom src.models.users import User\r\nfrom src.repository.usersrepository import UserRepository\r\nfrom src.repository.SupabaseUserRepository import SupabaseUserRepository\r\nfrom GoogleSheets.Google_sheets import rating_update_start_thread\r\nfrom supabase import Client, create_client\r\n#from Database.DataUsers import *\r\nfrom codegen import *\r\nfrom funcs import show_rating, show_user_rating, is_dirt, generate_id_for_survey\r\nfrom aiogram.types.web_app_info import WebAppInfo\r\nimport ast\r\nload_dotenv()\r\nlogging.basicConfig(level=logging.INFO)\r\n# Инициализация бота, диспетчера и хранилищаа состояний\r\nbot = Bot(token=os.getenv(\"TOKEN\"))\r\ndp = Dispatcher(bot, storage=MemoryStorage())\r\nrating_update_start_thread()\r\n\r\n# Инициализация подключения к базе данных Supabase\r\nurl: str = os.environ.get(\"SUPABASE_URL\")\r\nkey: str = os.environ.get(\"SUPABASE_KEY\")\r\n\r\nsupabase: Client = create_client(url, key)\r\n\r\n\r\nusers: UserRepository = SupabaseUserRepository(supabase)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Все состояния в которых может пребывать пользователь/админ бота\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\nclass RegistrationStates(StatesGroup):\r\n waiting_for_age = State()\r\n waiting_for_gender = State()\r\n waiting_for_name = State()\r\n final_reg = State()\r\n\r\n# Состояния меню\r\nclass MenuStates(StatesGroup):\r\n waiting_for_profile = State()\r\n profile = State()\r\n tasks = State()\r\n tasks_checking = State()\r\n tasks_checking_question = State()\r\n tasks_solving = State()\r\n calendar = State()\r\n help = State()\r\n help_start = State()\r\n help_end = State()\r\n help_cancel = State()\r\n help_ender = State()\r\n rating = State()\r\n promocode = State()\r\n promocodestart = State()\r\n\r\n# Состояние удаления профиля\r\nclass ProlfileStates(StatesGroup):\r\n profile_menu_main_state = State()\r\n delete_profile = State()\r\n edit_profile = State()\r\n edit_profile_name = State()\r\n edit_profile_age = State()\r\n\r\n# Состояния админ-панели\r\nclass AdminPanel(StatesGroup):\r\n admin_menu = State()\r\n change_user = State()\r\n change_user_end = State()\r\n get_info_about_user_start = State()\r\n get_info_about_user = State()\r\n get_info_about_user_end = State()\r\n change_user_start = State()\r\n change_user_fullname = State()\r\n change_user_fullnamestart = State()\r\n change_user_age = State()\r\n change_user_agestart = State()\r\n change_user_balance = State()\r\n change_user_balancestart = State()\r\n update_users_balance_confirm = State()\r\n update_users_balance = State()\r\n promo_menu = State()\r\n promo_check_promocode = State()\r\n promo_addpromostart = State()\r\n promo_addpromo_naming = State()\r\n promo_addpromo_naming_usages = State()\r\n promo_addpromo_naming_cost = State()\r\n promo_addpromo_naming_end = State()\r\n promo_addpromousages = State()\r\n promo_addpromocost = State()\r\n promo_addpromoend = State()\r\n promo_delpromo = State()\r\n promo_qr = State()\r\n promo_qrstart = State()\r\n promo_qrend = State()\r\n add_event = State()\r\n add_task = State()\r\n backward = State()\r\n rating_board = State()\r\n ticket = State()\r\n ticket_check = State()\r\n ticket_delete = State()\r\n ticket_start = State()\r\n ticket_middle = State()\r\n ticket_end = State()\r\n rules = State()\r\n rules_addmaker = State()\r\n rules_addmaker_start = State()\r\n rules_delmaker = State()\r\n rules_delmaker_start = State()\r\n taskmenu = State()\r\n taskmenu_namewait = State()\r\n taskmenu_descriptionwait = State()\r\n taskmenu_photowait = State()\r\n taskmenu_collection_counterwait = State()\r\n taskmenu_collection_surveywebapp = State()\r\n taskmenu_collection_list = State()\r\n taskmenu_collection_delete_select = State()\r\n taskmenu_collection_delete_confirm = State()\r\n\r\nclass EventMakerPanel(StatesGroup):\r\n menu = State()\r\n taskmenu = State()\r\n taskmenu_namewait = State()\r\n taskmenu_descriptionwait = State()\r\n taskmenu_photowait = State()\r\n taskmenu_collection_counterwait = State()\r\n taskmenu_collection_surveywebapp = State()\r\n taskmenu_collection_list = State()\r\n taskmenu_collection_delete_select = State()\r\n taskmenu_collection_delete_confirm = State()\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Event maker panel\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(commands=['event'], state='*')\r\nasync def event_command(message: types.Message, state: FSMContext):\r\n with open('roles.json') as f:\r\n event_roles = json.load(f)['event_makers']\r\n\r\n if str(message.from_user.id) not in event_roles:\r\n await message.reply(\"У вас нет прав event maker'а!\", reply_markup=rkbm)\r\n return\r\n\r\n await EventMakerPanel.menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(EventMakerPanel.menu)\r\n users.set(user)\r\n await message.reply(\"Вы вошли в панель event maker`a!\", reply_markup=usermakerkbm)\r\n\r\n@dp.message_handler(text=\"📝Создать задание\", state=EventMakerPanel.menu)\r\nasync def go_event_menu(message: types.Message, state: FSMContext):\r\n await EventMakerPanel.taskmenu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(EventMakerPanel.taskmenu)\r\n users.set(user)\r\n await message.reply(\"Вы вошли в панель создания заданий.\", reply_markup=eventtasks)\r\n\r\n\r\n\r\n@dp.message_handler(text='Удалить коллекцию', state=EventMakerPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите пожалуйста имя коллекции для её удаления\", reply_markup=types.ReplyKeyboardRemove())\r\n await EventMakerPanel.taskmenu_collection_delete_select.set()\r\n\r\n\r\n@dp.message_handler(state=EventMakerPanel.taskmenu_collection_delete_select)\r\nasync def delete_survey_handler(message: types.Message, state: FSMContext):\r\n codee = message.text\r\n deleted = supabase.table('TaskCollection').delete().match({'name': codee}).execute()\r\n\r\n if not deleted.data:\r\n # ничего не удалено\r\n await message.reply(\"Такой коллекции нет\", reply_markup=eventtasks)\r\n await state.finish()\r\n await EventMakerPanel.taskmenu.set()\r\n return\r\n\r\n # удаление прошло успешно\r\n codee_code = code(codee)\r\n await message.reply(f\"Коллекция {codee_code} удалена\", reply_markup=eventtasks, parse_mode='MarkdownV2')\r\n await EventMakerPanel.taskmenu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(EventMakerPanel)\r\n\r\n\r\n@dp.message_handler(text='Список коллекций', state=EventMakerPanel)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await EventMakerPanel.taskmenu_collection_list.set()\r\n chat_id = message.chat.id\r\n user = users.get(message.chat.id)\r\n user.user_state = str(EventMakerPanel.taskmenu_collection_list)\r\n\r\n promos = supabase.table('TaskCollection').select('name', 'url').filter('name', 'gt', 0).order('name',\r\n desc=True).execute()\r\n\r\n promo_text = \"📝 Действующие формы опросов:\\n\\n\"\r\n\r\n for promo in promos.data:\r\n name = promo['name']\r\n url = promo['url']\r\n\r\n name_parsed = f'{name}'\r\n url_parsed = f'Ссылка'\r\n promo_text += (name_parsed + f\" {url_parsed} \\n\")\r\n\r\n await bot.send_message(chat_id, promo_text, parse_mode=types.ParseMode.HTML, reply_markup=eventtasks,\r\n disable_web_page_preview=True)\r\n await state.finish()\r\n await EventMakerPanel.taskmenu.set()\r\n user.user_state = str(EventMakerPanel.taskmenu)\r\n\r\n\r\n@dp.message_handler(text=\"Создать коллекцию\", state=EventMakerPanel.taskmenu)\r\nasync def admin_make(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, f\"Введите название коллекции заданий:\", reply_markup=types.ReplyKeyboardRemove())\r\n await EventMakerPanel.taskmenu_namewait.set()\r\n\r\n\r\n@dp.message_handler(state=EventMakerPanel.taskmenu_namewait)\r\nasync def admin_taskmenu_namewait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n name = message.text\r\n await bot.send_message(chat_id, \"Введите описание коллекции заданий:\")\r\n await state.update_data(name=name)\r\n await EventMakerPanel.taskmenu_descriptionwait.set()\r\n\r\n\r\n@dp.message_handler(state=EventMakerPanel.taskmenu_descriptionwait)\r\nasync def admin_taskmenu_descriptionwait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n description = message.text\r\n await bot.send_message(chat_id, \"Отправте фотографию мероприятия:\")\r\n await state.update_data(description=description)\r\n await EventMakerPanel.taskmenu_photowait.set()\r\n\r\n\r\n@dp.message_handler(content_types=types.ContentType.PHOTO, state=EventMakerPanel.taskmenu_photowait)\r\nasync def admin_taskmenu_photowait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n photo = message\r\n try:\r\n await state.update_data(photo=photo.photo[2].file_id)\r\n await bot.send_message(chat_id, \"Введите количество вопросов в коллекции:\")\r\n await EventMakerPanel.taskmenu_collection_counterwait.set()\r\n except Exception as e:\r\n await bot.send_message(chat_id, \"Произошла ошибка, отправьте пожалуйста фотографию в хорошем качестве.\")\r\n await EventMakerPanel.taskmenu_photowait.set()\r\n\r\n\r\n@dp.message_handler(state=EventMakerPanel.taskmenu_collection_counterwait)\r\nasync def admin_taskmenu_collection_counterwait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n try:\r\n counter = int(message.text)\r\n except ValueError:\r\n await bot.send_message(chat_id, \"Введенное значение должно быть числом > 0\")\r\n await EventMakerPanel.taskmenu_collection_counterwait.set()\r\n if counter <= 0:\r\n await bot.send_message(chat_id, \"Введенное значение должно быть числом > 0\")\r\n await EventMakerPanel.taskmenu_collection_counterwait.set()\r\n else:\r\n await state.update_data(counter=counter)\r\n await bot.send_message(chat_id, \"Коллекция создана успешно! Перейдите пожалуйста, к составлению заданий!⬇️\",\r\n reply_markup=surveywebapp)\r\n await EventMakerPanel.taskmenu_collection_surveywebapp.set()\r\n\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=EventMakerPanel.taskmenu_collection_surveywebapp)\r\nasync def survey_web_app(message: types.ContentType.WEB_APP_DATA, state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n counter = data.get(\"counter\")\r\n querylist = data.get(\"querylist\")\r\n numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r\n numberPoints: dict = {}\r\n if rightAnswers == None:\r\n rightAnswers: dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r\n message.text = message.web_app_data.data\r\n data = json.loads(message.text)\r\n data['questionId'] = await generate_id_for_survey(10)\r\n new_json_data = json.dumps(data)\r\n new_json_data = ast.literal_eval(new_json_data)\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r\n numberPoints.update({new_json_data[\"questionId\"]: new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']: new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints=numberPoints)\r\n await state.update_data(rightAnswers=rightAnswers)\r\n querylist.append(new_json_data)\r\n await state.update_data(querylist=querylist)\r\n if counter > 1:\r\n await bot.send_message(chat_id, \"Пожалуйста, заполните следующий вопрос\", reply_markup=surveywebapp)\r\n await EventMakerPanel.taskmenu_collection_surveywebapp.set()\r\n counter -= 1\r\n await state.update_data(counter=counter)\r\n else:\r\n await EventMakerPanel.taskmenu.set()\r\n await bot.send_message(chat_id, \"Опрос успешно создан!\", reply_markup=eventtasks)\r\n querydict = {\"surveyData\": querylist}\r\n querydict_dump: str = json.dumps(querydict)\r\n url = url + querydict_dump\r\n url = url.replace(' ', '%20')\r\n url = url.replace('\"', '%22')\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r\n description = data.get(\"description\")\r\n photo = data.get(\"photo\")\r\n supabase.table('TaskCollection').insert(\r\n {'name': name, 'description': description, 'photo': photo, 'counter': counter, 'url': url,\r\n 'numberPoints': numberPoints, 'rightAnswers': rightAnswers}).execute()\r\n await state.finish()\r\n await EventMakerPanel.taskmenu.set()\r\n\r\n@dp.message_handler(text='⬅️Назад в меню', state=EventMakerPanel.taskmenu)\r\nasync def back_to_event_main_menu(message: types.Message, state: FSMContext):\r\n await EventMakerPanel.menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(EventMakerPanel.menu)\r\n users.set(user)\r\n await message.reply(\"Вы вышли из панели создания заданий\", reply_markup=usermakerkbm)\r\n\r\n\r\n@dp.message_handler(text = \"⬅️Меню\", state=EventMakerPanel.menu)\r\nasync def back_from_event(message: types.Message, state:FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(MenuStates.waiting_for_profile)\r\n users.set(user)\r\n await message.reply(\"Вы вышли из панели event maker`a\", reply_markup=rkbm)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Event maker panel\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n# Хендлер отмены действия через кнопку\r\n@dp.callback_query_handler(text=\"cancel\", state=[AdminPanel.change_user_balance,AdminPanel.change_user_fullname,AdminPanel.change_user_agestart,AdminPanel.get_info_about_user])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню админ-панели.\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r\n\r\n@dp.message_handler(commands=['admin'], state='*')\r\nasync def admin_command(message: types.Message, state: FSMContext):\r\n # Проверка, что пользователь в списке админов\r\n with open('roles.json') as f:\r\n admin_roles = json.load(f)['admins']\r\n\r\n if str(message.from_user.id) not in admin_roles:\r\n await message.reply(\"У вас нет прав администратора!\", reply_markup=rkbm)\r\n return\r\n\r\n # Установка состояния и вывод кнопок админки\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n await message.reply(\"Вы вошли в панель администратора\", reply_markup=admrkbm)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система обнуления баланса пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"❗Обнулить баланс всех пользователей❗\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def update_users_balance_confirm(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance_confirm.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.update_users_balance)\r\n users.set(user)\r\n await bot.send_message(message.chat.id, '❗Внимание❗ Вы действительно хотите обнулить баланс ВСЕХ пользователей? Данное действие ОТМЕНИТЬ будет НЕВОЗМОЖНО', reply_markup=updatebalanceusers)\r\n await AdminPanel.update_users_balance.set()\r\n\r\n@dp.message_handler(state=AdminPanel.update_users_balance)\r\nasync def update_users_balance(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance.set()\r\n select = message.text\r\n if select == '❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗':\r\n supabase.table('UsersData_duplicate').update({'balance': 0}).neq('balance',0).execute()\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n await message.reply(\"Баланс всех пользователей равен 0!\", reply_markup=admrkbm)\r\n elif select == '⬅️Назад в меню':\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n await message.reply(\"Вы вернулись в панель администратора\", reply_markup=admrkbm)\r\n else:\r\n await message.reply(\"Нет такого варианта, ошибка!\")\r\n \r\n\r\n\r\n# Хендлер для кнопки ️Изменить пользователя\r\n@dp.message_handler(text=\"⚙️Изменить пользователя\", state=AdminPanel.admin_menu)\r\nasync def admin_change_user(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_start.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.change_user_start)\r\n users.set(user)\r\n await message.reply(\r\n \"Вы попали в меню редактирования пользователя, нажмите нужную вам кнопку чтобы изменить параметры пользователя. После нажатия на кнопку введите @username человека в телеграм чтобы поменять его параметры.\",\r\n reply_markup=admue)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система получения информации о пользователе\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"Получить информацию о пользователе\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_get_user_info(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user = users.get(chat_id) \r\n user.user_state = str(AdminPanel.get_info_about_user)\r\n await message.reply(\"Введите @username пользователя о котором хотите получить информацию\", reply_markup=types.ReplyKeyboardRemove())\r\n await message.reply(\"Для отмены действия, нажмите кнопку отмена\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n await AdminPanel.get_info_about_user.set()\r\n users.set(user)\r\n\r\n\r\n@dp.message_handler(state=AdminPanel.get_info_about_user)\r\nasync def admin_get_user_info_start(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n username = message.text\r\n user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.get_info_about_user_start)\r\n try:\r\n userinfo = users.get(username)\r\n userlist = supabase.table('UsersData').select('chat_id').order('balance', desc=True).execute().data\r\n counter = 0\r\n while userlist[counter]['chat_id'] != userinfo.chat_id:\r\n counter += 1\r\n pseudo = userinfo.full_name\r\n gender = userinfo.gender\r\n age = userinfo.age\r\n balance = userinfo.balance\r\n if gender:\r\n gender = \"🙋‍♂️\"\r\n image = os.environ.get(\"MALE\")\r\n else:\r\n gender = \"🙋‍♀️\"\r\n image = os.environ.get(\"FEMALE\")\r\n # Формирование сообщения профиля пользователя\r\n profile_message = f\"Профиль пользователя {username}:\\n\\n\" \\\r\n f\"{gender}{pseudo}, {age} лет\\n└Место в топе: {counter+1}\\n\\n\" \\\r\n f\"💰Баланс: {balance}🔘 поинтов\\n└Мероприятий посещено: ?\"\r\n await bot.send_photo(chat_id=chat_id, photo=image, caption=profile_message, reply_markup=admue)\r\n await AdminPanel.get_info_about_user_end.set()\r\n user.user_state = str(AdminPanel.get_info_about_user_end)\r\n users.set(user)\r\n await state.finish()\r\n await AdminPanel.change_user_start.set()\r\n except IndexError:\r\n await message.reply(\"Такого пользователя не существует. \", reply_markup=admue)\r\n await AdminPanel.change_user_start.set()\r\n user.user_state = str(AdminPanel.change_user_start)\r\n users.set(user)\r\n \r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования баланса пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"Изменить баланс\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_change_user_balance(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_balancestart.set()\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_balancestart)\r\n users.set(admin)\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_balancestart)\r\nasync def admin_change_user_balance_handler(message: types.Message, state: FSMContext):\r\n username = message.text # получаем username\r\n try:\r\n userinfo = users.get(username)\r\n await state.update_data(username=username)\r\n await AdminPanel.change_user_balance.set()\r\n await message.reply(\"Введите новый баланс пользователя\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_balance)\r\n users.set(admin)\r\n except IndexError:\r\n await message.reply(\"Такого пользователя нет в базе данных\", reply_markup=admue)\r\n await state.finish()\r\n await AdminPanel.change_user_start.set()\r\n return\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_balance)\r\nasync def admin_change_user_balance_handler(message: types.Message, state: FSMContext):\r\n new_balance = message.text\r\n data = await state.get_data()\r\n username = data.get(\"username\")\r\n userinfo = users.get(username)\r\n userinfo.balance = new_balance\r\n users.set(userinfo)\r\n # Отправляем сообщение об успешном обновлении\r\n await state.finish()\r\n await AdminPanel.change_user_end.set()\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_end)\r\n users.set(admin)\r\n new_code_balance = code(new_balance)\r\n await message.reply(f\"Баланс пользователя {username} успешно обновлен на {new_code_balance}🔘\", reply_markup=admue, parse_mode=\"MarkdownV2\")\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования ФИО пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"Изменить ФИО\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_change_user_fullname(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_fullnamestart.set()\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_fullnamestart)\r\n users.set(admin)\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_fullnamestart)\r\nasync def admin_change_user_fullname_handler(message: types.Message, state: FSMContext):\r\n username = message.text # получаем username\r\n try:\r\n userinfo = users.get(username)\r\n await state.update_data(username=username) # сохраняем username в данных состояния\r\n await AdminPanel.change_user_fullname.set() # переходим к следующему состоянию\r\n await message.reply(\"Введите новое ФИО пользователя\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.change_user_fullname)\r\n users.set(user)\r\n except IndexError:\r\n await message.reply(\"Такого пользователя нет в базе данных\", reply_markup=admue)\r\n await state.finish()\r\n await AdminPanel.change_user_start.set()\r\n return\r\n # Проверяем, есть ли такой пользователь\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_fullname)\r\nasync def admin_change_user_fullname_handler(message: types.Message, state: FSMContext):\r\n new_fullname = message.text # получаем новое ФИО\r\n chat_id = message.chat.id\r\n admin = users.get(chat_id)\r\n detector = is_dirt()\r\n cnt = 0\r\n FIO = new_fullname.split()\r\n for word in range(len(FIO)):\r\n if FIO[word][0].istitle():\r\n cnt += 1\r\n if new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO):\r\n data = await state.get_data()\r\n username = data.get(\"username\") # получаем сохраненный username из данных состояния\r\n userinfo = users.get(username)\r\n userinfo.full_name = new_fullname\r\n admin.user_state = str(AdminPanel.change_user_end)\r\n users.set(admin)\r\n users.set(userinfo)\r\n # Отправляем сообщение об успешном обновлении\r\n new_code_fullname = code(new_fullname)\r\n await message.reply(f\"ФИО пользователя {username} успешно обновлено на {new_code_fullname}\", reply_markup=admue, parse_mode='MarkdownV2')\r\n await state.finish()\r\n await AdminPanel.change_user_end.set()\r\n else:\r\n await message.reply(\"Неккоректное ФИО\")\r\n await AdminPanel.change_user_fullname.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.change_user_fullname)\r\n users.set(user)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования возраста пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"Изменить возраст\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_change_user_age(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_age.set()\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_age)\r\n users.set(admin)\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_age)\r\nasync def admin_change_user_age_handler(message: types.Message, state: FSMContext):\r\n username = message.text # получаем username\r\n try:\r\n userinfo = users.get(username)\r\n await state.update_data(username=username) # сохраняем username в данных состояния\r\n await AdminPanel.change_user_agestart.set() # переходим к следующему состоянию\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_agestart)\r\n users.set(admin)\r\n await message.reply(\"Введите новый возраст пользователя\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n \r\n # Проверяем, есть ли такой пользователь\r\n except IndexError:\r\n await message.reply(\"Такого пользователя нет в базе данных\", reply_markup=admue)\r\n await state.finish()\r\n await AdminPanel.change_user_start.set()\r\n return\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_agestart)\r\nasync def admin_change_user_age_handler(message: types.Message, state: FSMContext):\r\n new_age = message.text # получаем новый возраст\r\n try:\r\n new_age = int(new_age)\r\n except ValueError as e:\r\n await message.reply(\"Ваш возраст неккоректен. Возраст не должен содержать буквы!\")\r\n print(f\"Error validation age{e}\")\r\n if new_age < 12 or new_age > 122:\r\n await message.reply(\"Ваш возраст неккоректен. Возраст должен лежать в диапазоне от 12 - 122\")\r\n await AdminPanel.change_user_agestart.set()\r\n else:\r\n data = await state.get_data()\r\n username = data.get(\"username\") # получаем сохраненный username из данных состояния\r\n user = users.get(username)\r\n user.age = new_age\r\n user.user_state = str(AdminPanel.change_user_end)\r\n users.set(user)\r\n # Отправляем сообщение об успешном обновлении\r\n new_code_age = code(new_age)\r\n await message.reply(f\"Возраст пользователя {username} успешно обновлен на {new_code_age}\", reply_markup=admue, parse_mode='MarkdownV2')\r\n await state.finish()\r\n await AdminPanel.change_user_end.set()\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система промокодов\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"🗝️Промокоды\", state=AdminPanel.admin_menu)\r\nasync def admin_promocodes(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_menu)\r\n users.set(user)\r\n await message.reply(\"Вы вошли в меню промокодов\", reply_markup=admpromo)\r\n\r\n@dp.message_handler(text=\"Добавить QR\", state=AdminPanel.promo_menu)\r\nasync def admin_promocodes_addqr(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_qrstart.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_qrstart)\r\n users.set(user)\r\n await message.reply(\"Введите промокод, который хотите помстить в QR-код\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.promo_qrstart)\r\nasync def admin_promocodes_add_qr_set(message: types.Message, state: FSMContext):\r\n promo_code = message.text\r\n promocode_data = supabase.table('Promocode').select('cost').eq('promo', promo_code).execute()\r\n\r\n if not promocode_data.data or promocode_data.data[0]['cost'] == 0:\r\n await message.reply(\"Такого промокода не существует или лимит его использования исчерпан\", reply_markup=admpromo)\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n return\r\n\r\n qr = qrcode.make(promo_code)\r\n\r\n byte_io = BytesIO()\r\n qr.save(byte_io, 'PNG')\r\n byte_io.seek(0)\r\n\r\n await message.reply_photo(byte_io, caption=\"Вот QR\\\\-код для промокода \" + code(promo_code) , reply_markup=admpromo, parse_mode=\"MarkdownV2\")\r\n\r\n byte_io.close()\r\n\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text=\"Действующие промокоды\", state=AdminPanel.promo_menu)\r\nasync def admin_promocodes_check(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_check_promocode.set()\r\n chat_id = message.chat.id\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_check_promocode)\r\n\r\n promos = supabase.table('Promocode').select('promo', 'last', 'cost').filter('last', 'gt', 0).order('cost', desc=True).execute()\r\n\r\n promo_text = \"📝 Действующие промокоды:\\n\\n\"\r\n\r\n for promo in promos.data:\r\n codee = promo['promo']\r\n uses_left = promo['last']\r\n cost = promo['cost']\r\n\r\n promo_text += (code(f\"{codee}\") + f\" \\\\- {uses_left} исп\\\\.\\\\, {cost} поинтов\\n\")\r\n\r\n await bot.send_message(chat_id, promo_text, parse_mode=\"MarkdownV2\", reply_markup=admpromo)\r\n supabase.table('Promocode').delete().eq('last', 0).execute()\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text='Нэйминг-промо', state=AdminPanel.promo_menu)\r\nasync def get_naming_promo(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите имя промокода\", reply_markup=types.ReplyKeyboardRemove())\r\n user = users.get(message.chat.id)\r\n await AdminPanel.promo_addpromo_naming.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming)\r\nasync def get_naming_promo_usages(message: types.Message, state:FSMContext):\r\n name = str(message.text)\r\n await message.reply(\"Введите количество использований:\")\r\n await state.update_data(name=name)\r\n await AdminPanel.promo_addpromo_naming_cost.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming_cost)\r\nasync def get_naming_promo_cost(message: types.Message, state:FSMContext):\r\n usages = int(message.text)\r\n await message.reply(\"Введите цену промокода:\")\r\n await state.update_data(usages=usages)\r\n await AdminPanel.promo_addpromo_naming_end.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming_end)\r\nasync def create_naming_promo(message: types.Message, state:FSMContext):\r\n cost = int(message.text)\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r\n usages = data.get(\"usages\")\r\n codee = generate_naming_promo(name, usages, cost)\r\n usages_code = code(usages)\r\n code_cost = code(cost)\r\n texting = (f'Промокод '+ code(f\"{codee}\") + f' с {usages_code} использованиями и ценой {code_cost}🔘 создан')\r\n await message.reply(texting, reply_markup=admpromo, parse_mode= \"MarkdownV2\")\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text ='Добавить промокод',state=AdminPanel.promo_menu)\r\nasync def get_usages(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите количество использований:\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.promo_addpromousages.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromousages)\r\nasync def get_cost(message: types.Message, state: FSMContext):\r\n usages = int(message.text)\r\n await message.reply(\"Введите цену промокода:\")\r\n await state.update_data(usages=usages)\r\n await AdminPanel.promo_addpromocost.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromocost)\r\nasync def create_promo(message: types.Message, state: FSMContext):\r\n data = await state.get_data()\r\n usages = data.get(\"usages\")\r\n cost = int(message.text)\r\n codee = generate_promo(usages, cost)\r\n usages_code = code(usages)\r\n cost_code = code(cost)\r\n texting = (f'Промокод ' + code(f\"{codee}\") + f' с {usages_code} использованиями и ценой {cost_code}🔘 создан')\r\n await message.reply(texting, reply_markup=admpromo, parse_mode=\"MarkdownV2\")\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text=\"Удалить промокод\", state=AdminPanel.promo_menu)\r\nasync def delete_promo(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_delpromo.set()\r\n await message.reply(\"Введите промокод для удаления\", reply_markup=types.ReplyKeyboardRemove())\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_delpromo)\r\n users.set(user)\r\n\r\n\r\n@dp.message_handler(state=AdminPanel.promo_delpromo)\r\nasync def delete_promo_handler(message: types.Message, state: FSMContext):\r\n codee = message.text\r\n deleted = supabase.table('Promocode').delete().match({'promo': codee}).execute()\r\n\r\n if not deleted.data:\r\n # ничего не удалено\r\n await message.reply(\"Промокод не найден\", reply_markup=admpromo)\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n return\r\n\r\n # удаление прошло успешно\r\n codee_code = code(codee)\r\n await message.reply(f\"Промокод {codee_code} удален\", reply_markup=admpromo, parse_mode='MarkdownV2')\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_menu)\r\n\r\n# Хедлер для бека в меню админа\r\n@dp.message_handler(text=\"⬅️Админ меню\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end, AdminPanel.promo_menu])\r\nasync def admin_backtomenu(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система прав\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"👨‍🚀Организаторы\", state=AdminPanel.admin_menu)\r\nasync def give_ruleskbm(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.rules)\r\n users.set(user)\r\n await message.reply(\"Вы попали в раздел для выдачи права создания заданий пользователям. Нажмите на кнопку и следуйте указаниям.\", reply_markup=ruleskbm)\r\n\r\n@dp.message_handler(text=\"Выдать права\",state = AdminPanel.rules)\r\nasync def give_rules(message: types.Message, state: FSMContext):\r\n await AdminPanel.rules_addmaker.set()\r\n await message.reply(\"Введите @username пользователя которому хотите выдать права ивент мейкера\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.rules_addmaker)\r\nasync def give_rules_start(message: types.Message, state: FSMContext):\r\n tgusr = message.text\r\n\r\n user_data = supabase.table('UsersData').select('chat_id').eq('tgusr', tgusr).execute()\r\n\r\n if not user_data.data:\r\n await message.reply(\"Пользователя с таким @username не существует\", reply_markup=ruleskbm)\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n return\r\n\r\n chat_id = user_data.data[0]['chat_id']\r\n\r\n with open('roles.json', 'r') as f:\r\n roles = json.load(f)\r\n\r\n roles['event_makers'].append(str(chat_id))\r\n\r\n with open('roles.json', 'w') as f:\r\n json.dump(roles, f)\r\n\r\n await message.reply(\"Права выданы успешно\", reply_markup=ruleskbm)\r\n\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text=\"Забрать права\", state=AdminPanel.rules)\r\nasync def del_from_eventers(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules_delmaker.set()\r\n await message.reply(\"Введите @username пользователя у котрого хотите забрать права\",reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.rules_delmaker)\r\nasync def del_from_eventers_start(message: types.Message, state: FSMContext):\r\n tgusr = message.text\r\n\r\n user_data = supabase.table('UsersData').select('chat_id').eq('tgusr', tgusr).execute()\r\n\r\n if not user_data.data:\r\n await message.reply(\"Пользователя с таким username не существует\", reply_markup=ruleskbm)\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n return\r\n\r\n chat_id = user_data.data[0]['chat_id']\r\n\r\n with open('roles.json', 'r') as f:\r\n roles = json.load(f)\r\n\r\n if str(chat_id) in roles['event_makers']:\r\n roles['event_makers'].remove(str(chat_id))\r\n\r\n with open('roles.json', 'w') as f:\r\n json.dump(roles, f)\r\n\r\n await message.reply(\"Права успешно удалены\", reply_markup=ruleskbm)\r\n\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text='Действующие права', state=AdminPanel.rules)\r\nasync def show_rules(message: types.Message, state: FSMContext):\r\n\r\n with open('roles.json', 'r') as f:\r\n roles = json.load(f)\r\n\r\n event_makers = roles['event_makers']\r\n\r\n rules_text = \"📝 Пользователи с правами ивент-мейкера:\\n\\n\"\r\n\r\n for chat_id in event_makers:\r\n user_data = supabase.table('UsersData').select('tgusr').eq('chat_id', int(chat_id)).execute()\r\n if user_data.data:\r\n username = user_data.data[0]['tgusr']\r\n rules_text += f\"{username} - {chat_id}\\n\"\r\n\r\n await message.reply(rules_text)\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text=\"⬅️Админ меню\", state=AdminPanel.rules)\r\nasync def back_from_rules(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n\r\n@dp.message_handler(text=\"⬅️Меню\", state=AdminPanel.admin_menu)\r\nasync def admin_menu_back(message: types.Message, state: FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(MenuStates.waiting_for_profile)\r\n users.set(user)\r\n await message.reply(\"Вы вышли из панели администратора\", reply_markup=rkbm)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система админ рейтинга\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"📊Рейтинг\", state=AdminPanel.admin_menu)\r\nasync def admin_rating_board(message: types.Message, state: FSMContext):\r\n await AdminPanel.rating_board.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.rating_board)\r\n users.set(user)\r\n await show_rating(message.chat.id)\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система заданий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text=\"📝Создать задание\", state=AdminPanel.admin_menu)\r\nasync def admin_task_maker(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вошли в редактор заданий\", reply_markup=admtasks)\r\n await AdminPanel.taskmenu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.taskmenu)\r\n users.set(user)\r\n\r\n@dp.message_handler(text='Удалить коллекцию', state=AdminPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите пожалуйста имя коллекции для её удаления\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.taskmenu_collection_delete_select.set()\r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_collection_delete_select)\r\nasync def delete_survey_handler(message: types.Message, state: FSMContext):\r\n codee = message.text\r\n deleted = supabase.table('TaskCollection').delete().match({'name': codee}).execute()\r\n\r\n if not deleted.data:\r\n # ничего не удалено\r\n await message.reply(\"Такой коллекции нет\", reply_markup=admtasks)\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r\n return\r\n\r\n # удаление прошло успешно\r\n codee_code = code(codee)\r\n await message.reply(f\"Коллекция {codee_code} удалена\", reply_markup=admtasks, parse_mode='MarkdownV2')\r\n await AdminPanel.taskmenu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.taskmenu)\r\n\r\n@dp.message_handler(text='Список коллекций', state=AdminPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await AdminPanel.taskmenu_collection_list.set()\r\n chat_id = message.chat.id\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.taskmenu_collection_list)\r\n\r\n promos = supabase.table('TaskCollection').select('name', 'url').filter('name', 'gt', 0).order('name',desc=True).execute()\r\n\r\n promo_text = \"📝 Действующие формы опросов:\\n\\n\"\r\n\r\n for promo in promos.data:\r\n name = promo['name']\r\n url = promo['url']\r\n\r\n name_parsed = f'{name}'\r\n url_parsed = f'Ссылка'\r\n promo_text += (name_parsed + f\" {url_parsed} \\n\")\r\n\r\n await bot.send_message(chat_id, promo_text, parse_mode=types.ParseMode.HTML, reply_markup=admtasks, disable_web_page_preview=True)\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r\n user.user_state = str(AdminPanel.taskmenu)\r\n\r\n\r\n@dp.message_handler(text=\"Создать коллекцию\", state=AdminPanel.taskmenu)\r\nasync def admin_make(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id,f\"Введите название коллекции заданий:\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.taskmenu_namewait.set()\r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_namewait)\r\nasync def admin_taskmenu_namewait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n name = message.text\r\n tasks_name = []\r\n response = supabase.table('TaskCollection').select('*').execute()\r\n for name_table in response.data:\r\n tasks_name.append(name_table['name'])\r\n if name in tasks_name:\r\n await bot.send_message(chat_id,\"Введенное имя уже существует, введите другое\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.AdminPanel.taskmenu.set()\r\n else:\r\n await bot.send_message(chat_id, \"Введите описание коллекции заданий:\")\r\n await state.update_data(name=name)\r\n await AdminPanel.taskmenu_descriptionwait.set()\r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_descriptionwait)\r\nasync def admin_taskmenu_descriptionwait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n description = message.text\r\n await bot.send_message(chat_id, \"Отправте фотографию мероприятия:\")\r\n await state.update_data(description = description)\r\n await AdminPanel.taskmenu_photowait.set()\r\n\r\n@dp.message_handler(content_types= types.ContentType.PHOTO, state = AdminPanel.taskmenu_photowait)\r\nasync def admin_taskmenu_photowait(message: types.Message , state: FSMContext):\r\n chat_id = message.chat.id\r\n photo = message\r\n try:\r\n await state.update_data(photo = photo.photo[2].file_id)\r\n await bot.send_message(chat_id,\"Введите количество вопросов в коллекции:\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n except Exception as e:\r\n await bot.send_message(chat_id,\"Произошла ошибка, отправьте пожалуйста фотографию в хорошем качестве.\")\r\n await AdminPanel.taskmenu_photowait.set()\r\n \r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_collection_counterwait)\r\nasync def admin_taskmenu_collection_counterwait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n try: \r\n counter = int(message.text)\r\n except ValueError:\r\n await bot.send_message(chat_id,\"Введенное значение должно быть числом > 0\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n if counter <= 0:\r\n await bot.send_message(chat_id,\"Введенное значение должно быть числом > 0\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n else:\r\n await state.update_data(counter = counter)\r\n await bot.send_message(chat_id,\"Коллекция создана успешно! Перейдите пожалуйста, к составлению заданий!⬇️\",reply_markup=surveywebapp)\r\n await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=AdminPanel.taskmenu_collection_surveywebapp)\r\nasync def survey_web_app(message: types.ContentType.WEB_APP_DATA , state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n counter = data.get(\"counter\")\r\n querylist = data.get(\"querylist\")\r\n numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r\n numberPoints:dict = {}\r\n if rightAnswers == None:\r\n rightAnswers:dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r\n message.text = message.web_app_data.data\r\n data = json.loads(message.text)\r\n data['questionId'] = await generate_id_for_survey(10)\r\n new_json_data = json.dumps(data)\r\n new_json_data = ast.literal_eval(new_json_data)\r\n data = await state.get_data()\r\n name = data.get(\"name\") \r\n numberPoints.update({new_json_data[\"questionId\"]:new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints = numberPoints)\r\n await state.update_data(rightAnswers = rightAnswers)\r\n querylist.append(new_json_data)\r\n await state.update_data(querylist = querylist)\r\n if counter > 1:\r\n await bot.send_message(chat_id, \"Пожалуйста, заполните следующий вопрос\",reply_markup=surveywebapp)\r\n await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n counter -= 1\r\n await state.update_data(counter = counter)\r\n else:\r\n await AdminPanel.taskmenu.set()\r\n await bot.send_message(chat_id, \"Опрос успешно создан!\", reply_markup=admtasks)\r\n querydict = {\"surveyData\":querylist}\r\n querydict_dump: str = json.dumps(querydict)\r\n url = url + querydict_dump \r\n url = url.replace(' ','%20')\r\n url = url.replace('\"', '%22')\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r\n description = data.get(\"description\")\r\n photo = data.get(\"photo\")\r\n supabase.table('TaskCollection').insert({'name': name, 'description': description, 'photo': photo, 'counter': counter, 'url': url,'numberPoints':numberPoints, 'rightAnswers':rightAnswers}).execute()\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r\n\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=AdminPanel.taskmenu)\r\nasync def back_from_rules(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система регистрации\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r\n@dp.message_handler(Command('start'), state=None)\r\nasync def start_command(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user = users.get(id=chat_id) # Получение состояния пользователя из Supabase\r\n\r\n if user and not (user.full_name == \"\"):\r\n # Пользователь уже зарегистрирован\r\n await MenuStates.waiting_for_profile.set()\r\n await message.reply(\"Чтобы просмотреть свой профиль, нажмите кнопку 'Профиль'.\", reply_markup=rkbm)\r\n else:\r\n user = user if user else User(chat_id=chat_id)\r\n\r\n # Сохранение состояния пользователя\r\n telegram_name = message.from_user.username\r\n\r\n user.user_state = str(RegistrationStates.waiting_for_age)\r\n if telegram_name == None:\r\n user.tgusr = \"У пользователя нет имени\"\r\n else:\r\n user.tgusr = \"@\" + telegram_name\r\n users.set(user)\r\n\r\n # Регистрация нового пользователя\r\n await message.reply(\"Привет! Давай зарегистрируемся! Введите ваш возраст:\")\r\n # Установка состояния \"waiting_for_age\" для пользователя\r\n await RegistrationStates.waiting_for_age.set()\r\n\r\n@dp.message_handler(state=RegistrationStates.waiting_for_age)\r\nasync def handle_age(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user_age = message.text\r\n try:\r\n user_age = int(user_age)\r\n except ValueError as e:\r\n await bot.send_message(chat_id, \"Ваш возраст неккоректен. Возраст не должен содержать буквы!\")\r\n print(f\"Error validation age{e}\")\r\n if int(user_age) < 12 or int(user_age) > 122:\r\n await bot.send_message(chat_id, \"Ваш возраст неккоректен. Попробуйте еще раз\")\r\n await RegistrationStates.waiting_for_age.set()\r\n else:\r\n user = users.get(chat_id)\r\n user.age = user_age\r\n # Сохранение возраста пользователя в DTO\r\n print(f\"Возраст пользователя {chat_id}: {user_age}\")\r\n\r\n # Переход к следующему состоянию \"waiting_for_gender\"\r\n await RegistrationStates.waiting_for_gender.set()\r\n # Сохранение состояния пользователя\r\n user.user_state = str(RegistrationStates.waiting_for_gender)\r\n users.set(user)\r\n\r\n # Запрашиваем пол пользователя\r\n await message.reply(\"Введите ваш пол (Male/Female):\", reply_markup=ikbg)\r\n\r\n@dp.message_handler(state=RegistrationStates.waiting_for_gender)\r\nasync def handle_gender(message: types.Message, state: FSMContext):\r\n gender = message.text.lower()\r\n if gender not in [\"мужской\", \"женский\"]:\r\n await message.reply(\"Пол указан некорректно. Выберите пол кнопками ниже:\", reply_markup=ikbg)\r\n return\r\n\r\n@dp.callback_query_handler(state=RegistrationStates.waiting_for_gender)\r\nasync def handle_gender_callback(query: types.CallbackQuery, state: FSMContext):\r\n chat_id = query.message.chat.id\r\n gender = query.data.lower()\r\n user = users.get(chat_id)\r\n user.gender = bool(int(gender))\r\n print(f\"Пол пользователя {chat_id}: {gender}\")\r\n\r\n # Запрашиваем имя пользователя\r\n await query.message.reply(\"Введите ваше ФИО:\", reply_markup = helpinlinereg)\r\n\r\n # Переход к следующему состоянию \"waiting_for_name\"\r\n await RegistrationStates.waiting_for_name.set()\r\n user.user_state = str(RegistrationStates.waiting_for_name)\r\n users.set(user)\r\n\r\n@dp.message_handler(state=RegistrationStates.waiting_for_name)\r\nasync def handle_name(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n name = message.text\r\n detector = is_dirt()\r\n FIO = name.split()\r\n cnt = 0\r\n for word in range(len(FIO)):\r\n if FIO[word][0].istitle():\r\n cnt += 1\r\n if name.replace(\" \", \"\").isalpha() and len(name) < 40 and len(name) >= 5 and detector(name) == False and cnt == len(FIO):\r\n user = users.get(chat_id)\r\n user.full_name = name\r\n user.user_state = str(RegistrationStates.final_reg) \r\n users.set(user)\r\n\r\n print(f\"Имя пользователя {chat_id}: {name}\")\r\n # Отправка сообщения о успешной регистрации\r\n if str(message.from_user.username) == 'None':\r\n await bot.send_message(chat_id,\r\n f\"Регистрация успешно завершена с неточностями, {user.full_name}!У вас нет имени пользователя Телеграм, связь администрации с вами может быть усложнена, вам необходимо указать в вашем профиле телеграма ваше имя пользователя и перерегистрироваться в боте.\",\r\n reply_markup=rkbm)\r\n else:\r\n await bot.send_message(chat_id, f\"Регистрация успешно завершена, {user.full_name}!\", reply_markup=rkbm)\r\n await state.finish()\r\n await MenuStates.waiting_for_profile.set()\r\n else:\r\n await bot.send_message(chat_id, f\"Пожалуйста, введите корректно свое ФИО\")\r\n await RegistrationStates.waiting_for_name.set()\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Кнопкни главного меню\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r\n@dp.message_handler(state=MenuStates.waiting_for_profile)\r\nasync def handle_waiting_for_profile(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n select = message.text\r\n if select == \"👤Профиль\":\r\n await MenuStates.profile.set()\r\n await handle_profile(message, state)\r\n elif select == \"📊Рейтинг\":\r\n await MenuStates.rating.set()\r\n await user_rating_board(message, state)\r\n elif select ==\"❓Помощь\":\r\n await MenuStates.help.set()\r\n await handle_help(message,state)\r\n elif select == \"📆Календарь событий\":\r\n await MenuStates.calendar.set()\r\n await handle_calendar(message, state)\r\n elif select == \"📝Задания\":\r\n await MenuStates.tasks.set()\r\n counter = 0\r\n await state.update_data(counter=counter)\r\n await handle_tasks(message, state)\r\n elif select == \"🗝️Промокоды\":\r\n await MenuStates.promocode.set()\r\n await bot.send_message(chat_id, \"Вы попали в меню работы с промокодами\", reply_markup=promo_kb)\r\n else:\r\n await message.reply(\"Нет такого варианта выбора!\", reply_markup=rkbm)\r\n\r\n@dp.callback_query_handler(text=\"cancel_user\", state=[ProlfileStates.edit_profile_name, ProlfileStates.edit_profile_age])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню редактирования профиля.\", reply_markup=menuedit)\r\n await ProlfileStates.edit_profile.set()\r\n\r\n@dp.callback_query_handler(text='back_to_menu', state = MenuStates.promocodestart)\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню промокодов.\", reply_markup=promo_kb)\r\n await MenuStates.promocode.set()\r\n\r\n@dp.callback_query_handler(text=\"cancel_user_help\", state=MenuStates.help_end)\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню помощи.\", reply_markup=userhelp)\r\n await MenuStates.help_cancel.set()\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система редактирования профиля\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r\n@dp.message_handler(state=ProlfileStates.edit_profile)\r\nasync def handle_waiting_for_edit_profile(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n select = message.text\r\n if select == \"Изменить ФИО\":\r\n await ProlfileStates.edit_profile_name.set()\r\n await bot.send_message(chat_id, \"Вы выбрали редактирование ФИО\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(chat_id, \"Введите новое ФИО \", reply_markup=cancel_button_for_user)\r\n elif select == \"Изменить возраст\": \r\n await ProlfileStates.edit_profile_age.set()\r\n await bot.send_message(chat_id, \"Вы выбрали редактирование возраста\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(chat_id, \"Введите новый возраст \", reply_markup=cancel_button_for_user)\r\n elif select == \"⬅️Назад в меню\":\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Вы вышли в меню! \", reply_markup=rkbm)\r\n else:\r\n await message.reply(\"Нет такого варианта выбора!\")\r\n\r\n@dp.message_handler(state=ProlfileStates.edit_profile_name)\r\nasync def edit_name_profile(message: types.Message, state:FSMContext):\r\n new_fullname = message.text \r\n chat_id = message.chat.id\r\n detector = is_dirt()\r\n FIO = new_fullname.split()\r\n cnt = 0\r\n for word in range(len(FIO)):\r\n if FIO[word][0].istitle():\r\n cnt += 1\r\n if new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO):\r\n user = users.get(chat_id)\r\n user.full_name = new_fullname\r\n user.user_state = str(ProlfileStates.edit_profile_name)\r\n users.set(user)\r\n await message.reply(f\"Имя успешно обновлено на : {new_fullname}\", reply_markup=rkbm)\r\n await state.finish()\r\n await MenuStates.waiting_for_profile.set()\r\n else:\r\n await bot.send_message(chat_id, f\"Пожалуйста, введите корректно свое ФИО, например: Иванов Иван Иванович\")\r\n await ProlfileStates.edit_profile_name.set()\r\n\r\n@dp.message_handler(state=ProlfileStates.edit_profile_age)\r\nasync def edit_age_profile(message: types.Message, state: FSMContext):\r\n new_age = message.text # получаем новый возраст\r\n try:\r\n new_age = int(new_age)\r\n except ValueError as e:\r\n await message.reply(\"Ваш возраст неккоректен. Возраст не должен содержать буквы!\")\r\n print(f\"Error validation age{e}\")\r\n if new_age < 12 or new_age > 122:\r\n await message.reply(\"Ваш возраст неккоректен. Возраст должен лежать в диапазоне от 12 - 122\")\r\n await ProlfileStates.edit_profile_age.set()\r\n else:\r\n chat_id = message.chat.id\r\n user = users.get(chat_id)\r\n user.age = new_age\r\n user.user_state = str(ProlfileStates.edit_profile_age)\r\n users.set(user)\r\n # Отправляем сообщение об успешном обновлении\r\n await message.reply(f\"Возраст успешно обновлен на {new_age}\", reply_markup=rkbm)\r\n await state.finish()\r\n await MenuStates.waiting_for_profile.set()\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система промокодов\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r\n@dp.message_handler(text=\"🗝️Ввести промокод\", state=MenuStates.promocode)\r\nasync def enter_promocode(message: types.Message):\r\n await bot.send_message(message.chat.id, \"Введите , пожалуйста , ваш промокод сообщением или отправьте боту изображение QR-кода\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(message.chat.id, \"Если хотите вернуться , то нажмите сюда\", reply_markup=cancel_button_to_main)\r\n await MenuStates.promocodestart.set()\r\n\r\n@dp.message_handler(content_types=['photo'], state=MenuStates.promocodestart)\r\nasync def check_qr_code(message: types.Message, state: FSMContext):\r\n\r\n photo_bytes = await message.photo[-1].download(destination=io.BytesIO())\r\n photo_bytes = photo_bytes.getvalue()\r\n\r\n photo_image = PIL.Image.open(io.BytesIO(photo_bytes))\r\n\r\n qr_code = pyzbar.decode(photo_image)\r\n\r\n if qr_code:\r\n qr_code = qr_code[0].data.decode()\r\n\r\n message.text = qr_code\r\n await check_promocode(message, state)\r\n\r\n@dp.message_handler(state=MenuStates.promocodestart)\r\nasync def check_promocode(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n promocode = message.text\r\n poro = promocode\r\n\r\n user = users.get(chat_id)\r\n user_balance = user.balance\r\n\r\n promocode_data = supabase.table('Promocode').select('last', 'cost').eq('promo', promocode).execute()\r\n\r\n if not promocode_data.data:\r\n await message.reply(\"Промокод не найден!\", reply_markup=promo_kb)\r\n await state.finish()\r\n await MenuStates.promocode.set()\r\n user.user_state = str(MenuStates.promocode) # Меню стейт\r\n users.set(user)\r\n return\r\n\r\n promocode = promocode_data.data[0]\r\n\r\n used_promocode_data = supabase.table('UsedPromocode').select('chat_id').eq('promo', poro).eq('chat_id', chat_id).execute()\r\n\r\n if used_promocode_data.data:\r\n # уже использовал\r\n await message.reply(\"Вы уже использовали этот промокод!\", reply_markup=promo_kb)\r\n await state.finish()\r\n await MenuStates.promocode.set()\r\n user.user_state = str(MenuStates.promocode) # Меню стейт\r\n users.set(user)\r\n return\r\n\r\n if promocode['last'] <= 0:\r\n await message.reply(\"Срок действия промокода истек!\", reply_markup=promo_kb)\r\n await state.finish()\r\n await MenuStates.promocode.set()\r\n user.user_state = str(MenuStates.promocode) # Меню стейт\r\n users.set(user)\r\n return\r\n\r\n new_balance = user_balance + promocode['cost']\r\n\r\n new_last = promocode['last'] - 1\r\n \r\n user.balance = new_balance\r\n # Добавим запись о том, что промокод был использован данным пользователем\r\n supabase.table('Promocode').update({'last': new_last}).eq('promo', poro).execute()\r\n expression = ''.join(random.choices(string.ascii_letters, k=8))\r\n supabase.table('UsedPromocode').insert({'id' : expression,'promo': poro, 'chat_id': str(chat_id)}).execute()\r\n\r\n await message.reply(f\"Ваш баланс пополнен на {code(promocode['cost'])}🔘\\\\!\", reply_markup=promo_kb, parse_mode='MarkdownV2')\r\n\r\n await state.finish()\r\n await MenuStates.promocode.set()\r\n user.user_state = str(MenuStates.promocode) # Меню стейт\r\n users.set(user)\r\n\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=MenuStates.promocode)\r\nasync def back_from_promo_menu(message: types.Message, state: FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(message.chat.id, \"Вы вернулись в главное меню\", reply_markup=rkbm)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система рейтинга(Google sheets)\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r\n@dp.message_handler(text =\"📊Рейтинг\", state=MenuStates.waiting_for_profile)\r\nasync def user_rating_board(message: types.Message, state: FSMContext):\r\n await MenuStates.rating.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(MenuStates.rating)\r\n users.set(user)\r\n await show_user_rating(message.chat.id)\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(MenuStates.waiting_for_profile)\r\n users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система отображения профиля\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(state=MenuStates.profile)\r\nasync def handle_profile(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n select = message.text\r\n if select == \"👤Профиль\":\r\n # Запрос данных пользователя из базы данных Supabase\r\n user = users.get(chat_id)\r\n pseudo = user.full_name\r\n gender = user.gender\r\n age = user.age\r\n balance = user.balance\r\n userlist = supabase.table('UsersData').select('chat_id').order('balance', desc=True).execute().data\r\n counter = 0\r\n while userlist[counter]['chat_id'] != chat_id:\r\n counter+=1\r\n if gender:\r\n gender = \"🙋‍♂️\"\r\n image = os.environ.get(\"MALE\")\r\n else:\r\n gender = \"🙋‍♀️\"\r\n image = os.environ.get(\"FEMALE\")\r\n # Формирование сообщения профиля пользователя\r\n profile_message = f\"Добро пожаловать в ваш профиль:\\n\\n\" \\\r\n f\"{gender}{pseudo}, {age} лет\\n└Ваше место в топе: {counter+1}\\n\\n\" \\\r\n f\"💰Баланс: {balance}🔘 поинтов\\n└Мероприятий посещено: ?\"\r\n await bot.send_photo(chat_id=chat_id, photo=image, caption=profile_message, reply_markup=profilebuttons)\r\n # Обработчик нажатия на кнопку удалить профиль\r\n elif select == \"❌Удалить профиль\":\r\n await bot.send_message(chat_id, \"Вы действительно хотите удалить свой профиль?\", reply_markup=confirmbutton)\r\n await ProlfileStates.delete_profile.set()\r\n elif select == \"⚙️Редактировать профиль\":\r\n await ProlfileStates.edit_profile.set()\r\n await bot.send_message(chat_id, \"Выберите какие данные хотите отредактировать! \", reply_markup=menuedit)\r\n elif select == \"⬅️Назад в меню\":\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Вы вернулись в меню!\", reply_markup=rkbm)\r\n \r\n else:\r\n await bot.send_message(chat_id, \"Некорректный выбор.\")\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система удаления профиля\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n \r\n@dp.message_handler(state=ProlfileStates.delete_profile)\r\nasync def del_profile(message: types.Message, state: FSMContext):\r\n select = message.text\r\n chat_id = message.chat.id\r\n tgname = message.from_user.username\r\n if tgname == None and select == \"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\":\r\n user = users.get(chat_id)\r\n users.delete(user)\r\n supabase.table('UsedPromocode').delete().eq('chat_id', chat_id).execute()\r\n supabase.table('Passd').delete().eq('chat_id', chat_id).execute()\r\n await bot.send_message(chat_id, \"Ваш профиль был удален!\", reply_markup=types.ReplyKeyboardRemove())\r\n await state.finish()\r\n elif tgname != None and select == \"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\":\r\n tgname = \"@\" + tgname\r\n user = users.get(tgname)\r\n users.delete(user)\r\n supabase.table('Passd').delete().eq('chat_id', chat_id).execute()\r\n supabase.table('UsedPromocode').delete().eq('chat_id', chat_id).execute()\r\n supabase.table('Report').delete().eq('tgusr',tgname).execute()\r\n await bot.send_message(chat_id, \"Ваш профиль был удален!\", reply_markup=types.ReplyKeyboardRemove())\r\n await state.finish()\r\n elif select == \"⬅️Назад в меню\":\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Вы вернулись в меню!\", reply_markup=rkbm)\r\n else:\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Некорректный выбор, вы вернулись в меню!\", reply_markup=rkbm)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система отображения мероприятий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n \r\n\r\n@dp.message_handler(state=MenuStates.calendar)\r\nasync def handle_calendar(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n response = supabase.table('Event').select('*').limit(5).execute()\r\n events_message = 'Мероприятия:'\r\n for event in response.data:\r\n url = 'https://leader-id.ru/events/'\r\n url = url +str(event['id'])\r\n name = event['full_name']\r\n date_start = event['date_start'][:16]\r\n date_end = event['date_end']\r\n date = date_start + \"-\" + date_end[11:16]\r\n print(date)\r\n events_message += f' \\n' \\\r\n f\"[{name}]({url}) \\n\" \\\r\n f\"⏱{date} \\n\" \\\r\n f'------------------------------'\r\n await bot.send_message(chat_id, events_message,disable_web_page_preview=True,parse_mode=types.ParseMode.MARKDOWN)\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.calendar)\r\n \r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система тикетов для юзера\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(state=MenuStates.help)\r\nasync def handle_help(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, f\"Привет\\\\! Если у тебя есть какие\\\\-то проблемы или пожелания \\\\, то смелее нажимай на кнопку \" + f\"{code('📨Создать заявку')}\" + f\" и администратор с радостью тебе поможет\\\\! \", reply_markup=userhelp, parse_mode = 'MarkdownV2')\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.help)\r\n users.set(user)\r\n await MenuStates.help_start.set()\r\n user.user_state = str(MenuStates.help_start)\r\n\r\n\r\n@dp.message_handler(text=\"📨Создать заявку\", state=MenuStates.help_start)\r\nasync def handle_help_start(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n tgu = message.from_user.username\r\n if tgu == None:\r\n nome = 'имени пользователя'\r\n url = 'https://ru.the-hitech.net/7264375-how-to-create-a-username-on-telegram'\r\n await bot.send_message(chat_id,\r\n f\"У вас нет \" + f\"[{nome}]({url})\" + f\" телеграм!Укажите его в своём профиле и тогда администрация сможет вам помочь.\",\r\n reply_markup=rkbm, disable_web_page_preview=True,\r\n parse_mode=types.ParseMode.MARKDOWN)\r\n await MenuStates.waiting_for_profile.set()\r\n else:\r\n tgus = '@' + tgu\r\n tgus = '@' + tgu\r\n # Проверяем, есть ли у пользователя предыдущие заявки\r\n existing_reports = supabase.table('Report').select('tgusr').eq('tgusr', tgus).execute()\r\n if existing_reports.data:\r\n await message.reply(\"У вас уже есть открытая заявка. Пожалуйста, дождитесь ответа.\", reply_markup=rkbm)\r\n await state.finish()\r\n await MenuStates.waiting_for_profile.set()\r\n\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.help)\r\n users.set(user)\r\n return\r\n\r\n await bot.send_message(chat_id, \"Нажмите сюда чтобы вернуться\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(chat_id, \"Распишите здесь наиподробнейшим образом какой у вас возник вопрос или пожелание!\",reply_markup=cancel_button_for_user_help)\r\n\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.help_end)\r\n await MenuStates.help_end.set()\r\n\r\n@dp.message_handler(state=MenuStates.help_end)\r\nasync def handle_help_end(message: types.Message, state: FSMContext):\r\n try:\r\n Description = message.text\r\n chat_id = message.chat.id\r\n telegram_name = message.from_user.username\r\n tgusr = telegram_name\r\n\r\n tgusr = \"@\" + telegram_name\r\n\r\n # Вставка в БД\r\n supabase.table('Report').insert({'description': Description, 'tgusr': tgusr}).execute()\r\n\r\n # Подтверждающее сообщение\r\n await bot.send_message(chat_id, \"Заявка успешно отправлена! В ближайшее время с вами свяжется администратор.\", reply_markup=userhelp)\r\n\r\n except:\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, \"Извините, произошла ошибка при отправке заявки\", reply_markup=userhelp)\r\n await MenuStates.help_cancel.set()\r\n\r\n # Сброс состояния\r\n await state.finish()\r\n await MenuStates.help_ender.set()\r\n users.user_state=str(MenuStates.help)\r\n\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r\nasync def handle_help_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Вы вернулись в меню!\", reply_markup=rkbm)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система тикетов для админов\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📨Обращения\", state = AdminPanel.admin_menu)\r\nasync def handle_report(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, \"Нажата кнопка обращений, здесь вы можете просмотреть действующие обращения от пользователей или удалить уже решённые. \", reply_markup=admreport)\r\n await AdminPanel.ticket.set()\r\n user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.ticket)\r\n\r\n\r\n@dp.message_handler(text='Действующие обращения', state=AdminPanel.ticket)\r\nasync def check_tickets(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.ticket_check)\r\n\r\n # Запрос обращений из БД\r\n tickets = supabase.table('Report').select('tgusr', 'description').execute().data\r\n\r\n tickets_text = \"📨 Действующие обращения:\\n\\n\"\r\n\r\n for i, ticket in enumerate(tickets, 1):\r\n username = ticket['tgusr']\r\n description = ticket['description']\r\n tickets_text += f\"{i}. {username} - {description}\\n\"\r\n\r\n # Отправка сообщения\r\n await bot.send_message(chat_id, tickets_text)\r\n\r\n # Смена состояния\r\n await AdminPanel.ticket.set()\r\n user.user_state = str(AdminPanel.ticket)\r\n\r\n@dp.message_handler(text = \"Удалить обращение\", state=AdminPanel.ticket)\r\nasync def delete_ticket(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await AdminPanel.ticket_delete.set()\r\n user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.ticket_delete)\r\n await message.reply(\"Введите @username пользователя чтобы удалить его заявку\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.ticket_start.set()\r\n user.user_state = str(AdminPanel.ticket_delete)\r\n\r\n\r\n@dp.message_handler(state=AdminPanel.ticket_start)\r\nasync def handle_ticket_delete(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n username = message.text\r\n\r\n # Проверка, есть ли такой пользователь\r\n user_exists = supabase.table('Report').select('tgusr').eq('tgusr', username).execute()\r\n if not user_exists.data:\r\n await message.reply(\"Такого пользователя нет в базе данных\", reply_markup= admreport)\r\n await state.finish()\r\n await AdminPanel.ticket.set()\r\n return\r\n\r\n # Удаление обращения\r\n delete_query = supabase.table('Report').delete().eq('tgusr', username).execute()\r\n\r\n await message.reply(f\"Обращение пользователя {username} успешно удалено\", reply_markup=admreport)\r\n await AdminPanel.ticket.set()\r\n user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.ticket)\r\n\r\n\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=AdminPanel.ticket)\r\nasync def handle_tickets_back(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система заданий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📝Задания\", state=MenuStates.tasks)\r\nasync def handle_tasks(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n counter = data.get('counter')\r\n await state.update_data(counter = counter)\r\n task = supabase.table('TaskCollection').select('name','description','photo','url').execute().data[int(counter)]\r\n text = f\"{task['name']}\\n{task['description']}\"\r\n await state.update_data(name = task['name'])\r\n ikbmtasks = ReplyKeyboardMarkup(resize_keyboard=True)\r\n ibleft = KeyboardButton(text=\"⬅️\")\r\n ibright = KeyboardButton(text=\"➡️\")\r\n ibback = KeyboardButton(text=\"⬅️Меню\")\r\n print(f\"{task['url']}\")\r\n ibgo = KeyboardButton(text=\"✅\", web_app = WebAppInfo(url = f'{task[\"url\"]}'))\r\n ikbmtasks.row(ibleft, ibgo, ibright)\r\n ikbmtasks.row(ibback)\r\n message_id_data = await bot.send_photo(chat_id, task['photo'] , text, reply_markup= ikbmtasks)\r\n message_id_data = message_id_data['message_id']\r\n await state.update_data(message_id_data=message_id_data)\r\n\r\n@dp.message_handler(text=\"➡️\", state=MenuStates.tasks)\r\nasync def right(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n counter = data.get('counter')+1\r\n if counter>len(supabase.table('TaskCollection').select('name' ).execute().data)-1:\r\n counter = 0\r\n await state.update_data(counter = counter)\r\n await handle_tasks(message, state)\r\n await bot.delete_message(chat_id=chat_id, message_id=data.get('message_id_data'))\r\n await bot.delete_message(chat_id=chat_id, message_id=message.message_id)\r\n\r\n@dp.message_handler(text=\"⬅️\", state=MenuStates.tasks)\r\nasync def left(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n counter = data.get('counter') - 1\r\n if counter < 0:\r\n counter = len(supabase.table('TaskCollection').select('name').execute().data) - 1\r\n await state.update_data(counter=counter)\r\n await handle_tasks(message, state)\r\n await bot.delete_message(chat_id=chat_id, message_id=data.get('message_id_data'))\r\n await bot.delete_message(chat_id=chat_id, message_id=message.message_id)\r\n\r\n@dp.message_handler(text=\"⬅️Меню\", state=MenuStates.tasks)\r\nasync def task_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n await bot.delete_message(chat_id=chat_id, message_id=data.get('message_id_data'))\r\n await bot.delete_message(chat_id=chat_id, message_id=message.message_id)\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Вы вернулись в меню!\", reply_markup=rkbm)\r\n\r\n\r\n\r\n\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=MenuStates.tasks)\r\nasync def handle_test_results(message: types.ContentType.WEB_APP_DATA, state: FSMContext):\r\n message.text = message.web_app_data.data\r\n chat_id = message.chat.id\r\n user_answers = json.loads(message.text)\r\n\r\n data = await state.get_data()\r\n counter = data.get('counter')\r\n name = data.get('name')\r\n task = supabase.table('TaskCollection').select('numberPoints', 'rightAnswers').execute().data[int(counter)]\r\n\r\n # Преобразуем в словарь\r\n right_answers = json.loads(task['rightAnswers'])\r\n points = json.loads(task['numberPoints'])\r\n\r\n\r\n user_answers_dict = {}\r\n\r\n for question_id in user_answers:\r\n user_answers_dict[question_id] = user_answers[question_id]\r\n\r\n num_correct = 0\r\n score = 0\r\n\r\n user = users.get(chat_id)\r\n user_balance = user.balance\r\n\r\n for question_id in user_answers_dict:\r\n if user_answers_dict[question_id] == right_answers[question_id]:\r\n num_correct += 1\r\n score += int(points[question_id])\r\n\r\n used_survey_data = supabase.table('Passd').select('chat_id').eq('name', name).eq('chat_id', chat_id).execute()\r\n\r\n if used_survey_data.data:\r\n\r\n await bot.send_message(\r\n message.chat.id,\r\n text=f\"Вы уже проходили этот опрос.\"\r\n )\r\n return\r\n\r\n ident = generate_code()\r\n supabase.table('Passd').insert({'chat_id':chat_id, 'name':name, 'id': ident}).execute()\r\n new_balance = user_balance + score\r\n user.balance = new_balance\r\n users.set(user)\r\n await bot.send_message(\r\n message.chat.id,\r\n text=f\"Правильных ответов: {num_correct}\\nБаллов: {score}\"\r\n )\r\n\r\n\r\n\r\n# код подсчета результатов\r\n\r\n\r\ndef calculate_score(user_answers, right_answers, points):\r\n score = 0\r\n num_correct = 0\r\n\r\n for question_id in user_answers:\r\n if user_answers[question_id] == right_answers[question_id]:\r\n score += " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 84733, + "snippet": { + "text": "from dotenv import load_dotenv\r\nimport json\r\nimport PIL.Image\r\nimport io\r\nimport pyzbar.pyzbar as pyzbar\r\nfrom aiogram import Bot, types\r\nfrom io import BytesIO\r\nimport qrcode\r\nimport logging\r\nimport random\r\nimport string\r\nimport asyncio\r\nfrom aiogram.utils import executor , markdown\r\nfrom aiogram.utils.markdown import hlink, escape_md , code\r\nfrom aiogram.dispatcher import Dispatcher, FSMContext\r\nfrom aiogram.contrib.fsm_storage.memory import MemoryStorage\r\nimport os\r\nfrom typing import Optional\r\nfrom aiogram.dispatcher.filters import Command\r\nfrom aiogram.dispatcher.filters.state import State, StatesGroup\r\nfrom buttons import *\r\nfrom pydantic import ValidationError\r\nfrom src.models.users import User\r\nfrom src.repository.usersrepository import UserRepository\r\nfrom src.repository.SupabaseUserRepository import SupabaseUserRepository\r\nfrom GoogleSheets.Google_sheets import rating_update_start_thread\r\nfrom supabase import Client, create_client\r\n#from Database.DataUsers import *\r\nfrom codegen import *\r\nfrom funcs import show_rating, show_user_rating, is_dirt, generate_id_for_survey\r\nfrom aiogram.types.web_app_info import WebAppInfo\r\nimport ast\r\nload_dotenv()\r\nlogging.basicConfig(level=logging.INFO)\r\n# Инициализация бота, диспетчера и хранилищаа состояний\r\nbot = Bot(token=os.getenv(\"TOKEN\"))\r\ndp = Dispatcher(bot, storage=MemoryStorage())\r\nrating_update_start_thread()\r\n\r\n# Инициализация подключения к базе данных Supabase\r\nurl: str = os.environ.get(\"SUPABASE_URL\")\r\nkey: str = os.environ.get(\"SUPABASE_KEY\")\r\n\r\nsupabase: Client = create_client(url, key)\r\n\r\n\r\nusers: UserRepository = SupabaseUserRepository(supabase)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Все состояния в которых может пребывать пользователь/админ бота\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\nclass RegistrationStates(StatesGroup):\r\n waiting_for_age = State()\r\n waiting_for_gender = State()\r\n waiting_for_name = State()\r\n final_reg = State()\r\n\r\n# Состояния меню\r\nclass MenuStates(StatesGroup):\r\n waiting_for_profile = State()\r\n profile = State()\r\n tasks = State()\r\n tasks_checking = State()\r\n tasks_checking_question = State()\r\n tasks_solving = State()\r\n calendar = State()\r\n help = State()\r\n help_start = State()\r\n help_end = State()\r\n help_cancel = State()\r\n help_ender = State()\r\n rating = State()\r\n promocode = State()\r\n promocodestart = State()\r\n\r\n# Состояние удаления профиля\r\nclass ProlfileStates(StatesGroup):\r\n profile_menu_main_state = State()\r\n delete_profile = State()\r\n edit_profile = State()\r\n edit_profile_name = State()\r\n edit_profile_age = State()\r\n\r\n# Состояния админ-панели\r\nclass AdminPanel(StatesGroup):\r\n admin_menu = State()\r\n change_user = State()\r\n change_user_end = State()\r\n get_info_about_user_start = State()\r\n get_info_about_user = State()\r\n get_info_about_user_end = State()\r\n change_user_start = State()\r\n change_user_fullname = State()\r\n change_user_fullnamestart = State()\r\n change_user_age = State()\r\n change_user_agestart = State()\r\n change_user_balance = State()\r\n change_user_balancestart = State()\r\n update_users_balance_confirm = State()\r\n update_users_balance = State()\r\n promo_menu = State()\r\n promo_check_promocode = State()\r\n promo_addpromostart = State()\r\n promo_addpromo_naming = State()\r\n promo_addpromo_naming_usages = State()\r\n promo_addpromo_naming_cost = State()\r\n promo_addpromo_naming_end = State()\r\n promo_addpromousages = State()\r\n promo_addpromocost = State()\r\n promo_addpromoend = State()\r\n promo_delpromo = State()\r\n promo_qr = State()\r\n promo_qrstart = State()\r\n promo_qrend = State()\r\n add_event = State()\r\n add_task = State()\r\n backward = State()\r\n rating_board = State()\r\n ticket = State()\r\n ticket_check = State()\r\n ticket_delete = State()\r\n ticket_start = State()\r\n ticket_middle = State()\r\n ticket_end = State()\r\n rules = State()\r\n rules_addmaker = State()\r\n rules_addmaker_start = State()\r\n rules_delmaker = State()\r\n rules_delmaker_start = State()\r\n taskmenu = State()\r\n taskmenu_namewait = State()\r\n taskmenu_descriptionwait = State()\r\n taskmenu_photowait = State()\r\n taskmenu_collection_counterwait = State()\r\n taskmenu_collection_surveywebapp = State()\r\n taskmenu_collection_list = State()\r\n taskmenu_collection_delete_select = State()\r\n taskmenu_collection_delete_confirm = State()\r\n\r\nclass EventMakerPanel(StatesGroup):\r\n menu = State()\r\n taskmenu = State()\r\n taskmenu_namewait = State()\r\n taskmenu_descriptionwait = State()\r\n taskmenu_photowait = State()\r\n taskmenu_collection_counterwait = State()\r\n taskmenu_collection_surveywebapp = State()\r\n taskmenu_collection_list = State()\r\n taskmenu_collection_delete_select = State()\r\n taskmenu_collection_delete_confirm = State()\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Event maker panel\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(commands=['event'], state='*')\r\nasync def event_command(message: types.Message, state: FSMContext):\r\n with open('roles.json') as f:\r\n event_roles = json.load(f)['event_makers']\r\n\r\n if str(message.from_user.id) not in event_roles:\r\n await message.reply(\"У вас нет прав event maker'а!\", reply_markup=rkbm)\r\n return\r\n\r\n await EventMakerPanel.menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(EventMakerPanel.menu)\r\n users.set(user)\r\n await message.reply(\"Вы вошли в панель event maker`a!\", reply_markup=usermakerkbm)\r\n\r\n@dp.message_handler(text=\"📝Создать задание\", state=EventMakerPanel.menu)\r\nasync def go_event_menu(message: types.Message, state: FSMContext):\r\n await EventMakerPanel.taskmenu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(EventMakerPanel.taskmenu)\r\n users.set(user)\r\n await message.reply(\"Вы вошли в панель создания заданий.\", reply_markup=eventtasks)\r\n\r\n\r\n\r\n@dp.message_handler(text='Удалить коллекцию', state=EventMakerPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите пожалуйста имя коллекции для её удаления\", reply_markup=types.ReplyKeyboardRemove())\r\n await EventMakerPanel.taskmenu_collection_delete_select.set()\r\n\r\n\r\n@dp.message_handler(state=EventMakerPanel.taskmenu_collection_delete_select)\r\nasync def delete_survey_handler(message: types.Message, state: FSMContext):\r\n codee = message.text\r\n deleted = supabase.table('TaskCollection').delete().match({'name': codee}).execute()\r\n\r\n if not deleted.data:\r\n # ничего не удалено\r\n await message.reply(\"Такой коллекции нет\", reply_markup=eventtasks)\r\n await state.finish()\r\n await EventMakerPanel.taskmenu.set()\r\n return\r\n\r\n # удаление прошло успешно\r\n codee_code = code(codee)\r\n await message.reply(f\"Коллекция {codee_code} удалена\", reply_markup=eventtasks, parse_mode='MarkdownV2')\r\n await EventMakerPanel.taskmenu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(EventMakerPanel)\r\n\r\n\r\n@dp.message_handler(text='Список коллекций', state=EventMakerPanel)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await EventMakerPanel.taskmenu_collection_list.set()\r\n chat_id = message.chat.id\r\n user = users.get(message.chat.id)\r\n user.user_state = str(EventMakerPanel.taskmenu_collection_list)\r\n\r\n promos = supabase.table('TaskCollection').select('name', 'url').filter('name', 'gt', 0).order('name',\r\n desc=True).execute()\r\n\r\n promo_text = \"📝 Действующие формы опросов:\\n\\n\"\r\n\r\n for promo in promos.data:\r\n name = promo['name']\r\n url = promo['url']\r\n\r\n name_parsed = f'{name}'\r\n url_parsed = f'Ссылка'\r\n promo_text += (name_parsed + f\" {url_parsed} \\n\")\r\n\r\n await bot.send_message(chat_id, promo_text, parse_mode=types.ParseMode.HTML, reply_markup=eventtasks,\r\n disable_web_page_preview=True)\r\n await state.finish()\r\n await EventMakerPanel.taskmenu.set()\r\n user.user_state = str(EventMakerPanel.taskmenu)\r\n\r\n\r\n@dp.message_handler(text=\"Создать коллекцию\", state=EventMakerPanel.taskmenu)\r\nasync def admin_make(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, f\"Введите название коллекции заданий:\", reply_markup=types.ReplyKeyboardRemove())\r\n await EventMakerPanel.taskmenu_namewait.set()\r\n\r\n\r\n@dp.message_handler(state=EventMakerPanel.taskmenu_namewait)\r\nasync def admin_taskmenu_namewait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n name = message.text\r\n await bot.send_message(chat_id, \"Введите описание коллекции заданий:\")\r\n await state.update_data(name=name)\r\n await EventMakerPanel.taskmenu_descriptionwait.set()\r\n\r\n\r\n@dp.message_handler(state=EventMakerPanel.taskmenu_descriptionwait)\r\nasync def admin_taskmenu_descriptionwait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n description = message.text\r\n await bot.send_message(chat_id, \"Отправте фотографию мероприятия:\")\r\n await state.update_data(description=description)\r\n await EventMakerPanel.taskmenu_photowait.set()\r\n\r\n\r\n@dp.message_handler(content_types=types.ContentType.PHOTO, state=EventMakerPanel.taskmenu_photowait)\r\nasync def admin_taskmenu_photowait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n photo = message\r\n try:\r\n await state.update_data(photo=photo.photo[2].file_id)\r\n await bot.send_message(chat_id, \"Введите количество вопросов в коллекции:\")\r\n await EventMakerPanel.taskmenu_collection_counterwait.set()\r\n except Exception as e:\r\n await bot.send_message(chat_id, \"Произошла ошибка, отправьте пожалуйста фотографию в хорошем качестве.\")\r\n await EventMakerPanel.taskmenu_photowait.set()\r\n\r\n\r\n@dp.message_handler(state=EventMakerPanel.taskmenu_collection_counterwait)\r\nasync def admin_taskmenu_collection_counterwait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n try:\r\n counter = int(message.text)\r\n except ValueError:\r\n await bot.send_message(chat_id, \"Введенное значение должно быть числом > 0\")\r\n await EventMakerPanel.taskmenu_collection_counterwait.set()\r\n if counter <= 0:\r\n await bot.send_message(chat_id, \"Введенное значение должно быть числом > 0\")\r\n await EventMakerPanel.taskmenu_collection_counterwait.set()\r\n else:\r\n await state.update_data(counter=counter)\r\n await bot.send_message(chat_id, \"Коллекция создана успешно! Перейдите пожалуйста, к составлению заданий!⬇️\",\r\n reply_markup=surveywebapp)\r\n await EventMakerPanel.taskmenu_collection_surveywebapp.set()\r\n\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=EventMakerPanel.taskmenu_collection_surveywebapp)\r\nasync def survey_web_app(message: types.ContentType.WEB_APP_DATA, state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n counter = data.get(\"counter\")\r\n querylist = data.get(\"querylist\")\r\n numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r\n numberPoints: dict = {}\r\n if rightAnswers == None:\r\n rightAnswers: dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r\n message.text = message.web_app_data.data\r\n data = json.loads(message.text)\r\n data['questionId'] = await generate_id_for_survey(10)\r\n new_json_data = json.dumps(data)\r\n new_json_data = ast.literal_eval(new_json_data)\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r\n numberPoints.update({new_json_data[\"questionId\"]: new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']: new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints=numberPoints)\r\n await state.update_data(rightAnswers=rightAnswers)\r\n querylist.append(new_json_data)\r\n await state.update_data(querylist=querylist)\r\n if counter > 1:\r\n await bot.send_message(chat_id, \"Пожалуйста, заполните следующий вопрос\", reply_markup=surveywebapp)\r\n await EventMakerPanel.taskmenu_collection_surveywebapp.set()\r\n counter -= 1\r\n await state.update_data(counter=counter)\r\n else:\r\n await EventMakerPanel.taskmenu.set()\r\n await bot.send_message(chat_id, \"Опрос успешно создан!\", reply_markup=eventtasks)\r\n querydict = {\"surveyData\": querylist}\r\n querydict_dump: str = json.dumps(querydict)\r\n url = url + querydict_dump\r\n url = url.replace(' ', '%20')\r\n url = url.replace('\"', '%22')\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r\n description = data.get(\"description\")\r\n photo = data.get(\"photo\")\r\n supabase.table('TaskCollection').insert(\r\n {'name': name, 'description': description, 'photo': photo, 'counter': counter, 'url': url,\r\n 'numberPoints': numberPoints, 'rightAnswers': rightAnswers}).execute()\r\n await state.finish()\r\n await EventMakerPanel.taskmenu.set()\r\n\r\n@dp.message_handler(text='⬅️Назад в меню', state=EventMakerPanel.taskmenu)\r\nasync def back_to_event_main_menu(message: types.Message, state: FSMContext):\r\n await EventMakerPanel.menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(EventMakerPanel.menu)\r\n users.set(user)\r\n await message.reply(\"Вы вышли из панели создания заданий\", reply_markup=usermakerkbm)\r\n\r\n\r\n@dp.message_handler(text = \"⬅️Меню\", state=EventMakerPanel.menu)\r\nasync def back_from_event(message: types.Message, state:FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(MenuStates.waiting_for_profile)\r\n users.set(user)\r\n await message.reply(\"Вы вышли из панели event maker`a\", reply_markup=rkbm)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Event maker panel\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n# Хендлер отмены действия через кнопку\r\n@dp.callback_query_handler(text=\"cancel\", state=[AdminPanel.change_user_balance,AdminPanel.change_user_fullname,AdminPanel.change_user_agestart,AdminPanel.get_info_about_user])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню админ-панели.\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r\n\r\n@dp.message_handler(commands=['admin'], state='*')\r\nasync def admin_command(message: types.Message, state: FSMContext):\r\n # Проверка, что пользователь в списке админов\r\n with open('roles.json') as f:\r\n admin_roles = json.load(f)['admins']\r\n\r\n if str(message.from_user.id) not in admin_roles:\r\n await message.reply(\"У вас нет прав администратора!\", reply_markup=rkbm)\r\n return\r\n\r\n # Установка состояния и вывод кнопок админки\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n await message.reply(\"Вы вошли в панель администратора\", reply_markup=admrkbm)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система обнуления баланса пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"❗Обнулить баланс всех пользователей❗\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def update_users_balance_confirm(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance_confirm.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.update_users_balance)\r\n users.set(user)\r\n await bot.send_message(message.chat.id, '❗Внимание❗ Вы действительно хотите обнулить баланс ВСЕХ пользователей? Данное действие ОТМЕНИТЬ будет НЕВОЗМОЖНО', reply_markup=updatebalanceusers)\r\n await AdminPanel.update_users_balance.set()\r\n\r\n@dp.message_handler(state=AdminPanel.update_users_balance)\r\nasync def update_users_balance(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance.set()\r\n select = message.text\r\n if select == '❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗':\r\n supabase.table('UsersData_duplicate').update({'balance': 0}).neq('balance',0).execute()\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n await message.reply(\"Баланс всех пользователей равен 0!\", reply_markup=admrkbm)\r\n elif select == '⬅️Назад в меню':\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n await message.reply(\"Вы вернулись в панель администратора\", reply_markup=admrkbm)\r\n else:\r\n await message.reply(\"Нет такого варианта, ошибка!\")\r\n \r\n\r\n\r\n# Хендлер для кнопки ️Изменить пользователя\r\n@dp.message_handler(text=\"⚙️Изменить пользователя\", state=AdminPanel.admin_menu)\r\nasync def admin_change_user(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_start.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.change_user_start)\r\n users.set(user)\r\n await message.reply(\r\n \"Вы попали в меню редактирования пользователя, нажмите нужную вам кнопку чтобы изменить параметры пользователя. После нажатия на кнопку введите @username человека в телеграм чтобы поменять его параметры.\",\r\n reply_markup=admue)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система получения информации о пользователе\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"Получить информацию о пользователе\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_get_user_info(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user = users.get(chat_id) \r\n user.user_state = str(AdminPanel.get_info_about_user)\r\n await message.reply(\"Введите @username пользователя о котором хотите получить информацию\", reply_markup=types.ReplyKeyboardRemove())\r\n await message.reply(\"Для отмены действия, нажмите кнопку отмена\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n await AdminPanel.get_info_about_user.set()\r\n users.set(user)\r\n\r\n\r\n@dp.message_handler(state=AdminPanel.get_info_about_user)\r\nasync def admin_get_user_info_start(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n username = message.text\r\n user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.get_info_about_user_start)\r\n try:\r\n userinfo = users.get(username)\r\n userlist = supabase.table('UsersData').select('chat_id').order('balance', desc=True).execute().data\r\n counter = 0\r\n while userlist[counter]['chat_id'] != userinfo.chat_id:\r\n counter += 1\r\n pseudo = userinfo.full_name\r\n gender = userinfo.gender\r\n age = userinfo.age\r\n balance = userinfo.balance\r\n if gender:\r\n gender = \"🙋‍♂️\"\r\n image = os.environ.get(\"MALE\")\r\n else:\r\n gender = \"🙋‍♀️\"\r\n image = os.environ.get(\"FEMALE\")\r\n # Формирование сообщения профиля пользователя\r\n profile_message = f\"Профиль пользователя {username}:\\n\\n\" \\\r\n f\"{gender}{pseudo}, {age} лет\\n└Место в топе: {counter+1}\\n\\n\" \\\r\n f\"💰Баланс: {balance}🔘 поинтов\\n└Мероприятий посещено: ?\"\r\n await bot.send_photo(chat_id=chat_id, photo=image, caption=profile_message, reply_markup=admue)\r\n await AdminPanel.get_info_about_user_end.set()\r\n user.user_state = str(AdminPanel.get_info_about_user_end)\r\n users.set(user)\r\n await state.finish()\r\n await AdminPanel.change_user_start.set()\r\n except IndexError:\r\n await message.reply(\"Такого пользователя не существует. \", reply_markup=admue)\r\n await AdminPanel.change_user_start.set()\r\n user.user_state = str(AdminPanel.change_user_start)\r\n users.set(user)\r\n \r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования баланса пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"Изменить баланс\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_change_user_balance(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_balancestart.set()\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_balancestart)\r\n users.set(admin)\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_balancestart)\r\nasync def admin_change_user_balance_handler(message: types.Message, state: FSMContext):\r\n username = message.text # получаем username\r\n try:\r\n userinfo = users.get(username)\r\n await state.update_data(username=username)\r\n await AdminPanel.change_user_balance.set()\r\n await message.reply(\"Введите новый баланс пользователя\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_balance)\r\n users.set(admin)\r\n except IndexError:\r\n await message.reply(\"Такого пользователя нет в базе данных\", reply_markup=admue)\r\n await state.finish()\r\n await AdminPanel.change_user_start.set()\r\n return\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_balance)\r\nasync def admin_change_user_balance_handler(message: types.Message, state: FSMContext):\r\n new_balance = message.text\r\n data = await state.get_data()\r\n username = data.get(\"username\")\r\n userinfo = users.get(username)\r\n userinfo.balance = new_balance\r\n users.set(userinfo)\r\n # Отправляем сообщение об успешном обновлении\r\n await state.finish()\r\n await AdminPanel.change_user_end.set()\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_end)\r\n users.set(admin)\r\n new_code_balance = code(new_balance)\r\n await message.reply(f\"Баланс пользователя {username} успешно обновлен на {new_code_balance}🔘\", reply_markup=admue, parse_mode=\"MarkdownV2\")\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования ФИО пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"Изменить ФИО\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_change_user_fullname(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_fullnamestart.set()\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_fullnamestart)\r\n users.set(admin)\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_fullnamestart)\r\nasync def admin_change_user_fullname_handler(message: types.Message, state: FSMContext):\r\n username = message.text # получаем username\r\n try:\r\n userinfo = users.get(username)\r\n await state.update_data(username=username) # сохраняем username в данных состояния\r\n await AdminPanel.change_user_fullname.set() # переходим к следующему состоянию\r\n await message.reply(\"Введите новое ФИО пользователя\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.change_user_fullname)\r\n users.set(user)\r\n except IndexError:\r\n await message.reply(\"Такого пользователя нет в базе данных\", reply_markup=admue)\r\n await state.finish()\r\n await AdminPanel.change_user_start.set()\r\n return\r\n # Проверяем, есть ли такой пользователь\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_fullname)\r\nasync def admin_change_user_fullname_handler(message: types.Message, state: FSMContext):\r\n new_fullname = message.text # получаем новое ФИО\r\n chat_id = message.chat.id\r\n admin = users.get(chat_id)\r\n detector = is_dirt()\r\n cnt = 0\r\n FIO = new_fullname.split()\r\n for word in range(len(FIO)):\r\n if FIO[word][0].istitle():\r\n cnt += 1\r\n if new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO):\r\n data = await state.get_data()\r\n username = data.get(\"username\") # получаем сохраненный username из данных состояния\r\n userinfo = users.get(username)\r\n userinfo.full_name = new_fullname\r\n admin.user_state = str(AdminPanel.change_user_end)\r\n users.set(admin)\r\n users.set(userinfo)\r\n # Отправляем сообщение об успешном обновлении\r\n new_code_fullname = code(new_fullname)\r\n await message.reply(f\"ФИО пользователя {username} успешно обновлено на {new_code_fullname}\", reply_markup=admue, parse_mode='MarkdownV2')\r\n await state.finish()\r\n await AdminPanel.change_user_end.set()\r\n else:\r\n await message.reply(\"Неккоректное ФИО\")\r\n await AdminPanel.change_user_fullname.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.change_user_fullname)\r\n users.set(user)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования возраста пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"Изменить возраст\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_change_user_age(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_age.set()\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_age)\r\n users.set(admin)\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_age)\r\nasync def admin_change_user_age_handler(message: types.Message, state: FSMContext):\r\n username = message.text # получаем username\r\n try:\r\n userinfo = users.get(username)\r\n await state.update_data(username=username) # сохраняем username в данных состояния\r\n await AdminPanel.change_user_agestart.set() # переходим к следующему состоянию\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_agestart)\r\n users.set(admin)\r\n await message.reply(\"Введите новый возраст пользователя\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n \r\n # Проверяем, есть ли такой пользователь\r\n except IndexError:\r\n await message.reply(\"Такого пользователя нет в базе данных\", reply_markup=admue)\r\n await state.finish()\r\n await AdminPanel.change_user_start.set()\r\n return\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_agestart)\r\nasync def admin_change_user_age_handler(message: types.Message, state: FSMContext):\r\n new_age = message.text # получаем новый возраст\r\n try:\r\n new_age = int(new_age)\r\n except ValueError as e:\r\n await message.reply(\"Ваш возраст неккоректен. Возраст не должен содержать буквы!\")\r\n print(f\"Error validation age{e}\")\r\n if new_age < 12 or new_age > 122:\r\n await message.reply(\"Ваш возраст неккоректен. Возраст должен лежать в диапазоне от 12 - 122\")\r\n await AdminPanel.change_user_agestart.set()\r\n else:\r\n data = await state.get_data()\r\n username = data.get(\"username\") # получаем сохраненный username из данных состояния\r\n user = users.get(username)\r\n user.age = new_age\r\n user.user_state = str(AdminPanel.change_user_end)\r\n users.set(user)\r\n # Отправляем сообщение об успешном обновлении\r\n new_code_age = code(new_age)\r\n await message.reply(f\"Возраст пользователя {username} успешно обновлен на {new_code_age}\", reply_markup=admue, parse_mode='MarkdownV2')\r\n await state.finish()\r\n await AdminPanel.change_user_end.set()\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система промокодов\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"🗝️Промокоды\", state=AdminPanel.admin_menu)\r\nasync def admin_promocodes(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_menu)\r\n users.set(user)\r\n await message.reply(\"Вы вошли в меню промокодов\", reply_markup=admpromo)\r\n\r\n@dp.message_handler(text=\"Добавить QR\", state=AdminPanel.promo_menu)\r\nasync def admin_promocodes_addqr(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_qrstart.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_qrstart)\r\n users.set(user)\r\n await message.reply(\"Введите промокод, который хотите помстить в QR-код\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.promo_qrstart)\r\nasync def admin_promocodes_add_qr_set(message: types.Message, state: FSMContext):\r\n promo_code = message.text\r\n promocode_data = supabase.table('Promocode').select('cost').eq('promo', promo_code).execute()\r\n\r\n if not promocode_data.data or promocode_data.data[0]['cost'] == 0:\r\n await message.reply(\"Такого промокода не существует или лимит его использования исчерпан\", reply_markup=admpromo)\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n return\r\n\r\n qr = qrcode.make(promo_code)\r\n\r\n byte_io = BytesIO()\r\n qr.save(byte_io, 'PNG')\r\n byte_io.seek(0)\r\n\r\n await message.reply_photo(byte_io, caption=\"Вот QR\\\\-код для промокода \" + code(promo_code) , reply_markup=admpromo, parse_mode=\"MarkdownV2\")\r\n\r\n byte_io.close()\r\n\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text=\"Действующие промокоды\", state=AdminPanel.promo_menu)\r\nasync def admin_promocodes_check(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_check_promocode.set()\r\n chat_id = message.chat.id\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_check_promocode)\r\n\r\n promos = supabase.table('Promocode').select('promo', 'last', 'cost').filter('last', 'gt', 0).order('cost', desc=True).execute()\r\n\r\n promo_text = \"📝 Действующие промокоды:\\n\\n\"\r\n\r\n for promo in promos.data:\r\n codee = promo['promo']\r\n uses_left = promo['last']\r\n cost = promo['cost']\r\n\r\n promo_text += (code(f\"{codee}\") + f\" \\\\- {uses_left} исп\\\\.\\\\, {cost} поинтов\\n\")\r\n\r\n await bot.send_message(chat_id, promo_text, parse_mode=\"MarkdownV2\", reply_markup=admpromo)\r\n supabase.table('Promocode').delete().eq('last', 0).execute()\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text='Нэйминг-промо', state=AdminPanel.promo_menu)\r\nasync def get_naming_promo(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите имя промокода\", reply_markup=types.ReplyKeyboardRemove())\r\n user = users.get(message.chat.id)\r\n await AdminPanel.promo_addpromo_naming.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming)\r\nasync def get_naming_promo_usages(message: types.Message, state:FSMContext):\r\n name = str(message.text)\r\n await message.reply(\"Введите количество использований:\")\r\n await state.update_data(name=name)\r\n await AdminPanel.promo_addpromo_naming_cost.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming_cost)\r\nasync def get_naming_promo_cost(message: types.Message, state:FSMContext):\r\n usages = int(message.text)\r\n await message.reply(\"Введите цену промокода:\")\r\n await state.update_data(usages=usages)\r\n await AdminPanel.promo_addpromo_naming_end.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming_end)\r\nasync def create_naming_promo(message: types.Message, state:FSMContext):\r\n cost = int(message.text)\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r\n usages = data.get(\"usages\")\r\n codee = generate_naming_promo(name, usages, cost)\r\n usages_code = code(usages)\r\n code_cost = code(cost)\r\n texting = (f'Промокод '+ code(f\"{codee}\") + f' с {usages_code} использованиями и ценой {code_cost}🔘 создан')\r\n await message.reply(texting, reply_markup=admpromo, parse_mode= \"MarkdownV2\")\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text ='Добавить промокод',state=AdminPanel.promo_menu)\r\nasync def get_usages(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите количество использований:\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.promo_addpromousages.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromousages)\r\nasync def get_cost(message: types.Message, state: FSMContext):\r\n usages = int(message.text)\r\n await message.reply(\"Введите цену промокода:\")\r\n await state.update_data(usages=usages)\r\n await AdminPanel.promo_addpromocost.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromocost)\r\nasync def create_promo(message: types.Message, state: FSMContext):\r\n data = await state.get_data()\r\n usages = data.get(\"usages\")\r\n cost = int(message.text)\r\n codee = generate_promo(usages, cost)\r\n usages_code = code(usages)\r\n cost_code = code(cost)\r\n texting = (f'Промокод ' + code(f\"{codee}\") + f' с {usages_code} использованиями и ценой {cost_code}🔘 создан')\r\n await message.reply(texting, reply_markup=admpromo, parse_mode=\"MarkdownV2\")\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text=\"Удалить промокод\", state=AdminPanel.promo_menu)\r\nasync def delete_promo(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_delpromo.set()\r\n await message.reply(\"Введите промокод для удаления\", reply_markup=types.ReplyKeyboardRemove())\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_delpromo)\r\n users.set(user)\r\n\r\n\r\n@dp.message_handler(state=AdminPanel.promo_delpromo)\r\nasync def delete_promo_handler(message: types.Message, state: FSMContext):\r\n codee = message.text\r\n deleted = supabase.table('Promocode').delete().match({'promo': codee}).execute()\r\n\r\n if not deleted.data:\r\n # ничего не удалено\r\n await message.reply(\"Промокод не найден\", reply_markup=admpromo)\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n return\r\n\r\n # удаление прошло успешно\r\n codee_code = code(codee)\r\n await message.reply(f\"Промокод {codee_code} удален\", reply_markup=admpromo, parse_mode='MarkdownV2')\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_menu)\r\n\r\n# Хедлер для бека в меню админа\r\n@dp.message_handler(text=\"⬅️Админ меню\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end, AdminPanel.promo_menu])\r\nasync def admin_backtomenu(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система прав\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"👨‍🚀Организаторы\", state=AdminPanel.admin_menu)\r\nasync def give_ruleskbm(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.rules)\r\n users.set(user)\r\n await message.reply(\"Вы попали в раздел для выдачи права создания заданий пользователям. Нажмите на кнопку и следуйте указаниям.\", reply_markup=ruleskbm)\r\n\r\n@dp.message_handler(text=\"Выдать права\",state = AdminPanel.rules)\r\nasync def give_rules(message: types.Message, state: FSMContext):\r\n await AdminPanel.rules_addmaker.set()\r\n await message.reply(\"Введите @username пользователя которому хотите выдать права ивент мейкера\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.rules_addmaker)\r\nasync def give_rules_start(message: types.Message, state: FSMContext):\r\n tgusr = message.text\r\n\r\n user_data = supabase.table('UsersData').select('chat_id').eq('tgusr', tgusr).execute()\r\n\r\n if not user_data.data:\r\n await message.reply(\"Пользователя с таким @username не существует\", reply_markup=ruleskbm)\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n return\r\n\r\n chat_id = user_data.data[0]['chat_id']\r\n\r\n with open('roles.json', 'r') as f:\r\n roles = json.load(f)\r\n\r\n roles['event_makers'].append(str(chat_id))\r\n\r\n with open('roles.json', 'w') as f:\r\n json.dump(roles, f)\r\n\r\n await message.reply(\"Права выданы успешно\", reply_markup=ruleskbm)\r\n\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text=\"Забрать права\", state=AdminPanel.rules)\r\nasync def del_from_eventers(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules_delmaker.set()\r\n await message.reply(\"Введите @username пользователя у котрого хотите забрать права\",reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.rules_delmaker)\r\nasync def del_from_eventers_start(message: types.Message, state: FSMContext):\r\n tgusr = message.text\r\n\r\n user_data = supabase.table('UsersData').select('chat_id').eq('tgusr', tgusr).execute()\r\n\r\n if not user_data.data:\r\n await message.reply(\"Пользователя с таким username не существует\", reply_markup=ruleskbm)\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n return\r\n\r\n chat_id = user_data.data[0]['chat_id']\r\n\r\n with open('roles.json', 'r') as f:\r\n roles = json.load(f)\r\n\r\n if str(chat_id) in roles['event_makers']:\r\n roles['event_makers'].remove(str(chat_id))\r\n\r\n with open('roles.json', 'w') as f:\r\n json.dump(roles, f)\r\n\r\n await message.reply(\"Права успешно удалены\", reply_markup=ruleskbm)\r\n\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text='Действующие права', state=AdminPanel.rules)\r\nasync def show_rules(message: types.Message, state: FSMContext):\r\n\r\n with open('roles.json', 'r') as f:\r\n roles = json.load(f)\r\n\r\n event_makers = roles['event_makers']\r\n\r\n rules_text = \"📝 Пользователи с правами ивент-мейкера:\\n\\n\"\r\n\r\n for chat_id in event_makers:\r\n user_data = supabase.table('UsersData').select('tgusr').eq('chat_id', int(chat_id)).execute()\r\n if user_data.data:\r\n username = user_data.data[0]['tgusr']\r\n rules_text += f\"{username} - {chat_id}\\n\"\r\n\r\n await message.reply(rules_text)\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text=\"⬅️Админ меню\", state=AdminPanel.rules)\r\nasync def back_from_rules(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n\r\n@dp.message_handler(text=\"⬅️Меню\", state=AdminPanel.admin_menu)\r\nasync def admin_menu_back(message: types.Message, state: FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(MenuStates.waiting_for_profile)\r\n users.set(user)\r\n await message.reply(\"Вы вышли из панели администратора\", reply_markup=rkbm)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система админ рейтинга\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"📊Рейтинг\", state=AdminPanel.admin_menu)\r\nasync def admin_rating_board(message: types.Message, state: FSMContext):\r\n await AdminPanel.rating_board.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.rating_board)\r\n users.set(user)\r\n await show_rating(message.chat.id)\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система заданий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text=\"📝Создать задание\", state=AdminPanel.admin_menu)\r\nasync def admin_task_maker(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вошли в редактор заданий\", reply_markup=admtasks)\r\n await AdminPanel.taskmenu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.taskmenu)\r\n users.set(user)\r\n\r\n@dp.message_handler(text='Удалить коллекцию', state=AdminPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите пожалуйста имя коллекции для её удаления\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.taskmenu_collection_delete_select.set()\r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_collection_delete_select)\r\nasync def delete_survey_handler(message: types.Message, state: FSMContext):\r\n codee = message.text\r\n deleted = supabase.table('TaskCollection').delete().match({'name': codee}).execute()\r\n\r\n if not deleted.data:\r\n # ничего не удалено\r\n await message.reply(\"Такой коллекции нет\", reply_markup=admtasks)\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r\n return\r\n\r\n # удаление прошло успешно\r\n codee_code = code(codee)\r\n await message.reply(f\"Коллекция {codee_code} удалена\", reply_markup=admtasks, parse_mode='MarkdownV2')\r\n await AdminPanel.taskmenu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.taskmenu)\r\n\r\n@dp.message_handler(text='Список коллекций', state=AdminPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await AdminPanel.taskmenu_collection_list.set()\r\n chat_id = message.chat.id\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.taskmenu_collection_list)\r\n\r\n promos = supabase.table('TaskCollection').select('name', 'url').filter('name', 'gt', 0).order('name',desc=True).execute()\r\n\r\n promo_text = \"📝 Действующие формы опросов:\\n\\n\"\r\n\r\n for promo in promos.data:\r\n name = promo['name']\r\n url = promo['url']\r\n\r\n name_parsed = f'{name}'\r\n url_parsed = f'Ссылка'\r\n promo_text += (name_parsed + f\" {url_parsed} \\n\")\r\n\r\n await bot.send_message(chat_id, promo_text, parse_mode=types.ParseMode.HTML, reply_markup=admtasks, disable_web_page_preview=True)\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r\n user.user_state = str(AdminPanel.taskmenu)\r\n\r\n\r\n@dp.message_handler(text=\"Создать коллекцию\", state=AdminPanel.taskmenu)\r\nasync def admin_make(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id,f\"Введите название коллекции заданий:\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.taskmenu_namewait.set()\r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_namewait)\r\nasync def admin_taskmenu_namewait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n name = message.text\r\n tasks_name = []\r\n response = supabase.table('TaskCollection').select('*').execute()\r\n for name_table in response.data:\r\n tasks_name.append(name_table['name'])\r\n if name in tasks_name:\r\n await bot.send_message(chat_id,\"Введенное имя уже существует, введите другое\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.AdminPanel.taskmenu.set()\r\n else:\r\n await bot.send_message(chat_id, \"Введите описание коллекции заданий:\")\r\n await state.update_data(name=name)\r\n await AdminPanel.taskmenu_descriptionwait.set()\r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_descriptionwait)\r\nasync def admin_taskmenu_descriptionwait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n description = message.text\r\n await bot.send_message(chat_id, \"Отправте фотографию мероприятия:\")\r\n await state.update_data(description = description)\r\n await AdminPanel.taskmenu_photowait.set()\r\n\r\n@dp.message_handler(content_types= types.ContentType.PHOTO, state = AdminPanel.taskmenu_photowait)\r\nasync def admin_taskmenu_photowait(message: types.Message , state: FSMContext):\r\n chat_id = message.chat.id\r\n photo = message\r\n try:\r\n await state.update_data(photo = photo.photo[2].file_id)\r\n await bot.send_message(chat_id,\"Введите количество вопросов в коллекции:\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n except Exception as e:\r\n await bot.send_message(chat_id,\"Произошла ошибка, отправьте пожалуйста фотографию в хорошем качестве.\")\r\n await AdminPanel.taskmenu_photowait.set()\r\n \r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_collection_counterwait)\r\nasync def admin_taskmenu_collection_counterwait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n try: \r\n counter = int(message.text)\r\n except ValueError:\r\n await bot.send_message(chat_id,\"Введенное значение должно быть числом > 0\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n if counter <= 0:\r\n await bot.send_message(chat_id,\"Введенное значение должно быть числом > 0\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n else:\r\n await state.update_data(counter = counter)\r\n await bot.send_message(chat_id,\"Коллекция создана успешно! Перейдите пожалуйста, к составлению заданий!⬇️\",reply_markup=surveywebapp)\r\n await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=AdminPanel.taskmenu_collection_surveywebapp)\r\nasync def survey_web_app(message: types.ContentType.WEB_APP_DATA , state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n counter = data.get(\"counter\")\r\n querylist = data.get(\"querylist\")\r\n numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r\n numberPoints:dict = {}\r\n if rightAnswers == None:\r\n rightAnswers:dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r\n message.text = message.web_app_data.data\r\n data = json.loads(message.text)\r\n data['questionId'] = await generate_id_for_survey(10)\r\n new_json_data = json.dumps(data)\r\n new_json_data = ast.literal_eval(new_json_data)\r\n data = await state.get_data()\r\n name = data.get(\"name\") \r\n numberPoints.update({new_json_data[\"questionId\"]:new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints = numberPoints)\r\n await state.update_data(rightAnswers = rightAnswers)\r\n querylist.append(new_json_data)\r\n await state.update_data(querylist = querylist)\r\n if counter > 1:\r\n await bot.send_message(chat_id, \"Пожалуйста, заполните следующий вопрос\",reply_markup=surveywebapp)\r\n await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n counter -= 1\r\n await state.update_data(counter = counter)\r\n else:\r\n await AdminPanel.taskmenu.set()\r\n await bot.send_message(chat_id, \"Опрос успешно создан!\", reply_markup=admtasks)\r\n querydict = {\"surveyData\":querylist}\r\n querydict_dump: str = json.dumps(querydict)\r\n url = url + querydict_dump \r\n url = url.replace(' ','%20')\r\n url = url.replace('\"', '%22')\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r\n description = data.get(\"description\")\r\n photo = data.get(\"photo\")\r\n supabase.table('TaskCollection').insert({'name': name, 'description': description, 'photo': photo, 'counter': counter, 'url': url,'numberPoints':numberPoints, 'rightAnswers':rightAnswers}).execute()\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r\n\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=AdminPanel.taskmenu)\r\nasync def back_from_rules(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система регистрации\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r\n@dp.message_handler(Command('start'), state=None)\r\nasync def start_command(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user = users.get(id=chat_id) # Получение состояния пользователя из Supabase\r\n\r\n if user and not (user.full_name == \"\"):\r\n # Пользователь уже зарегистрирован\r\n await MenuStates.waiting_for_profile.set()\r\n await message.reply(\"Чтобы просмотреть свой профиль, нажмите кнопку 'Профиль'.\", reply_markup=rkbm)\r\n else:\r\n user = user if user else User(chat_id=chat_id)\r\n\r\n # Сохранение состояния пользователя\r\n telegram_name = message.from_user.username\r\n\r\n user.user_state = str(RegistrationStates.waiting_for_age)\r\n if telegram_name == None:\r\n user.tgusr = \"У пользователя нет имени\"\r\n else:\r\n user.tgusr = \"@\" + telegram_name\r\n users.set(user)\r\n\r\n # Регистрация нового пользователя\r\n await message.reply(\"Привет! Давай зарегистрируемся! Введите ваш возраст:\")\r\n # Установка состояния \"waiting_for_age\" для пользователя\r\n await RegistrationStates.waiting_for_age.set()\r\n\r\n@dp.message_handler(state=RegistrationStates.waiting_for_age)\r\nasync def handle_age(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user_age = message.text\r\n try:\r\n user_age = int(user_age)\r\n except ValueError as e:\r\n await bot.send_message(chat_id, \"Ваш возраст неккоректен. Возраст не должен содержать буквы!\")\r\n print(f\"Error validation age{e}\")\r\n if int(user_age) < 12 or int(user_age) > 122:\r\n await bot.send_message(chat_id, \"Ваш возраст неккоректен. Попробуйте еще раз\")\r\n await RegistrationStates.waiting_for_age.set()\r\n else:\r\n user = users.get(chat_id)\r\n user.age = user_age\r\n # Сохранение возраста пользователя в DTO\r\n print(f\"Возраст пользователя {chat_id}: {user_age}\")\r\n\r\n # Переход к следующему состоянию \"waiting_for_gender\"\r\n await RegistrationStates.waiting_for_gender.set()\r\n # Сохранение состояния пользователя\r\n user.user_state = str(RegistrationStates.waiting_for_gender)\r\n users.set(user)\r\n\r\n # Запрашиваем пол пользователя\r\n await message.reply(\"Введите ваш пол (Male/Female):\", reply_markup=ikbg)\r\n\r\n@dp.message_handler(state=RegistrationStates.waiting_for_gender)\r\nasync def handle_gender(message: types.Message, state: FSMContext):\r\n gender = message.text.lower()\r\n if gender not in [\"мужской\", \"женский\"]:\r\n await message.reply(\"Пол указан некорректно. Выберите пол кнопками ниже:\", reply_markup=ikbg)\r\n return\r\n\r\n@dp.callback_query_handler(state=RegistrationStates.waiting_for_gender)\r\nasync def handle_gender_callback(query: types.CallbackQuery, state: FSMContext):\r\n chat_id = query.message.chat.id\r\n gender = query.data.lower()\r\n user = users.get(chat_id)\r\n user.gender = bool(int(gender))\r\n print(f\"Пол пользователя {chat_id}: {gender}\")\r\n\r\n # Запрашиваем имя пользователя\r\n await query.message.reply(\"Введите ваше ФИО:\", reply_markup = helpinlinereg)\r\n\r\n # Переход к следующему состоянию \"waiting_for_name\"\r\n await RegistrationStates.waiting_for_name.set()\r\n user.user_state = str(RegistrationStates.waiting_for_name)\r\n users.set(user)\r\n\r\n@dp.message_handler(state=RegistrationStates.waiting_for_name)\r\nasync def handle_name(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n name = message.text\r\n detector = is_dirt()\r\n FIO = name.split()\r\n cnt = 0\r\n for word in range(len(FIO)):\r\n if FIO[word][0].istitle():\r\n cnt += 1\r\n if name.replace(\" \", \"\").isalpha() and len(name) < 40 and len(name) >= 5 and detector(name) == False and cnt == len(FIO):\r\n user = users.get(chat_id)\r\n user.full_name = name\r\n user.user_state = str(RegistrationStates.final_reg) \r\n users.set(user)\r\n\r\n print(f\"Имя пользователя {chat_id}: {name}\")\r\n # Отправка сообщения о успешной регистрации\r\n if str(message.from_user.username) == 'None':\r\n await bot.send_message(chat_id,\r\n f\"Регистрация успешно завершена с неточностями, {user.full_name}!У вас нет имени пользователя Телеграм, связь администрации с вами может быть усложнена, вам необходимо указать в вашем профиле телеграма ваше имя пользователя и перерегистрироваться в боте.\",\r\n reply_markup=rkbm)\r\n else:\r\n await bot.send_message(chat_id, f\"Регистрация успешно завершена, {user.full_name}!\", reply_markup=rkbm)\r\n await state.finish()\r\n await MenuStates.waiting_for_profile.set()\r\n else:\r\n await bot.send_message(chat_id, f\"Пожалуйста, введите корректно свое ФИО\")\r\n await RegistrationStates.waiting_for_name.set()\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Кнопкни главного меню\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r\n@dp.message_handler(state=MenuStates.waiting_for_profile)\r\nasync def handle_waiting_for_profile(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n select = message.text\r\n if select == \"👤Профиль\":\r\n await MenuStates.profile.set()\r\n await handle_profile(message, state)\r\n elif select == \"📊Рейтинг\":\r\n await MenuStates.rating.set()\r\n await user_rating_board(message, state)\r\n elif select ==\"❓Помощь\":\r\n await MenuStates.help.set()\r\n await handle_help(message,state)\r\n elif select == \"📆Календарь событий\":\r\n await MenuStates.calendar.set()\r\n await handle_calendar(message, state)\r\n elif select == \"📝Задания\":\r\n await MenuStates.tasks.set()\r\n counter = 0\r\n await state.update_data(counter=counter)\r\n await handle_tasks(message, state)\r\n elif select == \"🗝️Промокоды\":\r\n await MenuStates.promocode.set()\r\n await bot.send_message(chat_id, \"Вы попали в меню работы с промокодами\", reply_markup=promo_kb)\r\n else:\r\n await message.reply(\"Нет такого варианта выбора!\", reply_markup=rkbm)\r\n\r\n@dp.callback_query_handler(text=\"cancel_user\", state=[ProlfileStates.edit_profile_name, ProlfileStates.edit_profile_age])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню редактирования профиля.\", reply_markup=menuedit)\r\n await ProlfileStates.edit_profile.set()\r\n\r\n@dp.callback_query_handler(text='back_to_menu', state = MenuStates.promocodestart)\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню промокодов.\", reply_markup=promo_kb)\r\n await MenuStates.promocode.set()\r\n\r\n@dp.callback_query_handler(text=\"cancel_user_help\", state=MenuStates.help_end)\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню помощи.\", reply_markup=userhelp)\r\n await MenuStates.help_cancel.set()\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система редактирования профиля\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r\n@dp.message_handler(state=ProlfileStates.edit_profile)\r\nasync def handle_waiting_for_edit_profile(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n select = message.text\r\n if select == \"Изменить ФИО\":\r\n await ProlfileStates.edit_profile_name.set()\r\n await bot.send_message(chat_id, \"Вы выбрали редактирование ФИО\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(chat_id, \"Введите новое ФИО \", reply_markup=cancel_button_for_user)\r\n elif select == \"Изменить возраст\": \r\n await ProlfileStates.edit_profile_age.set()\r\n await bot.send_message(chat_id, \"Вы выбрали редактирование возраста\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(chat_id, \"Введите новый возраст \", reply_markup=cancel_button_for_user)\r\n elif select == \"⬅️Назад в меню\":\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Вы вышли в меню! \", reply_markup=rkbm)\r\n else:\r\n await message.reply(\"Нет такого варианта выбора!\")\r\n\r\n@dp.message_handler(state=ProlfileStates.edit_profile_name)\r\nasync def edit_name_profile(message: types.Message, state:FSMContext):\r\n new_fullname = message.text \r\n chat_id = message.chat.id\r\n detector = is_dirt()\r\n FIO = new_fullname.split()\r\n cnt = 0\r\n for word in range(len(FIO)):\r\n if FIO[word][0].istitle():\r\n cnt += 1\r\n if new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO):\r\n user = users.get(chat_id)\r\n user.full_name = new_fullname\r\n user.user_state = str(ProlfileStates.edit_profile_name)\r\n users.set(user)\r\n await message.reply(f\"Имя успешно обновлено на : {new_fullname}\", reply_markup=rkbm)\r\n await state.finish()\r\n await MenuStates.waiting_for_profile.set()\r\n else:\r\n await bot.send_message(chat_id, f\"Пожалуйста, введите корректно свое ФИО, например: Иванов Иван Иванович\")\r\n await ProlfileStates.edit_profile_name.set()\r\n\r\n@dp.message_handler(state=ProlfileStates.edit_profile_age)\r\nasync def edit_age_profile(message: types.Message, state: FSMContext):\r\n new_age = message.text # получаем новый возраст\r\n try:\r\n new_age = int(new_age)\r\n except ValueError as e:\r\n await message.reply(\"Ваш возраст неккоректен. Возраст не должен содержать буквы!\")\r\n print(f\"Error validation age{e}\")\r\n if new_age < 12 or new_age > 122:\r\n await message.reply(\"Ваш возраст неккоректен. Возраст должен лежать в диапазоне от 12 - 122\")\r\n await ProlfileStates.edit_profile_age.set()\r\n else:\r\n chat_id = message.chat.id\r\n user = users.get(chat_id)\r\n user.age = new_age\r\n user.user_state = str(ProlfileStates.edit_profile_age)\r\n users.set(user)\r\n # Отправляем сообщение об успешном обновлении\r\n await message.reply(f\"Возраст успешно обновлен на {new_age}\", reply_markup=rkbm)\r\n await state.finish()\r\n await MenuStates.waiting_for_profile.set()\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система промокодов\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r\n@dp.message_handler(text=\"🗝️Ввести промокод\", state=MenuStates.promocode)\r\nasync def enter_promocode(message: types.Message):\r\n await bot.send_message(message.chat.id, \"Введите , пожалуйста , ваш промокод сообщением или отправьте боту изображение QR-кода\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(message.chat.id, \"Если хотите вернуться , то нажмите сюда\", reply_markup=cancel_button_to_main)\r\n await MenuStates.promocodestart.set()\r\n\r\n@dp.message_handler(content_types=['photo'], state=MenuStates.promocodestart)\r\nasync def check_qr_code(message: types.Message, state: FSMContext):\r\n\r\n photo_bytes = await message.photo[-1].download(destination=io.BytesIO())\r\n photo_bytes = photo_bytes.getvalue()\r\n\r\n photo_image = PIL.Image.open(io.BytesIO(photo_bytes))\r\n\r\n qr_code = pyzbar.decode(photo_image)\r\n\r\n if qr_code:\r\n qr_code = qr_code[0].data.decode()\r\n\r\n message.text = qr_code\r\n await check_promocode(message, state)\r\n\r\n@dp.message_handler(state=MenuStates.promocodestart)\r\nasync def check_promocode(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n promocode = message.text\r\n poro = promocode\r\n\r\n user = users.get(chat_id)\r\n user_balance = user.balance\r\n\r\n promocode_data = supabase.table('Promocode').select('last', 'cost').eq('promo', promocode).execute()\r\n\r\n if not promocode_data.data:\r\n await message.reply(\"Промокод не найден!\", reply_markup=promo_kb)\r\n await state.finish()\r\n await MenuStates.promocode.set()\r\n user.user_state = str(MenuStates.promocode) # Меню стейт\r\n users.set(user)\r\n return\r\n\r\n promocode = promocode_data.data[0]\r\n\r\n used_promocode_data = supabase.table('UsedPromocode').select('chat_id').eq('promo', poro).eq('chat_id', chat_id).execute()\r\n\r\n if used_promocode_data.data:\r\n # уже использовал\r\n await message.reply(\"Вы уже использовали этот промокод!\", reply_markup=promo_kb)\r\n await state.finish()\r\n await MenuStates.promocode.set()\r\n user.user_state = str(MenuStates.promocode) # Меню стейт\r\n users.set(user)\r\n return\r\n\r\n if promocode['last'] <= 0:\r\n await message.reply(\"Срок действия промокода истек!\", reply_markup=promo_kb)\r\n await state.finish()\r\n await MenuStates.promocode.set()\r\n user.user_state = str(MenuStates.promocode) # Меню стейт\r\n users.set(user)\r\n return\r\n\r\n new_balance = user_balance + promocode['cost']\r\n\r\n new_last = promocode['last'] - 1\r\n \r\n user.balance = new_balance\r\n # Добавим запись о том, что промокод был использован данным пользователем\r\n supabase.table('Promocode').update({'last': new_last}).eq('promo', poro).execute()\r\n expression = ''.join(random.choices(string.ascii_letters, k=8))\r\n supabase.table('UsedPromocode').insert({'id' : expression,'promo': poro, 'chat_id': str(chat_id)}).execute()\r\n\r\n await message.reply(f\"Ваш баланс пополнен на {code(promocode['cost'])}🔘\\\\!\", reply_markup=promo_kb, parse_mode='MarkdownV2')\r\n\r\n await state.finish()\r\n await MenuStates.promocode.set()\r\n user.user_state = str(MenuStates.promocode) # Меню стейт\r\n users.set(user)\r\n\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=MenuStates.promocode)\r\nasync def back_from_promo_menu(message: types.Message, state: FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(message.chat.id, \"Вы вернулись в главное меню\", reply_markup=rkbm)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система рейтинга(Google sheets)\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r\n@dp.message_handler(text =\"📊Рейтинг\", state=MenuStates.waiting_for_profile)\r\nasync def user_rating_board(message: types.Message, state: FSMContext):\r\n await MenuStates.rating.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(MenuStates.rating)\r\n users.set(user)\r\n await show_user_rating(message.chat.id)\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(MenuStates.waiting_for_profile)\r\n users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система отображения профиля\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(state=MenuStates.profile)\r\nasync def handle_profile(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n select = message.text\r\n if select == \"👤Профиль\":\r\n # Запрос данных пользователя из базы данных Supabase\r\n user = users.get(chat_id)\r\n pseudo = user.full_name\r\n gender = user.gender\r\n age = user.age\r\n balance = user.balance\r\n userlist = supabase.table('UsersData').select('chat_id').order('balance', desc=True).execute().data\r\n counter = 0\r\n while userlist[counter]['chat_id'] != chat_id:\r\n counter+=1\r\n if gender:\r\n gender = \"🙋‍♂️\"\r\n image = os.environ.get(\"MALE\")\r\n else:\r\n gender = \"🙋‍♀️\"\r\n image = os.environ.get(\"FEMALE\")\r\n # Формирование сообщения профиля пользователя\r\n profile_message = f\"Добро пожаловать в ваш профиль:\\n\\n\" \\\r\n f\"{gender}{pseudo}, {age} лет\\n└Ваше место в топе: {counter+1}\\n\\n\" \\\r\n f\"💰Баланс: {balance}🔘 поинтов\\n└Мероприятий посещено: ?\"\r\n await bot.send_photo(chat_id=chat_id, photo=image, caption=profile_message, reply_markup=profilebuttons)\r\n # Обработчик нажатия на кнопку удалить профиль\r\n elif select == \"❌Удалить профиль\":\r\n await bot.send_message(chat_id, \"Вы действительно хотите удалить свой профиль?\", reply_markup=confirmbutton)\r\n await ProlfileStates.delete_profile.set()\r\n elif select == \"⚙️Редактировать профиль\":\r\n await ProlfileStates.edit_profile.set()\r\n await bot.send_message(chat_id, \"Выберите какие данные хотите отредактировать! \", reply_markup=menuedit)\r\n elif select == \"⬅️Назад в меню\":\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Вы вернулись в меню!\", reply_markup=rkbm)\r\n \r\n else:\r\n await bot.send_message(chat_id, \"Некорректный выбор.\")\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система удаления профиля\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n \r\n@dp.message_handler(state=ProlfileStates.delete_profile)\r\nasync def del_profile(message: types.Message, state: FSMContext):\r\n select = message.text\r\n chat_id = message.chat.id\r\n tgname = message.from_user.username\r\n if tgname == None and select == \"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\":\r\n user = users.get(chat_id)\r\n users.delete(user)\r\n supabase.table('UsedPromocode').delete().eq('chat_id', chat_id).execute()\r\n supabase.table('Passd').delete().eq('chat_id', chat_id).execute()\r\n await bot.send_message(chat_id, \"Ваш профиль был удален!\", reply_markup=types.ReplyKeyboardRemove())\r\n await state.finish()\r\n elif tgname != None and select == \"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\":\r\n tgname = \"@\" + tgname\r\n user = users.get(tgname)\r\n users.delete(user)\r\n supabase.table('Passd').delete().eq('chat_id', chat_id).execute()\r\n supabase.table('UsedPromocode').delete().eq('chat_id', chat_id).execute()\r\n supabase.table('Report').delete().eq('tgusr',tgname).execute()\r\n await bot.send_message(chat_id, \"Ваш профиль был удален!\", reply_markup=types.ReplyKeyboardRemove())\r\n await state.finish()\r\n elif select == \"⬅️Назад в меню\":\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Вы вернулись в меню!\", reply_markup=rkbm)\r\n else:\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Некорректный выбор, вы вернулись в меню!\", reply_markup=rkbm)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система отображения мероприятий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n \r\n\r\n@dp.message_handler(state=MenuStates.calendar)\r\nasync def handle_calendar(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n response = supabase.table('Event').select('*').limit(5).execute()\r\n events_message = 'Мероприятия:'\r\n for event in response.data:\r\n url = 'https://leader-id.ru/events/'\r\n url = url +str(event['id'])\r\n name = event['full_name']\r\n date_start = event['date_start'][:16]\r\n date_end = event['date_end']\r\n date = date_start + \"-\" + date_end[11:16]\r\n print(date)\r\n events_message += f' \\n' \\\r\n f\"[{name}]({url}) \\n\" \\\r\n f\"⏱{date} \\n\" \\\r\n f'------------------------------'\r\n await bot.send_message(chat_id, events_message,disable_web_page_preview=True,parse_mode=types.ParseMode.MARKDOWN)\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.calendar)\r\n \r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система тикетов для юзера\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(state=MenuStates.help)\r\nasync def handle_help(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, f\"Привет\\\\! Если у тебя есть какие\\\\-то проблемы или пожелания \\\\, то смелее нажимай на кнопку \" + f\"{code('📨Создать заявку')}\" + f\" и администратор с радостью тебе поможет\\\\! \", reply_markup=userhelp, parse_mode = 'MarkdownV2')\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.help)\r\n users.set(user)\r\n await MenuStates.help_start.set()\r\n user.user_state = str(MenuStates.help_start)\r\n\r\n\r\n@dp.message_handler(text=\"📨Создать заявку\", state=MenuStates.help_start)\r\nasync def handle_help_start(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n tgu = message.from_user.username\r\n if tgu == None:\r\n nome = 'имени пользователя'\r\n url = 'https://ru.the-hitech.net/7264375-how-to-create-a-username-on-telegram'\r\n await bot.send_message(chat_id,\r\n f\"У вас нет \" + f\"[{nome}]({url})\" + f\" телеграм!Укажите его в своём профиле и тогда администрация сможет вам помочь.\",\r\n reply_markup=rkbm, disable_web_page_preview=True,\r\n parse_mode=types.ParseMode.MARKDOWN)\r\n await MenuStates.waiting_for_profile.set()\r\n else:\r\n tgus = '@' + tgu\r\n tgus = '@' + tgu\r\n # Проверяем, есть ли у пользователя предыдущие заявки\r\n existing_reports = supabase.table('Report').select('tgusr').eq('tgusr', tgus).execute()\r\n if existing_reports.data:\r\n await message.reply(\"У вас уже есть открытая заявка. Пожалуйста, дождитесь ответа.\", reply_markup=rkbm)\r\n await state.finish()\r\n await MenuStates.waiting_for_profile.set()\r\n\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.help)\r\n users.set(user)\r\n return\r\n\r\n await bot.send_message(chat_id, \"Нажмите сюда чтобы вернуться\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(chat_id, \"Распишите здесь наиподробнейшим образом какой у вас возник вопрос или пожелание!\",reply_markup=cancel_button_for_user_help)\r\n\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.help_end)\r\n await MenuStates.help_end.set()\r\n\r\n@dp.message_handler(state=MenuStates.help_end)\r\nasync def handle_help_end(message: types.Message, state: FSMContext):\r\n try:\r\n Description = message.text\r\n chat_id = message.chat.id\r\n telegram_name = message.from_user.username\r\n tgusr = telegram_name\r\n\r\n tgusr = \"@\" + telegram_name\r\n\r\n # Вставка в БД\r\n supabase.table('Report').insert({'description': Description, 'tgusr': tgusr}).execute()\r\n\r\n # Подтверждающее сообщение\r\n await bot.send_message(chat_id, \"Заявка успешно отправлена! В ближайшее время с вами свяжется администратор.\", reply_markup=userhelp)\r\n\r\n except:\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, \"Извините, произошла ошибка при отправке заявки\", reply_markup=userhelp)\r\n await MenuStates.help_cancel.set()\r\n\r\n # Сброс состояния\r\n await state.finish()\r\n await MenuStates.help_ender.set()\r\n users.user_state=str(MenuStates.help)\r\n\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r\nasync def handle_help_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Вы вернулись в меню!\", reply_markup=rkbm)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система тикетов для админов\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📨Обращения\", state = AdminPanel.admin_menu)\r\nasync def handle_report(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, \"Нажата кнопка обращений, здесь вы можете просмотреть действующие обращения от пользователей или удалить уже решённые. \", reply_markup=admreport)\r\n await AdminPanel.ticket.set()\r\n user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.ticket)\r\n\r\n\r\n@dp.message_handler(text='Действующие обращения', state=AdminPanel.ticket)\r\nasync def check_tickets(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.ticket_check)\r\n\r\n # Запрос обращений из БД\r\n tickets = supabase.table('Report').select('tgusr', 'description').execute().data\r\n\r\n tickets_text = \"📨 Действующие обращения:\\n\\n\"\r\n\r\n for i, ticket in enumerate(tickets, 1):\r\n username = ticket['tgusr']\r\n description = ticket['description']\r\n tickets_text += f\"{i}. {username} - {description}\\n\"\r\n\r\n # Отправка сообщения\r\n await bot.send_message(chat_id, tickets_text)\r\n\r\n # Смена состояния\r\n await AdminPanel.ticket.set()\r\n user.user_state = str(AdminPanel.ticket)\r\n\r\n@dp.message_handler(text = \"Удалить обращение\", state=AdminPanel.ticket)\r\nasync def delete_ticket(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await AdminPanel.ticket_delete.set()\r\n user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.ticket_delete)\r\n await message.reply(\"Введите @username пользователя чтобы удалить его заявку\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.ticket_start.set()\r\n user.user_state = str(AdminPanel.ticket_delete)\r\n\r\n\r\n@dp.message_handler(state=AdminPanel.ticket_start)\r\nasync def handle_ticket_delete(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n username = message.text\r\n\r\n # Проверка, есть ли такой пользователь\r\n user_exists = supabase.table('Report').select('tgusr').eq('tgusr', username).execute()\r\n if not user_exists.data:\r\n await message.reply(\"Такого пользователя нет в базе данных\", reply_markup= admreport)\r\n await state.finish()\r\n await AdminPanel.ticket.set()\r\n return\r\n\r\n # Удаление обращения\r\n delete_query = supabase.table('Report').delete().eq('tgusr', username).execute()\r\n\r\n await message.reply(f\"Обращение пользователя {username} успешно удалено\", reply_markup=admreport)\r\n await AdminPanel.ticket.set()\r\n user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.ticket)\r\n\r\n\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=AdminPanel.ticket)\r\nasync def handle_tickets_back(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система заданий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📝Задания\", state=MenuStates.tasks)\r\nasync def handle_tasks(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n counter = data.get('counter')\r\n await state.update_data(counter = counter)\r\n task = supabase.table('TaskCollection').select('name','description','photo','url').execute().data[int(counter)]\r\n text = f\"{task['name']}\\n{task['description']}\"\r\n await state.update_data(name = task['name'])\r\n ikbmtasks = ReplyKeyboardMarkup(resize_keyboard=True)\r\n ibleft = KeyboardButton(text=\"⬅️\")\r\n ibright = KeyboardButton(text=\"➡️\")\r\n ibback = KeyboardButton(text=\"⬅️Меню\")\r\n print(f\"{task['url']}\")\r\n ibgo = KeyboardButton(text=\"✅\", web_app = WebAppInfo(url = f'{task[\"url\"]}'))\r\n ikbmtasks.row(ibleft, ibgo, ibright)\r\n ikbmtasks.row(ibback)\r\n message_id_data = await bot.send_photo(chat_id, task['photo'] , text, reply_markup= ikbmtasks)\r\n message_id_data = message_id_data['message_id']\r\n await state.update_data(message_id_data=message_id_data)\r\n\r\n@dp.message_handler(text=\"➡️\", state=MenuStates.tasks)\r\nasync def right(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n counter = data.get('counter')+1\r\n if counter>len(supabase.table('TaskCollection').select('name' ).execute().data)-1:\r\n counter = 0\r\n await state.update_data(counter = counter)\r\n await handle_tasks(message, state)\r\n await bot.delete_message(chat_id=chat_id, message_id=data.get('message_id_data'))\r\n await bot.delete_message(chat_id=chat_id, message_id=message.message_id)\r\n\r\n@dp.message_handler(text=\"⬅️\", state=MenuStates.tasks)\r\nasync def left(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n counter = data.get('counter') - 1\r\n if counter < 0:\r\n counter = len(supabase.table('TaskCollection').select('name').execute().data) - 1\r\n await state.update_data(counter=counter)\r\n await handle_tasks(message, state)\r\n await bot.delete_message(chat_id=chat_id, message_id=data.get('message_id_data'))\r\n await bot.delete_message(chat_id=chat_id, message_id=message.message_id)\r\n\r\n@dp.message_handler(text=\"⬅️Меню\", state=MenuStates.tasks)\r\nasync def task_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n await bot.delete_message(chat_id=chat_id, message_id=data.get('message_id_data'))\r\n await bot.delete_message(chat_id=chat_id, message_id=message.message_id)\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Вы вернулись в меню!\", reply_markup=rkbm)\r\n\r\n\r\n\r\n\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=MenuStates.tasks)\r\nasync def handle_test_results(message: types.ContentType.WEB_APP_DATA, state: FSMContext):\r\n message.text = message.web_app_data.data\r\n chat_id = message.chat.id\r\n user_answers = json.loads(message.text)\r\n\r\n data = await state.get_data()\r\n counter = data.get('counter')\r\n name = data.get('name')\r\n task = supabase.table('TaskCollection').select('numberPoints', 'rightAnswers').execute().data[int(counter)]\r\n\r\n # Преобразуем в словарь\r\n right_answers = json.loads(task['rightAnswers'])\r\n points = json.loads(task['numberPoints'])\r\n\r\n\r\n user_answers_dict = {}\r\n\r\n for question_id in user_answers:\r\n user_answers_dict[question_id] = user_answers[question_id]\r\n\r\n num_correct = 0\r\n score = 0\r\n\r\n user = users.get(chat_id)\r\n user_balance = user.balance\r\n\r\n for question_id in user_answers_dict:\r\n if user_answers_dict[question_id] == right_answers[question_id]:\r\n num_correct += 1\r\n score += int(points[question_id])\r\n\r\n used_survey_data = supabase.table('Passd').select('chat_id').eq('name', name).eq('chat_id', chat_id).execute()\r\n\r\n if used_survey_data.data:\r\n\r\n await bot.send_message(\r\n message.chat.id,\r\n text=f\"Вы уже проходили этот опрос.\"\r\n )\r\n return\r\n\r\n ident = generate_code()\r\n supabase.table('Passd').insert({'chat_id':chat_id, 'name':name, 'id': ident}).execute()\r\n new_balance = user_balance + score\r\n user.balance = new_balance\r\n users.set(user)\r\n await bot.send_message(\r\n message.chat.id,\r\n text=f\"Правильных ответов: {num_correct}\\nБаллов: {score}\"\r\n )\r\n\r\n\r\n\r\n# код подсчета результатов\r\n\r\n\r\ndef calculate_score(user_answers, right_answers, points):\r\n score = 0\r\n num_correct = 0\r\n\r\n for question_id in user_answers:\r\n if user_answers[question_id] == right_answers[question_id]:\r\n score += " + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0a9e284ac4bda6e41a886fe98c10b357cbe3a98c3a2a68bd5a964224a5119a46" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/models/__init__.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 0, + "snippet": { + "text": "" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 0, + "snippet": { + "text": "" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2128a4526ac2765784a1febb98913c0a96d248456068343fe82e99e40ea748e2" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "codegen.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 1268, + "snippet": { + "text": "import random\r\nimport string\r\nimport os\r\nfrom dotenv import load_dotenv\r\nfrom supabase import Client, create_client\r\n\r\nload_dotenv()\r\n\r\n# Инициализация подключения к базе данных Supabase\r\nurl = os.environ.get(\"SUPABASE_URL\")\r\nkey = os.environ.get(\"SUPABASE_KEY\")\r\nsupabase = create_client(url, key)\r\n\r\ntable_name = \"Promocode\"\r\n\r\n\r\ndef generate_code(length=16):\r\n chars = string.ascii_letters + string.digits\r\n code = ''.join(random.choice(chars) for _ in range(length))\r\n return code\r\n\r\n\r\ndef generate_promo(usages, cost):\r\n code = generate_code()\r\n print(f\"Generated promo code: {code}\")\r\n\r\n if cost == 0:\r\n cost = 1\r\n\r\n if usages < 0:\r\n usages = 1\r\n\r\n data = {\r\n 'promo': code,\r\n 'last': usages,\r\n 'cost': cost\r\n }\r\n\r\n supabase.table(table_name).insert(data).execute()\r\n print(f\"Added {code} with {usages} usages and {cost} cost to {table_name} table\")\r\n return code\r\n\r\ndef generate_naming_promo(name, usages, cost):\r\n\r\n if cost == 0:\r\n cost = 1\r\n\r\n if usages < 0:\r\n usages = 1\r\n\r\n data = {\r\n 'promo': name,\r\n 'last': usages,\r\n 'cost': cost\r\n }\r\n\r\n supabase.table(table_name).insert(data).execute()\r\n print(f\"Added {name} with {usages} usage" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 1326, + "snippet": { + "text": "import random\r\nimport string\r\nimport os\r\nfrom dotenv import load_dotenv\r\nfrom supabase import Client, create_client\r\n\r\nload_dotenv()\r\n\r\n# Инициализация подключения к базе данных Supabase\r\nurl = os.environ.get(\"SUPABASE_URL\")\r\nkey = os.environ.get(\"SUPABASE_KEY\")\r\nsupabase = create_client(url, key)\r\n\r\ntable_name = \"Promocode\"\r\n\r\n\r\ndef generate_code(length=16):\r\n chars = string.ascii_letters + string.digits\r\n code = ''.join(random.choice(chars) for _ in range(length))\r\n return code\r\n\r\n\r\ndef generate_promo(usages, cost):\r\n code = generate_code()\r\n print(f\"Generated promo code: {code}\")\r\n\r\n if cost == 0:\r\n cost = 1\r\n\r\n if usages < 0:\r\n usages = 1\r\n\r\n data = {\r\n 'promo': code,\r\n 'last': usages,\r\n 'cost': cost\r\n }\r\n\r\n supabase.table(table_name).insert(data).execute()\r\n print(f\"Added {code} with {usages} usages and {cost} cost to {table_name} table\")\r\n return code\r\n\r\ndef generate_naming_promo(name, usages, cost):\r\n\r\n if cost == 0:\r\n cost = 1\r\n\r\n if usages < 0:\r\n usages = 1\r\n\r\n data = {\r\n 'promo': name,\r\n 'last': usages,\r\n 'cost': cost\r\n }\r\n\r\n supabase.table(table_name).insert(data).execute()\r\n print(f\"Added {name} with {usages} usages and {cost} cost to {table_name} table\")\r\n return name" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3c392565422c10d89814d9403348aaaa66608bb05f0cfd44772c44034553f9d2" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 2904, + "snippet": { + "text": "import os\r\nfrom dotenv import load_dotenv\r\nfrom supabase import Client , create_client\r\n\r\n\r\n\r\nload_dotenv()\r\n\r\n# Инициализация подключения к базе данных Supabase\r\nurl: str = os.environ.get(\"SUPABASE_URL\")\r\nkey: str = os.environ.get(\"SUPABASE_KEY\")\r\nsupabase: Client = create_client(url,key)\r\ntable_name = \"UsersData\"\r\n\r\n\r\ndef get_user_state_by_id(chat_id: int) -> str:\r\n try:\r\n response = supabase.table(table_name).select('user_state').eq('chat_id', chat_id).limit(1).execute()\r\n if len(response.data) > 0:\r\n user_state = response.data[0].get('user_state')\r\n print(f\"Retrieved user state for {chat_id}: {user_state}\")\r\n return user_state\r\n else:\r\n return \"\"\r\n except Exception as e:\r\n print(f\"Error retrieving user state for {chat_id}: {e}\")\r\n return \"\"\r\n\r\ndef update_user_state_by_id(chat_id: int, state: str):\r\n try:\r\n chat_id_str = str(chat_id) # Преобразование chat_id в строку\r\n response = supabase.table(table_name).update({'user_state': state}).eq('chat_id', chat_id_str).execute()\r\n print(f\"Updated user state for {chat_id}: {state}\")\r\n except Exception as e:\r\n print(f\"Error updating user state for {chat_id}: {e}\")\r\n\r\ndef update_user_fullname_by_tgusr(tgusr: str, full_name: str):\r\n try:\r\n response = supabase.table(table_name).update({'full_name': full_name}).eq('tgusr', tgusr).execute()\r\n print(f\"Updated user fullname for {tgusr}: {full_name}\")\r\n except Exception as e:\r\n print(f\"Error updating user fullname for {tgusr}: {e}\")\r\n\r\ndef update_user_age_by_tgusr(tgusr: str, age : int):\r\n try:\r\n response = supabase.table(table_name).update({'age': age}).eq('tgusr', tgusr).execute()\r\n print(f\"Updated user age for {tgusr}: {age}\")\r\n except Exception as e:\r\n print(f\"Error updating user age for {tgusr}: {e}\")\r\n\r\ndef update_user_balance_by_tgusr(tgusr: str, balance : int):\r\n try:\r\n response = supabase.table(table_name).update({'balance': balance}).eq('tgusr', tgusr).execute()\r\n print(f\"Updated user balance for {tgusr}: {balance}\")\r\n except Exception as e:\r\n print(f\"Error updating user balance for {tgusr}: {e}\")\r\n\r\ndef delete_user_data_by_id(chat_id: int) -> str:\r\n try:\r\n chat_id_str = str(chat_id)\r\n result = supabase.table(table_name).delete().eq('chat_id', chat_id_str).execute()\r\n if result[\"error\"]:\r\n print(f\"Error deleting rows: {result['error']}\")\r\n else:\r\n print(f\"{result['count']} rows deleted\")\r\n except Exception as e:\r\n print(f\"Error delete user data: {chat_id}: {e}\")\r\n\r\n\r\ndef get_user_info_by_id(chat_id:int ) -> str:\r\n try:\r\n response = supabase.table('UsersData').select('full_name','gender','age','balance','tgusr').eq('chat_id', chat_id).execute()\r\n return response\r\n except Excepti" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 2904, + "snippet": { + "text": "import os\r\nfrom dotenv import load_dotenv\r\nfrom supabase import Client , create_client\r\n\r\n\r\n\r\nload_dotenv()\r\n\r\n# Инициализация подключения к базе данных Supabase\r\nurl: str = os.environ.get(\"SUPABASE_URL\")\r\nkey: str = os.environ.get(\"SUPABASE_KEY\")\r\nsupabase: Client = create_client(url,key)\r\ntable_name = \"UsersData\"\r\n\r\n\r\ndef get_user_state_by_id(chat_id: int) -> str:\r\n try:\r\n response = supabase.table(table_name).select('user_state').eq('chat_id', chat_id).limit(1).execute()\r\n if len(response.data) > 0:\r\n user_state = response.data[0].get('user_state')\r\n print(f\"Retrieved user state for {chat_id}: {user_state}\")\r\n return user_state\r\n else:\r\n return \"\"\r\n except Exception as e:\r\n print(f\"Error retrieving user state for {chat_id}: {e}\")\r\n return \"\"\r\n\r\ndef update_user_state_by_id(chat_id: int, state: str):\r\n try:\r\n chat_id_str = str(chat_id) # Преобразование chat_id в строку\r\n response = supabase.table(table_name).update({'user_state': state}).eq('chat_id', chat_id_str).execute()\r\n print(f\"Updated user state for {chat_id}: {state}\")\r\n except Exception as e:\r\n print(f\"Error updating user state for {chat_id}: {e}\")\r\n\r\ndef update_user_fullname_by_tgusr(tgusr: str, full_name: str):\r\n try:\r\n response = supabase.table(table_name).update({'full_name': full_name}).eq('tgusr', tgusr).execute()\r\n print(f\"Updated user fullname for {tgusr}: {full_name}\")\r\n except Exception as e:\r\n print(f\"Error updating user fullname for {tgusr}: {e}\")\r\n\r\ndef update_user_age_by_tgusr(tgusr: str, age : int):\r\n try:\r\n response = supabase.table(table_name).update({'age': age}).eq('tgusr', tgusr).execute()\r\n print(f\"Updated user age for {tgusr}: {age}\")\r\n except Exception as e:\r\n print(f\"Error updating user age for {tgusr}: {e}\")\r\n\r\ndef update_user_balance_by_tgusr(tgusr: str, balance : int):\r\n try:\r\n response = supabase.table(table_name).update({'balance': balance}).eq('tgusr', tgusr).execute()\r\n print(f\"Updated user balance for {tgusr}: {balance}\")\r\n except Exception as e:\r\n print(f\"Error updating user balance for {tgusr}: {e}\")\r\n\r\ndef delete_user_data_by_id(chat_id: int) -> str:\r\n try:\r\n chat_id_str = str(chat_id)\r\n result = supabase.table(table_name).delete().eq('chat_id', chat_id_str).execute()\r\n if result[\"error\"]:\r\n print(f\"Error deleting rows: {result['error']}\")\r\n else:\r\n print(f\"{result['count']} rows deleted\")\r\n except Exception as e:\r\n print(f\"Error delete user data: {chat_id}: {e}\")\r\n\r\n\r\ndef get_user_info_by_id(chat_id:int ) -> str:\r\n try:\r\n response = supabase.table('UsersData').select('full_name','gender','age','balance','tgusr').eq('chat_id', chat_id).execute()\r\n return response\r\n except Excepti" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "641a32716e7b755d8210eac5e2b0f571745fc155688955c092a0c6cbc9e0f605" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/models/users.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 233, + "snippet": { + "text": "from pydantic import BaseModel, ValidationError\r\n\r\n\r\nclass User(BaseModel):\r\n\r\n \r\n chat_id: int = 0 \r\n full_name: str = ''\r\n gender: bool = None\r\n user_state: str = ''\r\n age: int = 0\r\n balance: int = 0\r\n tgusr" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 247, + "snippet": { + "text": "from pydantic import BaseModel, ValidationError\r\n\r\n\r\nclass User(BaseModel):\r\n\r\n \r\n chat_id: int = 0 \r\n full_name: str = ''\r\n gender: bool = None\r\n user_state: str = ''\r\n age: int = 0\r\n balance: int = 0\r\n tgusr: str = ''\r\n\r\n" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6db367a27829dc3c0b6e9d942c2887774fcbb75ef02055d4ff5a5e1f23c213db" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/__init__.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 0, + "snippet": { + "text": "" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 0, + "snippet": { + "text": "" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "93d0d80cf19e1b5b44e421a59d4169d91c24bc08243c4d23ae227281ba63b4b9" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/__init__.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 0, + "snippet": { + "text": "" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 0, + "snippet": { + "text": "" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9ce3b4a8bcaaca82054191632afcd8c8449ded0728bb201ad18c26e6ad482835" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 295, + "snippet": { + "text": "from abc import ABC\r\nfrom src.models.users import User\r\nfrom typing import List\r\n\r\nclass UserRepository(ABC):\r\n \r\n def get(self,id : str) -> User:\r\n ...\r\n \r\n def set(self,user : User) -> None:\r\n ...\r\n\r\n def delete(self,id : str) -> None:\r\n ...\r\n\r\n def list(self,**kwargs) -> List[" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 311, + "snippet": { + "text": "from abc import ABC\r\nfrom src.models.users import User\r\nfrom typing import List\r\n\r\nclass UserRepository(ABC):\r\n \r\n def get(self,id : str) -> User:\r\n ...\r\n \r\n def set(self,user : User) -> None:\r\n ...\r\n\r\n def delete(self,id : str) -> None:\r\n ...\r\n\r\n def list(self,**kwargs) -> List[User]: \r\n ..." + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c668e0fbf3d0236e8073a7094180a57a13cd6190357c05dc3227d0e0af4af3fb" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 8996, + "snippet": { + "text": "from aiogram.types import InlineKeyboardMarkup,InlineKeyboardButton, ReplyKeyboardMarkup, KeyboardButton\r\nfrom aiogram.types.web_app_info import WebAppInfo\r\n#gender buttons\r\nikbg = InlineKeyboardMarkup(row_width=2)\r\nibm = InlineKeyboardButton(text=\"🙋‍♂️Мужчина\",callback_data='1')\r\nibf = InlineKeyboardButton(text=\"🙋‍♀️Женщина\",callback_data='0')\r\nikbg.add(ibm,ibf)\r\n\r\n#menu buttons\r\nrkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nkprofile= KeyboardButton(text=\"👤Профиль\")\r\nkliderboard= KeyboardButton(text=\"📊Рейтинг\")\r\nkschedule= KeyboardButton(text=\"📆Календарь событий\")\r\nkhelp= KeyboardButton(text=\"❓Помощь\")\r\nkexercise= KeyboardButton(text=\"📝Задания\")\r\nkpromo = KeyboardButton(text=\"🗝️Промокоды\")\r\nrkbm.row(kprofile,kliderboard)\r\nrkbm.add(kexercise)\r\nrkbm.add(kschedule)\r\nrkbm.row(khelp,kpromo)\r\n\r\n#promo_menuu\r\npromo_kb = ReplyKeyboardMarkup(resize_keyboard=True)\r\npromo_kb_qrscanner = KeyboardButton(text=\"📲QR-код\", web_app=WebAppInfo(url=\"https://bpb-qr.pages.dev/\"))\r\npromo_kb_enter = KeyboardButton(text=\"🗝️Ввести промокод\")\r\npromo_kb_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\npromo_kb.add(promo_kb_enter)\r\npromo_kb.add(promo_kb_qrscanner)\r\npromo_kb.add(promo_kb_back)\r\n\r\n\r\n#profilemenu buttons\r\nprofilebuttons = ReplyKeyboardMarkup(resize_keyboard=True)\r\ndelprofile = KeyboardButton(text=\"❌Удалить профиль\")\r\nprofilebuttons.row(delprofile)\r\neditbutton = ReplyKeyboardMarkup(resize_keyboard=True)\r\nedbutton = KeyboardButton(text=\"⚙️Редактировать профиль\")\r\nprofilebuttons.row(edbutton)\r\nbacktomenubutton = KeyboardButton(text=\"⬅️Назад в меню\")\r\nprofilebuttons.row(backtomenubutton)\r\n#confirm delete button and edit button + back button to profile\r\nback = ReplyKeyboardMarkup(resize_keyboard=True)\r\nbackbutt = KeyboardButton(text=\"⬅️Назад в меню\")\r\nback.row(backbutt)\r\n\r\nmenuedit = ReplyKeyboardMarkup(resize_keyboard=True)\r\neditname = KeyboardButton(text=\"Изменить ФИО\")\r\neditage = KeyboardButton(text=\"Изменить возраст\")\r\nmenuedit.row(editname)\r\nmenuedit.row(editage)\r\nmenuedit.row(backbutt)\r\n\r\nconfirmbutton = ReplyKeyboardMarkup(resize_keyboard=True)\r\nconfbutton = KeyboardButton(text=\"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\")\r\nbackbutton = KeyboardButton(text=\"⬅️Назад в меню\")\r\nconfirmbutton.row(confbutton)\r\nconfirmbutton.row(backbutton)\r\n\r\n#usermaker buttons\r\nusermakerkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nusmkbm_task = KeyboardButton(text=\"📝Создать задание\")\r\nusmkbm_menu = KeyboardButton(text=\"⬅️Меню\")\r\nusermakerkbm.row(usmkbm_task)\r\nusermakerkbm.row(usmkbm_menu)\r\n\r\n\r\n#usermaker add task menu buttons\r\neventtasks = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmcreatetask = KeyboardButton(text=\"Создать коллекцию\")\r\nadmtasklist = KeyboardButton(text=\"Список коллекций\")\r\nadmdeletetask = KeyboardButton(text=\"Удалить коллекцию\")\r\nadmtaskback = KeyboardButton(text=\"⬅️Назад в меню\")\r\neventtasks.row(admcreatetask)\r\neventtasks.row(admdeletetask,admtasklist)\r\neventtasks.row(admtaskback)\r\n\r\n#admin buttons\r\nadmrkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmk_user_editor = KeyboardButton(text=\"⚙️Изменить пользователя\")\r\nadmk_job_creation = KeyboardButton(text=\"📝Создать задание\")\r\nadmk_menu = KeyboardButton(text=\"⬅️Меню\")\r\nadmk_liderboard = KeyboardButton(text=\"📊Рейтинг\")\r\nadmk_promo = KeyboardButton(text=\"🗝️Промокоды\")\r\nadmk_ticket = KeyboardButton(text=\"📨Обращения\")\r\nadmk_rules = KeyboardButton(text=\"👨‍🚀Организаторы\")\r\nadmrkbm.row(admk_user_editor)\r\nadmrkbm.row(admk_job_creation,admk_promo)\r\nadmrkbm.row(admk_liderboard, admk_ticket)\r\nadmrkbm.row(admk_menu,admk_rules)\r\n\r\n#rules keyboard\r\nruleskbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nruleskbm_addmaker = KeyboardButton(text=\"Выдать права\")\r\nruleskbm_delmaker = KeyboardButton(text=\"Забрать права\")\r\nruleskbm_check = KeyboardButton(text=\"Действующие права\")\r\nruleskbm_back = KeyboardButton(text=\"⬅️Админ меню\")\r\nruleskbm.row(ruleskbm_addmaker,ruleskbm_delmaker)\r\nruleskbm.row(ruleskbm_check)\r\nruleskbm.row(ruleskbm_back)\r\n\r\n# admin report keyboard\r\nadmreport = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmreport_check = KeyboardButton(text=\"Действующие обращения\")\r\nadmreport_del = KeyboardButton(text=\"Удалить обращение\")\r\nadmreport_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\nadmreport.row(admreport_check)\r\nadmreport.row(admreport_del)\r\nadmreport.row(admreport_back)\r\n\r\n#User help button\r\nuserhelp = ReplyKeyboardMarkup(resize_keyboard=True)\r\nuserhelp_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\nuserhelp_ticket = KeyboardButton(text=\"📨Создать заявку\")\r\nguide = KeyboardButton(text=\"?📑Руководство пользователя\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/User%20guide/README.md'))\r\nuserhelp.row(userhelp_ticket)\r\nuserhelp.row(guide)\r\nuserhelp.row(userhelp_back)\r\n\r\n# admin user editor button\r\nadmue = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmue_fullname_editor = KeyboardButton(text=\"Изменить ФИО\")\r\nadmue_age_editor = KeyboardButton(text=\"Изменить возраст\")\r\nadmue_balance_editor = KeyboardButton(text=\"Изменить баланс\")\r\nadmue_get_info_user = KeyboardButton(text=\"Получить информацию о пользователе\")\r\nadmue_update_users_balance = KeyboardButton(text=\"❗Обнулить баланс всех пользователей❗\")\r\nadmue_back = KeyboardButton(text=\"⬅️Админ меню\")\r\nadmue.row(admue_get_info_user)\r\nadmue.row(admue_fullname_editor,admue_age_editor,admue_balance_editor)\r\nadmue.row(admue_update_users_balance)\r\nadmue.row(admue_back)\r\nadmui = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmui_back = InlineKeyboardButton(text=\"⬅️Отменить редактирование\")\r\n\r\n#admin promo button\r\nadmpromo = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmpromo_checkpromo = KeyboardButton(text=\"Действующие промокоды\")\r\nadmpromo_addpromo = KeyboardButton(text=\"Добавить промокод\")\r\nadmpromo_namingpromo = KeyboardButton(text=\"Нэйминг-промо\")\r\nadmpromo_delpromo = KeyboardButton(text=\"Удалить промокод\")\r\naddpromo_addqr = KeyboardButton(text=\"Добавить QR\")\r\nadmpromo.row(addpromo_addqr)\r\nadmpromo.row(admpromo_checkpromo)\r\nadmpromo.row(admpromo_addpromo,admpromo_namingpromo,admpromo_delpromo)\r\nadmpromo.row(admue_back)\r\n\r\ncancel_button = InlineKeyboardButton(text=\"❌Отмена\", callback_data=\"cancel\")\r\n\r\n# Отмена редактирования для юзера\r\ncancel_button_for_user = InlineKeyboardMarkup(row_width=1)\r\ncancel_abob = InlineKeyboardButton(text=\"Отмена❌\", callback_data=\"cancel_user\")\r\ncancel_button_for_user.add(cancel_abob)\r\n\r\ncancel_button_to_main = InlineKeyboardMarkup(row_width=1)\r\ncancel_main = InlineKeyboardButton(text=\"Отмена❌\", callback_data=\"back_to_menu\")\r\ncancel_button_to_main.add(cancel_main)\r\n\r\ncancel_button_for_user_help = InlineKeyboardMarkup(row_width=1)\r\ncancel_helper = InlineKeyboardButton(text=\"Отмена❌\", callback_data=\"cancel_user_help\")\r\ncancel_button_for_user_help.add(cancel_helper)\r\n\r\ncancel_button_for_user_promocode = InlineKeyboardMarkup(row_width=1)\r\ncancel_promo = InlineKeyboardButton(text=\"Отмена❌\", callback_data=\"cancel_user_promocode\")\r\ncancel_button_for_user_promocode.add(cancel_promo)\r\n\r\n#remove balance button in admin menu\r\nupdatebalanceusers = ReplyKeyboardMarkup(resize_keyboard=True)\r\nupdatebalanceconfirmbutton= KeyboardButton(text=\"❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗\")\r\nbackbuttontoadminmemubutton = KeyboardButton(text=\"⬅️Назад в меню\")\r\nupdatebalanceusers.row(updatebalanceconfirmbutton)\r\nupdatebalanceusers.row(backbuttontoadminmemubutton)\r\n\r\n\r\n#rating buttons\r\nikbmrating = InlineKeyboardMarkup(row_width=1)\r\nibrating = InlineKeyboardButton(text=\"📊Полный рейтинг\", web_app = WebAppInfo(url ='https://docs.google.com/spreadsheets/d/e/2PACX-1vQFzN5HRvQhS5j4kDcv9wWH3uucCqp1AFmu2ErZYikmmJSshj1f16v7ry013vde0y6OYVWeSsVtgaKT/pubhtml?gid=0&single=true') )\r\nikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r\nibadminrating = InlineKeyboardButton(text=\"📊Админ Рейтинг\",web_app = WebAppInfo(url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vR__0ahX-O5SK3sS7OditV88sjG64duAF6mAW702CT3uM3Yj6z5mwsnxv-lL2vF9-H3YjlD0rtmg84N/pubhtml?gid=0&single=true'))\r\nikbmadminrating.add(ibadminrating)\r\n\r\n#help buttons\r\nhelpinlinereg = InlineKeyboardMarkup(row_width=1)\r\nhelpinlinenaming = InlineKeyboardButton(text=\"Помощь\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/README.md'))\r\nhelpinlinereg.add(helpinlinenaming)\r\n\r\n#admin tasks\r\nadmtasks = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmcreatetask = KeyboardButton(text=\"Создать коллекцию\")\r\nadmtasklist = KeyboardButton(text=\"Список коллекций\")\r\nadmdeletetask = KeyboardButton(text=\"Удалить коллекцию\")\r\nadmtaskback = KeyboardButton(text=\"⬅️Назад в меню\")\r\nadmtasks.row(admcreatetask)\r\nadmtasks.row(admdeletetask,admtasklist)\r\nadmtasks.row(admtaskback)\r\n\r\n#survey web-app\r\nsurveywebapp = ReplyKeyboardMarkup(resize_keyboard=True)\r\nsurvquestcreate = KeyboardButton(text=\"Создать вопрос\",web_app=WebAppInfo(url = 'https://surv" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 8996, + "snippet": { + "text": "from aiogram.types import InlineKeyboardMarkup,InlineKeyboardButton, ReplyKeyboardMarkup, KeyboardButton\r\nfrom aiogram.types.web_app_info import WebAppInfo\r\n#gender buttons\r\nikbg = InlineKeyboardMarkup(row_width=2)\r\nibm = InlineKeyboardButton(text=\"🙋‍♂️Мужчина\",callback_data='1')\r\nibf = InlineKeyboardButton(text=\"🙋‍♀️Женщина\",callback_data='0')\r\nikbg.add(ibm,ibf)\r\n\r\n#menu buttons\r\nrkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nkprofile= KeyboardButton(text=\"👤Профиль\")\r\nkliderboard= KeyboardButton(text=\"📊Рейтинг\")\r\nkschedule= KeyboardButton(text=\"📆Календарь событий\")\r\nkhelp= KeyboardButton(text=\"❓Помощь\")\r\nkexercise= KeyboardButton(text=\"📝Задания\")\r\nkpromo = KeyboardButton(text=\"🗝️Промокоды\")\r\nrkbm.row(kprofile,kliderboard)\r\nrkbm.add(kexercise)\r\nrkbm.add(kschedule)\r\nrkbm.row(khelp,kpromo)\r\n\r\n#promo_menuu\r\npromo_kb = ReplyKeyboardMarkup(resize_keyboard=True)\r\npromo_kb_qrscanner = KeyboardButton(text=\"📲QR-код\", web_app=WebAppInfo(url=\"https://bpb-qr.pages.dev/\"))\r\npromo_kb_enter = KeyboardButton(text=\"🗝️Ввести промокод\")\r\npromo_kb_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\npromo_kb.add(promo_kb_enter)\r\npromo_kb.add(promo_kb_qrscanner)\r\npromo_kb.add(promo_kb_back)\r\n\r\n\r\n#profilemenu buttons\r\nprofilebuttons = ReplyKeyboardMarkup(resize_keyboard=True)\r\ndelprofile = KeyboardButton(text=\"❌Удалить профиль\")\r\nprofilebuttons.row(delprofile)\r\neditbutton = ReplyKeyboardMarkup(resize_keyboard=True)\r\nedbutton = KeyboardButton(text=\"⚙️Редактировать профиль\")\r\nprofilebuttons.row(edbutton)\r\nbacktomenubutton = KeyboardButton(text=\"⬅️Назад в меню\")\r\nprofilebuttons.row(backtomenubutton)\r\n#confirm delete button and edit button + back button to profile\r\nback = ReplyKeyboardMarkup(resize_keyboard=True)\r\nbackbutt = KeyboardButton(text=\"⬅️Назад в меню\")\r\nback.row(backbutt)\r\n\r\nmenuedit = ReplyKeyboardMarkup(resize_keyboard=True)\r\neditname = KeyboardButton(text=\"Изменить ФИО\")\r\neditage = KeyboardButton(text=\"Изменить возраст\")\r\nmenuedit.row(editname)\r\nmenuedit.row(editage)\r\nmenuedit.row(backbutt)\r\n\r\nconfirmbutton = ReplyKeyboardMarkup(resize_keyboard=True)\r\nconfbutton = KeyboardButton(text=\"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\")\r\nbackbutton = KeyboardButton(text=\"⬅️Назад в меню\")\r\nconfirmbutton.row(confbutton)\r\nconfirmbutton.row(backbutton)\r\n\r\n#usermaker buttons\r\nusermakerkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nusmkbm_task = KeyboardButton(text=\"📝Создать задание\")\r\nusmkbm_menu = KeyboardButton(text=\"⬅️Меню\")\r\nusermakerkbm.row(usmkbm_task)\r\nusermakerkbm.row(usmkbm_menu)\r\n\r\n\r\n#usermaker add task menu buttons\r\neventtasks = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmcreatetask = KeyboardButton(text=\"Создать коллекцию\")\r\nadmtasklist = KeyboardButton(text=\"Список коллекций\")\r\nadmdeletetask = KeyboardButton(text=\"Удалить коллекцию\")\r\nadmtaskback = KeyboardButton(text=\"⬅️Назад в меню\")\r\neventtasks.row(admcreatetask)\r\neventtasks.row(admdeletetask,admtasklist)\r\neventtasks.row(admtaskback)\r\n\r\n#admin buttons\r\nadmrkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmk_user_editor = KeyboardButton(text=\"⚙️Изменить пользователя\")\r\nadmk_job_creation = KeyboardButton(text=\"📝Создать задание\")\r\nadmk_menu = KeyboardButton(text=\"⬅️Меню\")\r\nadmk_liderboard = KeyboardButton(text=\"📊Рейтинг\")\r\nadmk_promo = KeyboardButton(text=\"🗝️Промокоды\")\r\nadmk_ticket = KeyboardButton(text=\"📨Обращения\")\r\nadmk_rules = KeyboardButton(text=\"👨‍🚀Организаторы\")\r\nadmrkbm.row(admk_user_editor)\r\nadmrkbm.row(admk_job_creation,admk_promo)\r\nadmrkbm.row(admk_liderboard, admk_ticket)\r\nadmrkbm.row(admk_menu,admk_rules)\r\n\r\n#rules keyboard\r\nruleskbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nruleskbm_addmaker = KeyboardButton(text=\"Выдать права\")\r\nruleskbm_delmaker = KeyboardButton(text=\"Забрать права\")\r\nruleskbm_check = KeyboardButton(text=\"Действующие права\")\r\nruleskbm_back = KeyboardButton(text=\"⬅️Админ меню\")\r\nruleskbm.row(ruleskbm_addmaker,ruleskbm_delmaker)\r\nruleskbm.row(ruleskbm_check)\r\nruleskbm.row(ruleskbm_back)\r\n\r\n# admin report keyboard\r\nadmreport = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmreport_check = KeyboardButton(text=\"Действующие обращения\")\r\nadmreport_del = KeyboardButton(text=\"Удалить обращение\")\r\nadmreport_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\nadmreport.row(admreport_check)\r\nadmreport.row(admreport_del)\r\nadmreport.row(admreport_back)\r\n\r\n#User help button\r\nuserhelp = ReplyKeyboardMarkup(resize_keyboard=True)\r\nuserhelp_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\nuserhelp_ticket = KeyboardButton(text=\"📨Создать заявку\")\r\nguide = KeyboardButton(text=\"?📑Руководство пользователя\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/User%20guide/README.md'))\r\nuserhelp.row(userhelp_ticket)\r\nuserhelp.row(guide)\r\nuserhelp.row(userhelp_back)\r\n\r\n# admin user editor button\r\nadmue = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmue_fullname_editor = KeyboardButton(text=\"Изменить ФИО\")\r\nadmue_age_editor = KeyboardButton(text=\"Изменить возраст\")\r\nadmue_balance_editor = KeyboardButton(text=\"Изменить баланс\")\r\nadmue_get_info_user = KeyboardButton(text=\"Получить информацию о пользователе\")\r\nadmue_update_users_balance = KeyboardButton(text=\"❗Обнулить баланс всех пользователей❗\")\r\nadmue_back = KeyboardButton(text=\"⬅️Админ меню\")\r\nadmue.row(admue_get_info_user)\r\nadmue.row(admue_fullname_editor,admue_age_editor,admue_balance_editor)\r\nadmue.row(admue_update_users_balance)\r\nadmue.row(admue_back)\r\nadmui = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmui_back = InlineKeyboardButton(text=\"⬅️Отменить редактирование\")\r\n\r\n#admin promo button\r\nadmpromo = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmpromo_checkpromo = KeyboardButton(text=\"Действующие промокоды\")\r\nadmpromo_addpromo = KeyboardButton(text=\"Добавить промокод\")\r\nadmpromo_namingpromo = KeyboardButton(text=\"Нэйминг-промо\")\r\nadmpromo_delpromo = KeyboardButton(text=\"Удалить промокод\")\r\naddpromo_addqr = KeyboardButton(text=\"Добавить QR\")\r\nadmpromo.row(addpromo_addqr)\r\nadmpromo.row(admpromo_checkpromo)\r\nadmpromo.row(admpromo_addpromo,admpromo_namingpromo,admpromo_delpromo)\r\nadmpromo.row(admue_back)\r\n\r\ncancel_button = InlineKeyboardButton(text=\"❌Отмена\", callback_data=\"cancel\")\r\n\r\n# Отмена редактирования для юзера\r\ncancel_button_for_user = InlineKeyboardMarkup(row_width=1)\r\ncancel_abob = InlineKeyboardButton(text=\"Отмена❌\", callback_data=\"cancel_user\")\r\ncancel_button_for_user.add(cancel_abob)\r\n\r\ncancel_button_to_main = InlineKeyboardMarkup(row_width=1)\r\ncancel_main = InlineKeyboardButton(text=\"Отмена❌\", callback_data=\"back_to_menu\")\r\ncancel_button_to_main.add(cancel_main)\r\n\r\ncancel_button_for_user_help = InlineKeyboardMarkup(row_width=1)\r\ncancel_helper = InlineKeyboardButton(text=\"Отмена❌\", callback_data=\"cancel_user_help\")\r\ncancel_button_for_user_help.add(cancel_helper)\r\n\r\ncancel_button_for_user_promocode = InlineKeyboardMarkup(row_width=1)\r\ncancel_promo = InlineKeyboardButton(text=\"Отмена❌\", callback_data=\"cancel_user_promocode\")\r\ncancel_button_for_user_promocode.add(cancel_promo)\r\n\r\n#remove balance button in admin menu\r\nupdatebalanceusers = ReplyKeyboardMarkup(resize_keyboard=True)\r\nupdatebalanceconfirmbutton= KeyboardButton(text=\"❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗\")\r\nbackbuttontoadminmemubutton = KeyboardButton(text=\"⬅️Назад в меню\")\r\nupdatebalanceusers.row(updatebalanceconfirmbutton)\r\nupdatebalanceusers.row(backbuttontoadminmemubutton)\r\n\r\n\r\n#rating buttons\r\nikbmrating = InlineKeyboardMarkup(row_width=1)\r\nibrating = InlineKeyboardButton(text=\"📊Полный рейтинг\", web_app = WebAppInfo(url ='https://docs.google.com/spreadsheets/d/e/2PACX-1vQFzN5HRvQhS5j4kDcv9wWH3uucCqp1AFmu2ErZYikmmJSshj1f16v7ry013vde0y6OYVWeSsVtgaKT/pubhtml?gid=0&single=true') )\r\nikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r\nibadminrating = InlineKeyboardButton(text=\"📊Админ Рейтинг\",web_app = WebAppInfo(url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vR__0ahX-O5SK3sS7OditV88sjG64duAF6mAW702CT3uM3Yj6z5mwsnxv-lL2vF9-H3YjlD0rtmg84N/pubhtml?gid=0&single=true'))\r\nikbmadminrating.add(ibadminrating)\r\n\r\n#help buttons\r\nhelpinlinereg = InlineKeyboardMarkup(row_width=1)\r\nhelpinlinenaming = InlineKeyboardButton(text=\"Помощь\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/README.md'))\r\nhelpinlinereg.add(helpinlinenaming)\r\n\r\n#admin tasks\r\nadmtasks = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmcreatetask = KeyboardButton(text=\"Создать коллекцию\")\r\nadmtasklist = KeyboardButton(text=\"Список коллекций\")\r\nadmdeletetask = KeyboardButton(text=\"Удалить коллекцию\")\r\nadmtaskback = KeyboardButton(text=\"⬅️Назад в меню\")\r\nadmtasks.row(admcreatetask)\r\nadmtasks.row(admdeletetask,admtasklist)\r\nadmtasks.row(admtaskback)\r\n\r\n#survey web-app\r\nsurveywebapp = ReplyKeyboardMarkup(resize_keyboard=True)\r\nsurvquestcreate = KeyboardButton(text=\"Создать вопрос\",web_app=WebAppInfo(url = 'https://surv" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d98e7c47e8f78e661f4e4e76a3a6ad9d8937108d123da76f046dc8d928b5f6f6" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 2428, + "snippet": { + "text": "from aiogram import Bot, types\r\nfrom Database.DataUsers import *\r\nfrom buttons import *\r\nfrom dotenv import load_dotenv\r\nimport re\r\nfrom functools import lru_cache\r\nimport string\r\nimport random\r\n\r\nload_dotenv()\r\n\r\nbot = Bot(token=os.getenv(\"TOKEN\"))\r\n\r\nasync def show_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', 'tgusr').order('balance', desc = True).limit(4).execute()\r\n\r\n # Формируем текст рейтинга\r\n rating_text = \"🏆 Рейтинг пользователей 🏆\\n\\n\"\r\n for i, user in enumerate(top_users.data):\r\n position = i + 1\r\n full_name = user['full_name']\r\n balance = user['balance']\r\n tgusr = user['tgusr']\r\n rating_text += f\"{position}. {full_name} ({tgusr}) - {balance} баллов\\n\"\r\n\r\n # Отправляем сообщение\r\n await bot.send_message(chat_id, rating_text, reply_markup=ikbmadminrating)\r\n\r\nasync def show_user_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', ).order('balance', desc = True).limit(4).execute()\r\n\r\n # Формируем текст рейтинга\r\n rating_text = \"🏆 Рейтинг пользователей 🏆\\n\\n\"\r\n for i, user in enumerate(top_users.data):\r\n position = i + 1\r\n full_name = user['full_name']\r\n balance = user['balance']\r\n rating_text += f\"{position}. {full_name} - {balance} баллов\\n\"\r\n\r\n # Отправляем сообщение\r\n await bot.send_message(chat_id, rating_text, reply_markup=ikbmrating)\r\n\r\n# generate id for survey\r\nasync def generate_id_for_survey(length):\r\n characters = string.ascii_letters + string.digits\r\n random_string = ''.join(random.choice(characters) for _ in range(length))\r\n return random_string\r\n\r\n\r\n\r\n\r\n# Validation BAD words\r\n\r\nstandart_dirt = [1093, 1091, 1081, 124, 1073, 1083, 1103, 124, 1077, 1073, 124, \r\n 1087, 1080, 1079, 1076, 124, 1105, 1073, 124, 1079, 1072, 1083, 1091, 1087] # censored\r\n\r\nstandart_dirt = ''.join(chr(n) for n in standart_dirt)\r\n\r\ndef _get_search(pattern: str):\r\n @lru_cache()\r\n def hide_search(word: str) -> bool:\r\n return bool(re.search(pattern, word))\r\n\r\n return hide_search\r\n\r\ndef is_dirt(pattern: str=standart_dirt):\r\n\r\n funk = _get_search(pattern)\r\n\r\n def hide_search(text: str) -> bool:\r\n for word in re.findall(r'\\w+', text):\r\n if funk(word.lower()):\r\n " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 2428, + "snippet": { + "text": "from aiogram import Bot, types\r\nfrom Database.DataUsers import *\r\nfrom buttons import *\r\nfrom dotenv import load_dotenv\r\nimport re\r\nfrom functools import lru_cache\r\nimport string\r\nimport random\r\n\r\nload_dotenv()\r\n\r\nbot = Bot(token=os.getenv(\"TOKEN\"))\r\n\r\nasync def show_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', 'tgusr').order('balance', desc = True).limit(4).execute()\r\n\r\n # Формируем текст рейтинга\r\n rating_text = \"🏆 Рейтинг пользователей 🏆\\n\\n\"\r\n for i, user in enumerate(top_users.data):\r\n position = i + 1\r\n full_name = user['full_name']\r\n balance = user['balance']\r\n tgusr = user['tgusr']\r\n rating_text += f\"{position}. {full_name} ({tgusr}) - {balance} баллов\\n\"\r\n\r\n # Отправляем сообщение\r\n await bot.send_message(chat_id, rating_text, reply_markup=ikbmadminrating)\r\n\r\nasync def show_user_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', ).order('balance', desc = True).limit(4).execute()\r\n\r\n # Формируем текст рейтинга\r\n rating_text = \"🏆 Рейтинг пользователей 🏆\\n\\n\"\r\n for i, user in enumerate(top_users.data):\r\n position = i + 1\r\n full_name = user['full_name']\r\n balance = user['balance']\r\n rating_text += f\"{position}. {full_name} - {balance} баллов\\n\"\r\n\r\n # Отправляем сообщение\r\n await bot.send_message(chat_id, rating_text, reply_markup=ikbmrating)\r\n\r\n# generate id for survey\r\nasync def generate_id_for_survey(length):\r\n characters = string.ascii_letters + string.digits\r\n random_string = ''.join(random.choice(characters) for _ in range(length))\r\n return random_string\r\n\r\n\r\n\r\n\r\n# Validation BAD words\r\n\r\nstandart_dirt = [1093, 1091, 1081, 124, 1073, 1083, 1103, 124, 1077, 1073, 124, \r\n 1087, 1080, 1079, 1076, 124, 1105, 1073, 124, 1079, 1072, 1083, 1091, 1087] # censored\r\n\r\nstandart_dirt = ''.join(chr(n) for n in standart_dirt)\r\n\r\ndef _get_search(pattern: str):\r\n @lru_cache()\r\n def hide_search(word: str) -> bool:\r\n return bool(re.search(pattern, word))\r\n\r\n return hide_search\r\n\r\ndef is_dirt(pattern: str=standart_dirt):\r\n\r\n funk = _get_search(pattern)\r\n\r\n def hide_search(text: str) -> bool:\r\n for word in re.findall(r'\\w+', text):\r\n if funk(word.lower()):\r\n " + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "db9279335fed5a9f2a86a020f48e730d35202d82858d4f9421ebfd3ba47c0125" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 114, + "snippet": { + "text": "import gspread\nfrom gspread import Cell, Client, Spreadsheet, Worksheet\nfrom supabase import Client, create_client" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 140, + "snippet": { + "text": "import gspread\nfrom gspread import Cell, Client, Spreadsheet, Worksheet\nfrom supabase import Client, create_client\nimport schedule\nimport os" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "de299ea2cf60a29dec69e4000ca8077ac2eed394a807dea194bc22c1804de515" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "requirements.txt", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 1104, + "snippet": { + "text": "aiogram==2.25.1\r\naiohttp==3.8.5\r\naiosignal==1.3.1\r\nannotated-types==0.5.0\r\nanyio==3.7.1\r\nasync-timeout==4.0.2\r\nattrs==23.1.0\r\nBabel==2.9.1\r\ncachetools==5.3.1\r\ncertifi==2023.7.22\r\ncharset-normalizer==3.2.0\r\ncolorama==0.4.6\r\ndeprecation==2.1.0\r\nfrozenlist==1.4.0\r\ngoogle-api-core==2.11.1\r\ngoogle-api-python-client==2.96.0\r\ngoogle-auth==2.22.0\r\ngoogle-auth-httplib2==0.1.0\r\ngoogle-auth-oauthlib==1.0.0\r\ngoogleapis-common-protos==1.60.0\r\ngotrue==1.0.3\r\ngspread==5.10.0\r\nh11==0.14.0\r\nhttpcore==0.17.3\r\nhttplib2==0.22.0\r\nhttpx==0.24.1\r\nidna==3.4\r\nmagic-filter==1.0.11\r\nmultidict==6.0.4\r\noauthlib==3.2.2\r\npackaging==23.1\r\nPillow==10.0.0\r\npostgrest==0.10.8\r\nprotobuf==4.24.0\r\npyasn1==0.5.0\r\npyasn1-modules==0.3.0\r\npydantic==2.1.1\r\npydantic_core==2.4.0\r\npyparsing==3.1.1\r\npypng==0.20220715.0\r\npython-dateutil==2.8.2\r\npython-dotenv==1.0.0\r\npytz==2023.3\r\npyzbar==0.1.9\r\nqrcode==7.4.2\r\nrealtime==1.0.0\r\nrequests==2.31.0\r\nrequests-oauthlib==1.3.1\r\nrsa==4.9\r\nschedule==1.2.0\r\nsix==1.16.0\r\nsniffio==1.3.0\r\nstorage3==0.5.4\r\nStrEnum==0.4.15\r\nsupabase==1.0.4\r\nsupafunc==0.2.3\r\ntyping_extensions==4.7.1\r\nuritemplate==4.1.1\r" + }, + "sourceLanguage": "Requirements" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 1140, + "snippet": { + "text": "aiogram==2.25.1\r\naiohttp==3.8.5\r\naiosignal==1.3.1\r\nannotated-types==0.5.0\r\nanyio==3.7.1\r\nasync-timeout==4.0.2\r\nattrs==23.1.0\r\nBabel==2.9.1\r\ncachetools==5.3.1\r\ncertifi==2023.7.22\r\ncharset-normalizer==3.2.0\r\ncolorama==0.4.6\r\ndeprecation==2.1.0\r\nfrozenlist==1.4.0\r\ngoogle-api-core==2.11.1\r\ngoogle-api-python-client==2.96.0\r\ngoogle-auth==2.22.0\r\ngoogle-auth-httplib2==0.1.0\r\ngoogle-auth-oauthlib==1.0.0\r\ngoogleapis-common-protos==1.60.0\r\ngotrue==1.0.3\r\ngspread==5.10.0\r\nh11==0.14.0\r\nhttpcore==0.17.3\r\nhttplib2==0.22.0\r\nhttpx==0.24.1\r\nidna==3.4\r\nmagic-filter==1.0.11\r\nmultidict==6.0.4\r\noauthlib==3.2.2\r\npackaging==23.1\r\nPillow==10.0.0\r\npostgrest==0.10.8\r\nprotobuf==4.24.0\r\npyasn1==0.5.0\r\npyasn1-modules==0.3.0\r\npydantic==2.1.1\r\npydantic_core==2.4.0\r\npyparsing==3.1.1\r\npypng==0.20220715.0\r\npython-dateutil==2.8.2\r\npython-dotenv==1.0.0\r\npytz==2023.3\r\npyzbar==0.1.9\r\nqrcode==7.4.2\r\nrealtime==1.0.0\r\nrequests==2.31.0\r\nrequests-oauthlib==1.3.1\r\nrsa==4.9\r\nschedule==1.2.0\r\nsix==1.16.0\r\nsniffio==1.3.0\r\nstorage3==0.5.4\r\nStrEnum==0.4.15\r\nsupabase==1.0.4\r\nsupafunc==0.2.3\r\ntyping_extensions==4.7.1\r\nuritemplate==4.1.1\r\nurllib3==1.26.16\r\nwebsockets==10.4\r" + }, + "sourceLanguage": "Requirements" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e738e74a2ffbefecd35aa5478ab4e6bd20b173a27f3ff9d73a6d5648c8de2ad7" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Requirements" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 2892, + "snippet": { + "text": "from .usersrepository import UserRepository\r\nfrom typing import List\r\nfrom src.models.users import User\r\nfrom supabase import Client, create_client\r\n\r\n\r\n\r\nclass SupabaseUserRepository(UserRepository):\r\n \r\n def __init__(self,client:Client, table_name:str = 'UsersData'):\r\n self.client = client\r\n self.table_name = table_name\r\n\r\n def get(self,id : str) -> User:\r\n try:\r\n chat_id:int = int(id)\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','tgusr','user_state').eq('chat_id', chat_id).execute()\r\n item = response.data[0]\r\n user_data = item\r\n pseudo = user_data.get('full_name', 'Unknown')\r\n gender = user_data.get('gender')\r\n gender = gender if gender != None else False\r\n age = user_data.get('age', 'Unknown')\r\n balance = user_data.get('balance')\r\n user_state = user_data.get('user_state')\r\n tgusr = user_data.get('tgusr')\r\n return User(\r\n chat_id=chat_id,\r\n full_name=pseudo,\r\n gender=gender,\r\n user_state=user_state,\r\n age=age,\r\n balance=balance,\r\n tgusr = tgusr\r\n )\r\n except ValueError:\r\n tgusr:str = id\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','chat_id','user_state').eq('tgusr', tgusr).execute()\r\n item = response.data[0]\r\n user_data = item\r\n chat_id = user_data.get('chat_id')\r\n pseudo = user_data.get('full_name', 'Unknown')\r\n gender = user_data.get('gender', 'Unknown')\r\n age = user_data.get('age', 'Unknown')\r\n balance = user_data.get('balance')\r\n user_state = user_data.get('user_state')\r\n return User(\r\n chat_id = chat_id,\r\n full_name=pseudo,\r\n gender=gender,\r\n user_state=user_state,\r\n age=age,\r\n balance=balance,\r\n tgusr = tgusr\r\n )\r\n except Exception as e:\r\n print(f\"Error get info about user: {chat_id}: {e}\")\r\n return None\r\n \r\n def set(self,user : User) -> None:\r\n if self.get(user.chat_id): \r\n self.client.table(self.table_name).update(user.dict()).eq('chat_id',user.chat_id).execute()\r\n else:\r\n #insert\r\n self.client.table(self.table_name).insert(user.dict()).execute()\r\n \r\n def delete(self,user : User) -> None:\r\n try:\r\n if self.get(user.chat_id):\r\n self.client.table(self.table_name).delete().eq('chat_id',user.chat_id).execute()\r\n except Exception as e:\r\n print(f\"Error delete user {user.chat_id} error : {e}\")" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 2892, + "snippet": { + "text": "from .usersrepository import UserRepository\r\nfrom typing import List\r\nfrom src.models.users import User\r\nfrom supabase import Client, create_client\r\n\r\n\r\n\r\nclass SupabaseUserRepository(UserRepository):\r\n \r\n def __init__(self,client:Client, table_name:str = 'UsersData'):\r\n self.client = client\r\n self.table_name = table_name\r\n\r\n def get(self,id : str) -> User:\r\n try:\r\n chat_id:int = int(id)\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','tgusr','user_state').eq('chat_id', chat_id).execute()\r\n item = response.data[0]\r\n user_data = item\r\n pseudo = user_data.get('full_name', 'Unknown')\r\n gender = user_data.get('gender')\r\n gender = gender if gender != None else False\r\n age = user_data.get('age', 'Unknown')\r\n balance = user_data.get('balance')\r\n user_state = user_data.get('user_state')\r\n tgusr = user_data.get('tgusr')\r\n return User(\r\n chat_id=chat_id,\r\n full_name=pseudo,\r\n gender=gender,\r\n user_state=user_state,\r\n age=age,\r\n balance=balance,\r\n tgusr = tgusr\r\n )\r\n except ValueError:\r\n tgusr:str = id\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','chat_id','user_state').eq('tgusr', tgusr).execute()\r\n item = response.data[0]\r\n user_data = item\r\n chat_id = user_data.get('chat_id')\r\n pseudo = user_data.get('full_name', 'Unknown')\r\n gender = user_data.get('gender', 'Unknown')\r\n age = user_data.get('age', 'Unknown')\r\n balance = user_data.get('balance')\r\n user_state = user_data.get('user_state')\r\n return User(\r\n chat_id = chat_id,\r\n full_name=pseudo,\r\n gender=gender,\r\n user_state=user_state,\r\n age=age,\r\n balance=balance,\r\n tgusr = tgusr\r\n )\r\n except Exception as e:\r\n print(f\"Error get info about user: {chat_id}: {e}\")\r\n return None\r\n \r\n def set(self,user : User) -> None:\r\n if self.get(user.chat_id): \r\n self.client.table(self.table_name).update(user.dict()).eq('chat_id',user.chat_id).execute()\r\n else:\r\n #insert\r\n self.client.table(self.table_name).insert(user.dict()).execute()\r\n \r\n def delete(self,user : User) -> None:\r\n try:\r\n if self.get(user.chat_id):\r\n self.client.table(self.table_name).delete().eq('chat_id',user.chat_id).execute()\r\n except Exception as e:\r\n print(f\"Error delete user {user.chat_id} error : {e}\")" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fa2c8bb36a6807c96e6539aa74de228bf5cdfda687c97d4f3b5438148ed03be4" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 638, + "startColumn": 1, + "charOffset": 28736, + "charLength": 58, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.change_user_agestart)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 636, + "startColumn": 1, + "charOffset": 28718, + "charLength": 216, + "snippet": { + "text": " return\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_agestart)\r\nasync def admin_change_user_age_handler(message: types.Message, state: FSMContext):\r\n new_age = message.text # получаем новый возраст\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "000b494a873a47bf920cd886b14c28e306d59c6e5b162f5561581153ffe33379" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (136 > 120 characters)", + "markdown": "PEP 8: E501 line too long (136 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 617, + "startColumn": 115, + "charOffset": 27762, + "charLength": 19, + "snippet": { + "text": "ReplyKeyboardRemove" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 615, + "startColumn": 1, + "charOffset": 27570, + "charLength": 272, + "snippet": { + "text": " admin.user_state = str(AdminPanel.change_user_age)\r\n users.set(admin)\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_age)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "004c197b5986da49e29034c5d3a9052f9818b2e3e3b5d3f7c891de29db265c91" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1165, + "startColumn": 26, + "charOffset": 52476, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1163, + "startColumn": 1, + "charOffset": 52382, + "charLength": 171, + "snippet": { + "text": "\r\n user.user_state = str(RegistrationStates.waiting_for_age)\r\n if telegram_name == None:\r\n user.tgusr = \"У пользователя нет имени\"\r\n else:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "01198f44a117f6df64ed14998863eff94789ccd56d6a9d59e43a339094624215" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1762, + "startColumn": 61, + "charOffset": 80766, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1760, + "startColumn": 1, + "charOffset": 80633, + "charLength": 224, + "snippet": { + "text": " ibback = KeyboardButton(text=\"⬅️Меню\")\r\n print(f\"{task['url']}\")\r\n ibgo = KeyboardButton(text=\"✅\", web_app = WebAppInfo(url = f'{task[\"url\"]}'))\r\n ikbmtasks.row(ibleft, ibgo, ibright)\r\n ikbmtasks.row(ibback)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0133db6ed8ed3b545f656022fd1e5bfdc982d1702741957adb950ab1c0535161" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1219, + "startColumn": 64, + "charOffset": 54843, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1217, + "startColumn": 1, + "charOffset": 54742, + "charLength": 178, + "snippet": { + "text": "\r\n # Запрашиваем имя пользователя\r\n await query.message.reply(\"Введите ваше ФИО:\", reply_markup = helpinlinereg)\r\n\r\n # Переход к следующему состоянию \"waiting_for_name\"\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0188f6263cc8a46c9ca862a045f28b649ccfa61ca8da57b390008b61972a362d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (309 > 120 characters)", + "markdown": "PEP 8: E501 line too long (309 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 76, + "startColumn": 28, + "charOffset": 4804, + "charLength": 282, + "snippet": { + "text": "\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 74, + "startColumn": 1, + "charOffset": 4724, + "charLength": 698, + "snippet": { + "text": " else:\n if user[\"gender\"]:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"\n else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "01d89200a89f7c75aa41872c61ec29bc920e07ddfbc08c9b89009c02633db877" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ','", + "markdown": "PEP 8: E203 whitespace before ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1897, + "startColumn": 60, + "charOffset": 86112, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1895, + "startColumn": 1, + "charOffset": 85928, + "charLength": 325, + "snippet": { + "text": "\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=[MenuStates.promocode,MenuStates.promocodestart])\r\nasync def handle_qr(message: types.ContentType.WEB_APP_DATA , state: FSMContext):\r\n message.text = message.web_app_data.data\r\n await asyncio.wait_for(check_promocode(message,state),timeout=3.5)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "02ad408f24b464498fafc46fb6c51fed8b802d701050f64c134f10cba5ef45a1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (132 > 120 characters)", + "markdown": "PEP 8: E501 line too long (132 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 16, + "startColumn": 121, + "charOffset": 451, + "charLength": 1, + "snippet": { + "text": "4" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 14, + "startColumn": 1, + "charOffset": 253, + "charLength": 245, + "snippet": { + "text": "async def show_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', 'tgusr').order('balance', desc = True).limit(4).execute()\r\n\r\n # Формируем текст рейтинга\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "031c86d9ec39f87c5b911c79846b0063ab2781ae2fcd973fc33131e43d603c60" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1176, + "startColumn": 1, + "charOffset": 52879, + "charLength": 61, + "snippet": { + "text": "@dp.message_handler(state=RegistrationStates.waiting_for_age)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1174, + "startColumn": 1, + "charOffset": 52821, + "charLength": 217, + "snippet": { + "text": " await RegistrationStates.waiting_for_age.set()\r\n\r\n@dp.message_handler(state=RegistrationStates.waiting_for_age)\r\nasync def handle_age(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0360842bae556ef2fe62639810aa181dd1472f8703e0bfc01d980db993a0a559" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 41, + "startColumn": 1, + "charOffset": 1609, + "charLength": 63, + "snippet": { + "text": "#confirm delete button and edit button + back button to profile" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 39, + "startColumn": 1, + "charOffset": 1513, + "charLength": 260, + "snippet": { + "text": "backtomenubutton = KeyboardButton(text=\"⬅️Назад в меню\")\r\nprofilebuttons.row(backtomenubutton)\r\n#confirm delete button and edit button + back button to profile\r\nback = ReplyKeyboardMarkup(resize_keyboard=True)\r\nbackbutt = KeyboardButton(text=\"⬅️Назад в меню\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "03be2066059efcff459ca83d02b1693674bc6b34878a9b584f0fb52b7270160c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1548, + "startColumn": 53, + "charOffset": 70678, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1546, + "startColumn": 1, + "charOffset": 70468, + "charLength": 369, + "snippet": { + "text": " supabase.table('Passd').delete().eq('chat_id', chat_id).execute()\r\n supabase.table('UsedPromocode').delete().eq('chat_id', chat_id).execute()\r\n supabase.table('Report').delete().eq('tgusr',tgname).execute()\r\n await bot.send_message(chat_id, \"Ваш профиль был удален!\", reply_markup=types.ReplyKeyboardRemove())\r\n await state.finish()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "04b1e0207a8e756ac2b151824e96465a707092b25d69b7c4099cf4677f5eb0e2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 14, + "startColumn": 17, + "charOffset": 363, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 12, + "startColumn": 1, + "charOffset": 307, + "charLength": 125, + "snippet": { + "text": " self.table_name = table_name\r\n\r\n def get(self,id : str) -> User:\r\n try:\r\n chat_id:int = int(id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "05146bf2b07bf453648ac3647d44ec8af0b3d2faaaa929a581d60c6b5a7876fd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 3, + "startColumn": 1, + "charOffset": 157, + "charLength": 15, + "snippet": { + "text": "#gender buttons" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 282, + "snippet": { + "text": "from aiogram.types import InlineKeyboardMarkup,InlineKeyboardButton, ReplyKeyboardMarkup, KeyboardButton\r\nfrom aiogram.types.web_app_info import WebAppInfo\r\n#gender buttons\r\nikbg = InlineKeyboardMarkup(row_width=2)\r\nibm = InlineKeyboardButton(text=\"🙋‍♂️Мужчина\",callback_data='1')\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "074877ecafa0594093a5555492c3ed6bd53699d0ceb96ee88fe7d14efbe60c72" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (141 > 120 characters)", + "markdown": "PEP 8: E501 line too long (141 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1649, + "startColumn": 120, + "charOffset": 75666, + "charLength": 12, + "snippet": { + "text": "reply_markup" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1647, + "startColumn": 1, + "charOffset": 75509, + "charLength": 195, + "snippet": { + "text": "\r\n # Подтверждающее сообщение\r\n await bot.send_message(chat_id, \"Заявка успешно отправлена! В ближайшее время с вами свяжется администратор.\", reply_markup=userhelp)\r\n\r\n except:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "07fdceff98fc2058a3482e907939b7be01a6184456a34056134bf70f2a4083b5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (213 > 120 characters)", + "markdown": "PEP 8: E501 line too long (213 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 436, + "startColumn": 9, + "charOffset": 18394, + "charLength": 204, + "snippet": { + "text": "\"Вы попали в меню редактирования пользователя, нажмите нужную вам кнопку чтобы изменить параметры пользователя. После нажатия на кнопку введите @username человека в телеграм чтобы поменять его параметры.\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 434, + "startColumn": 1, + "charOffset": 18339, + "charLength": 292, + "snippet": { + "text": " users.set(user)\r\n await message.reply(\r\n \"Вы попали в меню редактирования пользователя, нажмите нужную вам кнопку чтобы изменить параметры пользователя. После нажатия на кнопку введите @username человека в телеграм чтобы поменять его параметры.\",\r\n reply_markup=admue)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "09a7eec1c7e54b6cf07829c17ae983eae6f797af489c89774d83332719597f53" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 853, + "startColumn": 1, + "charOffset": 38696, + "charLength": 52, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.rules_addmaker)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 851, + "startColumn": 1, + "charOffset": 38550, + "charLength": 297, + "snippet": { + "text": " await message.reply(\"Введите @username пользователя которому хотите выдать права ивент мейкера\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.rules_addmaker)\r\nasync def give_rules_start(message: types.Message, state: FSMContext):\r\n tgusr = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0a99b0ede0405a39e5b5e18d87e35b0f9290ef0fb350c88280ef50ebe5bc5ce8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 64, + "startColumn": 119, + "charOffset": 4193, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 62, + "startColumn": 1, + "charOffset": 3979, + "charLength": 283, + "snippet": { + "text": " sh: Spreadsheet = gc.open_by_url(SPREADSHEET_URL)\n worksheet = sh.worksheet(\"📊Рейтинг\")\n response = supabase.table('UsersData').select('chat_id','full_name', 'balance', 'gender' ).order('balance', desc = True).execute()\n users_data = response.data\n worksheet.clear()" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0ac49f4631a49ec71beb3474796533a5c87fe1ac7ead4028dfce5ecbf33082b0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1299, + "startColumn": 1, + "charOffset": 58689, + "charLength": 78, + "snippet": { + "text": "@dp.callback_query_handler(text=\"cancel_user_help\", state=MenuStates.help_end)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1297, + "startColumn": 1, + "charOffset": 58649, + "charLength": 295, + "snippet": { + "text": " await MenuStates.promocode.set()\r\n\r\n@dp.callback_query_handler(text=\"cancel_user_help\", state=MenuStates.help_end)\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню помощи.\", reply_markup=userhelp)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0ac7ef6a4274aef58c7dccf9fbdd11417eaea6e80b3e73afe2d9a8b2f15889f7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1294, + "startColumn": 1, + "charOffset": 58385, + "charLength": 82, + "snippet": { + "text": "@dp.callback_query_handler(text='back_to_menu', state = MenuStates.promocodestart)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1292, + "startColumn": 1, + "charOffset": 58338, + "charLength": 310, + "snippet": { + "text": " await ProlfileStates.edit_profile.set()\r\n\r\n@dp.callback_query_handler(text='back_to_menu', state = MenuStates.promocodestart)\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню промокодов.\", reply_markup=promo_kb)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0c0dcea2d68ad810b36d8049a6531dd3d48b7706da5fed18a5de24e63b43a699" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 345, + "startColumn": 1, + "charOffset": 13809, + "charLength": 74, + "snippet": { + "text": "@dp.message_handler(text='⬅️Назад в меню', state=EventMakerPanel.taskmenu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 343, + "startColumn": 1, + "charOffset": 13761, + "charLength": 240, + "snippet": { + "text": " await EventMakerPanel.taskmenu.set()\r\n\r\n@dp.message_handler(text='⬅️Назад в меню', state=EventMakerPanel.taskmenu)\r\nasync def back_to_event_main_menu(message: types.Message, state: FSMContext):\r\n await EventMakerPanel.menu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0c44ae722ee5a1aa34543021ee788339a51aae908ed961db2d70c9e6d3318f74" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1126, + "startColumn": 30, + "charOffset": 50607, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1124, + "startColumn": 1, + "charOffset": 50488, + "charLength": 205, + "snippet": { + "text": " querydict_dump: str = json.dumps(querydict)\r\n url = url + querydict_dump \r\n url = url.replace(' ','%20')\r\n url = url.replace('\"', '%22')\r\n data = await state.get_data()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0c536c8197721b7ddcbe273db388991293eeb73e58e0c979d658150eeb57b418" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1668, + "startColumn": 1, + "charOffset": 76526, + "charLength": 28, + "snippet": { + "text": "#Система тикетов для админов" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1666, + "startColumn": 1, + "charOffset": 76402, + "charLength": 277, + "snippet": { + "text": "\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система тикетов для админов\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0ca768cc2629e0d2896e4d2d7a72d1828c8eee42a051ae68697c5caeb4194a69" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 525, + "startColumn": 1, + "charOffset": 22972, + "charLength": 57, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.change_user_balance)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 523, + "startColumn": 1, + "charOffset": 22954, + "charLength": 197, + "snippet": { + "text": " return\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_balance)\r\nasync def admin_change_user_balance_handler(message: types.Message, state: FSMContext):\r\n new_balance = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0d9a2aebc1973c7c1a800899144d57706d73c4194d14edf674eb2477be93f396" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1667, + "startColumn": 1, + "charOffset": 76404, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1665, + "startColumn": 1, + "charOffset": 76322, + "charLength": 355, + "snippet": { + "text": " await bot.send_message(chat_id, \"Вы вернулись в меню!\", reply_markup=rkbm)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система тикетов для админов\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0dcbbc9f448660caf97a103b2d5bd09b4fe76198967181db6bba73c948ee1e29" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1671, + "startColumn": 49, + "charOffset": 76728, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1669, + "startColumn": 1, + "charOffset": 76556, + "charLength": 297, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📨Обращения\", state = AdminPanel.admin_menu)\r\nasync def handle_report(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0e32540bec3f6ca28083773f04e0930d1710042c53487d23ed60b6547b046cec" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 178, + "startColumn": 61, + "charOffset": 7938, + "charLength": 7, + "snippet": { + "text": "web_app" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 176, + "startColumn": 1, + "charOffset": 7799, + "charLength": 362, + "snippet": { + "text": "ikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r\nibadminrating = InlineKeyboardButton(text=\"📊Админ Рейтинг\",web_app = WebAppInfo(url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vR__0ahX-O5SK3sS7OditV88sjG64duAF6mAW702CT3uM3Yj6z5mwsnxv-lL2vF9-H3YjlD0rtmg84N/pubhtml?gid=0&single=true'))\r\nikbmadminrating.add(ibadminrating)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0f0f2bc8a8aa534d6daf9ce6b9c4ee5e9523a1064af673f2ff88c085e28ac818" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 302, + "startColumn": 18, + "charOffset": 11785, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 300, + "startColumn": 1, + "charOffset": 11678, + "charLength": 170, + "snippet": { + "text": " numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0f3e1862c70ee88557babf4e15d30add8a00ac8b55dc1f1265850291cc8f8f1c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 97, + "startColumn": 31, + "charOffset": 3937, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 95, + "startColumn": 1, + "charOffset": 3795, + "charLength": 221, + "snippet": { + "text": "ruleskbm_check = KeyboardButton(text=\"Действующие права\")\r\nruleskbm_back = KeyboardButton(text=\"⬅️Админ меню\")\r\nruleskbm.row(ruleskbm_addmaker,ruleskbm_delmaker)\r\nruleskbm.row(ruleskbm_check)\r\nruleskbm.row(ruleskbm_back)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0fc139648efd3ae51c8e1613fefbd7994c384e8b52b9c4361f3f4c014964c621" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 175, + "startColumn": 66, + "charOffset": 7621, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 173, + "startColumn": 1, + "charOffset": 7491, + "charLength": 386, + "snippet": { + "text": "#rating buttons\r\nikbmrating = InlineKeyboardMarkup(row_width=1)\r\nibrating = InlineKeyboardButton(text=\"📊Полный рейтинг\", web_app = WebAppInfo(url ='https://docs.google.com/spreadsheets/d/e/2PACX-1vQFzN5HRvQhS5j4kDcv9wWH3uucCqp1AFmu2ErZYikmmJSshj1f16v7ry013vde0y6OYVWeSsVtgaKT/pubhtml?gid=0&single=true') )\r\nikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0fc8b939ccfb765df709db3244741c7c2351c4847b2b908793647948f3bd9167" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1080, + "startColumn": 39, + "charOffset": 48250, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1078, + "startColumn": 1, + "charOffset": 48126, + "charLength": 245, + "snippet": { + "text": " await AdminPanel.taskmenu_collection_counterwait.set()\r\n if counter <= 0:\r\n await bot.send_message(chat_id,\"Введенное значение должно быть числом > 0\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n else:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "10119e49b649831102ecb7e004990d1d946611d85ec050e3192c598743eb5c7d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 665, + "startColumn": 1, + "charOffset": 30092, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 663, + "startColumn": 1, + "charOffset": 29948, + "charLength": 269, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Система промокодов\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "107bbced5e13c945b75bda2e3de5195de5f7befbf7897f0aef88f94b665d2dab" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (126 > 120 characters)", + "markdown": "PEP 8: E501 line too long (126 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1421, + "startColumn": 118, + "charOffset": 64473, + "charLength": 7, + "snippet": { + "text": "execute" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1419, + "startColumn": 1, + "charOffset": 64314, + "charLength": 205, + "snippet": { + "text": " promocode = promocode_data.data[0]\r\n\r\n used_promocode_data = supabase.table('UsedPromocode').select('chat_id').eq('promo', poro).eq('chat_id', chat_id).execute()\r\n\r\n if used_promocode_data.data:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "111677fb79382af7079bbd5b0f7ab0387fe54c424064536efc5a707d34b8eb7e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (121 > 120 characters)", + "markdown": "PEP 8: E501 line too long (121 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1875, + "startColumn": 1, + "charOffset": 84826, + "charLength": 121, + "snippet": { + "text": "#------------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1873, + "startColumn": 1, + "charOffset": 84822, + "charLength": 304, + "snippet": { + "text": "\r\n\r\n#------------------------------------------------------------------------------------------------------------------------\r\n#Система отлова людей без state и обработчик стикеров\r\n#------------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1130653776c4e21c1b7b421943778d727f9276f0d8c4d5a2a47b6b55c7ed33ce" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1095, + "startColumn": 18, + "charOffset": 49087, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1093, + "startColumn": 1, + "charOffset": 48980, + "charLength": 170, + "snippet": { + "text": " numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1167480465b2c72ec3016e00e48b7c73355504f48031ec815924f8df7627a671" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 826, + "startColumn": 1, + "charOffset": 37234, + "charLength": 129, + "snippet": { + "text": "@dp.message_handler(text=\"⬅️Админ меню\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end, AdminPanel.promo_menu])" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 824, + "startColumn": 1, + "charOffset": 37199, + "charLength": 313, + "snippet": { + "text": "\r\n# Хедлер для бека в меню админа\r\n@dp.message_handler(text=\"⬅️Админ меню\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end, AdminPanel.promo_menu])\r\nasync def admin_backtomenu(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "122fca80e4d193f6a223908a3598bfe755f4ba9a36d614d23e6a79f564a96f9d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 710, + "startColumn": 1, + "charOffset": 32011, + "charLength": 78, + "snippet": { + "text": "@dp.message_handler(text=\"Действующие промокоды\", state=AdminPanel.promo_menu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 708, + "startColumn": 1, + "charOffset": 31959, + "charLength": 259, + "snippet": { + "text": " user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text=\"Действующие промокоды\", state=AdminPanel.promo_menu)\r\nasync def admin_promocodes_check(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_check_promocode.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "12950cf0b60428bfca0bbdab10958876bc30a5def9a58286daedf61928b2756a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 198, + "startColumn": 78, + "charOffset": 8980, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 196, + "startColumn": 1, + "charOffset": 8828, + "charLength": 367, + "snippet": { + "text": "#survey web-app\r\nsurveywebapp = ReplyKeyboardMarkup(resize_keyboard=True)\r\nsurvquestcreate = KeyboardButton(text=\"Создать вопрос\",web_app=WebAppInfo(url = 'https://survey-web-app.pages.dev/edit?json=%7B%22surveyData%22%3A%20%5B%7B%22questionId%22%3A%2069%2C%20%22question%22%3A%20%22%22%2C%20%22choices%22%3A%20%5B%5D%7D%5D%7D'))\r\nsurveywebapp.row(survquestcreate)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "138536f162a782dcede68b5508b8407c2f6f46a38f35696304c5fcffb272666e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (264 > 120 characters)", + "markdown": "PEP 8: E501 line too long (264 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1593, + "startColumn": 39, + "charOffset": 72929, + "charLength": 93, + "snippet": { + "text": "Привет\\\\! Если у тебя есть какие\\\\-то проблемы или пожелания \\\\, то смелее нажимай на кнопку " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1591, + "startColumn": 1, + "charOffset": 72793, + "charLength": 439, + "snippet": { + "text": "async def handle_help(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, f\"Привет\\\\! Если у тебя есть какие\\\\-то проблемы или пожелания \\\\, то смелее нажимай на кнопку \" + f\"{code('📨Создать заявку')}\" + f\" и администратор с радостью тебе поможет\\\\! \", reply_markup=userhelp, parse_mode = 'MarkdownV2')\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.help)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "144f37b0846e35d1578b8cb2f33192c34944962b44e1000a1e28d7d1b6190689" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 556, + "startColumn": 1, + "charOffset": 24557, + "charLength": 63, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.change_user_fullnamestart)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 554, + "startColumn": 1, + "charOffset": 24533, + "charLength": 228, + "snippet": { + "text": " users.set(admin)\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_fullnamestart)\r\nasync def admin_change_user_fullname_handler(message: types.Message, state: FSMContext):\r\n username = message.text # получаем username\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "14707342b7adb6cbf73ae66ca5bd73b9f4e1b8bc2def91d4b83d14c8e373b9ee" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1659, + "startColumn": 21, + "charOffset": 76008, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1657, + "startColumn": 1, + "charOffset": 75923, + "charLength": 247, + "snippet": { + "text": " await state.finish()\r\n await MenuStates.help_ender.set()\r\n users.user_state=str(MenuStates.help)\r\n\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "14ac225d2ad3ee53dfd610376608cb6e4f8786a21227efea1156a25fb00333dd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1374, + "startColumn": 1, + "charOffset": 62524, + "charLength": 19, + "snippet": { + "text": "#Система промокодов" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1372, + "startColumn": 1, + "charOffset": 62400, + "charLength": 269, + "snippet": { + "text": "\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система промокодов\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "14c9bac4ee2c514cd6781905fd254edd4b46ea86bdbc57416da6e765ebc93fe5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1765, + "startColumn": 88, + "charOffset": 80945, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1763, + "startColumn": 1, + "charOffset": 80789, + "charLength": 283, + "snippet": { + "text": " ikbmtasks.row(ibleft, ibgo, ibright)\r\n ikbmtasks.row(ibback)\r\n message_id_data = await bot.send_photo(chat_id, task['photo'] , text, reply_markup= ikbmtasks)\r\n message_id_data = message_id_data['message_id']\r\n await state.update_data(message_id_data=message_id_data)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1505dfa13ff94e8efe612615a56db5dd263b44eb0f32ec8374f5a3a4c81e283b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 25, + "startColumn": 1, + "charOffset": 908, + "charLength": 26, + "snippet": { + "text": "def admin_rating_udpate():" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 23, + "startColumn": 1, + "charOffset": 849, + "charLength": 241, + "snippet": { + "text": "users : UserRepository = SupabaseUserRepository(supabase)\n\ndef admin_rating_udpate():\n gc: Client = gspread.service_account(\"./GoogleSheets/boilerpoint-393111-68b01f6645e3.json\")\n sh: Spreadsheet = gc.open_by_url(ADMIN_SPREADSHEET_URL)" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "150a7ba86111b7c63bc74a340ff75dcfcb8735c22380c73d0e0225c2c731e5b2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1050, + "startColumn": 1, + "charOffset": 46727, + "charLength": 62, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.taskmenu_descriptionwait)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1048, + "startColumn": 1, + "charOffset": 46668, + "charLength": 239, + "snippet": { + "text": " await AdminPanel.taskmenu_descriptionwait.set()\r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_descriptionwait)\r\nasync def admin_taskmenu_descriptionwait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1582260897783f6adbb618ad7d30fb8c56849a5e8e72846ca8f935230f265473" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1146, + "startColumn": 1, + "charOffset": 51604, + "charLength": 121, + "snippet": { + "text": "#----------------------------------------------------------------------------------------------------------------------- " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1144, + "startColumn": 1, + "charOffset": 51459, + "charLength": 271, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Система регистрации\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "159f3ed70a95e79ecc0a4dd5b80aba2aaff2dc1870c7fb24a911781278d3ec1c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 143, + "startColumn": 1, + "charOffset": 4647, + "charLength": 35, + "snippet": { + "text": "class EventMakerPanel(StatesGroup):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 141, + "startColumn": 1, + "charOffset": 4595, + "charLength": 132, + "snippet": { + "text": " taskmenu_collection_delete_confirm = State()\r\n\r\nclass EventMakerPanel(StatesGroup):\r\n menu = State()\r\n taskmenu = State()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "15f166c7460317a070379edb74442879e76df40e874f24710ab5a826cd3347f0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E252 missing whitespace around parameter equals", + "markdown": "PEP 8: E252 missing whitespace around parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 68, + "startColumn": 26, + "charOffset": 2249, + "charLength": 13, + "snippet": { + "text": "standart_dirt" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 66, + "startColumn": 1, + "charOffset": 2198, + "charLength": 102, + "snippet": { + "text": " return hide_search\r\n\r\ndef is_dirt(pattern: str=standart_dirt):\r\n\r\n funk = _get_search(pattern)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "16ee435a43a8e4dd7ce6046d54c92863bbf02612261570d3dac7a1598fb7cc55" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 110, + "startColumn": 1, + "charOffset": 4372, + "charLength": 17, + "snippet": { + "text": "#User help button" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 108, + "startColumn": 1, + "charOffset": 4339, + "charLength": 160, + "snippet": { + "text": "admreport.row(admreport_back)\r\n\r\n#User help button\r\nuserhelp = ReplyKeyboardMarkup(resize_keyboard=True)\r\nuserhelp_back = KeyboardButton(text=\"⬅️Назад в меню\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "176a42d392d62c31918c1aabc77a75bba99f4fd3a916e0ea8407ef619a0b3601" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 155, + "startColumn": 1, + "charOffset": 5071, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 153, + "startColumn": 1, + "charOffset": 5019, + "charLength": 316, + "snippet": { + "text": " taskmenu_collection_delete_confirm = State()\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Event maker panel\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "178f6083f029b278ac9b6e38b590a3342cccfab62265c513a09e6f2799809b88" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1031, + "startColumn": 35, + "charOffset": 45822, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1029, + "startColumn": 1, + "charOffset": 45691, + "charLength": 262, + "snippet": { + "text": "async def admin_make(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id,f\"Введите название коллекции заданий:\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.taskmenu_namewait.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1801b1ee65556767a6f48f0cf8d75ae7db3b05241dac991934ae997b4b08c836" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E222 multiple spaces after operator", + "markdown": "PEP 8: E222 multiple spaces after operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 10, + "startColumn": 7, + "charOffset": 392, + "charLength": 2, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 8, + "startColumn": 1, + "charOffset": 369, + "charLength": 158, + "snippet": { + "text": "\r\n#menu buttons\r\nrkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nkprofile= KeyboardButton(text=\"👤Профиль\")\r\nkliderboard= KeyboardButton(text=\"📊Рейтинг\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "18b8aabcbb33e6791f7ff00ab92e600c222bc2c991d0cb3e53632e6947bcd89b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 70, + "startColumn": 32, + "charOffset": 2701, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 68, + "startColumn": 1, + "charOffset": 2666, + "charLength": 194, + "snippet": { + "text": "\r\n\r\ndef get_user_info_by_id(chat_id:int ) -> str:\r\n try:\r\n response = supabase.table('UsersData').select('full_name','gender','age','balance','tgusr').eq('chat_id', chat_id).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "18dfb717594d0d0fa1b5956611b1a36d72efafff162a055bc2b4c95bcd99a95d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (124 > 120 characters)", + "markdown": "PEP 8: E501 line too long (124 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1709, + "startColumn": 103, + "charOffset": 78363, + "charLength": 19, + "snippet": { + "text": "ReplyKeyboardRemove" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1707, + "startColumn": 1, + "charOffset": 78177, + "charLength": 303, + "snippet": { + "text": " user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.ticket_delete)\r\n await message.reply(\"Введите @username пользователя чтобы удалить его заявку\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.ticket_start.set()\r\n user.user_state = str(AdminPanel.ticket_delete)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "19680063f90c92220dd488c485e3e65e7200190e2cf92b86d9951813c4555a82" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1896, + "startColumn": 1, + "charOffset": 85930, + "charLength": 121, + "snippet": { + "text": "@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=[MenuStates.promocode,MenuStates.promocodestart])" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1894, + "startColumn": 1, + "charOffset": 85806, + "charLength": 375, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=[MenuStates.promocode,MenuStates.promocodestart])\r\nasync def handle_qr(message: types.ContentType.WEB_APP_DATA , state: FSMContext):\r\n message.text = message.web_app_data.data\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "197089c614fb451dac5c6ed89c99836d968f6d8e8e3cb1ef63dd2adbcc9c7cb4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 134, + "startColumn": 1, + "charOffset": 5601, + "charLength": 19, + "snippet": { + "text": "#admin promo button" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 132, + "startColumn": 1, + "charOffset": 5530, + "charLength": 213, + "snippet": { + "text": "admui_back = InlineKeyboardButton(text=\"⬅️Отменить редактирование\")\r\n\r\n#admin promo button\r\nadmpromo = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmpromo_checkpromo = KeyboardButton(text=\"Действующие промокоды\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "19cde95a2d9d0ebe1ab74a6a7cadcfa2d40a683e4ccb01c62b8cd38e10508232" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 29, + "startColumn": 1, + "charOffset": 843, + "charLength": 54, + "snippet": { + "text": "def update_user_state_by_id(chat_id: int, state: str):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 27, + "startColumn": 1, + "charOffset": 822, + "charLength": 157, + "snippet": { + "text": " return \"\"\r\n\r\ndef update_user_state_by_id(chat_id: int, state: str):\r\n try:\r\n chat_id_str = str(chat_id) # Преобразование chat_id в строку\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1a326e175151d4d9e2132ab288f5111e260d6273763d34f307089f77a9f71255" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (291 > 120 characters)", + "markdown": "PEP 8: E501 line too long (291 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1246, + "startColumn": 100, + "charOffset": 55992, + "charLength": 190, + "snippet": { + "text": "!У вас нет имени пользователя Телеграм, связь администрации с вами может быть усложнена, вам необходимо указать в вашем профиле телеграма ваше имя пользователя и перерегистрироваться в боте." + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1244, + "startColumn": 1, + "charOffset": 55793, + "charLength": 462, + "snippet": { + "text": " if str(message.from_user.username) == 'None':\r\n await bot.send_message(chat_id,\r\n f\"Регистрация успешно завершена с неточностями, {user.full_name}!У вас нет имени пользователя Телеграм, связь администрации с вами может быть усложнена, вам необходимо указать в вашем профиле телеграма ваше имя пользователя и перерегистрироваться в боте.\",\r\n reply_markup=rkbm)\r\n else:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1a5d82733af38037fa7d127f5be5f00af8466804ffffbd168e1e5ba72e54b954" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 13, + "startColumn": 10, + "charOffset": 537, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 11, + "startColumn": 1, + "charOffset": 437, + "charLength": 229, + "snippet": { + "text": "kprofile= KeyboardButton(text=\"👤Профиль\")\r\nkliderboard= KeyboardButton(text=\"📊Рейтинг\")\r\nkschedule= KeyboardButton(text=\"📆Календарь событий\")\r\nkhelp= KeyboardButton(text=\"❓Помощь\")\r\nkexercise= KeyboardButton(text=\"📝Задания\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1ab811c2d80a3088b2dfd37757deebca522465cbc0dcf0149e4efcb9e93a0c1c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1774, + "startColumn": 15, + "charOffset": 81309, + "charLength": 1, + "snippet": { + "text": ">" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1772, + "startColumn": 1, + "charOffset": 81223, + "charLength": 228, + "snippet": { + "text": " data = await state.get_data()\r\n counter = data.get('counter')+1\r\n if counter>len(supabase.table('TaskCollection').select('name' ).execute().data)-1:\r\n counter = 0\r\n await state.update_data(counter = counter)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1b39bfbaeb68e551c52223fd523aa30855d4ef788541b72a83b55c40cff9ba5f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 406, + "startColumn": 1, + "charOffset": 16923, + "charLength": 58, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.update_users_balance)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 404, + "startColumn": 1, + "charOffset": 16872, + "charLength": 233, + "snippet": { + "text": " await AdminPanel.update_users_balance.set()\r\n\r\n@dp.message_handler(state=AdminPanel.update_users_balance)\r\nasync def update_users_balance(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1b46fffe9ec1151685d1668698fe9b9121cdc9d103c0aa59fcbf9b19ecd1c118" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 14, + "startColumn": 1, + "charOffset": 253, + "charLength": 36, + "snippet": { + "text": "async def show_rating(chat_id: int):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 12, + "startColumn": 1, + "charOffset": 214, + "charLength": 250, + "snippet": { + "text": "bot = Bot(token=os.getenv(\"TOKEN\"))\r\n\r\nasync def show_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', 'tgusr').order('balance', desc = True).limit(4).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1bed7efd5291797e8245f56e2a71fc7e91501963c7ab132c6538683b587759a3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E202 whitespace before ')'", + "markdown": "PEP 8: E202 whitespace before ')'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1774, + "startColumn": 66, + "charOffset": 81360, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1772, + "startColumn": 1, + "charOffset": 81223, + "charLength": 228, + "snippet": { + "text": " data = await state.get_data()\r\n counter = data.get('counter')+1\r\n if counter>len(supabase.table('TaskCollection').select('name' ).execute().data)-1:\r\n counter = 0\r\n await state.update_data(counter = counter)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1c487b3f249461a485b1f6e28625433e2d50a8cd30974d3e1a68092e678a10eb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1526, + "startColumn": 1, + "charOffset": 69333, + "charLength": 25, + "snippet": { + "text": "#Система удаления профиля" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1524, + "startColumn": 1, + "charOffset": 69209, + "charLength": 275, + "snippet": { + "text": "\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система удаления профиля\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1c5273ae24e65f14f2d4aff0b487bfab1804e787fcf3b889d4cebc312be54de1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 30, + "startColumn": 1, + "charOffset": 924, + "charLength": 41, + "snippet": { + "text": "async def show_user_rating(chat_id: int):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 28, + "startColumn": 1, + "charOffset": 842, + "charLength": 291, + "snippet": { + "text": " await bot.send_message(chat_id, rating_text, reply_markup=ikbmadminrating)\r\n\r\nasync def show_user_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', ).order('balance', desc = True).limit(4).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1cc42e2a1a954bd93255f56f09f9c0a3c485bd8decd48f34344678ced9ca4425" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1753, + "startColumn": 36, + "charOffset": 80260, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1751, + "startColumn": 1, + "charOffset": 80155, + "charLength": 287, + "snippet": { + "text": " data = await state.get_data()\r\n counter = data.get('counter')\r\n await state.update_data(counter = counter)\r\n task = supabase.table('TaskCollection').select('name','description','photo','url').execute().data[int(counter)]\r\n text = f\"{task['name']}\\n{task['description']}\"\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1ce36d8721d286907ed4f04918ac953c4f6879d39c5d73831471e32df11cb210" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1671, + "startColumn": 1, + "charOffset": 76680, + "charLength": 72, + "snippet": { + "text": "@dp.message_handler(text = \"📨Обращения\", state = AdminPanel.admin_menu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1669, + "startColumn": 1, + "charOffset": 76556, + "charLength": 297, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📨Обращения\", state = AdminPanel.admin_menu)\r\nasync def handle_report(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1de33eafefada44f945e136d798f1ea598ec9745069311457f3b38c99ba05f91" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 574, + "startColumn": 1, + "charOffset": 25503, + "charLength": 58, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.change_user_fullname)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 572, + "startColumn": 1, + "charOffset": 25455, + "charLength": 252, + "snippet": { + "text": " # Проверяем, есть ли такой пользователь\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_fullname)\r\nasync def admin_change_user_fullname_handler(message: types.Message, state: FSMContext):\r\n new_fullname = message.text # получаем новое ФИО\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1def08d7ef140b928535d67ad119c78db9d5fbb846360dcd053d0369a07e9703" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1560, + "startColumn": 1, + "charOffset": 71305, + "charLength": 32, + "snippet": { + "text": "#Система отображения мероприятий" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1558, + "startColumn": 1, + "charOffset": 71181, + "charLength": 285, + "snippet": { + "text": "\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система отображения мероприятий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1dfeef057c3c650672802590cfde8c6e1866271172d1367c65baed6063441c0b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 181, + "startColumn": 1, + "charOffset": 8162, + "charLength": 13, + "snippet": { + "text": "#help buttons" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 179, + "startColumn": 1, + "charOffset": 8124, + "charLength": 273, + "snippet": { + "text": "ikbmadminrating.add(ibadminrating)\r\n\r\n#help buttons\r\nhelpinlinereg = InlineKeyboardMarkup(row_width=1)\r\nhelpinlinenaming = InlineKeyboardButton(text=\"Помощь\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/README.md'))\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1e11addc9869f3920e3cf3baee2ee04264f7499dfe2373afe201c0d6dab25e5c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1746, + "startColumn": 1, + "charOffset": 79867, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1744, + "startColumn": 1, + "charOffset": 79727, + "charLength": 328, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система заданий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📝Задания\", state=MenuStates.tasks)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1e728869061ca5c40072606386a59343706f48bc6ec07b4d9547e6cf596bd48d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E722 do not use bare 'except'", + "markdown": "PEP 8: E722 do not use bare 'except'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 79, + "startColumn": 9, + "charOffset": 5431, + "charLength": 6, + "snippet": { + "text": "except" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 77, + "startColumn": 1, + "charOffset": 5087, + "charLength": 688, + "snippet": { + "text": " else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"\n except:\n if user[\"gender\"]:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "203a0e7f15cfb1b93f2f18b9d40b307170b270d6e2178f0abc63abac4e8b6fbb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1754, + "startColumn": 58, + "charOffset": 80330, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1752, + "startColumn": 1, + "charOffset": 80190, + "charLength": 302, + "snippet": { + "text": " counter = data.get('counter')\r\n await state.update_data(counter = counter)\r\n task = supabase.table('TaskCollection').select('name','description','photo','url').execute().data[int(counter)]\r\n text = f\"{task['name']}\\n{task['description']}\"\r\n await state.update_data(name = task['name'])\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "208afd212db2ca19b24e04ea005d0e9943fd123df6e3d19271780f060a828235" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 926, + "startColumn": 7, + "charOffset": 41168, + "charLength": 8, + "snippet": { + "text": "username" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 924, + "startColumn": 1, + "charOffset": 41039, + "charLength": 218, + "snippet": { + "text": " user_data = supabase.table('UsersData').select('tgusr').eq('chat_id', int(chat_id)).execute()\r\n if user_data.data:\r\n username = user_data.data[0]['tgusr']\r\n rules_text += f\"{username} - {chat_id}\\n\"\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "212db3f6123400a46dd26443e2f3ba7eadb8187f50e9214f7defd09bb9228c36" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 764, + "startColumn": 68, + "charOffset": 34586, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 762, + "startColumn": 1, + "charOffset": 34376, + "charLength": 290, + "snippet": { + "text": " code_cost = code(cost)\r\n texting = (f'Промокод '+ code(f\"{codee}\") + f' с {usages_code} использованиями и ценой {code_cost}🔘 создан')\r\n await message.reply(texting, reply_markup=admpromo, parse_mode= \"MarkdownV2\")\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "21eff0a5906d5c222c533fdf6561afe43c32d51b3656fe397faf484a9afc1609" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 61, + "startColumn": 1, + "charOffset": 2058, + "charLength": 30, + "snippet": { + "text": "def _get_search(pattern: str):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 59, + "startColumn": 1, + "charOffset": 2000, + "charLength": 148, + "snippet": { + "text": "standart_dirt = ''.join(chr(n) for n in standart_dirt)\r\n\r\ndef _get_search(pattern: str):\r\n @lru_cache()\r\n def hide_search(word: str) -> bool:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "21f751fd72eb57d1e255e4cfcf2e9ab91fffddb58d92a5837857155dd0e249c2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1098, + "startColumn": 21, + "charOffset": 49171, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1096, + "startColumn": 1, + "charOffset": 49097, + "charLength": 147, + "snippet": { + "text": " querylist = []\r\n if numberPoints == None:\r\n numberPoints:dict = {}\r\n if rightAnswers == None:\r\n rightAnswers:dict = {}\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2216b50278baec6096ea9ac913ebb35f274461e830ecb82dfc22995c5e895a99" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1329, + "startColumn": 58, + "charOffset": 60460, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1327, + "startColumn": 1, + "charOffset": 60340, + "charLength": 200, + "snippet": { + "text": "\r\n@dp.message_handler(state=ProlfileStates.edit_profile_name)\r\nasync def edit_name_profile(message: types.Message, state:FSMContext):\r\n new_fullname = message.text \r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "224756af899fc37d1f93bf1eb37e90a365b03909daaba2d36447ac9f45565f13" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E712 comparison to False should be 'if cond is False:' or 'if not cond:'", + "markdown": "PEP 8: E712 comparison to False should be 'if cond is False:' or 'if not cond:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1338, + "startColumn": 129, + "charOffset": 60832, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1336, + "startColumn": 1, + "charOffset": 60646, + "charLength": 290, + "snippet": { + "text": " if FIO[word][0].istitle():\r\n cnt += 1\r\n if new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO):\r\n user = users.get(chat_id)\r\n user.full_name = new_fullname\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2252e94f912f1e63dfca3d1fd28315b2f10a117e977d80f1e06cdb518aa302f5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1111, + "startColumn": 41, + "charOffset": 49867, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1109, + "startColumn": 1, + "charOffset": 49625, + "charLength": 354, + "snippet": { + "text": " numberPoints.update({new_json_data[\"questionId\"]:new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints = numberPoints)\r\n await state.update_data(rightAnswers = rightAnswers)\r\n querylist.append(new_json_data)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "23057d05f13ca4a91fd4ed1bd4890d5f3f3497d69ff1b88873cd92cdeecdf56e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 80, + "startColumn": 1, + "charOffset": 2600, + "charLength": 34, + "snippet": { + "text": "class ProlfileStates(StatesGroup):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 78, + "startColumn": 1, + "charOffset": 2568, + "charLength": 136, + "snippet": { + "text": "\r\n# Состояние удаления профиля\r\nclass ProlfileStates(StatesGroup):\r\n profile_menu_main_state = State()\r\n delete_profile = State()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2328ca501f3e6e5cf414109ef7427e3bba232e2e01e2aef793f6c8ff2235eec9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 891, + "startColumn": 3, + "charOffset": 40101, + "charLength": 2, + "snippet": { + "text": "if" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 889, + "startColumn": 1, + "charOffset": 40007, + "charLength": 238, + "snippet": { + "text": " user_data = supabase.table('UsersData').select('chat_id').eq('tgusr', tgusr).execute()\r\n\r\n if not user_data.data:\r\n await message.reply(\"Пользователя с таким username не существует\", reply_markup=ruleskbm)\r\n await state.finish()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "23ad2dd8588736b38726a6fbc8b12a7df7171aa32214de143ec69af24f5c947b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 198, + "startColumn": 80, + "charOffset": 8982, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 196, + "startColumn": 1, + "charOffset": 8828, + "charLength": 367, + "snippet": { + "text": "#survey web-app\r\nsurveywebapp = ReplyKeyboardMarkup(resize_keyboard=True)\r\nsurvquestcreate = KeyboardButton(text=\"Создать вопрос\",web_app=WebAppInfo(url = 'https://survey-web-app.pages.dev/edit?json=%7B%22surveyData%22%3A%20%5B%7B%22questionId%22%3A%2069%2C%20%22question%22%3A%20%22%22%2C%20%22choices%22%3A%20%5B%5D%7D%5D%7D'))\r\nsurveywebapp.row(survquestcreate)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "23bfb693ca3d622cb06aebe9fc9980831822e4e7fcda5a46215fa7c75d56365c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 10, + "startColumn": 29, + "charOffset": 236, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 8, + "startColumn": 1, + "charOffset": 155, + "charLength": 189, + "snippet": { + "text": "class SupabaseUserRepository(UserRepository):\r\n \r\n def __init__(self,client:Client, table_name:str = 'UsersData'):\r\n self.client = client\r\n self.table_name = table_name\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "23ef4706d09e405556f60122f69f9c4522c0cc1d3ccfa4e5c10df7ab267fc55e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 748, + "startColumn": 62, + "charOffset": 33824, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 746, + "startColumn": 1, + "charOffset": 33695, + "charLength": 227, + "snippet": { + "text": "\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming_cost)\r\nasync def get_naming_promo_cost(message: types.Message, state:FSMContext):\r\n usages = int(message.text)\r\n await message.reply(\"Введите цену промокода:\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "241959fc46ca30051fe3be6dd229af05f5ae3c1dac788b22542c6ca71ee4d7ed" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1397, + "startColumn": 3, + "charOffset": 63573, + "charLength": 7, + "snippet": { + "text": "message" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1395, + "startColumn": 1, + "charOffset": 63529, + "charLength": 110, + "snippet": { + "text": " qr_code = qr_code[0].data.decode()\r\n\r\n message.text = qr_code\r\n await check_promocode(message, state)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2450dae4a189d6208fab0b7e1e0a6c3727bc1c5dcc009119b3f0e4de9a314f8e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 3", + "markdown": "PEP 8: E302 expected 2 blank lines, found 3" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1863, + "startColumn": 1, + "charOffset": 84508, + "charLength": 57, + "snippet": { + "text": "def calculate_score(user_answers, right_answers, points):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1861, + "startColumn": 1, + "charOffset": 84504, + "charLength": 98, + "snippet": { + "text": "\r\n\r\ndef calculate_score(user_answers, right_answers, points):\r\n score = 0\r\n num_correct = 0\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "249eb929dfd07da9969832bc5abbc13533ede0c9eb5f008bf0f4561a1f5eae0d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 32, + "startColumn": 1, + "charOffset": 1200, + "charLength": 20, + "snippet": { + "text": "#profilemenu buttons" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 30, + "startColumn": 1, + "charOffset": 1196, + "charLength": 139, + "snippet": { + "text": "\r\n\r\n#profilemenu buttons\r\nprofilebuttons = ReplyKeyboardMarkup(resize_keyboard=True)\r\ndelprofile = KeyboardButton(text=\"❌Удалить профиль\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "24a5a396e9bb09489d2a788c98cf1cd3bbee5478fc8e4ccb9fbf21dcebf91044" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 10, + "startColumn": 3, + "charOffset": 165, + "charLength": 3, + "snippet": { + "text": "def" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 8, + "startColumn": 1, + "charOffset": 150, + "charLength": 61, + "snippet": { + "text": " ...\r\n \r\n def set(self,user : User) -> None:\r\n ...\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "250b05d5c02a03fcd13a3c8c7dd034024f7890e376a99a602264960cc1fcb4d1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1671, + "startColumn": 27, + "charOffset": 76706, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1669, + "startColumn": 1, + "charOffset": 76556, + "charLength": 297, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📨Обращения\", state = AdminPanel.admin_menu)\r\nasync def handle_report(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2512d372999b910ed71d037af9ee298af1a768fc35a9ba2b4e59737ea78c0da2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1084, + "startColumn": 115, + "charOffset": 48538, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1082, + "startColumn": 1, + "charOffset": 48361, + "charLength": 272, + "snippet": { + "text": " else:\r\n await state.update_data(counter = counter)\r\n await bot.send_message(chat_id,\"Коллекция создана успешно! Перейдите пожалуйста, к составлению заданий!⬇️\",reply_markup=surveywebapp)\r\n await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "25270274df3df221342288f8aa41511bb56d7c2035c36d1cb10b2c0691793ae1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 775, + "startColumn": 1, + "charOffset": 35055, + "charLength": 58, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.promo_addpromousages)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 773, + "startColumn": 1, + "charOffset": 35004, + "charLength": 206, + "snippet": { + "text": " await AdminPanel.promo_addpromousages.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromousages)\r\nasync def get_cost(message: types.Message, state: FSMContext):\r\n usages = int(message.text)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "25af284db4f6aa72a45432fd0fba60ab0509ad735c85e3a105dfdab1b1c16c52" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (254 > 120 characters)", + "markdown": "PEP 8: E501 line too long (254 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 198, + "startColumn": 81, + "charOffset": 8983, + "charLength": 172, + "snippet": { + "text": "'https://survey-web-app.pages.dev/edit?json=%7B%22surveyData%22%3A%20%5B%7B%22questionId%22%3A%2069%2C%20%22question%22%3A%20%22%22%2C%20%22choices%22%3A%20%5B%5D%7D%5D%7D'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 196, + "startColumn": 1, + "charOffset": 8828, + "charLength": 367, + "snippet": { + "text": "#survey web-app\r\nsurveywebapp = ReplyKeyboardMarkup(resize_keyboard=True)\r\nsurvquestcreate = KeyboardButton(text=\"Создать вопрос\",web_app=WebAppInfo(url = 'https://survey-web-app.pages.dev/edit?json=%7B%22surveyData%22%3A%20%5B%7B%22questionId%22%3A%2069%2C%20%22question%22%3A%20%22%22%2C%20%22choices%22%3A%20%5B%5D%7D%5D%7D'))\r\nsurveywebapp.row(survquestcreate)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "25e741b91cca6c2942e04c134161359a4bbbb896d19326b1d617ce5a47469f99" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (125 > 120 characters)", + "markdown": "PEP 8: E501 line too long (125 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 451, + "startColumn": 111, + "charOffset": 19504, + "charLength": 13, + "snippet": { + "text": "cancel_button" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 449, + "startColumn": 1, + "charOffset": 19197, + "charLength": 392, + "snippet": { + "text": " user.user_state = str(AdminPanel.get_info_about_user)\r\n await message.reply(\"Введите @username пользователя о котором хотите получить информацию\", reply_markup=types.ReplyKeyboardRemove())\r\n await message.reply(\"Для отмены действия, нажмите кнопку отмена\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n await AdminPanel.get_info_about_user.set()\r\n users.set(user)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "26ed081af1526cc1ef8449153de32739dffa3c2b4bcf2106edbea4993044b735" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 186, + "startColumn": 1, + "charOffset": 8437, + "charLength": 12, + "snippet": { + "text": "#admin tasks" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 184, + "startColumn": 1, + "charOffset": 8398, + "charLength": 164, + "snippet": { + "text": "helpinlinereg.add(helpinlinenaming)\r\n\r\n#admin tasks\r\nadmtasks = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmcreatetask = KeyboardButton(text=\"Создать коллекцию\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2718d15e6bce6753e8f26c9aa1d5d3db27d5bdaa8f7437fae75a5e4cb09affec" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1661, + "startColumn": 90, + "charOffset": 76122, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1659, + "startColumn": 1, + "charOffset": 75988, + "charLength": 285, + "snippet": { + "text": " users.user_state=str(MenuStates.help)\r\n\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r\nasync def handle_help_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "271d1c6b00e7e0d0112bce7e67790420a851973c6603b128e1f2c78bf7bbf33c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 354, + "startColumn": 25, + "charOffset": 14230, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 352, + "startColumn": 1, + "charOffset": 14202, + "charLength": 187, + "snippet": { + "text": "\r\n\r\n@dp.message_handler(text = \"⬅️Меню\", state=EventMakerPanel.menu)\r\nasync def back_from_event(message: types.Message, state:FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "272dca98be6b7910c8962c9929f4fe5dbceefdb3caaeea9579540300f0a0fd8b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (130 > 120 characters)", + "markdown": "PEP 8: E501 line too long (130 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 397, + "startColumn": 114, + "charOffset": 16400, + "charLength": 15, + "snippet": { + "text": "change_user_end" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 395, + "startColumn": 1, + "charOffset": 16283, + "charLength": 274, + "snippet": { + "text": "\r\n\r\n@dp.message_handler(text=\"❗Обнулить баланс всех пользователей❗\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def update_users_balance_confirm(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance_confirm.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2768375a5d86860f11ce36903b6951ec1d082bdcc33c32a5568d51ab7581a34a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 38, + "startColumn": 92, + "charOffset": 1439, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 36, + "startColumn": 1, + "charOffset": 1292, + "charLength": 278, + "snippet": { + "text": " except ValueError:\r\n tgusr:str = id\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','chat_id','user_state').eq('tgusr', tgusr).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "284c09624c9b1814310ec0adb7c98589cbd13fa3fd632e1ac1815904e97026ef" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1903, + "startColumn": 1, + "charOffset": 86286, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1901, + "startColumn": 1, + "charOffset": 86256, + "charLength": 304, + "snippet": { + "text": " await message.delete()\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система для Telegram Web App\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "28cb1ff8b48f6f8785586e747ae175307e7d52e7b2d0fa907ba66b506296a2cf" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: W292 no newline at end of file", + "markdown": "PEP 8: W292 no newline at end of file" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 106, + "startColumn": 60, + "charOffset": 7525, + "charLength": 1, + "snippet": { + "text": ")" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 104, + "startColumn": 1, + "charOffset": 7431, + "charLength": 95, + "snippet": { + "text": "\ndef rating_update_start_thread():\n threading.Thread(target=rating_update_over_time).start()" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2a2dbfac7ad71505a3c42830aabe55958d236755ebf5feb5aa6a390bfb78033a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 48, + "startColumn": 24, + "charOffset": 1938, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 46, + "startColumn": 1, + "charOffset": 1835, + "charLength": 182, + "snippet": { + "text": " user_state = user_data.get('user_state')\r\n return User(\r\n chat_id = chat_id,\r\n full_name=pseudo,\r\n gender=gender,\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2a78c3efad38ad70c39c5fd61a421c4334e69ab50015a0dcd54c0210bf758022" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1034, + "startColumn": 1, + "charOffset": 45954, + "charLength": 55, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.taskmenu_namewait)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1032, + "startColumn": 1, + "charOffset": 45906, + "charLength": 214, + "snippet": { + "text": " await AdminPanel.taskmenu_namewait.set()\r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_namewait)\r\nasync def admin_taskmenu_namewait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2b7904f72103912f38c7af13949be628b6d430b86121df1847534bd853f314bb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (243 > 120 characters)", + "markdown": "PEP 8: E501 line too long (243 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 178, + "startColumn": 88, + "charOffset": 7965, + "charLength": 155, + "snippet": { + "text": "'https://docs.google.com/spreadsheets/d/e/2PACX-1vR__0ahX-O5SK3sS7OditV88sjG64duAF6mAW702CT3uM3Yj6z5mwsnxv-lL2vF9-H3YjlD0rtmg84N/pubhtml?gid=0&single=true'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 176, + "startColumn": 1, + "charOffset": 7799, + "charLength": 362, + "snippet": { + "text": "ikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r\nibadminrating = InlineKeyboardButton(text=\"📊Админ Рейтинг\",web_app = WebAppInfo(url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vR__0ahX-O5SK3sS7OditV88sjG64duAF6mAW702CT3uM3Yj6z5mwsnxv-lL2vF9-H3YjlD0rtmg84N/pubhtml?gid=0&single=true'))\r\nikbmadminrating.add(ibadminrating)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2c7dbe2e0b5ce68c17cbae7126ec22d69695141141f03b506b0bedf61101d672" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1132, + "startColumn": 138, + "charOffset": 50946, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1130, + "startColumn": 1, + "charOffset": 50727, + "charLength": 360, + "snippet": { + "text": " description = data.get(\"description\")\r\n photo = data.get(\"photo\")\r\n supabase.table('TaskCollection').insert({'name': name, 'description': description, 'photo': photo, 'counter': counter, 'url': url,'numberPoints':numberPoints, 'rightAnswers':rightAnswers}).execute()\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2d375c9e60692a29eecca837f8328e49cf38721818c4429a8d5e6c5e9f80006b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ':'", + "markdown": "PEP 8: E203 whitespace before ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 23, + "startColumn": 6, + "charOffset": 854, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 21, + "startColumn": 1, + "charOffset": 782, + "charLength": 152, + "snippet": { + "text": "supabase: Client = create_client(url,key)\ntable_name = \"UsersData\"\nusers : UserRepository = SupabaseUserRepository(supabase)\n\ndef admin_rating_udpate():" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2d9e292ff37a37753b88f21b0b7a284e2fa45e070478e420784322d910f091cc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1390, + "startColumn": 3, + "charOffset": 63415, + "charLength": 11, + "snippet": { + "text": "photo_image" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1388, + "startColumn": 1, + "charOffset": 63371, + "charLength": 140, + "snippet": { + "text": " photo_bytes = photo_bytes.getvalue()\r\n\r\n photo_image = PIL.Image.open(io.BytesIO(photo_bytes))\r\n\r\n qr_code = pyzbar.decode(photo_image)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2da89e331d4ae0f59ff269e045254cf89ab00f5b5194c70dd6973671f3b79189" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (181 > 120 characters)", + "markdown": "PEP 8: E501 line too long (181 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1674, + "startColumn": 37, + "charOffset": 76890, + "charLength": 120, + "snippet": { + "text": "\"Нажата кнопка обращений, здесь вы можете просмотреть действующие обращения от пользователей или удалить уже решённые. \"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1672, + "startColumn": 1, + "charOffset": 76754, + "charLength": 348, + "snippet": { + "text": "async def handle_report(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, \"Нажата кнопка обращений, здесь вы можете просмотреть действующие обращения от пользователей или удалить уже решённые. \", reply_markup=admreport)\r\n await AdminPanel.ticket.set()\r\n user = users.get(chat_id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2ddd96d1159eb40f1fecde8c9c667e70e47f302c942bc7ee53dee0dfac77dfbb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ':'", + "markdown": "PEP 8: E203 whitespace before ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 14, + "startColumn": 20, + "charOffset": 366, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 12, + "startColumn": 1, + "charOffset": 307, + "charLength": 125, + "snippet": { + "text": " self.table_name = table_name\r\n\r\n def get(self,id : str) -> User:\r\n try:\r\n chat_id:int = int(id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2f88d52ad2b04e7da44e1777b2d477374a28de2d41a111f73acecd3b13a58576" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E221 multiple spaces before operator", + "markdown": "PEP 8: E221 multiple spaces before operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1103, + "startColumn": 9, + "charOffset": 49356, + "charLength": 2, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1101, + "startColumn": 1, + "charOffset": 49245, + "charLength": 237, + "snippet": { + "text": " url = 'https://survey-web-app.pages.dev/view?json='\r\n message.text = message.web_app_data.data\r\n data = json.loads(message.text)\r\n data['questionId'] = await generate_id_for_survey(10)\r\n new_json_data = json.dumps(data)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "304e31fbf9f4863043e73b20f8fc8e22f6af27830de24a0da30a982775955912" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (136 > 120 characters)", + "markdown": "PEP 8: E501 line too long (136 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 503, + "startColumn": 115, + "charOffset": 21994, + "charLength": 19, + "snippet": { + "text": "ReplyKeyboardRemove" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 501, + "startColumn": 1, + "charOffset": 21746, + "charLength": 376, + "snippet": { + "text": "async def admin_change_user_balance(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_balancestart.set()\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_balancestart)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3076d1e98fb7e26dd645c396ab339923c9bc5f15aaa5966be9188a9747bed0b8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 606, + "startColumn": 1, + "charOffset": 27001, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 604, + "startColumn": 1, + "charOffset": 26997, + "charLength": 295, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования возраста пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "316bd98861ecd88c8ecff86cd7b1e3f8e91daf493040329ea109c79f5822ef4a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 941, + "startColumn": 1, + "charOffset": 41715, + "charLength": 63, + "snippet": { + "text": "@dp.message_handler(text=\"⬅️Меню\", state=AdminPanel.admin_menu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 939, + "startColumn": 1, + "charOffset": 41692, + "charLength": 206, + "snippet": { + "text": " users.set(user)\r\n\r\n@dp.message_handler(text=\"⬅️Меню\", state=AdminPanel.admin_menu)\r\nasync def admin_menu_back(message: types.Message, state: FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "31a57990bc35a8b1435eb09165572808ec39f3ac83a5b43e856b786359583efb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (313 > 120 characters)", + "markdown": "PEP 8: E501 line too long (313 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 43, + "startColumn": 28, + "charOffset": 2229, + "charLength": 286, + "snippet": { + "text": "\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 41, + "startColumn": 1, + "charOffset": 1870, + "charLength": 692, + "snippet": { + "text": " link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"\n else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"\n except:\n if user[\"gender\"]:" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "31f708b492327ef549d11525353f9740bd553e72b04ab810029447a83543e492" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 74, + "startColumn": 29, + "charOffset": 2961, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 72, + "startColumn": 1, + "charOffset": 2849, + "charLength": 157, + "snippet": { + "text": "admtaskback = KeyboardButton(text=\"⬅️Назад в меню\")\r\neventtasks.row(admcreatetask)\r\neventtasks.row(admdeletetask,admtasklist)\r\neventtasks.row(admtaskback)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "333571ba511cee0203a8863e6f223e0b3cc9eb905ec7755cbffe19943090278e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (313 > 120 characters)", + "markdown": "PEP 8: E501 line too long (313 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 78, + "startColumn": 28, + "charOffset": 5136, + "charLength": 286, + "snippet": { + "text": "\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 76, + "startColumn": 1, + "charOffset": 4777, + "charLength": 692, + "snippet": { + "text": " link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"\n else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"\n except:\n if user[\"gender\"]:" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "33de32ec859b70618c105922363c4c729f400d7da2ffeaf2cb02f922d04fc04e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ':'", + "markdown": "PEP 8: E203 whitespace before ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 51, + "startColumn": 53, + "charOffset": 1951, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 49, + "startColumn": 1, + "charOffset": 1837, + "charLength": 238, + "snippet": { + "text": " print(f\"Error updating user age for {tgusr}: {e}\")\r\n\r\ndef update_user_balance_by_tgusr(tgusr: str, balance : int):\r\n try:\r\n response = supabase.table(table_name).update({'balance': balance}).eq('tgusr', tgusr).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "33f375f919a0afbc4140fa11898926d9aa39fcba3736b777a5ee33d747fdf5b6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 881, + "startColumn": 58, + "charOffset": 39657, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 879, + "startColumn": 1, + "charOffset": 39531, + "charLength": 314, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Забрать права\", state=AdminPanel.rules)\r\nasync def del_from_eventers(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules_delmaker.set()\r\n await message.reply(\"Введите @username пользователя у котрого хотите забрать права\",reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "34706a437e7d7a57c96ef22848c830342c878f37263863ed23f74c076a453e25" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 5, + "startColumn": 1, + "charOffset": 83, + "charLength": 26, + "snippet": { + "text": "class UserRepository(ABC):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 3, + "startColumn": 1, + "charOffset": 56, + "charLength": 93, + "snippet": { + "text": "from typing import List\r\n\r\nclass UserRepository(ABC):\r\n \r\n def get(self,id : str) -> User:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "349dd7066f6a5355a23b660eb311a61b9c75e2a3fc522a5341dc3bedf3f04815" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1876, + "startColumn": 1, + "charOffset": 84949, + "charLength": 53, + "snippet": { + "text": "#Система отлова людей без state и обработчик стикеров" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1874, + "startColumn": 1, + "charOffset": 84824, + "charLength": 304, + "snippet": { + "text": "\r\n#------------------------------------------------------------------------------------------------------------------------\r\n#Система отлова людей без state и обработчик стикеров\r\n#------------------------------------------------------------------------------------------------------------------------\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "34c7b951f5da73d4a30a8daca7a186c236b260b714a9a12e074081bf1bedd338" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (145 > 120 characters)", + "markdown": "PEP 8: E501 line too long (145 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 701, + "startColumn": 121, + "charOffset": 31803, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 699, + "startColumn": 1, + "charOffset": 31660, + "charLength": 192, + "snippet": { + "text": " byte_io.seek(0)\r\n\r\n await message.reply_photo(byte_io, caption=\"Вот QR\\\\-код для промокода \" + code(promo_code) , reply_markup=admpromo, parse_mode=\"MarkdownV2\")\r\n\r\n byte_io.close()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "34e01ae939b479ac3ece2ecb9aaa1ba40c29277f29497e6c883b0b68f25991c7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E303 too many blank lines (3)", + "markdown": "PEP 8: E303 too many blank lines (3)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 8, + "startColumn": 1, + "charOffset": 155, + "charLength": 45, + "snippet": { + "text": "class SupabaseUserRepository(UserRepository):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 6, + "startColumn": 1, + "charOffset": 151, + "charLength": 125, + "snippet": { + "text": "\r\n\r\nclass SupabaseUserRepository(UserRepository):\r\n \r\n def __init__(self,client:Client, table_name:str = 'UsersData'):\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "35a387983607bba749cc5f55b0ab5430e41202ae2ebc5aa94fd33ec4fd1da336" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 770, + "startColumn": 25, + "charOffset": 34782, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 768, + "startColumn": 1, + "charOffset": 34706, + "charLength": 297, + "snippet": { + "text": " user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text ='Добавить промокод',state=AdminPanel.promo_menu)\r\nasync def get_usages(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите количество использований:\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "35f1a8250b87647cd51138314556eeef876c89abc505bc0f8fe1d443c576900a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1480, + "startColumn": 1, + "charOffset": 66968, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1478, + "startColumn": 1, + "charOffset": 66945, + "charLength": 296, + "snippet": { + "text": " users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система отображения профиля\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "360096dac2da99f7ba3a7a2c0c092034b32927141e56827a1278331a5d71f575" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (121 > 120 characters)", + "markdown": "PEP 8: E501 line too long (121 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1896, + "startColumn": 121, + "charOffset": 86050, + "charLength": 1, + "snippet": { + "text": ")" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1894, + "startColumn": 1, + "charOffset": 85806, + "charLength": 375, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=[MenuStates.promocode,MenuStates.promocodestart])\r\nasync def handle_qr(message: types.ContentType.WEB_APP_DATA , state: FSMContext):\r\n message.text = message.web_app_data.data\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3607e0461fb89c9c0b1df2a9a980c8704fcc22039d605faa5ba2a33b43ed551d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (121 > 120 characters)", + "markdown": "PEP 8: E501 line too long (121 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1289, + "startColumn": 121, + "charOffset": 58143, + "charLength": 1, + "snippet": { + "text": ")" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1287, + "startColumn": 1, + "charOffset": 57942, + "charLength": 395, + "snippet": { + "text": " await message.reply(\"Нет такого варианта выбора!\", reply_markup=rkbm)\r\n\r\n@dp.callback_query_handler(text=\"cancel_user\", state=[ProlfileStates.edit_profile_name, ProlfileStates.edit_profile_age])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню редактирования профиля.\", reply_markup=menuedit)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "38418ab3076344420fe46d74cd4a6b6fb140843a24d78f78a0ac4f17be5664e0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 114, + "startColumn": 68, + "charOffset": 4626, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 112, + "startColumn": 1, + "charOffset": 4445, + "charLength": 352, + "snippet": { + "text": "userhelp_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\nuserhelp_ticket = KeyboardButton(text=\"📨Создать заявку\")\r\nguide = KeyboardButton(text=\"?📑Руководство пользователя\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/User%20guide/README.md'))\r\nuserhelp.row(userhelp_ticket)\r\nuserhelp.row(guide)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "388e7c3542273ca0a83e6c9b83e79049971a9bc14e5e4c090a3b7abdfa9c1402" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 929, + "startColumn": 3, + "charOffset": 41260, + "charLength": 5, + "snippet": { + "text": "await" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 927, + "startColumn": 1, + "charOffset": 41207, + "charLength": 141, + "snippet": { + "text": " rules_text += f\"{username} - {chat_id}\\n\"\r\n\r\n await message.reply(rules_text)\r\n await state.finish()\r\n await AdminPanel.rules.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "389f6bf6fcc6c8d2c7c5b7150c58b7e3300c361fbfe24082cda40804cb0e3402" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 90, + "startColumn": 53, + "charOffset": 6602, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 88, + "startColumn": 1, + "charOffset": 6182, + "charLength": 532, + "snippet": { + "text": " insert_image = f'=IMAGE(\"{link}\")'\n #insert_image = '=IMAGE(\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\")'\n google_update_list.append([\"=СТРОКА()-1\",insert_image, user['full_name'], user['balance']])\n else:\n insert_image = f'=IMAGE(\"{link}\")'" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "38b39b82d6aa34a2c0a577f440de5fbfd524e6978639af5acdb764bcb1cb59dc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1756, + "startColumn": 35, + "charOffset": 80477, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1754, + "startColumn": 1, + "charOffset": 80273, + "charLength": 318, + "snippet": { + "text": " task = supabase.table('TaskCollection').select('name','description','photo','url').execute().data[int(counter)]\r\n text = f\"{task['name']}\\n{task['description']}\"\r\n await state.update_data(name = task['name'])\r\n ikbmtasks = ReplyKeyboardMarkup(resize_keyboard=True)\r\n ibleft = KeyboardButton(text=\"⬅️\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3989d62debd57d6f3041396d0df440d14f7a6a895631782022d96b2930099ce1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 51, + "startColumn": 1, + "charOffset": 1899, + "charLength": 60, + "snippet": { + "text": "def update_user_balance_by_tgusr(tgusr: str, balance : int):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 49, + "startColumn": 1, + "charOffset": 1837, + "charLength": 238, + "snippet": { + "text": " print(f\"Error updating user age for {tgusr}: {e}\")\r\n\r\ndef update_user_balance_by_tgusr(tgusr: str, balance : int):\r\n try:\r\n response = supabase.table(table_name).update({'balance': balance}).eq('tgusr', tgusr).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3a536089c619b00eead8696bf6ffb55d37c339b40db8aa74b444b3587c6f978a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 883, + "startColumn": 88, + "charOffset": 39802, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 881, + "startColumn": 1, + "charOffset": 39600, + "charLength": 301, + "snippet": { + "text": "async def del_from_eventers(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules_delmaker.set()\r\n await message.reply(\"Введите @username пользователя у котрого хотите забрать права\",reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.rules_delmaker)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3a6fa9b6ff923c634e2f178370dd3c42c807cae729c35e428474c2d18a32d910" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 52, + "startColumn": 1, + "charOffset": 1827, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 50, + "startColumn": 1, + "charOffset": 1638, + "charLength": 314, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Все состояния в которых может пребывать пользователь/админ бота\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3b64d976d6b0c0e1748e1138840d876b9ca8d2fa25e593346fef5f68ad70acd6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E202 whitespace before ')'", + "markdown": "PEP 8: E202 whitespace before ')'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 64, + "startColumn": 93, + "charOffset": 4167, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 62, + "startColumn": 1, + "charOffset": 3979, + "charLength": 283, + "snippet": { + "text": " sh: Spreadsheet = gc.open_by_url(SPREADSHEET_URL)\n worksheet = sh.worksheet(\"📊Рейтинг\")\n response = supabase.table('UsersData').select('chat_id','full_name', 'balance', 'gender' ).order('balance', desc = True).execute()\n users_data = response.data\n worksheet.clear()" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3b72e5032b5373c144ddabf67cfd7d8090627ea6ea0ecada626ed70d1df246f4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 369, + "startColumn": 112, + "charOffset": 15013, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 367, + "startColumn": 1, + "charOffset": 14860, + "charLength": 400, + "snippet": { + "text": "\r\n# Хендлер отмены действия через кнопку\r\n@dp.callback_query_handler(text=\"cancel\", state=[AdminPanel.change_user_balance,AdminPanel.change_user_fullname,AdminPanel.change_user_agestart,AdminPanel.get_info_about_user])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню админ-панели.\", reply_markup=admrkbm)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3b7c5a3de310a0c390e37eb34f9d92d5b9f7e7eec290a343685ee4a024a0bb12" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 93, + "startColumn": 13, + "charOffset": 6727, + "charLength": 312, + "snippet": { + "text": "#insert_image = '=IMAGE(\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\")'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 91, + "startColumn": 1, + "charOffset": 6654, + "charLength": 571, + "snippet": { + "text": " else:\n insert_image = f'=IMAGE(\"{link}\")'\n #insert_image = '=IMAGE(\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\")'\n google_update_list.append([\"=СТРОКА()-1\", insert_image, user['full_name'], user['balance']])\n worksheet.insert_rows(google_update_list, value_input_option=\"USER_ENTERED\")" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3c75b471219bef7ae63dfb89869027516cd81003a222125fb415075abb5b15a9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 12, + "startColumn": 37, + "charOffset": 285, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 10, + "startColumn": 1, + "charOffset": 163, + "charLength": 156, + "snippet": { + "text": "url: str = os.environ.get(\"SUPABASE_URL\")\r\nkey: str = os.environ.get(\"SUPABASE_KEY\")\r\nsupabase: Client = create_client(url,key)\r\ntable_name = \"UsersData\"\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3c8f6523ad8c05d0b0d5abc5f202c3cb6bb7df979d7b5aa093da9fac2d144482" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 7, + "startColumn": 13, + "charOffset": 362, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 5, + "startColumn": 1, + "charOffset": 216, + "charLength": 169, + "snippet": { + "text": "ibm = InlineKeyboardButton(text=\"🙋‍♂️Мужчина\",callback_data='1')\r\nibf = InlineKeyboardButton(text=\"🙋‍♀️Женщина\",callback_data='0')\r\nikbg.add(ibm,ibf)\r\n\r\n#menu buttons\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3ca853e19162018d1dd39a6c9c0fda416aee55c43d06a9134e4908fbeba01ab9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 17, + "startColumn": 77, + "charOffset": 509, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 15, + "startColumn": 1, + "charOffset": 384, + "charLength": 273, + "snippet": { + "text": " try:\r\n chat_id:int = int(id)\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','tgusr','user_state').eq('chat_id', chat_id).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3d9428c7a5ae9ea5acafd5930279409130e206b67af1127f19272bffd8595556" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (121 > 120 characters)", + "markdown": "PEP 8: E501 line too long (121 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 294, + "startColumn": 121, + "charOffset": 11448, + "charLength": 1, + "snippet": { + "text": ")" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 292, + "startColumn": 1, + "charOffset": 11324, + "charLength": 244, + "snippet": { + "text": "\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=EventMakerPanel.taskmenu_collection_surveywebapp)\r\nasync def survey_web_app(message: types.ContentType.WEB_APP_DATA, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3db560c6b2f510f883a54fea5ffe32da7f5bdf3b40d654782919fcccad56b008" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1762, + "startColumn": 44, + "charOffset": 80749, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1760, + "startColumn": 1, + "charOffset": 80633, + "charLength": 224, + "snippet": { + "text": " ibback = KeyboardButton(text=\"⬅️Меню\")\r\n print(f\"{task['url']}\")\r\n ibgo = KeyboardButton(text=\"✅\", web_app = WebAppInfo(url = f'{task[\"url\"]}'))\r\n ikbmtasks.row(ibleft, ibgo, ibright)\r\n ikbmtasks.row(ibback)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3e25cfedb770c0daf2e65427e01c726bfd710efcb5d24ea03324f8c369d37483" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: W292 no newline at end of file", + "markdown": "PEP 8: W292 no newline at end of file" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "codegen.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 59, + "startColumn": 12, + "charOffset": 1322, + "charLength": 4, + "snippet": { + "text": "name" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 57, + "startColumn": 1, + "charOffset": 1169, + "charLength": 157, + "snippet": { + "text": " supabase.table(table_name).insert(data).execute()\r\n print(f\"Added {name} with {usages} usages and {cost} cost to {table_name} table\")\r\n return name" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3ee3b51ef4366cbcc902be2a2c00786447c0001fe37c637ee252b40fdb2b5b3e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1373, + "startColumn": 1, + "charOffset": 62402, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1371, + "startColumn": 1, + "charOffset": 62398, + "charLength": 269, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система промокодов\r\n#----------------------------------------------------------------------------------------------------------------------- \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3f42050552b49c5bff222528665f8e9a4e9128cfeaf4d5986018802e3f5f2585" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 755, + "startColumn": 60, + "charOffset": 34147, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 753, + "startColumn": 1, + "charOffset": 34021, + "charLength": 205, + "snippet": { + "text": "\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming_end)\r\nasync def create_naming_promo(message: types.Message, state:FSMContext):\r\n cost = int(message.text)\r\n data = await state.get_data()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3fd69157b84c1f3466d7eaab47b45a4404ebdacdf788dab9c9c8a0947e03b9bf" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1605, + "startColumn": 12, + "charOffset": 73575, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1603, + "startColumn": 1, + "charOffset": 73495, + "charLength": 214, + "snippet": { + "text": " chat_id = message.chat.id\r\n tgu = message.from_user.username\r\n if tgu == None:\r\n nome = 'имени пользователя'\r\n url = 'https://ru.the-hitech.net/7264375-how-to-create-a-username-on-telegram'\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "40483c77c40922c63edf37cb6791ba3245330dfb9e1f910775162375d7e8df8b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1661, + "startColumn": 68, + "charOffset": 76100, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1659, + "startColumn": 1, + "charOffset": 75988, + "charLength": 285, + "snippet": { + "text": " users.user_state=str(MenuStates.help)\r\n\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r\nasync def handle_help_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "40e5122d30fac6f4b1d3f1444e4e46489c552fe4dc9a6417727813919ec729a2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1274, + "startColumn": 34, + "charOffset": 57422, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1272, + "startColumn": 1, + "charOffset": 57322, + "charLength": 192, + "snippet": { + "text": " elif select ==\"❓Помощь\":\r\n await MenuStates.help.set()\r\n await handle_help(message,state)\r\n elif select == \"📆Календарь событий\":\r\n await MenuStates.calendar.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "41d158bf0a25b608c89f2d80168866b23b96b05d05152415bec7a386a7be3c8d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1581, + "startColumn": 51, + "charOffset": 72273, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1579, + "startColumn": 1, + "charOffset": 72121, + "charLength": 299, + "snippet": { + "text": " f\"⏱{date} \\n\" \\\r\n f'------------------------------'\r\n await bot.send_message(chat_id, events_message,disable_web_page_preview=True,parse_mode=types.ParseMode.MARKDOWN)\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(chat_id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "41f15b71c16cbcdd4a788ed022a0f1de4606c8b28391ff92320b6423fbe99a77" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 114, + "startColumn": 85, + "charOffset": 4643, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 112, + "startColumn": 1, + "charOffset": 4445, + "charLength": 352, + "snippet": { + "text": "userhelp_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\nuserhelp_ticket = KeyboardButton(text=\"📨Создать заявку\")\r\nguide = KeyboardButton(text=\"?📑Руководство пользователя\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/User%20guide/README.md'))\r\nuserhelp.row(userhelp_ticket)\r\nuserhelp.row(guide)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "421aa7ef8a7e8392ae2786440cf1eafe80ae64f07b67cceeff0578b2dcce70cc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1136, + "startColumn": 1, + "charOffset": 51090, + "charLength": 69, + "snippet": { + "text": "@dp.message_handler(text=\"⬅️Назад в меню\", state=AdminPanel.taskmenu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1134, + "startColumn": 1, + "charOffset": 51047, + "charLength": 260, + "snippet": { + "text": " await AdminPanel.taskmenu.set()\r\n\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=AdminPanel.taskmenu)\r\nasync def back_from_rules(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "439ad72a2f1a270d4412d9bcbda4432fdcbb1948f55cf2cb4f310d1e62af711d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1097, + "startColumn": 21, + "charOffset": 49141, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1095, + "startColumn": 1, + "charOffset": 49070, + "charLength": 142, + "snippet": { + "text": " if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r\n numberPoints:dict = {}\r\n if rightAnswers == None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "449cabdb186c155e93d370da47b7fba99f96cbae1c39ec3766e0b53c756ed03f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 392, + "startColumn": 1, + "charOffset": 15997, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 390, + "startColumn": 1, + "charOffset": 15993, + "charLength": 289, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система обнуления баланса пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "45371d257899e788d7ad51c507238934a979c4d6c1f5abf7c0c80331a98b9d3c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 58, + "startColumn": 1, + "charOffset": 2233, + "charLength": 48, + "snippet": { + "text": "def delete_user_data_by_id(chat_id: int) -> str:" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 56, + "startColumn": 1, + "charOffset": 2167, + "charLength": 161, + "snippet": { + "text": " print(f\"Error updating user balance for {tgusr}: {e}\")\r\n\r\ndef delete_user_data_by_id(chat_id: int) -> str:\r\n try:\r\n chat_id_str = str(chat_id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "46026bfdae5dc9ff7f450940697a985c1b403ceb1fd37bee8b81f4b1a3dc6312" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (240 > 120 characters)", + "markdown": "PEP 8: E501 line too long (240 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 175, + "startColumn": 84, + "charOffset": 7639, + "charLength": 155, + "snippet": { + "text": "'https://docs.google.com/spreadsheets/d/e/2PACX-1vQFzN5HRvQhS5j4kDcv9wWH3uucCqp1AFmu2ErZYikmmJSshj1f16v7ry013vde0y6OYVWeSsVtgaKT/pubhtml?gid=0&single=true'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 173, + "startColumn": 1, + "charOffset": 7491, + "charLength": 386, + "snippet": { + "text": "#rating buttons\r\nikbmrating = InlineKeyboardMarkup(row_width=1)\r\nibrating = InlineKeyboardButton(text=\"📊Полный рейтинг\", web_app = WebAppInfo(url ='https://docs.google.com/spreadsheets/d/e/2PACX-1vQFzN5HRvQhS5j4kDcv9wWH3uucCqp1AFmu2ErZYikmmJSshj1f16v7ry013vde0y6OYVWeSsVtgaKT/pubhtml?gid=0&single=true') )\r\nikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "462997f57d57dd67e0bd3699dd260b90d0fb291ffb099fbf08258b9034bd1bf4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1119, + "startColumn": 42, + "charOffset": 50290, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1117, + "startColumn": 1, + "charOffset": 50162, + "charLength": 190, + "snippet": { + "text": " await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n counter -= 1\r\n await state.update_data(counter = counter)\r\n else:\r\n await AdminPanel.taskmenu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "47a8216af44312a6e4567dafa946cd8ca851d6df0e34cfd4bbc6f8179497a11a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1581, + "startColumn": 81, + "charOffset": 72303, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1579, + "startColumn": 1, + "charOffset": 72121, + "charLength": 299, + "snippet": { + "text": " f\"⏱{date} \\n\" \\\r\n f'------------------------------'\r\n await bot.send_message(chat_id, events_message,disable_web_page_preview=True,parse_mode=types.ParseMode.MARKDOWN)\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(chat_id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "47c2b2a08334c9b531c12604c2fa1f0edc4182e62eb24c27224d6ed2853a7799" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1886, + "startColumn": 27, + "charOffset": 85469, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1884, + "startColumn": 1, + "charOffset": 85386, + "charLength": 206, + "snippet": { + "text": "\r\n# ВНИМАНИЕ! Данный handler ловит людей без состояния!\r\n@dp.message_handler(state= None)\r\nasync def handle_The_Last_Frontier(message: types.Message, state: FSMContext):\r\n sost = await state.get_state()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "492096dbaed0c98b45f17fa964a9864aa7cdd0ba5ee7259add68d3eea557bfd6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1058, + "startColumn": 35, + "charOffset": 47152, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1056, + "startColumn": 1, + "charOffset": 47069, + "charLength": 260, + "snippet": { + "text": " await AdminPanel.taskmenu_photowait.set()\r\n\r\n@dp.message_handler(content_types= types.ContentType.PHOTO, state = AdminPanel.taskmenu_photowait)\r\nasync def admin_taskmenu_photowait(message: types.Message , state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "49cf1b6d325fe547e666300a8b25e15e837dc6fbfb79099b2cae4cfb510d60de" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (305 > 120 characters)", + "markdown": "PEP 8: E501 line too long (305 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 81, + "startColumn": 24, + "charOffset": 5493, + "charLength": 282, + "snippet": { + "text": "\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 79, + "startColumn": 1, + "charOffset": 5423, + "charLength": 680, + "snippet": { + "text": " except:\n if user[\"gender\"]:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"\n else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "49e9e796dac3450f7e5e8bb36b10b23e7be6f92904d8d7fe7beba82c2a8091ce" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1259, + "startColumn": 1, + "charOffset": 56758, + "charLength": 121, + "snippet": { + "text": "#----------------------------------------------------------------------------------------------------------------------- " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1257, + "startColumn": 1, + "charOffset": 56611, + "charLength": 273, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Кнопкни главного меню\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4a866d63e3b330615bc9a73f4ed664a28329de1b40e2430c1728a30056ff7742" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1010, + "startColumn": 105, + "charOffset": 45035, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1008, + "startColumn": 1, + "charOffset": 44865, + "charLength": 248, + "snippet": { + "text": " user.user_state = str(AdminPanel.taskmenu_collection_list)\r\n\r\n promos = supabase.table('TaskCollection').select('name', 'url').filter('name', 'gt', 0).order('name',desc=True).execute()\r\n\r\n promo_text = \"📝 Действующие формы опросов:\\n\\n\"\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4ade87e375230555ecb2197aaa63c8272bb0f9da1d1fc7a2bcde109eaacfaba0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 919, + "startColumn": 3, + "charOffset": 40902, + "charLength": 12, + "snippet": { + "text": "event_makers" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 917, + "startColumn": 1, + "charOffset": 40872, + "charLength": 132, + "snippet": { + "text": " roles = json.load(f)\r\n\r\n event_makers = roles['event_makers']\r\n\r\n rules_text = \"📝 Пользователи с правами ивент-мейкера:\\n\\n\"\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4ae378b09e006a5f5b8553f40c54451bbcdc941477db629716ed5327fa8e452e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (129 > 120 characters)", + "markdown": "PEP 8: E501 line too long (129 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 826, + "startColumn": 118, + "charOffset": 37351, + "charLength": 10, + "snippet": { + "text": "promo_menu" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 824, + "startColumn": 1, + "charOffset": 37199, + "charLength": 313, + "snippet": { + "text": "\r\n# Хедлер для бека в меню админа\r\n@dp.message_handler(text=\"⬅️Админ меню\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end, AdminPanel.promo_menu])\r\nasync def admin_backtomenu(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4c6794c126b8bc752b61d5bb2b74ad7976718d553534c60fbb2a755ddee76ede" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 12, + "startColumn": 12, + "charOffset": 492, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 10, + "startColumn": 1, + "charOffset": 386, + "charLength": 235, + "snippet": { + "text": "rkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nkprofile= KeyboardButton(text=\"👤Профиль\")\r\nkliderboard= KeyboardButton(text=\"📊Рейтинг\")\r\nkschedule= KeyboardButton(text=\"📆Календарь событий\")\r\nkhelp= KeyboardButton(text=\"❓Помощь\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4d508e3b20de7aa6b9e49c798cf4164664ac2300298cc9be75d7e64fd7a17d40" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 46, + "startColumn": 1, + "charOffset": 1574, + "charLength": 41, + "snippet": { + "text": "async def generate_id_for_survey(length):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 44, + "startColumn": 1, + "charOffset": 1546, + "charLength": 204, + "snippet": { + "text": "\r\n# generate id for survey\r\nasync def generate_id_for_survey(length):\r\n characters = string.ascii_letters + string.digits\r\n random_string = ''.join(random.choice(characters) for _ in range(length))\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4da3c5163d87cf5fa46dc592c869ffd8b2eb8b8ce47b2d8081139bfd884c78b8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ','", + "markdown": "PEP 8: E203 whitespace before ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 13, + "startColumn": 35, + "charOffset": 273, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 11, + "startColumn": 1, + "charOffset": 208, + "charLength": 192, + "snippet": { + "text": "import string\r\nimport asyncio\r\nfrom aiogram.utils import executor , markdown\r\nfrom aiogram.utils.markdown import hlink, escape_md , code\r\nfrom aiogram.dispatcher import Dispatcher, FSMContext\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4df66aaf24b4430ec9f7d32bc4573075d818cb50812a57962fa658ed7ccb4088" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1629, + "startColumn": 119, + "charOffset": 74900, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1627, + "startColumn": 1, + "charOffset": 74669, + "charLength": 307, + "snippet": { + "text": "\r\n await bot.send_message(chat_id, \"Нажмите сюда чтобы вернуться\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(chat_id, \"Распишите здесь наиподробнейшим образом какой у вас возник вопрос или пожелание!\",reply_markup=cancel_button_for_user_help)\r\n\r\n user = users.get(chat_id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4df82ff84fcaba7b5f3aa822f1e47ba71a678171fb7289ca8089c4193a2dfd2c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1305, + "startColumn": 1, + "charOffset": 58989, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1303, + "startColumn": 1, + "charOffset": 58985, + "charLength": 281, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система редактирования профиля\r\n#----------------------------------------------------------------------------------------------------------------------- \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4e05a7051022d252e769fa64bfb3e61f28a67a16974034a2112ac862d80e7783" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (157 > 120 characters)", + "markdown": "PEP 8: E501 line too long (157 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 585, + "startColumn": 115, + "charOffset": 26048, + "charLength": 12, + "snippet": { + "text": "new_fullname" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 583, + "startColumn": 1, + "charOffset": 25876, + "charLength": 349, + "snippet": { + "text": " if FIO[word][0].istitle():\r\n cnt += 1\r\n if new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO):\r\n data = await state.get_data()\r\n username = data.get(\"username\") # получаем сохраненный username из данных состояния\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4edda6ed3d5acb104f75868cdcd9b0961335a5effbc30a4966c66e8a8cc8fa46" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (128 > 120 characters)", + "markdown": "PEP 8: E501 line too long (128 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 445, + "startColumn": 112, + "charOffset": 19040, + "charLength": 15, + "snippet": { + "text": "change_user_end" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 443, + "startColumn": 1, + "charOffset": 18925, + "charLength": 239, + "snippet": { + "text": "\r\n\r\n@dp.message_handler(text=\"Получить информацию о пользователе\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_get_user_info(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4ede4c2f425057717d54ed90f8919e01202d31f1ea3c8505ae3c50102a245584" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1756, + "startColumn": 33, + "charOffset": 80475, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1754, + "startColumn": 1, + "charOffset": 80273, + "charLength": 318, + "snippet": { + "text": " task = supabase.table('TaskCollection').select('name','description','photo','url').execute().data[int(counter)]\r\n text = f\"{task['name']}\\n{task['description']}\"\r\n await state.update_data(name = task['name'])\r\n ikbmtasks = ReplyKeyboardMarkup(resize_keyboard=True)\r\n ibleft = KeyboardButton(text=\"⬅️\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4f211c1d36fba91ed9b0ff0b44f0dcb61221e49f8b47292128572f8ea11c6d17" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1661, + "startColumn": 1, + "charOffset": 76033, + "charLength": 136, + "snippet": { + "text": "@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1659, + "startColumn": 1, + "charOffset": 75988, + "charLength": 285, + "snippet": { + "text": " users.user_state=str(MenuStates.help)\r\n\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r\nasync def handle_help_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4f4d3dded3d1a1966974a077a035a3b2d29793114e9fb441faa7b36476f0fcd6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1306, + "startColumn": 1, + "charOffset": 59111, + "charLength": 31, + "snippet": { + "text": "#Система редактирования профиля" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1304, + "startColumn": 1, + "charOffset": 58987, + "charLength": 281, + "snippet": { + "text": "\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система редактирования профиля\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4f9d5bb1bd0158a6f998ba34be7c7bf437e82358bbb845ab07a6dd310b89d248" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1748, + "startColumn": 25, + "charOffset": 80015, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1746, + "startColumn": 1, + "charOffset": 79867, + "charLength": 287, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📝Задания\", state=MenuStates.tasks)\r\nasync def handle_tasks(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4fbc4472edadf6b93836d598f24e8a8e4dcced731490e857bcfed0e715c9f5f8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1226, + "startColumn": 1, + "charOffset": 55061, + "charLength": 62, + "snippet": { + "text": "@dp.message_handler(state=RegistrationStates.waiting_for_name)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1224, + "startColumn": 1, + "charOffset": 55038, + "charLength": 184, + "snippet": { + "text": " users.set(user)\r\n\r\n@dp.message_handler(state=RegistrationStates.waiting_for_name)\r\nasync def handle_name(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "507776fd19da4ed0ecb7f61ab36d5d0d9cc3f81d5105cdb6f46f4c68703b044f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 841, + "startColumn": 54, + "charOffset": 38059, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 839, + "startColumn": 1, + "charOffset": 37928, + "charLength": 218, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"👨‍🚀Организаторы\", state=AdminPanel.admin_menu)\r\nasync def give_ruleskbm(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "50848b878945c4fa5cb0f20a0cccda15bb27227acc5bca48c1a655f91e6ae838" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (145 > 120 characters)", + "markdown": "PEP 8: E501 line too long (145 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 595, + "startColumn": 121, + "charOffset": 26647, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 593, + "startColumn": 1, + "charOffset": 26424, + "charLength": 327, + "snippet": { + "text": " # Отправляем сообщение об успешном обновлении\r\n new_code_fullname = code(new_fullname)\r\n await message.reply(f\"ФИО пользователя {username} успешно обновлено на {new_code_fullname}\", reply_markup=admue, parse_mode='MarkdownV2')\r\n await state.finish()\r\n await AdminPanel.change_user_end.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "51481a8df4de889842d25161954c165d9753d6a4cd49efdba85c172d4adf42d1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1744, + "startColumn": 1, + "charOffset": 79727, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1742, + "startColumn": 1, + "charOffset": 79704, + "charLength": 284, + "snippet": { + "text": " users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система заданий\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5159a45e216cfa9437cda4d6d4e8d6d18060251d751fd6524a9f371b7868a680" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1703, + "startColumn": 25, + "charOffset": 77985, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1701, + "startColumn": 1, + "charOffset": 77913, + "charLength": 221, + "snippet": { + "text": " user.user_state = str(AdminPanel.ticket)\r\n\r\n@dp.message_handler(text = \"Удалить обращение\", state=AdminPanel.ticket)\r\nasync def delete_ticket(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "52071f8334d4b3248ae2f6c0f4ba852a8b19ef8e8990daaacb39c31115796f7e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 50, + "startColumn": 1, + "charOffset": 1638, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 48, + "startColumn": 1, + "charOffset": 1634, + "charLength": 314, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Все состояния в которых может пребывать пользователь/админ бота\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "52e1656eee3086868b42f64d4d914c402ac9749d69eb996618af53acd96e1dbf" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1203, + "startColumn": 1, + "charOffset": 54060, + "charLength": 64, + "snippet": { + "text": "@dp.message_handler(state=RegistrationStates.waiting_for_gender)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1201, + "startColumn": 1, + "charOffset": 53976, + "charLength": 253, + "snippet": { + "text": " await message.reply(\"Введите ваш пол (Male/Female):\", reply_markup=ikbg)\r\n\r\n@dp.message_handler(state=RegistrationStates.waiting_for_gender)\r\nasync def handle_gender(message: types.Message, state: FSMContext):\r\n gender = message.text.lower()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "530f8fdae24d8b935ee33f5f4fc741137f4ad8364d53fc79c5b8da545159aebd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 10, + "startColumn": 15, + "charOffset": 177, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 8, + "startColumn": 1, + "charOffset": 150, + "charLength": 61, + "snippet": { + "text": " ...\r\n \r\n def set(self,user : User) -> None:\r\n ...\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "533d7269218648e46771216f089f834e926f22823cb19f23bb35adfc2858d760" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 355, + "startColumn": 56, + "charOffset": 14327, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 353, + "startColumn": 1, + "charOffset": 14204, + "charLength": 224, + "snippet": { + "text": "\r\n@dp.message_handler(text = \"⬅️Меню\", state=EventMakerPanel.menu)\r\nasync def back_from_event(message: types.Message, state:FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "535c02475c792204d0cf4a4f894b360b3ad99d777d28886f8df9c9b4ab49fe0b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 10, + "startColumn": 48, + "charOffset": 255, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 8, + "startColumn": 1, + "charOffset": 155, + "charLength": 189, + "snippet": { + "text": "class SupabaseUserRepository(UserRepository):\r\n \r\n def __init__(self,client:Client, table_name:str = 'UsersData'):\r\n self.client = client\r\n self.table_name = table_name\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "53cce867bf58839b1768d3e96c43c9f4aa9ded85ed792ba19a38bded42ba6a8f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1886, + "startColumn": 1, + "charOffset": 85443, + "charLength": 32, + "snippet": { + "text": "@dp.message_handler(state= None)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1884, + "startColumn": 1, + "charOffset": 85386, + "charLength": 206, + "snippet": { + "text": "\r\n# ВНИМАНИЕ! Данный handler ловит людей без состояния!\r\n@dp.message_handler(state= None)\r\nasync def handle_The_Last_Frontier(message: types.Message, state: FSMContext):\r\n sost = await state.get_state()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "54003c8e31667f548aafb7c98bf87ed748f23e343724a33d0c314a45998ea93d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 54, + "startColumn": 24, + "charOffset": 2141, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 52, + "startColumn": 1, + "charOffset": 2058, + "charLength": 137, + "snippet": { + "text": " age=age,\r\n balance=balance,\r\n tgusr = tgusr\r\n )\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "542939126f1a4749b8fc75f787500645f6c4a37944d99fd683da1bdae6bf24ff" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 369, + "startColumn": 80, + "charOffset": 14981, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 367, + "startColumn": 1, + "charOffset": 14860, + "charLength": 400, + "snippet": { + "text": "\r\n# Хендлер отмены действия через кнопку\r\n@dp.callback_query_handler(text=\"cancel\", state=[AdminPanel.change_user_balance,AdminPanel.change_user_fullname,AdminPanel.change_user_agestart,AdminPanel.get_info_about_user])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню админ-панели.\", reply_markup=admrkbm)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "547296e9885846a6718a4fa7605d7f0d83ecd050029a73fdbc749e9ede78482a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 59, + "startColumn": 1, + "charOffset": 2343, + "charLength": 18, + "snippet": { + "text": "#usermaker buttons" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 57, + "startColumn": 1, + "charOffset": 2310, + "charLength": 166, + "snippet": { + "text": "confirmbutton.row(backbutton)\r\n\r\n#usermaker buttons\r\nusermakerkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nusmkbm_task = KeyboardButton(text=\"📝Создать задание\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "54f61e56cf2b14b15f15a0c3d7ce9c307b4239064d398266ddc4e085004d9836" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 64, + "startColumn": 117, + "charOffset": 4191, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 62, + "startColumn": 1, + "charOffset": 3979, + "charLength": 283, + "snippet": { + "text": " sh: Spreadsheet = gc.open_by_url(SPREADSHEET_URL)\n worksheet = sh.worksheet(\"📊Рейтинг\")\n response = supabase.table('UsersData').select('chat_id','full_name', 'balance', 'gender' ).order('balance', desc = True).execute()\n users_data = response.data\n worksheet.clear()" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "55315cc19dcac740869314f546ec8777c86111b190dfea186117056eda7e154c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (121 > 120 characters)", + "markdown": "PEP 8: E501 line too long (121 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1877, + "startColumn": 1, + "charOffset": 85004, + "charLength": 121, + "snippet": { + "text": "#------------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1875, + "startColumn": 1, + "charOffset": 84826, + "charLength": 331, + "snippet": { + "text": "#------------------------------------------------------------------------------------------------------------------------\r\n#Система отлова людей без state и обработчик стикеров\r\n#------------------------------------------------------------------------------------------------------------------------\r\n\r\n# Ответ на отправку стикера\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5594d5dafc8f9cee27114d0fc84d2a18858c1f24ad759ead726b7fe36a60ad08" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 770, + "startColumn": 46, + "charOffset": 34803, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 768, + "startColumn": 1, + "charOffset": 34706, + "charLength": 297, + "snippet": { + "text": " user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text ='Добавить промокод',state=AdminPanel.promo_menu)\r\nasync def get_usages(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите количество использований:\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "55c71e8288cc4a1a58d3b06a05005bef4f7c8dd7eb23801cbd370b716bd9142c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 72, + "startColumn": 91, + "charOffset": 2817, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 70, + "startColumn": 1, + "charOffset": 2670, + "charLength": 243, + "snippet": { + "text": "def get_user_info_by_id(chat_id:int ) -> str:\r\n try:\r\n response = supabase.table('UsersData').select('full_name','gender','age','balance','tgusr').eq('chat_id', chat_id).execute()\r\n return response\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5632640b7cccc7b90bd1b4a6b5b71c8570cccf326fb6c84d67e28bb57f40e89c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 183, + "startColumn": 63, + "charOffset": 8290, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 181, + "startColumn": 1, + "charOffset": 8162, + "charLength": 274, + "snippet": { + "text": "#help buttons\r\nhelpinlinereg = InlineKeyboardMarkup(row_width=1)\r\nhelpinlinenaming = InlineKeyboardButton(text=\"Помощь\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/README.md'))\r\nhelpinlinereg.add(helpinlinenaming)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "56de7a3cf8275592d86019e2b3ee63b71c53be13453ee48ba0673c4a69e97cfb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (134 > 120 characters)", + "markdown": "PEP 8: E501 line too long (134 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 64, + "startColumn": 120, + "charOffset": 4194, + "charLength": 4, + "snippet": { + "text": "True" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 62, + "startColumn": 1, + "charOffset": 3979, + "charLength": 283, + "snippet": { + "text": " sh: Spreadsheet = gc.open_by_url(SPREADSHEET_URL)\n worksheet = sh.worksheet(\"📊Рейтинг\")\n response = supabase.table('UsersData').select('chat_id','full_name', 'balance', 'gender' ).order('balance', desc = True).execute()\n users_data = response.data\n worksheet.clear()" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "575506513a69557cd84dd02a463453241b10c371f322547b96492439af5c1e4a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E303 too many blank lines (2)", + "markdown": "PEP 8: E303 too many blank lines (2)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1822, + "startColumn": 5, + "charOffset": 83398, + "charLength": 22, + "snippet": { + "text": "user_answers_dict = {}" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1820, + "startColumn": 1, + "charOffset": 83390, + "charLength": 71, + "snippet": { + "text": "\r\n\r\n user_answers_dict = {}\r\n\r\n for question_id in user_answers:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5789712a2b4d90a3da683ee975051cd618826ea914f5dadc78b5bd4ba0d99da3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1392, + "startColumn": 3, + "charOffset": 63474, + "charLength": 7, + "snippet": { + "text": "qr_code" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1390, + "startColumn": 1, + "charOffset": 63413, + "charLength": 115, + "snippet": { + "text": " photo_image = PIL.Image.open(io.BytesIO(photo_bytes))\r\n\r\n qr_code = pyzbar.decode(photo_image)\r\n\r\n if qr_code:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "57e9775b153a3388b44fc812454eb8b78457ad2346bc906ce2f727dfe14ec7d2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 143, + "startColumn": 52, + "charOffset": 6097, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 141, + "startColumn": 1, + "charOffset": 5981, + "charLength": 164, + "snippet": { + "text": "admpromo.row(addpromo_addqr)\r\nadmpromo.row(admpromo_checkpromo)\r\nadmpromo.row(admpromo_addpromo,admpromo_namingpromo,admpromo_delpromo)\r\nadmpromo.row(admue_back)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "585b01c7ff7c6408bb09a37405c8e28bb0c1658354dc12c225ec9bb586e1e3a7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 32, + "startColumn": 99, + "charOffset": 1105, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 30, + "startColumn": 1, + "charOffset": 924, + "charLength": 243, + "snippet": { + "text": "async def show_user_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', ).order('balance', desc = True).limit(4).execute()\r\n\r\n # Формируем текст рейтинга\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "58bfc43313260fff5fa3f59b24eac9ee92ef66d1ca531c1a1ea483118104f4a2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 77, + "startColumn": 1, + "charOffset": 3007, + "charLength": 14, + "snippet": { + "text": "#admin buttons" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 75, + "startColumn": 1, + "charOffset": 2976, + "charLength": 166, + "snippet": { + "text": "eventtasks.row(admtaskback)\r\n\r\n#admin buttons\r\nadmrkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmk_user_editor = KeyboardButton(text=\"⚙️Изменить пользователя\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "59c4b254697c36ba3886734138e6e58c0c4b8979ffe89bbceb47dc3aee13c0ab" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 87, + "startColumn": 30, + "charOffset": 3515, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 85, + "startColumn": 1, + "charOffset": 3400, + "charLength": 206, + "snippet": { + "text": "admk_rules = KeyboardButton(text=\"👨‍🚀Организаторы\")\r\nadmrkbm.row(admk_user_editor)\r\nadmrkbm.row(admk_job_creation,admk_promo)\r\nadmrkbm.row(admk_liderboard, admk_ticket)\r\nadmrkbm.row(admk_menu,admk_rules)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "59f7cc3b35e8d80325881457a2bd2b788ccaa0e0c6618780674b31d24de2b0b2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (136 > 120 characters)", + "markdown": "PEP 8: E501 line too long (136 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 450, + "startColumn": 115, + "charOffset": 19370, + "charLength": 19, + "snippet": { + "text": "ReplyKeyboardRemove" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 448, + "startColumn": 1, + "charOffset": 19165, + "charLength": 403, + "snippet": { + "text": " user = users.get(chat_id) \r\n user.user_state = str(AdminPanel.get_info_about_user)\r\n await message.reply(\"Введите @username пользователя о котором хотите получить информацию\", reply_markup=types.ReplyKeyboardRemove())\r\n await message.reply(\"Для отмены действия, нажмите кнопку отмена\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n await AdminPanel.get_info_about_user.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5a25e78083324333a7951e764e5a1c5becdc174d9e438ebf63bd5ca1e95cce3c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1894, + "startColumn": 1, + "charOffset": 85806, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1892, + "startColumn": 1, + "charOffset": 85653, + "charLength": 399, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система для Telegram Web App\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=[MenuStates.promocode,MenuStates.promocodestart])\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5aade0c93f19d1566d2a4e70bad761b32cd8a579a70a369b3c4047c63827a06c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "codegen.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 43, + "startColumn": 1, + "charOffset": 944, + "charLength": 46, + "snippet": { + "text": "def generate_naming_promo(name, usages, cost):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 41, + "startColumn": 1, + "charOffset": 925, + "charLength": 87, + "snippet": { + "text": " return code\r\n\r\ndef generate_naming_promo(name, usages, cost):\r\n\r\n if cost == 0:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5b1aad008f883c8ebbfdb379c2f2fddb3ce4a1a66abc678031118c6a5d617223" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (154 > 120 characters)", + "markdown": "PEP 8: E501 line too long (154 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 38, + "startColumn": 113, + "charOffset": 1460, + "charLength": 12, + "snippet": { + "text": "'user_state'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 36, + "startColumn": 1, + "charOffset": 1292, + "charLength": 278, + "snippet": { + "text": " except ValueError:\r\n tgusr:str = id\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','chat_id','user_state').eq('tgusr', tgusr).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5b4d8d559445b7c13c684f70dd6bcb5c21c3d64f61257f7f8d2a5aaaf9b57c0e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1753, + "startColumn": 38, + "charOffset": 80262, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1751, + "startColumn": 1, + "charOffset": 80155, + "charLength": 287, + "snippet": { + "text": " data = await state.get_data()\r\n counter = data.get('counter')\r\n await state.update_data(counter = counter)\r\n task = supabase.table('TaskCollection').select('name','description','photo','url').execute().data[int(counter)]\r\n text = f\"{task['name']}\\n{task['description']}\"\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5b6bbd75cd678465a2d49d841f030b66decace795a8317deca8a987b19b2e266" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 971, + "startColumn": 1, + "charOffset": 43128, + "charLength": 74, + "snippet": { + "text": "@dp.message_handler(text=\"📝Создать задание\", state=AdminPanel.admin_menu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 969, + "startColumn": 1, + "charOffset": 43004, + "charLength": 350, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text=\"📝Создать задание\", state=AdminPanel.admin_menu)\r\nasync def admin_task_maker(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вошли в редактор заданий\", reply_markup=admtasks)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5b7c887aaadc6fac9ab4314e7c6acabb254db38e3c5956f7c404a8a53222dd97" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 16, + "startColumn": 16, + "charOffset": 276, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 14, + "startColumn": 1, + "charOffset": 250, + "charLength": 61, + "snippet": { + "text": " ...\r\n\r\n def list(self,**kwargs) -> List[User]: \r\n ..." + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5b99f44540c8cb7c01a8086faee19a3648506d7de508025661b6006119e3df76" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 440, + "startColumn": 1, + "charOffset": 18634, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 438, + "startColumn": 1, + "charOffset": 18630, + "charLength": 294, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система получения информации о пользователе\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5bc361a6e59a80305cb3ba3ad1798f89202141900de3a996b7a9647f10b76fdd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (125 > 120 characters)", + "markdown": "PEP 8: E501 line too long (125 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1010, + "startColumn": 117, + "charOffset": 45047, + "charLength": 7, + "snippet": { + "text": "execute" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1008, + "startColumn": 1, + "charOffset": 44865, + "charLength": 248, + "snippet": { + "text": " user.user_state = str(AdminPanel.taskmenu_collection_list)\r\n\r\n promos = supabase.table('TaskCollection').select('name', 'url').filter('name', 'gt', 0).order('name',desc=True).execute()\r\n\r\n promo_text = \"📝 Действующие формы опросов:\\n\\n\"\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5bf39690c0b36f2291582b6d3a77cc3e8567529b84fe9181948329b7e0af6713" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (320 > 120 characters)", + "markdown": "PEP 8: E501 line too long (320 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 89, + "startColumn": 13, + "charOffset": 6241, + "charLength": 308, + "snippet": { + "text": "#insert_image = '=IMAGE(\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\")'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 87, + "startColumn": 1, + "charOffset": 6155, + "charLength": 512, + "snippet": { + "text": " if user[\"gender\"]:\n insert_image = f'=IMAGE(\"{link}\")'\n #insert_image = '=IMAGE(\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\")'\n google_update_list.append([\"=СТРОКА()-1\",insert_image, user['full_name'], user['balance']])\n else:" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5bf643b6f2cf44ddef335e0017695157a20533f770da5678aa8688978b37df86" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (136 > 120 characters)", + "markdown": "PEP 8: E501 line too long (136 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1661, + "startColumn": 113, + "charOffset": 76145, + "charLength": 10, + "snippet": { + "text": "MenuStates" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1659, + "startColumn": 1, + "charOffset": 75988, + "charLength": 285, + "snippet": { + "text": " users.user_state=str(MenuStates.help)\r\n\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r\nasync def handle_help_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5c26e4757977df738b8e3b1b87e689dca393a1b85f9106464f4fd92d20489ff1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 16, + "startColumn": 106, + "charOffset": 436, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 14, + "startColumn": 1, + "charOffset": 253, + "charLength": 245, + "snippet": { + "text": "async def show_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', 'tgusr').order('balance', desc = True).limit(4).execute()\r\n\r\n # Формируем текст рейтинга\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5d1cab3fd6695c10f0f20bdbf8dbed6222915ffb45f81db179187470e32977c2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 89, + "startColumn": 13, + "charOffset": 6241, + "charLength": 308, + "snippet": { + "text": "#insert_image = '=IMAGE(\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\")'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 87, + "startColumn": 1, + "charOffset": 6155, + "charLength": 512, + "snippet": { + "text": " if user[\"gender\"]:\n insert_image = f'=IMAGE(\"{link}\")'\n #insert_image = '=IMAGE(\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\")'\n google_update_list.append([\"=СТРОКА()-1\",insert_image, user['full_name'], user['balance']])\n else:" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5d4d24f199bfa14618967ae7a5a18186fd51c3f35e2edddee63f99f411e91428" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (309 > 120 characters)", + "markdown": "PEP 8: E501 line too long (309 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 48, + "startColumn": 24, + "charOffset": 2910, + "charLength": 286, + "snippet": { + "text": "\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 46, + "startColumn": 1, + "charOffset": 2563, + "charLength": 683, + "snippet": { + "text": " link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"\n else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"\n if user['balance'] < 1:\n break" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5d6c18cad3065e2fa5859601010a3ca8b491051dfe31b75142cfcdef67687aec" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 763, + "startColumn": 28, + "charOffset": 34431, + "charLength": 1, + "snippet": { + "text": "+" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 761, + "startColumn": 1, + "charOffset": 34344, + "charLength": 283, + "snippet": { + "text": " usages_code = code(usages)\r\n code_cost = code(cost)\r\n texting = (f'Промокод '+ code(f\"{codee}\") + f' с {usages_code} использованиями и ценой {code_cost}🔘 создан')\r\n await message.reply(texting, reply_markup=admpromo, parse_mode= \"MarkdownV2\")\r\n await state.finish()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5dfd4ea0d236f285c9e691dfe24896ccdd83573de92bf64fe8a046efddb3fa06" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (128 > 120 characters)", + "markdown": "PEP 8: E501 line too long (128 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1450, + "startColumn": 117, + "charOffset": 65717, + "charLength": 12, + "snippet": { + "text": "'MarkdownV2'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1448, + "startColumn": 1, + "charOffset": 65485, + "charLength": 274, + "snippet": { + "text": " supabase.table('UsedPromocode').insert({'id' : expression,'promo': poro, 'chat_id': str(chat_id)}).execute()\r\n\r\n await message.reply(f\"Ваш баланс пополнен на {code(promocode['cost'])}🔘\\\\!\", reply_markup=promo_kb, parse_mode='MarkdownV2')\r\n\r\n await state.finish()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5eba4dc46cb976514c668f31a5f4b95ea78afd800118301c03191a6b54ce140a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 927, + "startColumn": 7, + "charOffset": 41213, + "charLength": 10, + "snippet": { + "text": "rules_text" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 925, + "startColumn": 1, + "charOffset": 41138, + "charLength": 154, + "snippet": { + "text": " if user_data.data:\r\n username = user_data.data[0]['tgusr']\r\n rules_text += f\"{username} - {chat_id}\\n\"\r\n\r\n await message.reply(rules_text)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5f592b19d08e2903169f15bea16f7524433bb0010889b6ce24d623a44ba8be56" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1762, + "startColumn": 63, + "charOffset": 80768, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1760, + "startColumn": 1, + "charOffset": 80633, + "charLength": 224, + "snippet": { + "text": " ibback = KeyboardButton(text=\"⬅️Меню\")\r\n print(f\"{task['url']}\")\r\n ibgo = KeyboardButton(text=\"✅\", web_app = WebAppInfo(url = f'{task[\"url\"]}'))\r\n ikbmtasks.row(ibleft, ibgo, ibright)\r\n ikbmtasks.row(ibback)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5fa1211f5d0776ccaa97b8ca35e345d12e5827a277c503cc33718515434ef3e5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1003, + "startColumn": 1, + "charOffset": 44605, + "charLength": 71, + "snippet": { + "text": "@dp.message_handler(text='Список коллекций', state=AdminPanel.taskmenu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1001, + "startColumn": 1, + "charOffset": 44555, + "charLength": 239, + "snippet": { + "text": " user.user_state = str(AdminPanel.taskmenu)\r\n\r\n@dp.message_handler(text='Список коллекций', state=AdminPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await AdminPanel.taskmenu_collection_list.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "60014c963e9dd2b659290968084f9fc3fdd7220bc2fceb01a6e0317576fa5022" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 114, + "startColumn": 81, + "charOffset": 4639, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 112, + "startColumn": 1, + "charOffset": 4445, + "charLength": 352, + "snippet": { + "text": "userhelp_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\nuserhelp_ticket = KeyboardButton(text=\"📨Создать заявку\")\r\nguide = KeyboardButton(text=\"?📑Руководство пользователя\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/User%20guide/README.md'))\r\nuserhelp.row(userhelp_ticket)\r\nuserhelp.row(guide)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6023d4cd86938eec8eaa405fae4308b5bed4a4be2be91b417e80941e7a4c7d47" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E303 too many blank lines (3)", + "markdown": "PEP 8: E303 too many blank lines (3)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1860, + "startColumn": 1, + "charOffset": 84476, + "charLength": 26, + "snippet": { + "text": "# код подсчета результатов" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1858, + "startColumn": 1, + "charOffset": 84472, + "charLength": 35, + "snippet": { + "text": "\r\n\r\n# код подсчета результатов\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "607ddfe249344cc39829d1083d1c768b6811c1008097c7b47f03e2830d6471a5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 950, + "startColumn": 1, + "charOffset": 42103, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 948, + "startColumn": 1, + "charOffset": 42099, + "charLength": 273, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система админ рейтинга\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "60e6275bfc5142d5d24781e2167f9b90e17c1480cad4036b41be90daa315b069" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1457, + "startColumn": 1, + "charOffset": 65884, + "charLength": 70, + "snippet": { + "text": "@dp.message_handler(text=\"⬅️Назад в меню\", state=MenuStates.promocode)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1455, + "startColumn": 1, + "charOffset": 65861, + "charLength": 218, + "snippet": { + "text": " users.set(user)\r\n\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=MenuStates.promocode)\r\nasync def back_from_promo_menu(message: types.Message, state: FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "613c8c01a0d47106efa7fcb8ee8d8df0f186ab175b72b2a1f76ffcfe82bd0548" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 60, + "startColumn": 1, + "charOffset": 3862, + "charLength": 20, + "snippet": { + "text": "def rating_update():" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 58, + "startColumn": 1, + "charOffset": 3830, + "charLength": 202, + "snippet": { + "text": " worksheet.sort((4, 'des'))\n\ndef rating_update():\n gc: Client = gspread.service_account(\"./GoogleSheets/boilerpoint-393111-68b01f6645e3.json\")\n sh: Spreadsheet = gc.open_by_url(SPREADSHEET_URL)" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "61575056ca5731d3d6cef8a338758135653feefadb159c13a2f7646671464046" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 984, + "startColumn": 1, + "charOffset": 43823, + "charLength": 71, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.taskmenu_collection_delete_select)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 982, + "startColumn": 1, + "charOffset": 43759, + "charLength": 239, + "snippet": { + "text": " await AdminPanel.taskmenu_collection_delete_select.set()\r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_collection_delete_select)\r\nasync def delete_survey_handler(message: types.Message, state: FSMContext):\r\n codee = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "61907c36bdf4ef7ff0116d5cea28b66c99648a6a4b7f888bfd24c7d978c19439" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 89, + "startColumn": 22, + "charOffset": 3593, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 87, + "startColumn": 1, + "charOffset": 3486, + "charLength": 139, + "snippet": { + "text": "admrkbm.row(admk_job_creation,admk_promo)\r\nadmrkbm.row(admk_liderboard, admk_ticket)\r\nadmrkbm.row(admk_menu,admk_rules)\r\n\r\n#rules keyboard\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "641d186745ac9c0f27224282098154617f609bc630f636138550829fb7380a09" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 734, + "startColumn": 1, + "charOffset": 33042, + "charLength": 70, + "snippet": { + "text": "@dp.message_handler(text='Нэйминг-промо', state=AdminPanel.promo_menu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 732, + "startColumn": 1, + "charOffset": 32990, + "charLength": 287, + "snippet": { + "text": " user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text='Нэйминг-промо', state=AdminPanel.promo_menu)\r\nasync def get_naming_promo(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите имя промокода\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "64ceb4acd91bedc5f51cb4bd5ef625874e354f74615374aa2defb25781662dfd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 53, + "startColumn": 119, + "charOffset": 3439, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 51, + "startColumn": 1, + "charOffset": 3247, + "charLength": 317, + "snippet": { + "text": " if user[\"gender\"]:\n insert_image = f'=IMAGE(\"{link}\")'\n google_update_list.append([\"=СТРОКА()-1\", insert_image, user['full_name'], user['balance'],user['chat_id'],f'=ГИПЕРССЫЛКА(\"t.me/{user[\"tgusr\"][1:]}\";\"{user[\"tgusr\"]}\")'])\n else:\n insert_image = f'=IMAGE(\"{link}\")'" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "651bd240d3f7cc2752e3242d55d51f68fe7d7eab1bda177bdcec4d7a217c1f5f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1463, + "startColumn": 1, + "charOffset": 66179, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1461, + "startColumn": 1, + "charOffset": 66175, + "charLength": 282, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система рейтинга(Google sheets)\r\n#----------------------------------------------------------------------------------------------------------------------- \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "655304e76c420206a565181138f7dc3cc660e9803643f7298391316afea3fe4e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 880, + "startColumn": 1, + "charOffset": 39533, + "charLength": 65, + "snippet": { + "text": "@dp.message_handler(text=\"Забрать права\", state=AdminPanel.rules)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 878, + "startColumn": 1, + "charOffset": 39497, + "charLength": 217, + "snippet": { + "text": " await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text=\"Забрать права\", state=AdminPanel.rules)\r\nasync def del_from_eventers(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules_delmaker.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6566ac741df599cd023c539841a2d6f5e6df451d3d79d375086f0aea2b99d131" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 17, + "startColumn": 18, + "charOffset": 730, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 15, + "startColumn": 1, + "charOffset": 622, + "charLength": 164, + "snippet": { + "text": "kexercise= KeyboardButton(text=\"📝Задания\")\r\nkpromo = KeyboardButton(text=\"🗝️Промокоды\")\r\nrkbm.row(kprofile,kliderboard)\r\nrkbm.add(kexercise)\r\nrkbm.add(kschedule)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "65fb4ad2208293e3977d44569032c1ce5c1bbda068ced140079a536174b8c62c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 28, + "startColumn": 1, + "charOffset": 956, + "charLength": 33, + "snippet": { + "text": "#from Database.DataUsers import *" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 26, + "startColumn": 1, + "charOffset": 845, + "charLength": 250, + "snippet": { + "text": "from GoogleSheets.Google_sheets import rating_update_start_thread\r\nfrom supabase import Client, create_client\r\n#from Database.DataUsers import *\r\nfrom codegen import *\r\nfrom funcs import show_rating, show_user_rating, is_dirt, generate_id_for_survey\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "66244791a7b45b583021ed19de640b6571f88770e4232eed79221c90528d1774" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 53, + "startColumn": 103, + "charOffset": 3423, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 51, + "startColumn": 1, + "charOffset": 3247, + "charLength": 317, + "snippet": { + "text": " if user[\"gender\"]:\n insert_image = f'=IMAGE(\"{link}\")'\n google_update_list.append([\"=СТРОКА()-1\", insert_image, user['full_name'], user['balance'],user['chat_id'],f'=ГИПЕРССЫЛКА(\"t.me/{user[\"tgusr\"][1:]}\";\"{user[\"tgusr\"]}\")'])\n else:\n insert_image = f'=IMAGE(\"{link}\")'" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "66bcca317a15f2f5bc8d7cc6249827723f64f88f10477eedc0a0115d33a48fa2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 930, + "startColumn": 3, + "charOffset": 41295, + "charLength": 5, + "snippet": { + "text": "await" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 928, + "startColumn": 1, + "charOffset": 41256, + "charLength": 94, + "snippet": { + "text": "\r\n await message.reply(rules_text)\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "670b1f8ef93760f75a148a945e3d570d384f1482efdad85518c263b28259cfba" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 369, + "startColumn": 144, + "charOffset": 15045, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 367, + "startColumn": 1, + "charOffset": 14860, + "charLength": 400, + "snippet": { + "text": "\r\n# Хендлер отмены действия через кнопку\r\n@dp.callback_query_handler(text=\"cancel\", state=[AdminPanel.change_user_balance,AdminPanel.change_user_fullname,AdminPanel.change_user_agestart,AdminPanel.get_info_about_user])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню админ-панели.\", reply_markup=admrkbm)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "680d75c21060d85a0baab878c9d5ee6b585890bdd18548fd9b064bb4b5d95625" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 21, + "startColumn": 37, + "charOffset": 818, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 19, + "startColumn": 1, + "charOffset": 698, + "charLength": 208, + "snippet": { + "text": "url: str = os.environ.get(\"SUPABASE_URL\")\nkey: str = os.environ.get(\"SUPABASE_KEY\")\nsupabase: Client = create_client(url,key)\ntable_name = \"UsersData\"\nusers : UserRepository = SupabaseUserRepository(supabase)" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6942dce52b46cea6acb707a6904a74a4a5ffd08bfa5b7b092f39f219d1de9154" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 747, + "startColumn": 1, + "charOffset": 33697, + "charLength": 64, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.promo_addpromo_naming_cost)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 745, + "startColumn": 1, + "charOffset": 33640, + "charLength": 230, + "snippet": { + "text": " await AdminPanel.promo_addpromo_naming_cost.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming_cost)\r\nasync def get_naming_promo_cost(message: types.Message, state:FSMContext):\r\n usages = int(message.text)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "695800c35ff6abd223a8ed1465c636ae4b06c6d4183b3f77ebff4b10698e4baf" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1384, + "startColumn": 1, + "charOffset": 63145, + "charLength": 77, + "snippet": { + "text": "@dp.message_handler(content_types=['photo'], state=MenuStates.promocodestart)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1382, + "startColumn": 1, + "charOffset": 63100, + "charLength": 194, + "snippet": { + "text": " await MenuStates.promocodestart.set()\r\n\r\n@dp.message_handler(content_types=['photo'], state=MenuStates.promocodestart)\r\nasync def check_qr_code(message: types.Message, state: FSMContext):\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6ad08c3b14b0ecf06be4e94a4aa9c6037b65d72e835373e87fea3871ad6c2ab5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 67, + "startColumn": 20, + "charOffset": 2618, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 65, + "startColumn": 1, + "charOffset": 2515, + "charLength": 180, + "snippet": { + "text": " self.client.table(self.table_name).insert(user.dict()).execute()\r\n \r\n def delete(self,user : User) -> None:\r\n try:\r\n if self.get(user.chat_id):\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6ae4cf3a74e040634c8d112eba980bd0ded53244ac3b90c801ecd83adbd0ab68" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1748, + "startColumn": 1, + "charOffset": 79991, + "charLength": 63, + "snippet": { + "text": "@dp.message_handler(text = \"📝Задания\", state=MenuStates.tasks)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1746, + "startColumn": 1, + "charOffset": 79867, + "charLength": 287, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📝Задания\", state=MenuStates.tasks)\r\nasync def handle_tasks(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6b92719384e5e40b5a75da4413efff1fd46ca15da7b4c53daba4eef5f5a34994" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 363, + "startColumn": 1, + "charOffset": 14593, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 361, + "startColumn": 1, + "charOffset": 14589, + "charLength": 268, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Event maker panel\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6c10d4622b8a5d6c8f582e4891baf100bb480b64eb7bff748a8454770753ed81" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (131 > 120 characters)", + "markdown": "PEP 8: E501 line too long (131 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 717, + "startColumn": 121, + "charOffset": 32472, + "charLength": 1, + "snippet": { + "text": ")" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 715, + "startColumn": 1, + "charOffset": 32289, + "charLength": 247, + "snippet": { + "text": " user.user_state = str(AdminPanel.promo_check_promocode)\r\n\r\n promos = supabase.table('Promocode').select('promo', 'last', 'cost').filter('last', 'gt', 0).order('cost', desc=True).execute()\r\n\r\n promo_text = \"📝 Действующие промокоды:\\n\\n\"\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6c34fb7e725a22af1c1abc1ebe44099a9e97a58ff0a29bafa0cc235936f12759" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1593, + "startColumn": 240, + "charOffset": 73130, + "charLength": 10, + "snippet": { + "text": "parse_mode" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1591, + "startColumn": 1, + "charOffset": 72793, + "charLength": 439, + "snippet": { + "text": "async def handle_help(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, f\"Привет\\\\! Если у тебя есть какие\\\\-то проблемы или пожелания \\\\, то смелее нажимай на кнопку \" + f\"{code('📨Создать заявку')}\" + f\" и администратор с радостью тебе поможет\\\\! \", reply_markup=userhelp, parse_mode = 'MarkdownV2')\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.help)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6c8be8d17b03c9c5b2ef47f7447db7d8f32c76a03bc01450a092d5476a1f127e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 128, + "startColumn": 49, + "charOffset": 5393, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 126, + "startColumn": 1, + "charOffset": 5263, + "charLength": 215, + "snippet": { + "text": "admue_back = KeyboardButton(text=\"⬅️Админ меню\")\r\nadmue.row(admue_get_info_user)\r\nadmue.row(admue_fullname_editor,admue_age_editor,admue_balance_editor)\r\nadmue.row(admue_update_users_balance)\r\nadmue.row(admue_back)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6e96a8959c827c28d79c642ea5ce42cd1bfce74088a24d2f52dd4269e8518b4e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (144 > 120 characters)", + "markdown": "PEP 8: E501 line too long (144 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 54, + "startColumn": 34, + "charOffset": 2114, + "charLength": 110, + "snippet": { + "text": "\"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 52, + "startColumn": 1, + "charOffset": 2020, + "charLength": 289, + "snippet": { + "text": "\r\nconfirmbutton = ReplyKeyboardMarkup(resize_keyboard=True)\r\nconfbutton = KeyboardButton(text=\"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\")\r\nbackbutton = KeyboardButton(text=\"⬅️Назад в меню\")\r\nconfirmbutton.row(confbutton)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6f373fcf6ed799003b3e38ae415a81e4083c1c28817609853533e1e2a1134e9a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1892, + "startColumn": 1, + "charOffset": 85653, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1890, + "startColumn": 1, + "charOffset": 85610, + "charLength": 317, + "snippet": { + "text": " await start_command(message, state)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система для Telegram Web App\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6f4d03dfb52cbb052d9f7f32ffb7941be3501146f3116c57f1ca9aaa274a2493" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1123, + "startColumn": 34, + "charOffset": 50475, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1121, + "startColumn": 1, + "charOffset": 50312, + "charLength": 265, + "snippet": { + "text": " await AdminPanel.taskmenu.set()\r\n await bot.send_message(chat_id, \"Опрос успешно создан!\", reply_markup=admtasks)\r\n querydict = {\"surveyData\":querylist}\r\n querydict_dump: str = json.dumps(querydict)\r\n url = url + querydict_dump \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6fba55d3d49ed9bdea6c8e886c2289394e83a745e1a23cc38d5bd86084de0e52" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 70, + "startColumn": 73, + "charOffset": 2768, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 68, + "startColumn": 1, + "charOffset": 2642, + "charLength": 251, + "snippet": { + "text": " try:\r\n if self.get(user.chat_id):\r\n self.client.table(self.table_name).delete().eq('chat_id',user.chat_id).execute()\r\n except Exception as e:\r\n print(f\"Error delete user {user.chat_id} error : {e}\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6fde1b8cc3359a0e769e19506fb7425325a4223957d27a77a8c4a673b5780358" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 178, + "startColumn": 82, + "charOffset": 7959, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 176, + "startColumn": 1, + "charOffset": 7799, + "charLength": 362, + "snippet": { + "text": "ikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r\nibadminrating = InlineKeyboardButton(text=\"📊Админ Рейтинг\",web_app = WebAppInfo(url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vR__0ahX-O5SK3sS7OditV88sjG64duAF6mAW702CT3uM3Yj6z5mwsnxv-lL2vF9-H3YjlD0rtmg84N/pubhtml?gid=0&single=true'))\r\nikbmadminrating.add(ibadminrating)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6ffad004939f94dd4e8e4e36da5c9fb54d22aecc67342af24ed3ce8b25d40800" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 88, + "startColumn": 1, + "charOffset": 2826, + "charLength": 30, + "snippet": { + "text": "class AdminPanel(StatesGroup):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 86, + "startColumn": 1, + "charOffset": 2798, + "charLength": 112, + "snippet": { + "text": "\r\n# Состояния админ-панели\r\nclass AdminPanel(StatesGroup):\r\n admin_menu = State()\r\n change_user = State()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "715cb9c2a611cb205049f188db5dc1d05683d2034fe376019026133fcdb06ca2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1669, + "startColumn": 1, + "charOffset": 76556, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1667, + "startColumn": 1, + "charOffset": 76404, + "charLength": 349, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система тикетов для админов\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📨Обращения\", state = AdminPanel.admin_menu)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "71f119ca5b160a19f0a02426086e049a5aaeec38aea6a47db1f2ff075737b1c8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 32, + "startColumn": 101, + "charOffset": 1107, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 30, + "startColumn": 1, + "charOffset": 924, + "charLength": 243, + "snippet": { + "text": "async def show_user_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', ).order('balance', desc = True).limit(4).execute()\r\n\r\n # Формируем текст рейтинга\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "71f27c0704692bec0b9224c548781e5b67bfeb4bc21a7e03e2a03feb39c2e71a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1110, + "startColumn": 53, + "charOffset": 49792, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1108, + "startColumn": 1, + "charOffset": 49571, + "charLength": 371, + "snippet": { + "text": " name = data.get(\"name\") \r\n numberPoints.update({new_json_data[\"questionId\"]:new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints = numberPoints)\r\n await state.update_data(rightAnswers = rightAnswers)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "74267d0ec9bed9ba884314a6b68e3a69dce93ebe047cdc18b284a9085f3c249e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 969, + "startColumn": 1, + "charOffset": 43004, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 967, + "startColumn": 1, + "charOffset": 42863, + "charLength": 340, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Система заданий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text=\"📝Создать задание\", state=AdminPanel.admin_menu)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "74635c8fa40a181c9eb0bb36830573ad0e011ecfa38ad0eec1e40192dfc333f3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 16, + "startColumn": 108, + "charOffset": 438, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 14, + "startColumn": 1, + "charOffset": 253, + "charLength": 245, + "snippet": { + "text": "async def show_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', 'tgusr').order('balance', desc = True).limit(4).execute()\r\n\r\n # Формируем текст рейтинга\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "747b567528158ed692b9f1866360a482c0c325f8b8d00fa339ed66e9eda3e307" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 543, + "startColumn": 1, + "charOffset": 23754, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 541, + "startColumn": 1, + "charOffset": 23750, + "charLength": 290, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования ФИО пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "74ab3f1368fa0a75c5cb88a1a4c2f35192069bfc01f89becf4551f465edd0752" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1077, + "startColumn": 39, + "charOffset": 48079, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1075, + "startColumn": 1, + "charOffset": 47980, + "charLength": 231, + "snippet": { + "text": " counter = int(message.text)\r\n except ValueError:\r\n await bot.send_message(chat_id,\"Введенное значение должно быть числом > 0\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n if counter <= 0:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "751fa6e56aaeb11ce6975972a5cc87729c96303edf1e5c633fd065bcfb717253" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 923, + "startColumn": 3, + "charOffset": 41009, + "charLength": 3, + "snippet": { + "text": "for" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 921, + "startColumn": 1, + "charOffset": 40942, + "charLength": 219, + "snippet": { + "text": " rules_text = \"📝 Пользователи с правами ивент-мейкера:\\n\\n\"\r\n\r\n for chat_id in event_makers:\r\n user_data = supabase.table('UsersData').select('tgusr').eq('chat_id', int(chat_id)).execute()\r\n if user_data.data:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "75852b6309f0d4a86eb1009632bec9ad24c2deae6f87139ff500f5dc277d75b4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 183, + "startColumn": 80, + "charOffset": 8307, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 181, + "startColumn": 1, + "charOffset": 8162, + "charLength": 274, + "snippet": { + "text": "#help buttons\r\nhelpinlinereg = InlineKeyboardMarkup(row_width=1)\r\nhelpinlinenaming = InlineKeyboardButton(text=\"Помощь\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/README.md'))\r\nhelpinlinereg.add(helpinlinenaming)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "75a3c85c5f7d1713f13bc40730ec4c068db2f50193b80e6052a91d5cdad09ccd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 54, + "startColumn": 22, + "charOffset": 2139, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 52, + "startColumn": 1, + "charOffset": 2058, + "charLength": 137, + "snippet": { + "text": " age=age,\r\n balance=balance,\r\n tgusr = tgusr\r\n )\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "75ca262c59eba8a27c60e409f301281531c07beace8df5bc3c62a18ed126a68c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1328, + "startColumn": 1, + "charOffset": 60342, + "charLength": 59, + "snippet": { + "text": "@dp.message_handler(state=ProlfileStates.edit_profile_name)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1326, + "startColumn": 1, + "charOffset": 60280, + "charLength": 229, + "snippet": { + "text": " await message.reply(\"Нет такого варианта выбора!\")\r\n\r\n@dp.message_handler(state=ProlfileStates.edit_profile_name)\r\nasync def edit_name_profile(message: types.Message, state:FSMContext):\r\n new_fullname = message.text \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "76590def7e3e5f946657a077550b09c846ce00d910374875353ef2e49392c005" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (183 > 120 characters)", + "markdown": "PEP 8: E501 line too long (183 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 56, + "startColumn": 121, + "charOffset": 3685, + "charLength": 2, + "snippet": { + "text": "f'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 54, + "startColumn": 1, + "charOffset": 3504, + "charLength": 356, + "snippet": { + "text": " else:\n insert_image = f'=IMAGE(\"{link}\")'\n google_update_list.append([\"=СТРОКА()-1\", insert_image, user['full_name'], user['balance'], user['chat_id'],f'=ГИПЕРССЫЛКА(\"t.me/{user[\"tgusr\"][1:]}\";\"{user[\"tgusr\"]}\")'])\n worksheet.insert_rows(google_update_list, value_input_option=\"USER_ENTERED\")\n worksheet.sort((4, 'des'))" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "766ad6e1f37d88a18dd381c2bd9294d489c5089096c6c4595e34d97609d0b597" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (125 > 120 characters)", + "markdown": "PEP 8: E501 line too long (125 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 32, + "startColumn": 117, + "charOffset": 1123, + "charLength": 7, + "snippet": { + "text": "execute" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 30, + "startColumn": 1, + "charOffset": 924, + "charLength": 243, + "snippet": { + "text": "async def show_user_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', ).order('balance', desc = True).limit(4).execute()\r\n\r\n # Формируем текст рейтинга\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "767e95105fff7c273106c263072b1df2d5ad8d7b275a321ccd0c9e713254cbb2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 848, + "startColumn": 1, + "charOffset": 38374, + "charLength": 65, + "snippet": { + "text": "@dp.message_handler(text=\"Выдать права\",state = AdminPanel.rules)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 846, + "startColumn": 1, + "charOffset": 38213, + "charLength": 336, + "snippet": { + "text": " await message.reply(\"Вы попали в раздел для выдачи права создания заданий пользователям. Нажмите на кнопку и следуйте указаниям.\", reply_markup=ruleskbm)\r\n\r\n@dp.message_handler(text=\"Выдать права\",state = AdminPanel.rules)\r\nasync def give_rules(message: types.Message, state: FSMContext):\r\n await AdminPanel.rules_addmaker.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "76891755b779dae9e9e0be7b3561dfa065bd2a9cfb7faac85cb4496d97d452f7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 178, + "startColumn": 86, + "charOffset": 7963, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 176, + "startColumn": 1, + "charOffset": 7799, + "charLength": 362, + "snippet": { + "text": "ikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r\nibadminrating = InlineKeyboardButton(text=\"📊Админ Рейтинг\",web_app = WebAppInfo(url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vR__0ahX-O5SK3sS7OditV88sjG64duAF6mAW702CT3uM3Yj6z5mwsnxv-lL2vF9-H3YjlD0rtmg84N/pubhtml?gid=0&single=true'))\r\nikbmadminrating.add(ibadminrating)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "774694d69ca1822dcce98c9d2647069a619a06936def1db400441d0301823aef" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (140 > 120 characters)", + "markdown": "PEP 8: E501 line too long (140 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 29, + "startColumn": 121, + "charOffset": 1260, + "charLength": 4, + "snippet": { + "text": "desc" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 27, + "startColumn": 1, + "charOffset": 1031, + "charLength": 302, + "snippet": { + "text": " sh: Spreadsheet = gc.open_by_url(ADMIN_SPREADSHEET_URL)\n worksheet = sh.worksheet(\"📊 Админ Рейтинг\")\n response = supabase.table('UsersData').select('full_name', 'chat_id', 'tgusr', 'balance', 'gender').order('balance',desc=True).execute()\n users_data = response.data\n worksheet.clear()" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7762b4dfbe6763f38821d7ed7fbe5b3e8e3f837f029581c6aa49dea41f32757e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E261 at least two spaces before inline comment", + "markdown": "PEP 8: E261 at least two spaces before inline comment" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1109, + "startColumn": 85, + "charOffset": 49709, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1107, + "startColumn": 1, + "charOffset": 49536, + "charLength": 348, + "snippet": { + "text": " data = await state.get_data()\r\n name = data.get(\"name\") \r\n numberPoints.update({new_json_data[\"questionId\"]:new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints = numberPoints)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "777fed91bafc1948c365a0f011422bc8dde5481eb42495e3b6aaa0a800a954c9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 16, + "startColumn": 3, + "charOffset": 263, + "charLength": 3, + "snippet": { + "text": "def" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 14, + "startColumn": 1, + "charOffset": 250, + "charLength": 61, + "snippet": { + "text": " ...\r\n\r\n def list(self,**kwargs) -> List[User]: \r\n ..." + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7781cddefc24417a405260c65a4b4ecf2fccb982b4450fcd59f32eafa01619b8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (136 > 120 characters)", + "markdown": "PEP 8: E501 line too long (136 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 551, + "startColumn": 115, + "charOffset": 24403, + "charLength": 19, + "snippet": { + "text": "ReplyKeyboardRemove" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 549, + "startColumn": 1, + "charOffset": 24153, + "charLength": 379, + "snippet": { + "text": "async def admin_change_user_fullname(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_fullnamestart.set()\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_fullnamestart)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "77ee0bea16314541f87b61a67496483a26728c4ce8796a43f4d77fa102ff51a8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E261 at least two spaces before inline comment", + "markdown": "PEP 8: E261 at least two spaces before inline comment" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 57, + "startColumn": 93, + "charOffset": 1985, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 55, + "startColumn": 1, + "charOffset": 1809, + "charLength": 246, + "snippet": { + "text": "\r\nstandart_dirt = [1093, 1091, 1081, 124, 1073, 1083, 1103, 124, 1077, 1073, 124, \r\n 1087, 1080, 1079, 1076, 124, 1105, 1073, 124, 1079, 1072, 1083, 1091, 1087] # censored\r\n\r\nstandart_dirt = ''.join(chr(n) for n in standart_dirt)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "787d087176af60ce7d977a8202b0d2aa5ddf429ffc9964510c43015b9ff45d40" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 17, + "startColumn": 110, + "charOffset": 542, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 15, + "startColumn": 1, + "charOffset": 384, + "charLength": 273, + "snippet": { + "text": " try:\r\n chat_id:int = int(id)\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','tgusr','user_state').eq('chat_id', chat_id).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "78b99ef86a3b83a87e41ff82bcdfd54d60984ca3137085332c962027d23d30e7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 64, + "startColumn": 13, + "charOffset": 2506, + "charLength": 7, + "snippet": { + "text": "#insert" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 62, + "startColumn": 1, + "charOffset": 2374, + "charLength": 224, + "snippet": { + "text": " self.client.table(self.table_name).update(user.dict()).eq('chat_id',user.chat_id).execute()\r\n else:\r\n #insert\r\n self.client.table(self.table_name).insert(user.dict()).execute()\r\n \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "78c9df3a052a73d6f5baadf1cc2e6e77f8dc5a49d4f0c6f7de5d36581b361c1f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (184 > 120 characters)", + "markdown": "PEP 8: E501 line too long (184 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 114, + "startColumn": 87, + "charOffset": 4645, + "charLength": 97, + "snippet": { + "text": "'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/User%20guide/README.md'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 112, + "startColumn": 1, + "charOffset": 4445, + "charLength": 352, + "snippet": { + "text": "userhelp_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\nuserhelp_ticket = KeyboardButton(text=\"📨Создать заявку\")\r\nguide = KeyboardButton(text=\"?📑Руководство пользователя\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/User%20guide/README.md'))\r\nuserhelp.row(userhelp_ticket)\r\nuserhelp.row(guide)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "792c3da6428848f2664662936dbef57393858781eb06c7e2ef03cc7d51c8e226" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (143 > 120 characters)", + "markdown": "PEP 8: E501 line too long (143 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 658, + "startColumn": 120, + "charOffset": 29840, + "charLength": 10, + "snippet": { + "text": "parse_mode" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 656, + "startColumn": 1, + "charOffset": 29628, + "charLength": 315, + "snippet": { + "text": " # Отправляем сообщение об успешном обновлении\r\n new_code_age = code(new_age)\r\n await message.reply(f\"Возраст пользователя {username} успешно обновлен на {new_code_age}\", reply_markup=admue, parse_mode='MarkdownV2')\r\n await state.finish()\r\n await AdminPanel.change_user_end.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7acf0ffc2108605d0e6840d6c0b4bb1fdd9c60b01de9536e6ce5a1fc60ad1a83" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 911, + "startColumn": 3, + "charOffset": 40663, + "charLength": 5, + "snippet": { + "text": "await" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 909, + "startColumn": 1, + "charOffset": 40635, + "charLength": 130, + "snippet": { + "text": "\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text='Действующие права', state=AdminPanel.rules)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7b7a97d70c04677da7977b9d26e2a5ab411c97e305a63aec7d31c913ab65b77e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 196, + "startColumn": 1, + "charOffset": 8828, + "charLength": 15, + "snippet": { + "text": "#survey web-app" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 194, + "startColumn": 1, + "charOffset": 8799, + "charLength": 359, + "snippet": { + "text": "admtasks.row(admtaskback)\r\n\r\n#survey web-app\r\nsurveywebapp = ReplyKeyboardMarkup(resize_keyboard=True)\r\nsurvquestcreate = KeyboardButton(text=\"Создать вопрос\",web_app=WebAppInfo(url = 'https://survey-web-app.pages.dev/edit?json=%7B%22surveyData%22%3A%20%5B%7B%22questionId%22%3A%2069%2C%20%22question%22%3A%20%22%22%2C%20%22choices%22%3A%20%5B%5D%7D%5D%7D'))\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7b9b50819f364aa4444338767cbf375166197828cfa770a81ed0cd075830c21f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1132, + "startColumn": 182, + "charOffset": 50990, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1130, + "startColumn": 1, + "charOffset": 50727, + "charLength": 360, + "snippet": { + "text": " description = data.get(\"description\")\r\n photo = data.get(\"photo\")\r\n supabase.table('TaskCollection').insert({'name': name, 'description': description, 'photo': photo, 'counter': counter, 'url': url,'numberPoints':numberPoints, 'rightAnswers':rightAnswers}).execute()\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7c87981fe83c9c747fb9493af830b5101f2e313f4d197b5bdd30674d044c850c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ':'", + "markdown": "PEP 8: E203 whitespace before ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1448, + "startColumn": 49, + "charOffset": 65533, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1446, + "startColumn": 1, + "charOffset": 65328, + "charLength": 403, + "snippet": { + "text": " supabase.table('Promocode').update({'last': new_last}).eq('promo', poro).execute()\r\n expression = ''.join(random.choices(string.ascii_letters, k=8))\r\n supabase.table('UsedPromocode').insert({'id' : expression,'promo': poro, 'chat_id': str(chat_id)}).execute()\r\n\r\n await message.reply(f\"Ваш баланс пополнен на {code(promocode['cost'])}🔘\\\\!\", reply_markup=promo_kb, parse_mode='MarkdownV2')\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7ca29b9ba02157b4df03107873c34a96a8fa58d2251bc19962087a8bd95f722a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ':'", + "markdown": "PEP 8: E203 whitespace before ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 7, + "startColumn": 18, + "charOffset": 132, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 5, + "startColumn": 1, + "charOffset": 83, + "charLength": 79, + "snippet": { + "text": "class UserRepository(ABC):\r\n \r\n def get(self,id : str) -> User:\r\n ...\r\n \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7e6035bbbb64ef7fea85cd5217a9d697ae8400f6be1893c9c707703f970a6506" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 3", + "markdown": "PEP 8: E302 expected 2 blank lines, found 3" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 429, + "startColumn": 1, + "charOffset": 18042, + "charLength": 80, + "snippet": { + "text": "@dp.message_handler(text=\"⚙️Изменить пользователя\", state=AdminPanel.admin_menu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 427, + "startColumn": 1, + "charOffset": 17994, + "charLength": 248, + "snippet": { + "text": "\r\n# Хендлер для кнопки ️Изменить пользователя\r\n@dp.message_handler(text=\"⚙️Изменить пользователя\", state=AdminPanel.admin_menu)\r\nasync def admin_change_user(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_start.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7f499c4a459b0d1eb09bb7f842c896f895cf1b776c13892ff5a7c913fe046c57" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 15, + "startColumn": 10, + "charOffset": 631, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 13, + "startColumn": 1, + "charOffset": 528, + "charLength": 216, + "snippet": { + "text": "kschedule= KeyboardButton(text=\"📆Календарь событий\")\r\nkhelp= KeyboardButton(text=\"❓Помощь\")\r\nkexercise= KeyboardButton(text=\"📝Задания\")\r\nkpromo = KeyboardButton(text=\"🗝️Промокоды\")\r\nrkbm.row(kprofile,kliderboard)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7ffc7ccb5cb9b62228698a8fc408bb634a03a67a9ebaccaea97df999cdefe729" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 38, + "startColumn": 112, + "charOffset": 1459, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 36, + "startColumn": 1, + "charOffset": 1292, + "charLength": 278, + "snippet": { + "text": " except ValueError:\r\n tgusr:str = id\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','chat_id','user_state').eq('tgusr', tgusr).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "805bd793fa077a8b6e282a97ea7c81e73a2c2571d70b474a295b219aca1a54e6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1084, + "startColumn": 39, + "charOffset": 48462, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1082, + "startColumn": 1, + "charOffset": 48361, + "charLength": 272, + "snippet": { + "text": " else:\r\n await state.update_data(counter = counter)\r\n await bot.send_message(chat_id,\"Коллекция создана успешно! Перейдите пожалуйста, к составлению заданий!⬇️\",reply_markup=surveywebapp)\r\n await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "80b42afb758c26e641d970d41afb31036d6e29c24e7560b13c85c26cfa213636" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1058, + "startColumn": 1, + "charOffset": 47118, + "charLength": 98, + "snippet": { + "text": "@dp.message_handler(content_types= types.ContentType.PHOTO, state = AdminPanel.taskmenu_photowait)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1056, + "startColumn": 1, + "charOffset": 47069, + "charLength": 260, + "snippet": { + "text": " await AdminPanel.taskmenu_photowait.set()\r\n\r\n@dp.message_handler(content_types= types.ContentType.PHOTO, state = AdminPanel.taskmenu_photowait)\r\nasync def admin_taskmenu_photowait(message: types.Message , state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "812ab889653e5a43a7e1c39f3fcaf40269642f93d2890054e6bde8538607788a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 16, + "startColumn": 20, + "charOffset": 417, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 14, + "startColumn": 1, + "charOffset": 347, + "charLength": 280, + "snippet": { + "text": " def get(self,id : str) -> User:\r\n try:\r\n chat_id:int = int(id)\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','tgusr','user_state').eq('chat_id', chat_id).execute()\r\n item = response.data[0]\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8176d359a48d856806839c1acc2465dc84540bc90a4170888f52deb4a2bafa4b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (149 > 120 characters)", + "markdown": "PEP 8: E501 line too long (149 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1542, + "startColumn": 39, + "charOffset": 70262, + "charLength": 110, + "snippet": { + "text": "\"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1540, + "startColumn": 1, + "charOffset": 70084, + "charLength": 355, + "snippet": { + "text": " await bot.send_message(chat_id, \"Ваш профиль был удален!\", reply_markup=types.ReplyKeyboardRemove())\r\n await state.finish()\r\n elif tgname != None and select == \"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\":\r\n tgname = \"@\" + tgname\r\n user = users.get(tgname)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8218b0bcbb2ce98ac01401f009859d7a890c3b7774dd31a0d8e7076cac4d2410" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 782, + "startColumn": 1, + "charOffset": 35356, + "charLength": 56, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.promo_addpromocost)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 780, + "startColumn": 1, + "charOffset": 35307, + "charLength": 209, + "snippet": { + "text": " await AdminPanel.promo_addpromocost.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromocost)\r\nasync def create_promo(message: types.Message, state: FSMContext):\r\n data = await state.get_data()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8264bb8192bcf3f9d3821a04ce5ff86c0fca7a1a2ad50ee5147584bc46abb575" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1114, + "startColumn": 38, + "charOffset": 50017, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1112, + "startColumn": 1, + "charOffset": 49885, + "charLength": 276, + "snippet": { + "text": " await state.update_data(rightAnswers = rightAnswers)\r\n querylist.append(new_json_data)\r\n await state.update_data(querylist = querylist)\r\n if counter > 1:\r\n await bot.send_message(chat_id, \"Пожалуйста, заполните следующий вопрос\",reply_markup=surveywebapp)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "82779eca1571b53570245ebb7816cafa076582f8d3882dcc6fa3c084935bd4e7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 13, + "startColumn": 18, + "charOffset": 229, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 11, + "startColumn": 1, + "charOffset": 201, + "charLength": 59, + "snippet": { + "text": " ...\r\n\r\n def delete(self,id : str) -> None:\r\n ...\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8303f8020377f6086399f439ce56e2b36c659bf9477cf78ffa393d9020a871f3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1119, + "startColumn": 40, + "charOffset": 50288, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1117, + "startColumn": 1, + "charOffset": 50162, + "charLength": 190, + "snippet": { + "text": " await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n counter -= 1\r\n await state.update_data(counter = counter)\r\n else:\r\n await AdminPanel.taskmenu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "83c9f54522e34a0523f46f171f9a7097aee523d25482af29df1422603534bb95" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (174 > 120 characters)", + "markdown": "PEP 8: E501 line too long (174 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1380, + "startColumn": 45, + "charOffset": 62844, + "charLength": 87, + "snippet": { + "text": "\"Введите , пожалуйста , ваш промокод сообщением или отправьте боту изображение QR-кода\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1378, + "startColumn": 1, + "charOffset": 62672, + "charLength": 470, + "snippet": { + "text": "@dp.message_handler(text=\"🗝️Ввести промокод\", state=MenuStates.promocode)\r\nasync def enter_promocode(message: types.Message):\r\n await bot.send_message(message.chat.id, \"Введите , пожалуйста , ваш промокод сообщением или отправьте боту изображение QR-кода\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(message.chat.id, \"Если хотите вернуться , то нажмите сюда\", reply_markup=cancel_button_to_main)\r\n await MenuStates.promocodestart.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "853d01729f9f2f4733202f8b3e2db7a9d8752ee08d90e24d04f6ace476027d5f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (324 > 120 characters)", + "markdown": "PEP 8: E501 line too long (324 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 93, + "startColumn": 13, + "charOffset": 6727, + "charLength": 312, + "snippet": { + "text": "#insert_image = '=IMAGE(\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\")'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 91, + "startColumn": 1, + "charOffset": 6654, + "charLength": 571, + "snippet": { + "text": " else:\n insert_image = f'=IMAGE(\"{link}\")'\n #insert_image = '=IMAGE(\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\")'\n google_update_list.append([\"=СТРОКА()-1\", insert_image, user['full_name'], user['balance']])\n worksheet.insert_rows(google_update_list, value_input_option=\"USER_ENTERED\")" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "85db7b763859a98d6a1995a5bc72470a99689cf8b31e1ba8d32448463f3b8fd1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (134 > 120 characters)", + "markdown": "PEP 8: E501 line too long (134 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1022, + "startColumn": 105, + "charOffset": 45470, + "charLength": 24, + "snippet": { + "text": "disable_web_page_preview" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1020, + "startColumn": 1, + "charOffset": 45305, + "charLength": 259, + "snippet": { + "text": " promo_text += (name_parsed + f\" {url_parsed} \\n\")\r\n\r\n await bot.send_message(chat_id, promo_text, parse_mode=types.ParseMode.HTML, reply_markup=admtasks, disable_web_page_preview=True)\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "85e4a2c901612884ffb8f4d0af75f15ea53fe9a64740224fcb44e5e8d87cf1a5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1398, + "startColumn": 3, + "charOffset": 63599, + "charLength": 5, + "snippet": { + "text": "await" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1396, + "startColumn": 1, + "charOffset": 63569, + "charLength": 124, + "snippet": { + "text": "\r\n message.text = qr_code\r\n await check_promocode(message, state)\r\n\r\n@dp.message_handler(state=MenuStates.promocodestart)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "868f5f0a56f4c8b458e221421af3e9a86cda4636f323074ae2218e5cc97572bf" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: W292 no newline at end of file", + "markdown": "PEP 8: W292 no newline at end of file" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 17, + "startColumn": 7, + "charOffset": 310, + "charLength": 1, + "snippet": { + "text": "." + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 15, + "startColumn": 1, + "charOffset": 259, + "charLength": 52, + "snippet": { + "text": "\r\n def list(self,**kwargs) -> List[User]: \r\n ..." + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "871d375b14dfc6712674f730b5f8c1e5168b9952f93872bd8f751a17554fc8a7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 72, + "startColumn": 81, + "charOffset": 2807, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 70, + "startColumn": 1, + "charOffset": 2670, + "charLength": 243, + "snippet": { + "text": "def get_user_info_by_id(chat_id:int ) -> str:\r\n try:\r\n response = supabase.table('UsersData').select('full_name','gender','age','balance','tgusr').eq('chat_id', chat_id).execute()\r\n return response\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8758be270e3d6e259ce5be26ab916ae370f481901df9da459bf2950e2871c8b4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1896, + "startColumn": 94, + "charOffset": 86023, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1894, + "startColumn": 1, + "charOffset": 85806, + "charLength": 375, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=[MenuStates.promocode,MenuStates.promocodestart])\r\nasync def handle_qr(message: types.ContentType.WEB_APP_DATA , state: FSMContext):\r\n message.text = message.web_app_data.data\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8862b04187f9bae150b384c802eb2713734c8ccc08d7bcf27403ea7318c51290" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (129 > 120 characters)", + "markdown": "PEP 8: E501 line too long (129 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 883, + "startColumn": 108, + "charOffset": 39822, + "charLength": 19, + "snippet": { + "text": "ReplyKeyboardRemove" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 881, + "startColumn": 1, + "charOffset": 39600, + "charLength": 301, + "snippet": { + "text": "async def del_from_eventers(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules_delmaker.set()\r\n await message.reply(\"Введите @username пользователя у котрого хотите забрать права\",reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.rules_delmaker)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8867be78fba706d59710661df2db00a712e3c872a841baaa1f6aeaa79b05ada4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 37, + "startColumn": 1, + "charOffset": 1249, + "charLength": 62, + "snippet": { + "text": "def update_user_fullname_by_tgusr(tgusr: str, full_name: str):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 35, + "startColumn": 1, + "charOffset": 1183, + "charLength": 248, + "snippet": { + "text": " print(f\"Error updating user state for {chat_id}: {e}\")\r\n\r\ndef update_user_fullname_by_tgusr(tgusr: str, full_name: str):\r\n try:\r\n response = supabase.table(table_name).update({'full_name': full_name}).eq('tgusr', tgusr).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "88dbe6d73f1e190dbf14af2f2e891b7a8ac16f363a7e2cf47e9e951fe8eade48" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 193, + "startColumn": 27, + "charOffset": 8784, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 191, + "startColumn": 1, + "charOffset": 8676, + "charLength": 151, + "snippet": { + "text": "admtaskback = KeyboardButton(text=\"⬅️Назад в меню\")\r\nadmtasks.row(admcreatetask)\r\nadmtasks.row(admdeletetask,admtasklist)\r\nadmtasks.row(admtaskback)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "88fa14eb2dab401743a072b24b0cb4e5015e960c7e7ce94c26230ae8284d0f72" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1661, + "startColumn": 112, + "charOffset": 76144, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1659, + "startColumn": 1, + "charOffset": 75988, + "charLength": 285, + "snippet": { + "text": " users.user_state=str(MenuStates.help)\r\n\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r\nasync def handle_help_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8913791501fcf7dd42480ec32f16e2ad85463ee44126fea4e0cdc8b91387a187" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 17, + "startColumn": 86, + "charOffset": 518, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 15, + "startColumn": 1, + "charOffset": 384, + "charLength": 273, + "snippet": { + "text": " try:\r\n chat_id:int = int(id)\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','tgusr','user_state').eq('chat_id', chat_id).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8991ceb3ad75049f2050dd064fb5bd6806a806dafbf5c4e9b8c3d9bc0ea62a27" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1083, + "startColumn": 40, + "charOffset": 48411, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1081, + "startColumn": 1, + "charOffset": 48297, + "charLength": 334, + "snippet": { + "text": " await AdminPanel.taskmenu_collection_counterwait.set()\r\n else:\r\n await state.update_data(counter = counter)\r\n await bot.send_message(chat_id,\"Коллекция создана успешно! Перейдите пожалуйста, к составлению заданий!⬇️\",reply_markup=surveywebapp)\r\n await AdminPanel.taskmenu_collection_surveywebapp.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "89d0e29bf6b2a9788999fd31afd54ea39e849dbb6ccf13278bc773b3d8b4801b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (143 > 120 characters)", + "markdown": "PEP 8: E501 line too long (143 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 540, + "startColumn": 121, + "charOffset": 23724, + "charLength": 10, + "snippet": { + "text": "parse_mode" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 538, + "startColumn": 1, + "charOffset": 23540, + "charLength": 213, + "snippet": { + "text": " users.set(admin)\r\n new_code_balance = code(new_balance)\r\n await message.reply(f\"Баланс пользователя {username} успешно обновлен на {new_code_balance}🔘\", reply_markup=admue, parse_mode=\"MarkdownV2\")\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "89e35e5ffbb7d16342f27cdf7f6a0c54238432babd77a563f1f43f0ef81c6bd4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1588, + "startColumn": 1, + "charOffset": 72625, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1586, + "startColumn": 1, + "charOffset": 72475, + "charLength": 317, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система тикетов для юзера\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(state=MenuStates.help)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8a7e40f02c2ab69447eaee144a6a699e11905511a52b1e8864ad1f1d4e40a0b9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ':'", + "markdown": "PEP 8: E203 whitespace before ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 60, + "startColumn": 22, + "charOffset": 2317, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 58, + "startColumn": 1, + "charOffset": 2261, + "charLength": 217, + "snippet": { + "text": " return None\r\n \r\n def set(self,user : User) -> None:\r\n if self.get(user.chat_id): \r\n self.client.table(self.table_name).update(user.dict()).eq('chat_id',user.chat_id).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8b76f058a11dbc52967caf2fb858cf8fdf97c2a8f2852eb6801bff3191292a8e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1448, + "startColumn": 62, + "charOffset": 65546, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1446, + "startColumn": 1, + "charOffset": 65328, + "charLength": 403, + "snippet": { + "text": " supabase.table('Promocode').update({'last': new_last}).eq('promo', poro).execute()\r\n expression = ''.join(random.choices(string.ascii_letters, k=8))\r\n supabase.table('UsedPromocode').insert({'id' : expression,'promo': poro, 'chat_id': str(chat_id)}).execute()\r\n\r\n await message.reply(f\"Ваш баланс пополнен на {code(promocode['cost'])}🔘\\\\!\", reply_markup=promo_kb, parse_mode='MarkdownV2')\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8b9d9bdcefc3f502ccf561b857c7a54a21b763d225a58f9e61547102c3e41adb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1144, + "startColumn": 1, + "charOffset": 51459, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1142, + "startColumn": 1, + "charOffset": 51436, + "charLength": 290, + "snippet": { + "text": " users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система регистрации\r\n#----------------------------------------------------------------------------------------------------------------------- \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8be0fc0200ae970e46fc54970f6a1455a97a9c34e1e8c39fbadeccdcb26788c9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E303 too many blank lines (2)", + "markdown": "PEP 8: E303 too many blank lines (2)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 75, + "startColumn": 5, + "charOffset": 2914, + "charLength": 48, + "snippet": { + "text": "def list(self,**kwargs) -> List[User]: \r\n " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 73, + "startColumn": 1, + "charOffset": 2894, + "charLength": 74, + "snippet": { + "text": "\r\n \r\n def list(self,**kwargs) -> List[User]: \r\n ...\r\n" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8d57f055a47dbc2117de40f9df0ae8e40c2e89ac5cf570e241797b7eeb25c50e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1748, + "startColumn": 27, + "charOffset": 80017, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1746, + "startColumn": 1, + "charOffset": 79867, + "charLength": 287, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📝Задания\", state=MenuStates.tasks)\r\nasync def handle_tasks(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8e4686fb6a2a17423518dd2ee7fe90db765b22a97479129cfd45d0880d876e61" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 885, + "startColumn": 1, + "charOffset": 39848, + "charLength": 52, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.rules_delmaker)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 883, + "startColumn": 1, + "charOffset": 39715, + "charLength": 289, + "snippet": { + "text": " await message.reply(\"Введите @username пользователя у котрого хотите забрать права\",reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.rules_delmaker)\r\nasync def del_from_eventers_start(message: types.Message, state: FSMContext):\r\n tgusr = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8e6dbf4a8abcc2bc1ef67f79614de406b7cfffc896051786de43bcde6f5292ac" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1754, + "startColumn": 72, + "charOffset": 80344, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1752, + "startColumn": 1, + "charOffset": 80190, + "charLength": 302, + "snippet": { + "text": " counter = data.get('counter')\r\n await state.update_data(counter = counter)\r\n task = supabase.table('TaskCollection').select('name','description','photo','url').execute().data[int(counter)]\r\n text = f\"{task['name']}\\n{task['description']}\"\r\n await state.update_data(name = task['name'])\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8f9307815b0f98a79492b1ae12cd739fe9d938ba2504c3a08345b5e7eef5deea" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1067, + "startColumn": 39, + "charOffset": 47640, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1065, + "startColumn": 1, + "charOffset": 47510, + "charLength": 261, + "snippet": { + "text": " await AdminPanel.taskmenu_collection_counterwait.set()\r\n except Exception as e:\r\n await bot.send_message(chat_id,\"Произошла ошибка, отправьте пожалуйста фотографию в хорошем качестве.\")\r\n await AdminPanel.taskmenu_photowait.set()\r\n \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8fcd415a91e0d85f9ec6ae59cc89019725cf656c3e40098c7ddac34fcde2f44c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ','", + "markdown": "PEP 8: E203 whitespace before ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 14, + "startColumn": 52, + "charOffset": 337, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 12, + "startColumn": 1, + "charOffset": 223, + "charLength": 239, + "snippet": { + "text": "import asyncio\r\nfrom aiogram.utils import executor , markdown\r\nfrom aiogram.utils.markdown import hlink, escape_md , code\r\nfrom aiogram.dispatcher import Dispatcher, FSMContext\r\nfrom aiogram.contrib.fsm_storage.memory import MemoryStorage\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8feba485e282e8c96870f0c50fa933377a58b755c63fe97dfcec0a84d44a116e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1535, + "startColumn": 15, + "charOffset": 69728, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1533, + "startColumn": 1, + "charOffset": 69642, + "charLength": 283, + "snippet": { + "text": " chat_id = message.chat.id\r\n tgname = message.from_user.username\r\n if tgname == None and select == \"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\":\r\n user = users.get(chat_id)\r\n users.delete(user)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "902358a62d6c625af6b4a23f111ec28600e2801e8b9e1d5901ecc00664953e19" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1899, + "startColumn": 58, + "charOffset": 86239, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1897, + "startColumn": 1, + "charOffset": 86053, + "charLength": 230, + "snippet": { + "text": "async def handle_qr(message: types.ContentType.WEB_APP_DATA , state: FSMContext):\r\n message.text = message.web_app_data.data\r\n await asyncio.wait_for(check_promocode(message,state),timeout=3.5)\r\n\r\n await message.delete()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "907fb7366cd91b6a43326e92f0540cc9a3c4fb9c1eda2036887146fbc37b239e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 910, + "startColumn": 3, + "charOffset": 40639, + "charLength": 5, + "snippet": { + "text": "await" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 908, + "startColumn": 1, + "charOffset": 40564, + "charLength": 130, + "snippet": { + "text": " await message.reply(\"Права успешно удалены\", reply_markup=ruleskbm)\r\n\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "90b9e25b1779aefe8524d49994d635ea82a6a08d10c1de5d652c80fdadb3d2cb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 306, + "startColumn": 21, + "charOffset": 11902, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 304, + "startColumn": 1, + "charOffset": 11819, + "charLength": 182, + "snippet": { + "text": " if numberPoints == None:\r\n numberPoints: dict = {}\r\n if rightAnswers == None:\r\n rightAnswers: dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9112ab264152bf9e4f8b79930b8112873d83d2b943f84fe4d0619c658dc147d1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1703, + "startColumn": 1, + "charOffset": 77961, + "charLength": 72, + "snippet": { + "text": "@dp.message_handler(text = \"Удалить обращение\", state=AdminPanel.ticket)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1701, + "startColumn": 1, + "charOffset": 77913, + "charLength": 221, + "snippet": { + "text": " user.user_state = str(AdminPanel.ticket)\r\n\r\n@dp.message_handler(text = \"Удалить обращение\", state=AdminPanel.ticket)\r\nasync def delete_ticket(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9278d7f9e3058859682c52205e5e96df28c326dae8126b44b5c81f468a68acc6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 178, + "startColumn": 43, + "charOffset": 7920, + "charLength": 17, + "snippet": { + "text": "\"📊Админ Рейтинг\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 176, + "startColumn": 1, + "charOffset": 7799, + "charLength": 362, + "snippet": { + "text": "ikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r\nibadminrating = InlineKeyboardButton(text=\"📊Админ Рейтинг\",web_app = WebAppInfo(url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vR__0ahX-O5SK3sS7OditV88sjG64duAF6mAW702CT3uM3Yj6z5mwsnxv-lL2vF9-H3YjlD0rtmg84N/pubhtml?gid=0&single=true'))\r\nikbmadminrating.add(ibadminrating)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "92dfa27c9ed18851216d342eb82d4964ed7f8577de32c17165e61177ed68570b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1899, + "startColumn": 51, + "charOffset": 86232, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1897, + "startColumn": 1, + "charOffset": 86053, + "charLength": 230, + "snippet": { + "text": "async def handle_qr(message: types.ContentType.WEB_APP_DATA , state: FSMContext):\r\n message.text = message.web_app_data.data\r\n await asyncio.wait_for(check_promocode(message,state),timeout=3.5)\r\n\r\n await message.delete()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9315ef2771a06699a4ddde7467050a42dddc1ebcc848abbd19f220caa4343822" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 497, + "startColumn": 1, + "charOffset": 21509, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 495, + "startColumn": 1, + "charOffset": 21340, + "charLength": 294, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования баланса пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9386d588bc0bd72cb4ac896c9663b9d66448ad7b41b50083d6cfe77194c276cc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 902, + "startColumn": 3, + "charOffset": 40406, + "charLength": 2, + "snippet": { + "text": "if" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 900, + "startColumn": 1, + "charOffset": 40376, + "charLength": 122, + "snippet": { + "text": " roles = json.load(f)\r\n\r\n if str(chat_id) in roles['event_makers']:\r\n roles['event_makers'].remove(str(chat_id))\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "940be31e9a00603608d3859037ceab95a833f14770923202db207c0d3d9f9a37" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1055, + "startColumn": 40, + "charOffset": 47052, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1053, + "startColumn": 1, + "charOffset": 46908, + "charLength": 209, + "snippet": { + "text": " description = message.text\r\n await bot.send_message(chat_id, \"Отправте фотографию мероприятия:\")\r\n await state.update_data(description = description)\r\n await AdminPanel.taskmenu_photowait.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "942e36fdf884f0a2dc9bc025c7077eca94c2787193af0873cc6dddecd93e2e5f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E712 comparison to False should be 'if cond is False:' or 'if not cond:'", + "markdown": "PEP 8: E712 comparison to False should be 'if cond is False:' or 'if not cond:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 585, + "startColumn": 129, + "charOffset": 26062, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 583, + "startColumn": 1, + "charOffset": 25876, + "charLength": 349, + "snippet": { + "text": " if FIO[word][0].istitle():\r\n cnt += 1\r\n if new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO):\r\n data = await state.get_data()\r\n username = data.get(\"username\") # получаем сохраненный username из данных состояния\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "949af292af09b314784d4c4874b1d7f7e965f589ccc78ea61cc68fac85600aed" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 848, + "startColumn": 40, + "charOffset": 38413, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 846, + "startColumn": 1, + "charOffset": 38213, + "charLength": 336, + "snippet": { + "text": " await message.reply(\"Вы попали в раздел для выдачи права создания заданий пользователям. Нажмите на кнопку и следуйте указаниям.\", reply_markup=ruleskbm)\r\n\r\n@dp.message_handler(text=\"Выдать права\",state = AdminPanel.rules)\r\nasync def give_rules(message: types.Message, state: FSMContext):\r\n await AdminPanel.rules_addmaker.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "960fc988c53bd4f5086971cefaa690f8dabcc8c4b9c5aa4817c04faf91304393" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E202 whitespace before ')'", + "markdown": "PEP 8: E202 whitespace before ')'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 175, + "startColumn": 239, + "charOffset": 7794, + "charLength": 1, + "snippet": { + "text": ")" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 173, + "startColumn": 1, + "charOffset": 7491, + "charLength": 386, + "snippet": { + "text": "#rating buttons\r\nikbmrating = InlineKeyboardMarkup(row_width=1)\r\nibrating = InlineKeyboardButton(text=\"📊Полный рейтинг\", web_app = WebAppInfo(url ='https://docs.google.com/spreadsheets/d/e/2PACX-1vQFzN5HRvQhS5j4kDcv9wWH3uucCqp1AFmu2ErZYikmmJSshj1f16v7ry013vde0y6OYVWeSsVtgaKT/pubhtml?gid=0&single=true') )\r\nikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "962a5638d706a7929412e713d743f4096b3b22f10b4ef925c41be16ae5716169" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ','", + "markdown": "PEP 8: E203 whitespace before ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1088, + "startColumn": 65, + "charOffset": 48816, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1086, + "startColumn": 1, + "charOffset": 48632, + "charLength": 273, + "snippet": { + "text": "\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=AdminPanel.taskmenu_collection_surveywebapp)\r\nasync def survey_web_app(message: types.ContentType.WEB_APP_DATA , state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "96b639929146b0e7274bde533d1bdd1f82c2ddcf544953522c79765896632a6b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E252 missing whitespace around parameter equals", + "markdown": "PEP 8: E252 missing whitespace around parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 68, + "startColumn": 25, + "charOffset": 2248, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 66, + "startColumn": 1, + "charOffset": 2198, + "charLength": 102, + "snippet": { + "text": " return hide_search\r\n\r\ndef is_dirt(pattern: str=standart_dirt):\r\n\r\n funk = _get_search(pattern)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "970399cc276dbadc7aba3e8098a09c8453f556a3b971952610d154b3a6febbfa" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 354, + "startColumn": 27, + "charOffset": 14232, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 352, + "startColumn": 1, + "charOffset": 14202, + "charLength": 187, + "snippet": { + "text": "\r\n\r\n@dp.message_handler(text = \"⬅️Меню\", state=EventMakerPanel.menu)\r\nasync def back_from_event(message: types.Message, state:FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "97c3d5323111cd32f3482d3c1754dbb022647701b924f43c042b4a959d1f2630" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1294, + "startColumn": 56, + "charOffset": 58440, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1292, + "startColumn": 1, + "charOffset": 58338, + "charLength": 310, + "snippet": { + "text": " await ProlfileStates.edit_profile.set()\r\n\r\n@dp.callback_query_handler(text='back_to_menu', state = MenuStates.promocodestart)\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню промокодов.\", reply_markup=promo_kb)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "98113480010f6ed01f667954b77ef40c8c2b1d2c56d4e789c550958adb90e8d0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1793, + "startColumn": 1, + "charOffset": 82245, + "charLength": 58, + "snippet": { + "text": "@dp.message_handler(text=\"⬅️Меню\", state=MenuStates.tasks)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1791, + "startColumn": 1, + "charOffset": 82165, + "charLength": 235, + "snippet": { + "text": " await bot.delete_message(chat_id=chat_id, message_id=message.message_id)\r\n\r\n@dp.message_handler(text=\"⬅️Меню\", state=MenuStates.tasks)\r\nasync def task_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "98f75595dfef53c072f1c6d11c4194674c87671646cdd9c9ed9bc56090caa94a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1087, + "startColumn": 1, + "charOffset": 48634, + "charLength": 116, + "snippet": { + "text": "@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=AdminPanel.taskmenu_collection_surveywebapp)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1085, + "startColumn": 1, + "charOffset": 48567, + "charLength": 303, + "snippet": { + "text": " await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=AdminPanel.taskmenu_collection_surveywebapp)\r\nasync def survey_web_app(message: types.ContentType.WEB_APP_DATA , state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9951d37291438bfd699dff4ea300b09607c1a8811a9c3f411f8d60207468f5b9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (132 > 120 characters)", + "markdown": "PEP 8: E501 line too long (132 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 72, + "startColumn": 115, + "charOffset": 2841, + "charLength": 7, + "snippet": { + "text": "chat_id" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 70, + "startColumn": 1, + "charOffset": 2670, + "charLength": 243, + "snippet": { + "text": "def get_user_info_by_id(chat_id:int ) -> str:\r\n try:\r\n response = supabase.table('UsersData').select('full_name','gender','age','balance','tgusr').eq('chat_id', chat_id).execute()\r\n return response\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "99a2a0155837f628af59513ce16c74444dd1c7657eb2303b7b82df9bb336158d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 770, + "startColumn": 1, + "charOffset": 34758, + "charLength": 74, + "snippet": { + "text": "@dp.message_handler(text ='Добавить промокод',state=AdminPanel.promo_menu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 768, + "startColumn": 1, + "charOffset": 34706, + "charLength": 297, + "snippet": { + "text": " user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text ='Добавить промокод',state=AdminPanel.promo_menu)\r\nasync def get_usages(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите количество использований:\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "99d3608b8258feefd1cf57fa6dbb72d95e017b2ee9861bff1556c6e770f68cfc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 952, + "startColumn": 1, + "charOffset": 42251, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 950, + "startColumn": 1, + "charOffset": 42103, + "charLength": 273, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Система админ рейтинга\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9a3b2e49618ea4eb5a00a7c6d9f8147a7812ae54e51ddbc9ecca86913f39f2af" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E303 too many blank lines (3)", + "markdown": "PEP 8: E303 too many blank lines (3)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 185, + "startColumn": 1, + "charOffset": 6334, + "charLength": 77, + "snippet": { + "text": "@dp.message_handler(text='Удалить коллекцию', state=EventMakerPanel.taskmenu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 183, + "startColumn": 1, + "charOffset": 6330, + "charLength": 265, + "snippet": { + "text": "\r\n\r\n@dp.message_handler(text='Удалить коллекцию', state=EventMakerPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите пожалуйста имя коллекции для её удаления\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9a9b99eb6d9009c1a3b869974c592b9c666853b6c9fbbadadc439937879325d0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 897, + "startColumn": 3, + "charOffset": 40296, + "charLength": 7, + "snippet": { + "text": "chat_id" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 895, + "startColumn": 1, + "charOffset": 40280, + "charLength": 95, + "snippet": { + "text": " return\r\n\r\n chat_id = user_data.data[0]['chat_id']\r\n\r\n with open('roles.json', 'r') as f:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9ae40328bbf9b0532ad8dfe9e993d74ab59b6f46d13fde6b6f2bbb203f565860" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 183, + "startColumn": 65, + "charOffset": 8292, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 181, + "startColumn": 1, + "charOffset": 8162, + "charLength": 274, + "snippet": { + "text": "#help buttons\r\nhelpinlinereg = InlineKeyboardMarkup(row_width=1)\r\nhelpinlinenaming = InlineKeyboardButton(text=\"Помощь\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/README.md'))\r\nhelpinlinereg.add(helpinlinenaming)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9afbd492fb5e3d1f3fd40f532f6ff06299210c025846a75e1469687e29a3c336" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 20, + "startColumn": 15, + "charOffset": 801, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 18, + "startColumn": 1, + "charOffset": 745, + "charLength": 81, + "snippet": { + "text": "rkbm.add(kexercise)\r\nrkbm.add(kschedule)\r\nrkbm.row(khelp,kpromo)\r\n\r\n#promo_menuu\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9b959da53c8fbd7318f6042c26d98085392d7cb526ec6058bde2551fe52b7b62" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1100, + "startColumn": 21, + "charOffset": 49233, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1098, + "startColumn": 1, + "charOffset": 49151, + "charLength": 196, + "snippet": { + "text": " numberPoints:dict = {}\r\n if rightAnswers == None:\r\n rightAnswers:dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r\n message.text = message.web_app_data.data\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9ba5c0fbb983889e4b3a1e6deaca40e5ca3e88e509b3b36956eafe5026f2395a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is not None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is not None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 22, + "startColumn": 39, + "charOffset": 802, + "charLength": 2, + "snippet": { + "text": "!=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 20, + "startColumn": 1, + "charOffset": 658, + "charLength": 262, + "snippet": { + "text": " pseudo = user_data.get('full_name', 'Unknown')\r\n gender = user_data.get('gender')\r\n gender = gender if gender != None else False\r\n age = user_data.get('age', 'Unknown')\r\n balance = user_data.get('balance')\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9be9d27c1645b61dce533761b52bdd8fa9a01077714ad103c4236408155cb57b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 887, + "startColumn": 3, + "charOffset": 39983, + "charLength": 5, + "snippet": { + "text": "tgusr" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 885, + "startColumn": 1, + "charOffset": 39848, + "charLength": 248, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.rules_delmaker)\r\nasync def del_from_eventers_start(message: types.Message, state: FSMContext):\r\n tgusr = message.text\r\n\r\n user_data = supabase.table('UsersData').select('chat_id').eq('tgusr', tgusr).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9c893b0356094404639be9c931e63c3c58bb479b2ba8500c30c30bcd0ecbd18d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1661, + "startColumn": 27, + "charOffset": 76059, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1659, + "startColumn": 1, + "charOffset": 75988, + "charLength": 285, + "snippet": { + "text": " users.user_state=str(MenuStates.help)\r\n\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r\nasync def handle_help_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9cab116ca556562972bddfc565b8e25f6413b890660126e9e0c303bc74d7e273" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1571, + "startColumn": 20, + "charOffset": 71825, + "charLength": 3, + "snippet": { + "text": "str" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1569, + "startColumn": 1, + "charOffset": 71727, + "charLength": 197, + "snippet": { + "text": " for event in response.data:\r\n url = 'https://leader-id.ru/events/'\r\n url = url +str(event['id'])\r\n name = event['full_name']\r\n date_start = event['date_start'][:16]\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9cb34b375c45c85951187094bd1ec838d450709bd504bd370d1a94391bad0ade" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1468, + "startColumn": 25, + "charOffset": 66486, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1466, + "startColumn": 1, + "charOffset": 66458, + "charLength": 189, + "snippet": { + "text": "\r\n\r\n@dp.message_handler(text =\"📊Рейтинг\", state=MenuStates.waiting_for_profile)\r\nasync def user_rating_board(message: types.Message, state: FSMContext):\r\n await MenuStates.rating.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9d48c76e318db65272683a4e73b2ebb6cddf10c3cc640a62770d5cd43b8a4c56" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1257, + "startColumn": 1, + "charOffset": 56611, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1255, + "startColumn": 1, + "charOffset": 56607, + "charLength": 273, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Кнопкни главного меню\r\n#----------------------------------------------------------------------------------------------------------------------- \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9e0570af60fe206e5ced4ccdeefc501d40b0a5523162d9c0309fca14858d9e8e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E303 too many blank lines (2)", + "markdown": "PEP 8: E303 too many blank lines (2)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/models/users.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 7, + "startColumn": 5, + "charOffset": 89, + "charLength": 22, + "snippet": { + "text": "chat_id: int = 0 \r\n " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 5, + "startColumn": 1, + "charOffset": 77, + "charLength": 106, + "snippet": { + "text": "\r\n \r\n chat_id: int = 0 \r\n full_name: str = ''\r\n gender: bool = None\r\n user_state: str = ''\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9e05a1d0cdfa754ab0130021445570751434e973fd823777466473d55d980f61" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1272, + "startColumn": 19, + "charOffset": 57340, + "charLength": 9, + "snippet": { + "text": "\"❓Помощь\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1270, + "startColumn": 1, + "charOffset": 57234, + "charLength": 196, + "snippet": { + "text": " await MenuStates.rating.set()\r\n await user_rating_board(message, state)\r\n elif select ==\"❓Помощь\":\r\n await MenuStates.help.set()\r\n await handle_help(message,state)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9e8747feb9c68ae1bda64b3d11dbdad1d1f206d77e720f42b45caa568ae4991a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is not None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is not None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1542, + "startColumn": 17, + "charOffset": 70240, + "charLength": 2, + "snippet": { + "text": "!=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1540, + "startColumn": 1, + "charOffset": 70084, + "charLength": 355, + "snippet": { + "text": " await bot.send_message(chat_id, \"Ваш профиль был удален!\", reply_markup=types.ReplyKeyboardRemove())\r\n await state.finish()\r\n elif tgname != None and select == \"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\":\r\n tgname = \"@\" + tgname\r\n user = users.get(tgname)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9f1c468c905fbb192016d49361e6acbaeca4be3d72c72521372db41bac0d33b3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 143, + "startColumn": 31, + "charOffset": 6076, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 141, + "startColumn": 1, + "charOffset": 5981, + "charLength": 164, + "snippet": { + "text": "admpromo.row(addpromo_addqr)\r\nadmpromo.row(admpromo_checkpromo)\r\nadmpromo.row(admpromo_addpromo,admpromo_namingpromo,admpromo_delpromo)\r\nadmpromo.row(admue_back)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9f4dbc797a614c6f6ff719098921d55f635c9df151f2cc601005cfdf06e1b97c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1745, + "startColumn": 1, + "charOffset": 79849, + "charLength": 16, + "snippet": { + "text": "#Система заданий" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1743, + "startColumn": 1, + "charOffset": 79725, + "charLength": 265, + "snippet": { + "text": "\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система заданий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9f8ff2d2c6b09cf319b9c3eba0d8679cefac0f407cd778853ba59057ffcf7180" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1498, + "startColumn": 20, + "charOffset": 67871, + "charLength": 2, + "snippet": { + "text": "+=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1496, + "startColumn": 1, + "charOffset": 67775, + "charLength": 150, + "snippet": { + "text": " counter = 0\r\n while userlist[counter]['chat_id'] != chat_id:\r\n counter+=1\r\n if gender:\r\n gender = \"🙋‍♂️\"\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a005ff66406bbd72e62fdced6b54c6bf0e170d7f72c57919edfec0a12435e0c8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ','", + "markdown": "PEP 8: E203 whitespace before ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1059, + "startColumn": 58, + "charOffset": 47275, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1057, + "startColumn": 1, + "charOffset": 47116, + "charLength": 234, + "snippet": { + "text": "\r\n@dp.message_handler(content_types= types.ContentType.PHOTO, state = AdminPanel.taskmenu_photowait)\r\nasync def admin_taskmenu_photowait(message: types.Message , state: FSMContext):\r\n chat_id = message.chat.id\r\n photo = message\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a092a0aa0e2c166141461b83b3d91cdf3e89131ecb3a0252d50f24eb752aefd9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1781, + "startColumn": 1, + "charOffset": 81659, + "charLength": 54, + "snippet": { + "text": "@dp.message_handler(text=\"⬅️\", state=MenuStates.tasks)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1779, + "startColumn": 1, + "charOffset": 81579, + "charLength": 226, + "snippet": { + "text": " await bot.delete_message(chat_id=chat_id, message_id=message.message_id)\r\n\r\n@dp.message_handler(text=\"⬅️\", state=MenuStates.tasks)\r\nasync def left(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a0bdaf200534458b334bbacccfcb266f6515fc7137878c4718ad7f190ed4f6a6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 797, + "startColumn": 1, + "charOffset": 36036, + "charLength": 73, + "snippet": { + "text": "@dp.message_handler(text=\"Удалить промокод\", state=AdminPanel.promo_menu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 795, + "startColumn": 1, + "charOffset": 35984, + "charLength": 237, + "snippet": { + "text": " user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text=\"Удалить промокод\", state=AdminPanel.promo_menu)\r\nasync def delete_promo(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_delpromo.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a0d80605ab9c72ade82a24183d4ef415fe8c01b21333aec069c8f8136bacda92" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 91, + "startColumn": 1, + "charOffset": 3609, + "charLength": 15, + "snippet": { + "text": "#rules keyboard" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 89, + "startColumn": 1, + "charOffset": 3572, + "charLength": 164, + "snippet": { + "text": "admrkbm.row(admk_menu,admk_rules)\r\n\r\n#rules keyboard\r\nruleskbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nruleskbm_addmaker = KeyboardButton(text=\"Выдать права\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a209f81c4a0a0abf5de2b1774613d90b2e4b1563cf79b6c0e01d21ee385343a1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (176 > 120 characters)", + "markdown": "PEP 8: E501 line too long (176 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 369, + "startColumn": 113, + "charOffset": 15014, + "charLength": 10, + "snippet": { + "text": "AdminPanel" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 367, + "startColumn": 1, + "charOffset": 14860, + "charLength": 400, + "snippet": { + "text": "\r\n# Хендлер отмены действия через кнопку\r\n@dp.callback_query_handler(text=\"cancel\", state=[AdminPanel.change_user_balance,AdminPanel.change_user_fullname,AdminPanel.change_user_agestart,AdminPanel.get_info_about_user])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню админ-панели.\", reply_markup=admrkbm)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a268ce6665aaca1e374beab6c0ecd6b8170783f46c0f8eec7d16ba2cc1981238" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1527, + "startColumn": 1, + "charOffset": 69360, + "charLength": 121, + "snippet": { + "text": "#----------------------------------------------------------------------------------------------------------------------- " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1525, + "startColumn": 1, + "charOffset": 69211, + "charLength": 278, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система удаления профиля\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a32311ff9778f045082ac18990286e37638826fd9821662edbe9fd01d5d459f5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ','", + "markdown": "PEP 8: E203 whitespace before ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1765, + "startColumn": 66, + "charOffset": 80923, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1763, + "startColumn": 1, + "charOffset": 80789, + "charLength": 283, + "snippet": { + "text": " ikbmtasks.row(ibleft, ibgo, ibright)\r\n ikbmtasks.row(ibback)\r\n message_id_data = await bot.send_photo(chat_id, task['photo'] , text, reply_markup= ikbmtasks)\r\n message_id_data = message_id_data['message_id']\r\n await state.update_data(message_id_data=message_id_data)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a3637ba3d9102a2edf11b25b5bf10ff5ae076e8a85ca0f59171eea3fcf8f1ea8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (160 > 120 characters)", + "markdown": "PEP 8: E501 line too long (160 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1629, + "startColumn": 120, + "charOffset": 74901, + "charLength": 12, + "snippet": { + "text": "reply_markup" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1627, + "startColumn": 1, + "charOffset": 74669, + "charLength": 307, + "snippet": { + "text": "\r\n await bot.send_message(chat_id, \"Нажмите сюда чтобы вернуться\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(chat_id, \"Распишите здесь наиподробнейшим образом какой у вас возник вопрос или пожелание!\",reply_markup=cancel_button_for_user_help)\r\n\r\n user = users.get(chat_id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a37aede4d779b05d6aaffe634b8bd5156470a53b9289bcd9902598436791d0a2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 165, + "startColumn": 1, + "charOffset": 7047, + "charLength": 36, + "snippet": { + "text": "#remove balance button in admin menu" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 163, + "startColumn": 1, + "charOffset": 6993, + "charLength": 319, + "snippet": { + "text": "cancel_button_for_user_promocode.add(cancel_promo)\r\n\r\n#remove balance button in admin menu\r\nupdatebalanceusers = ReplyKeyboardMarkup(resize_keyboard=True)\r\nupdatebalanceconfirmbutton= KeyboardButton(text=\"❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a38f707391fd2a95fcabd0f9bb37c836618299350adf5cda997085f39e5ddffd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 837, + "startColumn": 1, + "charOffset": 37804, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 835, + "startColumn": 1, + "charOffset": 37666, + "charLength": 263, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Система прав\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a404e2e6259e93f7911b413eb3dcccb6952b4a82d73fc0b328d232a06053b400" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (309 > 120 characters)", + "markdown": "PEP 8: E501 line too long (309 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 41, + "startColumn": 28, + "charOffset": 1897, + "charLength": 282, + "snippet": { + "text": "\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 39, + "startColumn": 1, + "charOffset": 1817, + "charLength": 698, + "snippet": { + "text": " else:\n if user[\"gender\"]:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"\n else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a43bc0e4b7d2c9e0ebb00a691acf908de3be14a9d8b2450dd5b22f7bde87eed2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1776, + "startColumn": 38, + "charOffset": 81441, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1774, + "startColumn": 1, + "charOffset": 81295, + "charLength": 283, + "snippet": { + "text": " if counter>len(supabase.table('TaskCollection').select('name' ).execute().data)-1:\r\n counter = 0\r\n await state.update_data(counter = counter)\r\n await handle_tasks(message, state)\r\n await bot.delete_message(chat_id=chat_id, message_id=data.get('message_id_data'))\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a46d70ceec81c89c63d13da7dbb19d574b1569801d9dbc6360649500535aec4b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1586, + "startColumn": 1, + "charOffset": 72475, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1584, + "startColumn": 1, + "charOffset": 72421, + "charLength": 325, + "snippet": { + "text": " user.user_state = str(MenuStates.calendar)\r\n \r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система тикетов для юзера\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a4e43fcab88af71a16c39500ed9925ae2452c23bb762b71d29a9ce8121c3b0a8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 411, + "startColumn": 83, + "charOffset": 17348, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 409, + "startColumn": 1, + "charOffset": 17106, + "charLength": 342, + "snippet": { + "text": " select = message.text\r\n if select == '❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗':\r\n supabase.table('UsersData_duplicate').update({'balance': 0}).neq('balance',0).execute()\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a506d68ecbc617c88e072703b444f5e6dc7a5336c2c9d37e18e323536ee7afc4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1590, + "startColumn": 1, + "charOffset": 72749, + "charLength": 42, + "snippet": { + "text": "@dp.message_handler(state=MenuStates.help)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1588, + "startColumn": 1, + "charOffset": 72625, + "charLength": 265, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(state=MenuStates.help)\r\nasync def handle_help(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a5d4bfbe16fdf3a37f3f91256bcd6143f7055d0aab94250cb994fc20c7ce72dc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 47, + "charOffset": 46, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 173, + "snippet": { + "text": "from aiogram.types import InlineKeyboardMarkup,InlineKeyboardButton, ReplyKeyboardMarkup, KeyboardButton\r\nfrom aiogram.types.web_app_info import WebAppInfo\r\n#gender buttons\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a6536e61bd33ff1fd7ae448321919508e4d2d555470940abfcb75cd51e69b5be" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 178, + "startColumn": 69, + "charOffset": 7946, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 176, + "startColumn": 1, + "charOffset": 7799, + "charLength": 362, + "snippet": { + "text": "ikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r\nibadminrating = InlineKeyboardButton(text=\"📊Админ Рейтинг\",web_app = WebAppInfo(url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vR__0ahX-O5SK3sS7OditV88sjG64duAF6mAW702CT3uM3Yj6z5mwsnxv-lL2vF9-H3YjlD0rtmg84N/pubhtml?gid=0&single=true'))\r\nikbmadminrating.add(ibadminrating)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a783c95e1a02214578dc8b6255223d8daabc293a79b0fb519a4d8d2783b809e0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 835, + "startColumn": 1, + "charOffset": 37666, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 833, + "startColumn": 1, + "charOffset": 37662, + "charLength": 263, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система прав\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a99ee72eb9f08e96ffab7ebebba6c2633bed567b77fcf61143a47e8dfadf87f7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (128 > 120 characters)", + "markdown": "PEP 8: E501 line too long (128 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1043, + "startColumn": 107, + "charOffset": 46457, + "charLength": 19, + "snippet": { + "text": "ReplyKeyboardRemove" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1041, + "startColumn": 1, + "charOffset": 46276, + "charLength": 267, + "snippet": { + "text": " tasks_name.append(name_table['name'])\r\n if name in tasks_name:\r\n await bot.send_message(chat_id,\"Введенное имя уже существует, введите другое\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.AdminPanel.taskmenu.set()\r\n else:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a9a29f9231f7a8969a9f7bc5a7b5de7c841f655c05d8f660f122dbd274659d5a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 889, + "startColumn": 3, + "charOffset": 40009, + "charLength": 9, + "snippet": { + "text": "user_data" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 887, + "startColumn": 1, + "charOffset": 39981, + "charLength": 143, + "snippet": { + "text": " tgusr = message.text\r\n\r\n user_data = supabase.table('UsersData').select('chat_id').eq('tgusr', tgusr).execute()\r\n\r\n if not user_data.data:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a9ee5daa41ca736ae0cda1f5c6d487c92c08f8c35d2271f09bd0b1dae558bdce" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 56, + "startColumn": 120, + "charOffset": 3684, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 54, + "startColumn": 1, + "charOffset": 3504, + "charLength": 356, + "snippet": { + "text": " else:\n insert_image = f'=IMAGE(\"{link}\")'\n google_update_list.append([\"=СТРОКА()-1\", insert_image, user['full_name'], user['balance'], user['chat_id'],f'=ГИПЕРССЫЛКА(\"t.me/{user[\"tgusr\"][1:]}\";\"{user[\"tgusr\"]}\")'])\n worksheet.insert_rows(google_update_list, value_input_option=\"USER_ENTERED\")\n worksheet.sort((4, 'des'))" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "aa0896a55b56f8b91109ed3fa36ab94d68c7270915682a707164472e167b354b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1294, + "startColumn": 54, + "charOffset": 58438, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1292, + "startColumn": 1, + "charOffset": 58338, + "charLength": 310, + "snippet": { + "text": " await ProlfileStates.edit_profile.set()\r\n\r\n@dp.callback_query_handler(text='back_to_menu', state = MenuStates.promocodestart)\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню промокодов.\", reply_markup=promo_kb)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "aacdd8848d8c1b1fef602cadf32dc600f13f08a45b559bcf9ad55429283826df" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E303 too many blank lines (3)", + "markdown": "PEP 8: E303 too many blank lines (3)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 7, + "startColumn": 1, + "charOffset": 94, + "charLength": 13, + "snippet": { + "text": "load_dotenv()" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 5, + "startColumn": 1, + "charOffset": 90, + "charLength": 72, + "snippet": { + "text": "\r\n\r\nload_dotenv()\r\n\r\n# Инициализация подключения к базе данных Supabase\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ab3f0ec00fb6f9b4c67eafcdb76603f0f636f23aa3fc1d284a011d1406e140a9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1109, + "startColumn": 53, + "charOffset": 49677, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1107, + "startColumn": 1, + "charOffset": 49536, + "charLength": 348, + "snippet": { + "text": " data = await state.get_data()\r\n name = data.get(\"name\") \r\n numberPoints.update({new_json_data[\"questionId\"]:new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints = numberPoints)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "abd97619ace14b600e13067590d8d3bf9dcd73e47d88b87b3078d8309795adbd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E127 continuation line over-indented for visual indent", + "markdown": "PEP 8: E127 continuation line over-indented for visual indent" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1578, + "startColumn": 26, + "charOffset": 72096, + "charLength": 2, + "snippet": { + "text": "f\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1576, + "startColumn": 1, + "charOffset": 72014, + "charLength": 208, + "snippet": { + "text": " print(date)\r\n events_message += f' \\n' \\\r\n f\"[{name}]({url}) \\n\" \\\r\n f\"⏱{date} \\n\" \\\r\n f'------------------------------'\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ad63fb7303f71fde8958f4706927950226b6b166fa12bc40c8a69ccea22e6d85" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1350, + "startColumn": 1, + "charOffset": 61386, + "charLength": 58, + "snippet": { + "text": "@dp.message_handler(state=ProlfileStates.edit_profile_age)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1348, + "startColumn": 1, + "charOffset": 61330, + "charLength": 241, + "snippet": { + "text": " await ProlfileStates.edit_profile_name.set()\r\n\r\n@dp.message_handler(state=ProlfileStates.edit_profile_age)\r\nasync def edit_age_profile(message: types.Message, state: FSMContext):\r\n new_age = message.text # получаем новый возраст\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "adb7b9b8245bac22f0513e69ab59ee3ad1508908b5f91d714ed7d2380f042ff0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (162 > 120 characters)", + "markdown": "PEP 8: E501 line too long (162 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 167, + "startColumn": 49, + "charOffset": 7197, + "charLength": 113, + "snippet": { + "text": "\"❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 165, + "startColumn": 1, + "charOffset": 7047, + "charLength": 386, + "snippet": { + "text": "#remove balance button in admin menu\r\nupdatebalanceusers = ReplyKeyboardMarkup(resize_keyboard=True)\r\nupdatebalanceconfirmbutton= KeyboardButton(text=\"❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗\")\r\nbackbuttontoadminmemubutton = KeyboardButton(text=\"⬅️Назад в меню\")\r\nupdatebalanceusers.row(updatebalanceconfirmbutton)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "af1c565477202a6752cf1f73ff74fee69b8d6e9d92475c87310696861c527195" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 374, + "startColumn": 1, + "charOffset": 15302, + "charLength": 50, + "snippet": { + "text": "@dp.message_handler(commands=['admin'], state='*')" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 372, + "startColumn": 1, + "charOffset": 15261, + "charLength": 212, + "snippet": { + "text": " await AdminPanel.admin_menu.set()\r\n\r\n@dp.message_handler(commands=['admin'], state='*')\r\nasync def admin_command(message: types.Message, state: FSMContext):\r\n # Проверка, что пользователь в списке админов\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "af9d5dc8f7e3a358ff68c2881ec8ecc7535c335bacc508bee2c876c2e2d1b470" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1063, + "startColumn": 38, + "charOffset": 47398, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1061, + "startColumn": 1, + "charOffset": 47330, + "charLength": 243, + "snippet": { + "text": " photo = message\r\n try:\r\n await state.update_data(photo = photo.photo[2].file_id)\r\n await bot.send_message(chat_id,\"Введите количество вопросов в коллекции:\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b02f8b2f310f4c22c2bde6da1c2316fb33fb321ace6a787eb791fcd5e94db660" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 11, + "startColumn": 9, + "charOffset": 445, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 9, + "startColumn": 1, + "charOffset": 371, + "charLength": 211, + "snippet": { + "text": "#menu buttons\r\nrkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nkprofile= KeyboardButton(text=\"👤Профиль\")\r\nkliderboard= KeyboardButton(text=\"📊Рейтинг\")\r\nkschedule= KeyboardButton(text=\"📆Календарь событий\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b0398984e9a52b3336705334a3f348eff03b9aa6c41403a86a55c7018b268df9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1561, + "startColumn": 1, + "charOffset": 71339, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1559, + "startColumn": 1, + "charOffset": 71183, + "charLength": 285, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система отображения мероприятий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n \r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b04de1b3b18fb98ce7daa9e81c5d79f98f853871c8fd9476c13fb3d13c73d28c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1112, + "startColumn": 43, + "charOffset": 49927, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1110, + "startColumn": 1, + "charOffset": 49740, + "charLength": 291, + "snippet": { + "text": " rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints = numberPoints)\r\n await state.update_data(rightAnswers = rightAnswers)\r\n querylist.append(new_json_data)\r\n await state.update_data(querylist = querylist)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b2a6f4a8cb9b7a5ed70b1fcb3e46646186eea8747fbdf0bfdde0b3f6d7757dab" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 114, + "startColumn": 60, + "charOffset": 4618, + "charLength": 7, + "snippet": { + "text": "web_app" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 112, + "startColumn": 1, + "charOffset": 4445, + "charLength": 352, + "snippet": { + "text": "userhelp_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\nuserhelp_ticket = KeyboardButton(text=\"📨Создать заявку\")\r\nguide = KeyboardButton(text=\"?📑Руководство пользователя\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/User%20guide/README.md'))\r\nuserhelp.row(userhelp_ticket)\r\nuserhelp.row(guide)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b2be33136d0fa383a3da1ae7352a14c174efaf3438565c2946bd98db0c1db36e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1307, + "startColumn": 1, + "charOffset": 59144, + "charLength": 121, + "snippet": { + "text": "#----------------------------------------------------------------------------------------------------------------------- " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1305, + "startColumn": 1, + "charOffset": 58989, + "charLength": 281, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система редактирования профиля\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b2f2788aa1409064c9b7dc7648e382cf270b522bf720689f374dc61a030aff4d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 64, + "startColumn": 60, + "charOffset": 4134, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 62, + "startColumn": 1, + "charOffset": 3979, + "charLength": 283, + "snippet": { + "text": " sh: Spreadsheet = gc.open_by_url(SPREADSHEET_URL)\n worksheet = sh.worksheet(\"📊Рейтинг\")\n response = supabase.table('UsersData').select('chat_id','full_name', 'balance', 'gender' ).order('balance', desc = True).execute()\n users_data = response.data\n worksheet.clear()" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b34236e6a417b30dd7259acb8d1d19690ce14a1f00f7edc47f96e84196149c2c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 5, + "startColumn": 33, + "charOffset": 248, + "charLength": 14, + "snippet": { + "text": "\"🙋‍♂️Мужчина\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 3, + "startColumn": 1, + "charOffset": 157, + "charLength": 211, + "snippet": { + "text": "#gender buttons\r\nikbg = InlineKeyboardMarkup(row_width=2)\r\nibm = InlineKeyboardButton(text=\"🙋‍♂️Мужчина\",callback_data='1')\r\nibf = InlineKeyboardButton(text=\"🙋‍♀️Женщина\",callback_data='0')\r\nikbg.add(ibm,ibf)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b39613ccbd50045ff014316bee7271887d2594bffa975b1a624ebfcaa6c3b29c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1587, + "startColumn": 1, + "charOffset": 72597, + "charLength": 26, + "snippet": { + "text": "#Система тикетов для юзера" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1585, + "startColumn": 1, + "charOffset": 72469, + "charLength": 279, + "snippet": { + "text": " \r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система тикетов для юзера\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b47f28aa8aaa19114b2eab9bf100bf48eac54aeb1b18738a2eade08cb722a0ec" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 684, + "startColumn": 1, + "charOffset": 31016, + "charLength": 51, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.promo_qrstart)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 682, + "startColumn": 1, + "charOffset": 30893, + "charLength": 289, + "snippet": { + "text": " await message.reply(\"Введите промокод, который хотите помстить в QR-код\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.promo_qrstart)\r\nasync def admin_promocodes_add_qr_set(message: types.Message, state: FSMContext):\r\n promo_code = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b614e422713b1c57f50eb44f2cfbc5f1117de0c1cd58e32d57cc5b791a4f72a0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 848, + "startColumn": 48, + "charOffset": 38421, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 846, + "startColumn": 1, + "charOffset": 38213, + "charLength": 336, + "snippet": { + "text": " await message.reply(\"Вы попали в раздел для выдачи права создания заданий пользователям. Нажмите на кнопку и следуйте указаниям.\", reply_markup=ruleskbm)\r\n\r\n@dp.message_handler(text=\"Выдать права\",state = AdminPanel.rules)\r\nasync def give_rules(message: types.Message, state: FSMContext):\r\n await AdminPanel.rules_addmaker.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b6293c91c906ba2f24944b24022aec22fcc8563988d82a561b41dcc6635cfbad" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1112, + "startColumn": 41, + "charOffset": 49925, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1110, + "startColumn": 1, + "charOffset": 49740, + "charLength": 291, + "snippet": { + "text": " rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints = numberPoints)\r\n await state.update_data(rightAnswers = rightAnswers)\r\n querylist.append(new_json_data)\r\n await state.update_data(querylist = querylist)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b67ffdce617c68cc9ba791129dee2279a401970ad4677ac53ca0773238c059e2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1210, + "startColumn": 1, + "charOffset": 54397, + "charLength": 71, + "snippet": { + "text": "@dp.callback_query_handler(state=RegistrationStates.waiting_for_gender)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1208, + "startColumn": 1, + "charOffset": 54379, + "charLength": 209, + "snippet": { + "text": " return\r\n\r\n@dp.callback_query_handler(state=RegistrationStates.waiting_for_gender)\r\nasync def handle_gender_callback(query: types.CallbackQuery, state: FSMContext):\r\n chat_id = query.message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b6a5f57c96bbbede971fb1529b081286e811642f3e159a6e52f024967e1ee5ec" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 921, + "startColumn": 3, + "charOffset": 40944, + "charLength": 10, + "snippet": { + "text": "rules_text" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 919, + "startColumn": 1, + "charOffset": 40900, + "charLength": 138, + "snippet": { + "text": " event_makers = roles['event_makers']\r\n\r\n rules_text = \"📝 Пользователи с правами ивент-мейкера:\\n\\n\"\r\n\r\n for chat_id in event_makers:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b6c8942107ef1ea1550f93b32358ccfdd3775131cf4f9854c2faf583902bda30" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 75, + "startColumn": 18, + "charOffset": 2927, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 73, + "startColumn": 1, + "charOffset": 2894, + "charLength": 74, + "snippet": { + "text": "\r\n \r\n def list(self,**kwargs) -> List[User]: \r\n ...\r\n" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b6eb65bad97ff43fa5d26b49b1c540fc2d99757536fe60c56dc00687cd6b12c2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (156 > 120 characters)", + "markdown": "PEP 8: E501 line too long (156 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 17, + "startColumn": 111, + "charOffset": 543, + "charLength": 12, + "snippet": { + "text": "'user_state'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 15, + "startColumn": 1, + "charOffset": 384, + "charLength": 273, + "snippet": { + "text": " try:\r\n chat_id:int = int(id)\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','tgusr','user_state').eq('chat_id', chat_id).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b6f0ecb120405d260fdc378cffc27e62af0730d7ecdc8e386c1473b196d5b915" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ':'", + "markdown": "PEP 8: E203 whitespace before ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 10, + "startColumn": 20, + "charOffset": 182, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 8, + "startColumn": 1, + "charOffset": 150, + "charLength": 61, + "snippet": { + "text": " ...\r\n \r\n def set(self,user : User) -> None:\r\n ...\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b78750fb05c9db541a0ef2199df10859fa1173e8852969234ede4cf1d45dd011" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 29, + "startColumn": 120, + "charOffset": 1259, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 27, + "startColumn": 1, + "charOffset": 1031, + "charLength": 302, + "snippet": { + "text": " sh: Spreadsheet = gc.open_by_url(ADMIN_SPREADSHEET_URL)\n worksheet = sh.worksheet(\"📊 Админ Рейтинг\")\n response = supabase.table('UsersData').select('full_name', 'chat_id', 'tgusr', 'balance', 'gender').order('balance',desc=True).execute()\n users_data = response.data\n worksheet.clear()" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b7d452700bd634f538cffbc670f048a3c31d63e32c235714c63add48ac58544d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1559, + "startColumn": 1, + "charOffset": 71183, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1557, + "startColumn": 1, + "charOffset": 71179, + "charLength": 281, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система отображения мероприятий\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b8063692ef4ad0186841a57896b3da3e8f3dfdd67a4fa04db28690cb6424959d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1905, + "startColumn": 1, + "charOffset": 86439, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1903, + "startColumn": 1, + "charOffset": 86286, + "charLength": 304, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система для Telegram Web App\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\nif __name__ == '__main__':\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b9eb0753a8f0e86c819d08d30a621d245a700f1f99a1c7fdaf5a75c55a3a199c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1877, + "startColumn": 1, + "charOffset": 85004, + "charLength": 121, + "snippet": { + "text": "#------------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1875, + "startColumn": 1, + "charOffset": 84826, + "charLength": 331, + "snippet": { + "text": "#------------------------------------------------------------------------------------------------------------------------\r\n#Система отлова людей без state и обработчик стикеров\r\n#------------------------------------------------------------------------------------------------------------------------\r\n\r\n# Ответ на отправку стикера\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ba29f8c334ca1989fbdf6df2a0a01408dfeb2a531927b730f26e8ee664d4ce19" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 619, + "startColumn": 1, + "charOffset": 27788, + "charLength": 53, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.change_user_age)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 617, + "startColumn": 1, + "charOffset": 27648, + "charLength": 329, + "snippet": { + "text": " await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_age)\r\nasync def admin_change_user_age_handler(message: types.Message, state: FSMContext):\r\n username = message.text # получаем username\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "bab312fb4f58a687160602cd4386715095a95f45834c842d8f3616ce6a020eb3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 304, + "startColumn": 21, + "charOffset": 11839, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 302, + "startColumn": 1, + "charOffset": 11768, + "charLength": 143, + "snippet": { + "text": " if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r\n numberPoints: dict = {}\r\n if rightAnswers == None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "bc7fff169f9f5bd09a762635ef6aac31f07460e0d96ebbfc4fd5ef2b5423979b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 394, + "startColumn": 1, + "charOffset": 16161, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 392, + "startColumn": 1, + "charOffset": 15997, + "charLength": 289, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Система обнуления баланса пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "bd0ca0c4dbde9b3bf48dc4fde37d90319f427a54fdbb9a67320932d31d07beea" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1111, + "startColumn": 43, + "charOffset": 49869, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1109, + "startColumn": 1, + "charOffset": 49625, + "charLength": 354, + "snippet": { + "text": " numberPoints.update({new_json_data[\"questionId\"]:new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints = numberPoints)\r\n await state.update_data(rightAnswers = rightAnswers)\r\n querylist.append(new_json_data)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "bd2ff038abd8c63ce1feb11cc3c2ca7787b9696fef4589191d95e15dc46d6aef" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 183, + "startColumn": 82, + "charOffset": 8309, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 181, + "startColumn": 1, + "charOffset": 8162, + "charLength": 274, + "snippet": { + "text": "#help buttons\r\nhelpinlinereg = InlineKeyboardMarkup(row_width=1)\r\nhelpinlinenaming = InlineKeyboardButton(text=\"Помощь\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/README.md'))\r\nhelpinlinereg.add(helpinlinenaming)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "bdbeb7cf94f9adb0864db00e9ac4030743c6eb242114d871ed26cde87470c5c4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 175, + "startColumn": 58, + "charOffset": 7613, + "charLength": 7, + "snippet": { + "text": "web_app" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 173, + "startColumn": 1, + "charOffset": 7491, + "charLength": 386, + "snippet": { + "text": "#rating buttons\r\nikbmrating = InlineKeyboardMarkup(row_width=1)\r\nibrating = InlineKeyboardButton(text=\"📊Полный рейтинг\", web_app = WebAppInfo(url ='https://docs.google.com/spreadsheets/d/e/2PACX-1vQFzN5HRvQhS5j4kDcv9wWH3uucCqp1AFmu2ErZYikmmJSshj1f16v7ry013vde0y6OYVWeSsVtgaKT/pubhtml?gid=0&single=true') )\r\nikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "be1561453e9171d53954229a1396fcbc6bb03ef7a916d5f004095e63737a9d6c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1132, + "startColumn": 153, + "charOffset": 50961, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1130, + "startColumn": 1, + "charOffset": 50727, + "charLength": 360, + "snippet": { + "text": " description = data.get(\"description\")\r\n photo = data.get(\"photo\")\r\n supabase.table('TaskCollection').insert({'name': name, 'description': description, 'photo': photo, 'counter': counter, 'url': url,'numberPoints':numberPoints, 'rightAnswers':rightAnswers}).execute()\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "be1d901d52f0fdb5c6c5a42c5af141333038b31e25710a5b41096ef11d65cec5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 13, + "startColumn": 3, + "charOffset": 214, + "charLength": 3, + "snippet": { + "text": "def" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 11, + "startColumn": 1, + "charOffset": 201, + "charLength": 59, + "snippet": { + "text": " ...\r\n\r\n def delete(self,id : str) -> None:\r\n ...\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "be329b5596f8675421f52496616b7bfd97d53e30d82736c5cfa5368c89356d2f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1394, + "startColumn": 3, + "charOffset": 63516, + "charLength": 2, + "snippet": { + "text": "if" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1392, + "startColumn": 1, + "charOffset": 63472, + "charLength": 98, + "snippet": { + "text": " qr_code = pyzbar.decode(photo_image)\r\n\r\n if qr_code:\r\n qr_code = qr_code[0].data.decode()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "bf21967e7b9c9f7f141e6f74c1fc18dc0b9f5d6edaf0e751d185f7a260aefe20" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1465, + "startColumn": 1, + "charOffset": 66335, + "charLength": 121, + "snippet": { + "text": "#----------------------------------------------------------------------------------------------------------------------- " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1463, + "startColumn": 1, + "charOffset": 66179, + "charLength": 282, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система рейтинга(Google sheets)\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c15e14cb25a7a392450f0603b1e327949a43ccc3738472e8896ebf3259ee3268" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 365, + "startColumn": 1, + "charOffset": 14736, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 363, + "startColumn": 1, + "charOffset": 14593, + "charLength": 268, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Event maker panel\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c215d51103611b0d998a18e58fb0a4a02a384817f1a7eedb117a5f8db02ec2ee" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (121 > 120 characters)", + "markdown": "PEP 8: E501 line too long (121 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 629, + "startColumn": 121, + "charOffset": 28465, + "charLength": 1, + "snippet": { + "text": ")" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 627, + "startColumn": 1, + "charOffset": 28254, + "charLength": 269, + "snippet": { + "text": " admin.user_state = str(AdminPanel.change_user_agestart)\r\n users.set(admin)\r\n await message.reply(\"Введите новый возраст пользователя\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n \r\n # Проверяем, есть ли такой пользователь\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c2950f9490233cdeedd4bcc9eacd642309c9e20b85526a6a5b94412cabf49cde" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 10, + "startColumn": 22, + "charOffset": 229, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 8, + "startColumn": 1, + "charOffset": 155, + "charLength": 189, + "snippet": { + "text": "class SupabaseUserRepository(UserRepository):\r\n \r\n def __init__(self,client:Client, table_name:str = 'UsersData'):\r\n self.client = client\r\n self.table_name = table_name\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c2a43f5e2c2e6ad0eb820c0f251a04b44bd0a8d575829c1bcef3508e83ef4cfe" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 175, + "startColumn": 79, + "charOffset": 7634, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 173, + "startColumn": 1, + "charOffset": 7491, + "charLength": 386, + "snippet": { + "text": "#rating buttons\r\nikbmrating = InlineKeyboardMarkup(row_width=1)\r\nibrating = InlineKeyboardButton(text=\"📊Полный рейтинг\", web_app = WebAppInfo(url ='https://docs.google.com/spreadsheets/d/e/2PACX-1vQFzN5HRvQhS5j4kDcv9wWH3uucCqp1AFmu2ErZYikmmJSshj1f16v7ry013vde0y6OYVWeSsVtgaKT/pubhtml?gid=0&single=true') )\r\nikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c3a010bb9e1fb0f250318715b36f97a893d65e03d8926e8c31dcf615798efd19" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (309 > 120 characters)", + "markdown": "PEP 8: E501 line too long (309 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 83, + "startColumn": 24, + "charOffset": 5817, + "charLength": 286, + "snippet": { + "text": "\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 81, + "startColumn": 1, + "charOffset": 5470, + "charLength": 666, + "snippet": { + "text": " link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"\n else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"\n\n if user['balance'] < 1:" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c3a2eacc8b7ab04eb77d3090d58cbff6cc1baab1f086d33f5605f90d09aef390" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 848, + "startColumn": 46, + "charOffset": 38419, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 846, + "startColumn": 1, + "charOffset": 38213, + "charLength": 336, + "snippet": { + "text": " await message.reply(\"Вы попали в раздел для выдачи права создания заданий пользователям. Нажмите на кнопку и следуйте указаниям.\", reply_markup=ruleskbm)\r\n\r\n@dp.message_handler(text=\"Выдать права\",state = AdminPanel.rules)\r\nasync def give_rules(message: types.Message, state: FSMContext):\r\n await AdminPanel.rules_addmaker.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c423a0d36dca61ddaaea95e7550bf35568160bfae10c5dbab5976d51665a943a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 967, + "startColumn": 1, + "charOffset": 42863, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 965, + "startColumn": 1, + "charOffset": 42840, + "charLength": 285, + "snippet": { + "text": " users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система заданий\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c58da02042953ced9c42ab94c9fa696ba441ecba8d9a1a7df4c70bf7e2b84b4b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 398, + "startColumn": 68, + "charOffset": 16486, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 396, + "startColumn": 1, + "charOffset": 16285, + "charLength": 311, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"❗Обнулить баланс всех пользователей❗\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def update_users_balance_confirm(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance_confirm.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c6bcaeaddb7dea33dd4a6624b85293dc5be028a347f07bae83ed6a44f5de9253" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 99, + "startColumn": 1, + "charOffset": 7284, + "charLength": 30, + "snippet": { + "text": "def rating_update_over_time():" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 97, + "startColumn": 1, + "charOffset": 7257, + "charLength": 126, + "snippet": { + "text": " admin_rating_udpate()\n\ndef rating_update_over_time():\n rating_update()\n schedule.every(10).minutes.do(rating_update)" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c6d542b71deaa14f9306d455e53970c2b91c613bd6ae3657cfdc434a60e5e5b0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 899, + "startColumn": 3, + "charOffset": 40340, + "charLength": 4, + "snippet": { + "text": "with" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 897, + "startColumn": 1, + "charOffset": 40294, + "charLength": 109, + "snippet": { + "text": " chat_id = user_data.data[0]['chat_id']\r\n\r\n with open('roles.json', 'r') as f:\r\n roles = json.load(f)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c7a30e736f8417e9cf00d2baadc88cd24d81fbe2f12cce5cd875155d1e227fe0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 72, + "startColumn": 75, + "charOffset": 2801, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 70, + "startColumn": 1, + "charOffset": 2670, + "charLength": 243, + "snippet": { + "text": "def get_user_info_by_id(chat_id:int ) -> str:\r\n try:\r\n response = supabase.table('UsersData').select('full_name','gender','age','balance','tgusr').eq('chat_id', chat_id).execute()\r\n return response\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c828afd6edfb98c6d49dea3aeca9f57bb3dfcfeb26d1919186eb0941aee058d9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1063, + "startColumn": 40, + "charOffset": 47400, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1061, + "startColumn": 1, + "charOffset": 47330, + "charLength": 243, + "snippet": { + "text": " photo = message\r\n try:\r\n await state.update_data(photo = photo.photo[2].file_id)\r\n await bot.send_message(chat_id,\"Введите количество вопросов в коллекции:\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c91b34071bce79e857d2ab4b1c176603a0324ab57017935e70d3757f7ddd7d4a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 508, + "startColumn": 1, + "charOffset": 22147, + "charLength": 62, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.change_user_balancestart)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 506, + "startColumn": 1, + "charOffset": 22123, + "charLength": 226, + "snippet": { + "text": " users.set(admin)\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_balancestart)\r\nasync def admin_change_user_balance_handler(message: types.Message, state: FSMContext):\r\n username = message.text # получаем username\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c99d16ac7901fb14ce6935d674f4c59ae9e9a141ad2db3ca20e5ea898d13e7fc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 72, + "startColumn": 66, + "charOffset": 2792, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 70, + "startColumn": 1, + "charOffset": 2670, + "charLength": 243, + "snippet": { + "text": "def get_user_info_by_id(chat_id:int ) -> str:\r\n try:\r\n response = supabase.table('UsersData').select('full_name','gender','age','balance','tgusr').eq('chat_id', chat_id).execute()\r\n return response\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ca00a037600faced8f5c607b4ea61b99a77aa38d8e25797f5eadad2d7244d6d6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1754, + "startColumn": 80, + "charOffset": 80352, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1752, + "startColumn": 1, + "charOffset": 80190, + "charLength": 302, + "snippet": { + "text": " counter = data.get('counter')\r\n await state.update_data(counter = counter)\r\n task = supabase.table('TaskCollection').select('name','description','photo','url').execute().data[int(counter)]\r\n text = f\"{task['name']}\\n{task['description']}\"\r\n await state.update_data(name = task['name'])\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cb18183f91e690332e201e1fb2060cf7366a0e701ee3c2fe30e1bb09c8675cd4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1058, + "startColumn": 68, + "charOffset": 47185, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1056, + "startColumn": 1, + "charOffset": 47069, + "charLength": 260, + "snippet": { + "text": " await AdminPanel.taskmenu_photowait.set()\r\n\r\n@dp.message_handler(content_types= types.ContentType.PHOTO, state = AdminPanel.taskmenu_photowait)\r\nasync def admin_taskmenu_photowait(message: types.Message , state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cc41f2d07c86473c40850e0dbaf4253838bf2ae91929674fe95d108a21c1928d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (150 > 120 characters)", + "markdown": "PEP 8: E501 line too long (150 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1609, + "startColumn": 71, + "charOffset": 73821, + "charLength": 78, + "snippet": { + "text": " телеграм!Укажите его в своём профиле и тогда администрация сможет вам помочь." + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1607, + "startColumn": 1, + "charOffset": 73622, + "charLength": 431, + "snippet": { + "text": " url = 'https://ru.the-hitech.net/7264375-how-to-create-a-username-on-telegram'\r\n await bot.send_message(chat_id,\r\n f\"У вас нет \" + f\"[{nome}]({url})\" + f\" телеграм!Укажите его в своём профиле и тогда администрация сможет вам помочь.\",\r\n reply_markup=rkbm, disable_web_page_preview=True,\r\n parse_mode=types.ParseMode.MARKDOWN)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cc79bb02f43dcad57cabee628c3f0bbcd09a5fa83a082459539afa0e0e05ca46" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (157 > 120 characters)", + "markdown": "PEP 8: E501 line too long (157 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1338, + "startColumn": 115, + "charOffset": 60818, + "charLength": 12, + "snippet": { + "text": "new_fullname" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1336, + "startColumn": 1, + "charOffset": 60646, + "charLength": 290, + "snippet": { + "text": " if FIO[word][0].istitle():\r\n cnt += 1\r\n if new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO):\r\n user = users.get(chat_id)\r\n user.full_name = new_fullname\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ccf56e259c2c11f2db33c5b42a049d4c47b73318623a8f658267b5871fe679bf" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ','", + "markdown": "PEP 8: E203 whitespace before ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 701, + "startColumn": 96, + "charOffset": 31778, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 699, + "startColumn": 1, + "charOffset": 31660, + "charLength": 192, + "snippet": { + "text": " byte_io.seek(0)\r\n\r\n await message.reply_photo(byte_io, caption=\"Вот QR\\\\-код для промокода \" + code(promo_code) , reply_markup=admpromo, parse_mode=\"MarkdownV2\")\r\n\r\n byte_io.close()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cd59b06db0f9d54998a11c2f072a288a9b91149943359c3ea77bc8bdab5cc7ce" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 908, + "startColumn": 3, + "charOffset": 40566, + "charLength": 5, + "snippet": { + "text": "await" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 906, + "startColumn": 1, + "charOffset": 40537, + "charLength": 123, + "snippet": { + "text": " json.dump(roles, f)\r\n\r\n await message.reply(\"Права успешно удалены\", reply_markup=ruleskbm)\r\n\r\n await state.finish()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cdcf931653e55239760ad20d1f7a9d3fcaa8e1075f4ada9d057261e89ad5cc2c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 916, + "startColumn": 3, + "charOffset": 40836, + "charLength": 4, + "snippet": { + "text": "with" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 914, + "startColumn": 1, + "charOffset": 40766, + "charLength": 133, + "snippet": { + "text": "async def show_rules(message: types.Message, state: FSMContext):\r\n\r\n with open('roles.json', 'r') as f:\r\n roles = json.load(f)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cf2fca36ae001f62ccc61f8132744550f48fdc78404f315cb8d46b2ddcfe006d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E303 too many blank lines (4)", + "markdown": "PEP 8: E303 too many blank lines (4)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 54, + "startColumn": 1, + "charOffset": 1785, + "charLength": 22, + "snippet": { + "text": "# Validation BAD words" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 52, + "startColumn": 1, + "charOffset": 1781, + "charLength": 111, + "snippet": { + "text": "\r\n\r\n# Validation BAD words\r\n\r\nstandart_dirt = [1093, 1091, 1081, 124, 1073, 1083, 1103, 124, 1077, 1073, 124, \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cf8a1f2da13396b5a257bdb91d5594b037f981c00944c5b8b11566bf69a486ef" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (168 > 120 characters)", + "markdown": "PEP 8: E501 line too long (168 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 183, + "startColumn": 83, + "charOffset": 8310, + "charLength": 84, + "snippet": { + "text": "'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/README.md'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 181, + "startColumn": 1, + "charOffset": 8162, + "charLength": 274, + "snippet": { + "text": "#help buttons\r\nhelpinlinereg = InlineKeyboardMarkup(row_width=1)\r\nhelpinlinenaming = InlineKeyboardButton(text=\"Помощь\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/README.md'))\r\nhelpinlinereg.add(helpinlinenaming)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cf91124fe0e5d397832f1f25a4ccd0d8ef581fc776831cd0e50a02acaaab34a7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 62, + "startColumn": 80, + "charOffset": 2453, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 60, + "startColumn": 1, + "charOffset": 2296, + "charLength": 218, + "snippet": { + "text": " def set(self,user : User) -> None:\r\n if self.get(user.chat_id): \r\n self.client.table(self.table_name).update(user.dict()).eq('chat_id',user.chat_id).execute()\r\n else:\r\n #insert\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cff540a920453d10387dd76e6296d3756eae49e78fd98f2809388f8499c4ecf9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E122 continuation line missing indentation or outdented", + "markdown": "PEP 8: E122 continuation line missing indentation or outdented" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 481, + "startColumn": 9, + "charOffset": 20691, + "charLength": 2, + "snippet": { + "text": "f\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 479, + "startColumn": 1, + "charOffset": 20540, + "charLength": 371, + "snippet": { + "text": " profile_message = f\"Профиль пользователя {username}:\\n\\n\" \\\r\n f\"{gender}{pseudo}, {age} лет\\n└Место в топе: {counter+1}\\n\\n\" \\\r\n f\"💰Баланс: {balance}🔘 поинтов\\n└Мероприятий посещено: ?\"\r\n await bot.send_photo(chat_id=chat_id, photo=image, caption=profile_message, reply_markup=admue)\r\n await AdminPanel.get_info_about_user_end.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cffb3f84999ea913dee5d9a3bf5c0c91f9b79a3733a26c196ced2269ab56a2fd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (141 > 120 characters)", + "markdown": "PEP 8: E501 line too long (141 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1084, + "startColumn": 116, + "charOffset": 48539, + "charLength": 12, + "snippet": { + "text": "reply_markup" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1082, + "startColumn": 1, + "charOffset": 48361, + "charLength": 272, + "snippet": { + "text": " else:\r\n await state.update_data(counter = counter)\r\n await bot.send_message(chat_id,\"Коллекция создана успешно! Перейдите пожалуйста, к составлению заданий!⬇️\",reply_markup=surveywebapp)\r\n await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d0657a69ef15d6f9c11746b4245b71248ff7be5f3b3fc91c84ba2c5702f8555e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E722 do not use bare 'except'", + "markdown": "PEP 8: E722 do not use bare 'except'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1651, + "startColumn": 5, + "charOffset": 75696, + "charLength": 6, + "snippet": { + "text": "except" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1649, + "startColumn": 1, + "charOffset": 75547, + "charLength": 306, + "snippet": { + "text": " await bot.send_message(chat_id, \"Заявка успешно отправлена! В ближайшее время с вами свяжется администратор.\", reply_markup=userhelp)\r\n\r\n except:\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, \"Извините, произошла ошибка при отправке заявки\", reply_markup=userhelp)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d178991cee3d33fc4b4a7807b5991ad5717f5d4eda8ffd54a59aa0fce02f9f17" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 905, + "startColumn": 3, + "charOffset": 40501, + "charLength": 4, + "snippet": { + "text": "with" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 903, + "startColumn": 1, + "charOffset": 40449, + "charLength": 114, + "snippet": { + "text": " roles['event_makers'].remove(str(chat_id))\r\n\r\n with open('roles.json', 'w') as f:\r\n json.dump(roles, f)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d1cd29f6687d755b88abad9511203049ed49f4dffa85d9f5cd9e7e677bf6dcc4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 22, + "startColumn": 1, + "charOffset": 813, + "charLength": 12, + "snippet": { + "text": "#promo_menuu" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 20, + "startColumn": 1, + "charOffset": 787, + "charLength": 200, + "snippet": { + "text": "rkbm.row(khelp,kpromo)\r\n\r\n#promo_menuu\r\npromo_kb = ReplyKeyboardMarkup(resize_keyboard=True)\r\npromo_kb_qrscanner = KeyboardButton(text=\"📲QR-код\", web_app=WebAppInfo(url=\"https://bpb-qr.pages.dev/\"))\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d45da06ac6981e33de86644d4c9a75d6309f32be6e7d6613c12b7b51d942887f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (121 > 120 characters)", + "markdown": "PEP 8: E501 line too long (121 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 690, + "startColumn": 121, + "charOffset": 31476, + "charLength": 1, + "snippet": { + "text": ")" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 688, + "startColumn": 1, + "charOffset": 31282, + "charLength": 269, + "snippet": { + "text": "\r\n if not promocode_data.data or promocode_data.data[0]['cost'] == 0:\r\n await message.reply(\"Такого промокода не существует или лимит его использования исчерпан\", reply_markup=admpromo)\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d4c8eebb7d9da892fbfbeb211fcda92168334f8117c0812f6e5744a7fbb4ff56" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1116, + "startColumn": 81, + "charOffset": 50133, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1114, + "startColumn": 1, + "charOffset": 49980, + "charLength": 268, + "snippet": { + "text": " await state.update_data(querylist = querylist)\r\n if counter > 1:\r\n await bot.send_message(chat_id, \"Пожалуйста, заполните следующий вопрос\",reply_markup=surveywebapp)\r\n await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n counter -= 1\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d57b2c597405edd78080c7e4b01086f13a52254e28e9391fb911378a0e016e36" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 545, + "startColumn": 1, + "charOffset": 23919, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 543, + "startColumn": 1, + "charOffset": 23754, + "charLength": 290, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования ФИО пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d58babf4629d6e3e3702ca6faebfdb6d1c85665e47690f975feaf2618c90efdd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1043, + "startColumn": 39, + "charOffset": 46389, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1041, + "startColumn": 1, + "charOffset": 46276, + "charLength": 267, + "snippet": { + "text": " tasks_name.append(name_table['name'])\r\n if name in tasks_name:\r\n await bot.send_message(chat_id,\"Введенное имя уже существует, введите другое\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.AdminPanel.taskmenu.set()\r\n else:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d58e263b21ca1e3afdbe68d68eb25feb69b82215fa5e3c2ff7bd69d3f66ad623" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 38, + "startColumn": 102, + "charOffset": 1449, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 36, + "startColumn": 1, + "charOffset": 1292, + "charLength": 278, + "snippet": { + "text": " except ValueError:\r\n tgusr:str = id\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','chat_id','user_state').eq('tgusr', tgusr).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d5d98285bfbe0dfc1d1fb19e3e8f192b3ecdcd7162cecfcdc343a2f24a9a528a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 37, + "startColumn": 18, + "charOffset": 1337, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 35, + "startColumn": 1, + "charOffset": 1277, + "charLength": 263, + "snippet": { + "text": " )\r\n except ValueError:\r\n tgusr:str = id\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','chat_id','user_state').eq('tgusr', tgusr).execute()\r\n item = response.data[0]\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d65614ef439aece76a98bdf987d14688870b9b69fabc02a5287e44923105008e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 198, + "startColumn": 55, + "charOffset": 8957, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 196, + "startColumn": 1, + "charOffset": 8828, + "charLength": 367, + "snippet": { + "text": "#survey web-app\r\nsurveywebapp = ReplyKeyboardMarkup(resize_keyboard=True)\r\nsurvquestcreate = KeyboardButton(text=\"Создать вопрос\",web_app=WebAppInfo(url = 'https://survey-web-app.pages.dev/edit?json=%7B%22surveyData%22%3A%20%5B%7B%22questionId%22%3A%2069%2C%20%22question%22%3A%20%22%22%2C%20%22choices%22%3A%20%5B%5D%7D%5D%7D'))\r\nsurveywebapp.row(survquestcreate)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d75a933ea69096140fabad4af6053167afdac718a48bf63b5411849c0baff2d8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ':'", + "markdown": "PEP 8: E203 whitespace before ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 44, + "startColumn": 45, + "charOffset": 1637, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 42, + "startColumn": 1, + "charOffset": 1526, + "charLength": 227, + "snippet": { + "text": " print(f\"Error updating user fullname for {tgusr}: {e}\")\r\n\r\ndef update_user_age_by_tgusr(tgusr: str, age : int):\r\n try:\r\n response = supabase.table(table_name).update({'age': age}).eq('tgusr', tgusr).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d81b7c5c1ef2835e64303eb73137bbbac9e18a801303271c5995f9965556a68f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1388, + "startColumn": 3, + "charOffset": 63373, + "charLength": 11, + "snippet": { + "text": "photo_bytes" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1386, + "startColumn": 1, + "charOffset": 63293, + "charLength": 176, + "snippet": { + "text": "\r\n photo_bytes = await message.photo[-1].download(destination=io.BytesIO())\r\n photo_bytes = photo_bytes.getvalue()\r\n\r\n photo_image = PIL.Image.open(io.BytesIO(photo_bytes))\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d90fa2b9fbf60f73330431a7e3787b56c374b60bd572f6ee3eb5099e5f7dc036" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1893, + "startColumn": 1, + "charOffset": 85775, + "charLength": 29, + "snippet": { + "text": "#Система для Telegram Web App" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1891, + "startColumn": 1, + "charOffset": 85651, + "charLength": 278, + "snippet": { + "text": "\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система для Telegram Web App\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "da3f4ef95808ccf9b16e25454e3c59e1282138fd79df3fdbda73e0ade1cdc497" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 398, + "startColumn": 62, + "charOffset": 16480, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 396, + "startColumn": 1, + "charOffset": 16285, + "charLength": 311, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"❗Обнулить баланс всех пользователей❗\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def update_users_balance_confirm(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance_confirm.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "da6653bedb99fe37175023fd3d56b25e95f37e614bf933d155ded319d2f392b4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 608, + "startColumn": 1, + "charOffset": 27171, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 606, + "startColumn": 1, + "charOffset": 27001, + "charLength": 295, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования возраста пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "daf595a889435ec174bcda03e77d8769ffd717138f2e37100c1cbca18c0d173c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1083, + "startColumn": 42, + "charOffset": 48413, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1081, + "startColumn": 1, + "charOffset": 48297, + "charLength": 334, + "snippet": { + "text": " await AdminPanel.taskmenu_collection_counterwait.set()\r\n else:\r\n await state.update_data(counter = counter)\r\n await bot.send_message(chat_id,\"Коллекция создана успешно! Перейдите пожалуйста, к составлению заданий!⬇️\",reply_markup=surveywebapp)\r\n await AdminPanel.taskmenu_collection_surveywebapp.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "db162cf8149f3bd0b93779004cc1367337433eeb503ec3ce8117119962227645" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1849, + "startColumn": 46, + "charOffset": 84199, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1847, + "startColumn": 1, + "charOffset": 84123, + "charLength": 195, + "snippet": { + "text": "\r\n ident = generate_code()\r\n supabase.table('Passd').insert({'chat_id':chat_id, 'name':name, 'id': ident}).execute()\r\n new_balance = user_balance + score\r\n user.balance = new_balance\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "db5d7188b600ae2f9f30ff9e13b28f110da93da31e3cc6e7f85d34a113d03f33" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 62, + "startColumn": 1, + "charOffset": 2135, + "charLength": 30, + "snippet": { + "text": "class MenuStates(StatesGroup):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 60, + "startColumn": 1, + "charOffset": 2115, + "charLength": 109, + "snippet": { + "text": "\r\n# Состояния меню\r\nclass MenuStates(StatesGroup):\r\n waiting_for_profile = State()\r\n profile = State()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "dc86805650f51e209cd9dca7289286a2e12a3d48708060e63f25e6b004630434" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E712 comparison to False should be 'if cond is False:' or 'if not cond:'", + "markdown": "PEP 8: E712 comparison to False should be 'if cond is False:' or 'if not cond:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1236, + "startColumn": 97, + "charOffset": 55499, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1234, + "startColumn": 1, + "charOffset": 55345, + "charLength": 250, + "snippet": { + "text": " if FIO[word][0].istitle():\r\n cnt += 1\r\n if name.replace(\" \", \"\").isalpha() and len(name) < 40 and len(name) >= 5 and detector(name) == False and cnt == len(FIO):\r\n user = users.get(chat_id)\r\n user.full_name = name\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "dc9c2d165ed56a88b7a4f5135b95b11caca36e912ec9a11ac47c4b8c6c2f10f8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 67, + "startColumn": 1, + "charOffset": 2588, + "charLength": 32, + "snippet": { + "text": "#usermaker add task menu buttons" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 65, + "startColumn": 1, + "charOffset": 2584, + "charLength": 151, + "snippet": { + "text": "\r\n\r\n#usermaker add task menu buttons\r\neventtasks = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmcreatetask = KeyboardButton(text=\"Создать коллекцию\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "dcc4cb046558a36d00f51340272c2431215b7ef701ee00353bf703739506d50e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 442, + "startColumn": 1, + "charOffset": 18803, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 440, + "startColumn": 1, + "charOffset": 18634, + "charLength": 294, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Система получения информации о пользователе\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "dcf1cc807144e3dd8409edbeef5e58146fddcd6b70ea5c651570728535c10923" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1904, + "startColumn": 1, + "charOffset": 86408, + "charLength": 29, + "snippet": { + "text": "#Система для Telegram Web App" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1902, + "startColumn": 1, + "charOffset": 86284, + "charLength": 278, + "snippet": { + "text": "\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система для Telegram Web App\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "dd70ae67faef81cf2d1f5d40a119a5b144a71745ed4f0bcd5715315d6a1cab4d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (147 > 120 characters)", + "markdown": "PEP 8: E501 line too long (147 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1535, + "startColumn": 37, + "charOffset": 69750, + "charLength": 110, + "snippet": { + "text": "\"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1533, + "startColumn": 1, + "charOffset": 69642, + "charLength": 283, + "snippet": { + "text": " chat_id = message.chat.id\r\n tgname = message.from_user.username\r\n if tgname == None and select == \"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\":\r\n user = users.get(chat_id)\r\n users.delete(user)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ddad46863ade31a4c84d446b6a726a91d7db0816ce0c4b676f33e151e24535e0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1525, + "startColumn": 1, + "charOffset": 69211, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1523, + "startColumn": 1, + "charOffset": 69207, + "charLength": 275, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система удаления профиля\r\n#----------------------------------------------------------------------------------------------------------------------- \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ddba986137e8dcf7262e6bd39228a3e7ef44beb78cca72028f5bf1f4f63477ff" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 495, + "startColumn": 1, + "charOffset": 21340, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 493, + "startColumn": 1, + "charOffset": 21332, + "charLength": 298, + "snippet": { + "text": " \r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования баланса пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "de1c167c1fdc5705428d9e172af166d5b72f8ccb722e2ed6d982012449729fdb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 6, + "startColumn": 33, + "charOffset": 315, + "charLength": 14, + "snippet": { + "text": "\"🙋‍♀️Женщина\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 4, + "startColumn": 1, + "charOffset": 174, + "charLength": 196, + "snippet": { + "text": "ikbg = InlineKeyboardMarkup(row_width=2)\r\nibm = InlineKeyboardButton(text=\"🙋‍♂️Мужчина\",callback_data='1')\r\nibf = InlineKeyboardButton(text=\"🙋‍♀️Женщина\",callback_data='0')\r\nikbg.add(ibm,ibf)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "de9812f837a0b17549d8d4f48a9e1f47a4fcb66fa866d2970b55b04873c648ec" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (122 > 120 characters)", + "markdown": "PEP 8: E501 line too long (122 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1381, + "startColumn": 101, + "charOffset": 63076, + "charLength": 21, + "snippet": { + "text": "cancel_button_to_main" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1379, + "startColumn": 1, + "charOffset": 62748, + "charLength": 396, + "snippet": { + "text": "async def enter_promocode(message: types.Message):\r\n await bot.send_message(message.chat.id, \"Введите , пожалуйста , ваш промокод сообщением или отправьте боту изображение QR-кода\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(message.chat.id, \"Если хотите вернуться , то нажмите сюда\", reply_markup=cancel_button_to_main)\r\n await MenuStates.promocodestart.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "dfd8cc540c942879af872b93ed19eca42b571bd3db5459f08ea690068f87bc75" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1058, + "startColumn": 66, + "charOffset": 47183, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1056, + "startColumn": 1, + "charOffset": 47069, + "charLength": 260, + "snippet": { + "text": " await AdminPanel.taskmenu_photowait.set()\r\n\r\n@dp.message_handler(content_types= types.ContentType.PHOTO, state = AdminPanel.taskmenu_photowait)\r\nasync def admin_taskmenu_photowait(message: types.Message , state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "dfe19ddfbdb9367abf1646b554e38646b4c53a3f4151f2745720214f6987d92a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (142 > 120 characters)", + "markdown": "PEP 8: E501 line too long (142 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 851, + "startColumn": 121, + "charOffset": 38670, + "charLength": 19, + "snippet": { + "text": "ReplyKeyboardRemove" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 849, + "startColumn": 1, + "charOffset": 38441, + "charLength": 308, + "snippet": { + "text": "async def give_rules(message: types.Message, state: FSMContext):\r\n await AdminPanel.rules_addmaker.set()\r\n await message.reply(\"Введите @username пользователя которому хотите выдать права ивент мейкера\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.rules_addmaker)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e038ea109be002550cbf398db4625e7da393d3ee9d0469bd6aa24d8e59578cad" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 128, + "startColumn": 32, + "charOffset": 5376, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 126, + "startColumn": 1, + "charOffset": 5263, + "charLength": 215, + "snippet": { + "text": "admue_back = KeyboardButton(text=\"⬅️Админ меню\")\r\nadmue.row(admue_get_info_user)\r\nadmue.row(admue_fullname_editor,admue_age_editor,admue_balance_editor)\r\nadmue.row(admue_update_users_balance)\r\nadmue.row(admue_back)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e046afc6502a7a59c7ff4cee3952604054e851bd9fd28b1215fb880ffc3fe4ef" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 7, + "startColumn": 3, + "charOffset": 117, + "charLength": 3, + "snippet": { + "text": "def" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 5, + "startColumn": 1, + "charOffset": 83, + "charLength": 79, + "snippet": { + "text": "class UserRepository(ABC):\r\n \r\n def get(self,id : str) -> User:\r\n ...\r\n \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e0f88ac1869f5dfb41016539ffc4d2ea003fef869729ed01f8eb3baec6aa63db" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 175, + "startColumn": 1, + "charOffset": 5940, + "charLength": 73, + "snippet": { + "text": "@dp.message_handler(text=\"📝Создать задание\", state=EventMakerPanel.menu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 173, + "startColumn": 1, + "charOffset": 5850, + "charLength": 275, + "snippet": { + "text": " await message.reply(\"Вы вошли в панель event maker`a!\", reply_markup=usermakerkbm)\r\n\r\n@dp.message_handler(text=\"📝Создать задание\", state=EventMakerPanel.menu)\r\nasync def go_event_menu(message: types.Message, state: FSMContext):\r\n await EventMakerPanel.taskmenu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e1092197b655cfaf3b3b1e3a2932c6b4c94c31104e537267ff00ea55457e9587" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1482, + "startColumn": 1, + "charOffset": 67120, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1480, + "startColumn": 1, + "charOffset": 66968, + "charLength": 322, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система отображения профиля\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(state=MenuStates.profile)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e12dfb60642c6eeeb54cfd08ac875b952b7274699fe13f4e794468f7c8e3a157" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1661, + "startColumn": 25, + "charOffset": 76057, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1659, + "startColumn": 1, + "charOffset": 75988, + "charLength": 285, + "snippet": { + "text": " users.user_state=str(MenuStates.help)\r\n\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r\nasync def handle_help_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e1707229a544c9eedd30228abe53cc0763275b6d8f6b50bf989cfa76181ad374" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 14, + "startColumn": 6, + "charOffset": 588, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 12, + "startColumn": 1, + "charOffset": 481, + "charLength": 231, + "snippet": { + "text": "kliderboard= KeyboardButton(text=\"📊Рейтинг\")\r\nkschedule= KeyboardButton(text=\"📆Календарь событий\")\r\nkhelp= KeyboardButton(text=\"❓Помощь\")\r\nkexercise= KeyboardButton(text=\"📝Задания\")\r\nkpromo = KeyboardButton(text=\"🗝️Промокоды\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e1a3d2bf25dae9f374dc1a1402123dcc88941d520e4939f6aa326cb805614134" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 34, + "startColumn": 22, + "charOffset": 1267, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 32, + "startColumn": 1, + "charOffset": 1186, + "charLength": 133, + "snippet": { + "text": " age=age,\r\n balance=balance,\r\n tgusr = tgusr\r\n )\r\n except ValueError:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e21c211df30141247344fa595e26e0dd64e176dae901bb221b51cfe2766c304d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (206 > 120 characters)", + "markdown": "PEP 8: E501 line too long (206 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1132, + "startColumn": 119, + "charOffset": 50927, + "charLength": 7, + "snippet": { + "text": "counter" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1130, + "startColumn": 1, + "charOffset": 50727, + "charLength": 360, + "snippet": { + "text": " description = data.get(\"description\")\r\n photo = data.get(\"photo\")\r\n supabase.table('TaskCollection').insert({'name': name, 'description': description, 'photo': photo, 'counter': counter, 'url': url,'numberPoints':numberPoints, 'rightAnswers':rightAnswers}).execute()\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e2401315bf0577f6c658644c65afeb0227557e41541ef74f88a4d1dc0f02baa2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1387, + "startColumn": 3, + "charOffset": 63297, + "charLength": 11, + "snippet": { + "text": "photo_bytes" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1385, + "startColumn": 1, + "charOffset": 63224, + "charLength": 188, + "snippet": { + "text": "async def check_qr_code(message: types.Message, state: FSMContext):\r\n\r\n photo_bytes = await message.photo[-1].download(destination=io.BytesIO())\r\n photo_bytes = photo_bytes.getvalue()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e24c137525352b454b74c43cfb56939dc6887999a2c244405f06280565025e88" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 407, + "startColumn": 60, + "charOffset": 17042, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 405, + "startColumn": 1, + "charOffset": 16921, + "charLength": 211, + "snippet": { + "text": "\r\n@dp.message_handler(state=AdminPanel.update_users_balance)\r\nasync def update_users_balance(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance.set()\r\n select = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e3875620e4ebf696935dc8d6e121a425becfbd1f4b7577723bae320e20511b35" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ','", + "markdown": "PEP 8: E203 whitespace before ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 3, + "startColumn": 28, + "charOffset": 70, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 91, + "snippet": { + "text": "import os\r\nfrom dotenv import load_dotenv\r\nfrom supabase import Client , create_client\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e3e19c811305d5162d9f4ec5d7a6aa8f4a6e429c0a670e7ffd574ff51266afd8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 38, + "startColumn": 86, + "charOffset": 1433, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 36, + "startColumn": 1, + "charOffset": 1292, + "charLength": 278, + "snippet": { + "text": " except ValueError:\r\n tgusr:str = id\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','chat_id','user_state').eq('tgusr', tgusr).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e3f0098b934b88435398c2dbdd44aa2ddd89e4d5ddbd126a61ab75dcf64ce9bb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 741, + "startColumn": 64, + "charOffset": 33493, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 739, + "startColumn": 1, + "charOffset": 33367, + "charLength": 232, + "snippet": { + "text": "\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming)\r\nasync def get_naming_promo_usages(message: types.Message, state:FSMContext):\r\n name = str(message.text)\r\n await message.reply(\"Введите количество использований:\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e3f8232a31cfd140d795d1c437129d70547e7934df9729682058074729d2d413" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (131 > 120 characters)", + "markdown": "PEP 8: E501 line too long (131 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 410, + "startColumn": 18, + "charOffset": 17150, + "charLength": 113, + "snippet": { + "text": "'❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 408, + "startColumn": 1, + "charOffset": 17057, + "charLength": 348, + "snippet": { + "text": " await AdminPanel.update_users_balance.set()\r\n select = message.text\r\n if select == '❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗':\r\n supabase.table('UsersData_duplicate').update({'balance': 0}).neq('balance',0).execute()\r\n await AdminPanel.admin_menu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e4366c3186e2cf6afa2d5fb7dc7681f785ba687945410e809a6a62824f4e7a9e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 34, + "startColumn": 24, + "charOffset": 1269, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 32, + "startColumn": 1, + "charOffset": 1186, + "charLength": 133, + "snippet": { + "text": " age=age,\r\n balance=balance,\r\n tgusr = tgusr\r\n )\r\n except ValueError:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e46d77a714bfd873f4eae00abc5470fe37e84e04bd966b592f134b895d90abb0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (305 > 120 characters)", + "markdown": "PEP 8: E501 line too long (305 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 46, + "startColumn": 24, + "charOffset": 2586, + "charLength": 282, + "snippet": { + "text": "\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 44, + "startColumn": 1, + "charOffset": 2516, + "charLength": 680, + "snippet": { + "text": " except:\n if user[\"gender\"]:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"\n else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e4aaf0a719c0f0302b3f4b652b0b75ffc69ee6b28b8414d50a2306543bea1419" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 931, + "startColumn": 3, + "charOffset": 41319, + "charLength": 5, + "snippet": { + "text": "await" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 929, + "startColumn": 1, + "charOffset": 41258, + "charLength": 158, + "snippet": { + "text": " await message.reply(rules_text)\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text=\"⬅️Админ меню\", state=AdminPanel.rules)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e4e827ae55748c3257797f7214018ff2741b6b94ef86f4269dd60d77e465528c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1593, + "startColumn": 251, + "charOffset": 73141, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1591, + "startColumn": 1, + "charOffset": 72793, + "charLength": 439, + "snippet": { + "text": "async def handle_help(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, f\"Привет\\\\! Если у тебя есть какие\\\\-то проблемы или пожелания \\\\, то смелее нажимай на кнопку \" + f\"{code('📨Создать заявку')}\" + f\" и администратор с радостью тебе поможет\\\\! \", reply_markup=userhelp, parse_mode = 'MarkdownV2')\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.help)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e51744bde274bdaff46b3e009b41a38dd79ef24f656c45a1afe11d94b857334f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1219, + "startColumn": 66, + "charOffset": 54845, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1217, + "startColumn": 1, + "charOffset": 54742, + "charLength": 178, + "snippet": { + "text": "\r\n # Запрашиваем имя пользователя\r\n await query.message.reply(\"Введите ваше ФИО:\", reply_markup = helpinlinereg)\r\n\r\n # Переход к следующему состоянию \"waiting_for_name\"\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e5525b562f2a01dbe02584234175e9933cf762999d48b391139cf9cb5d884dd4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1289, + "startColumn": 1, + "charOffset": 58023, + "charLength": 121, + "snippet": { + "text": "@dp.callback_query_handler(text=\"cancel_user\", state=[ProlfileStates.edit_profile_name, ProlfileStates.edit_profile_age])" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1287, + "startColumn": 1, + "charOffset": 57942, + "charLength": 395, + "snippet": { + "text": " await message.reply(\"Нет такого варианта выбора!\", reply_markup=rkbm)\r\n\r\n@dp.callback_query_handler(text=\"cancel_user\", state=[ProlfileStates.edit_profile_name, ProlfileStates.edit_profile_age])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню редактирования профиля.\", reply_markup=menuedit)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e5daf7caec10bcb997e092adfb89b601bf5e834d7b6b81a6fd623f578f4dfed3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1400, + "startColumn": 1, + "charOffset": 63640, + "charLength": 52, + "snippet": { + "text": "@dp.message_handler(state=MenuStates.promocodestart)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1398, + "startColumn": 1, + "charOffset": 63597, + "charLength": 198, + "snippet": { + "text": " await check_promocode(message, state)\r\n\r\n@dp.message_handler(state=MenuStates.promocodestart)\r\nasync def check_promocode(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e6af7d4dc3253dbb961d11b57654cfa97da2b87594a78c5a7758a9e4317ffc06" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 7, + "startColumn": 15, + "charOffset": 129, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 5, + "startColumn": 1, + "charOffset": 83, + "charLength": 79, + "snippet": { + "text": "class UserRepository(ABC):\r\n \r\n def get(self,id : str) -> User:\r\n ...\r\n \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e6c11cc762a709e394d3685fcdba2bbf920616826ea459224ac637199e90e974" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (192 > 120 characters)", + "markdown": "PEP 8: E501 line too long (192 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 403, + "startColumn": 45, + "charOffset": 16722, + "charLength": 114, + "snippet": { + "text": "'❗Внимание❗ Вы действительно хотите обнулить баланс ВСЕХ пользователей? Данное действие ОТМЕНИТЬ будет НЕВОЗМОЖНО'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 401, + "startColumn": 1, + "charOffset": 16597, + "charLength": 325, + "snippet": { + "text": " user.user_state = str(AdminPanel.update_users_balance)\r\n users.set(user)\r\n await bot.send_message(message.chat.id, '❗Внимание❗ Вы действительно хотите обнулить баланс ВСЕХ пользователей? Данное действие ОТМЕНИТЬ будет НЕВОЗМОЖНО', reply_markup=updatebalanceusers)\r\n await AdminPanel.update_users_balance.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e878508cf0a3693218fe177c83b8547276e8c752cecf1329a2fd7f3fbe65342e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 17, + "startColumn": 92, + "charOffset": 524, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 15, + "startColumn": 1, + "charOffset": 384, + "charLength": 273, + "snippet": { + "text": " try:\r\n chat_id:int = int(id)\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','tgusr','user_state').eq('chat_id', chat_id).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e9ff3dd398ef341f7667e5970b0c8e88e3264298fc1094abb2aa4ec89abb3759" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1099, + "startColumn": 21, + "charOffset": 49203, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1097, + "startColumn": 1, + "charOffset": 49121, + "charLength": 180, + "snippet": { + "text": " if numberPoints == None:\r\n numberPoints:dict = {}\r\n if rightAnswers == None:\r\n rightAnswers:dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "eaea9ccfddbe2c8f1eef0c8ea7caf23774004952c5907d4403ce36b03780cca3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 48, + "startColumn": 26, + "charOffset": 1940, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 46, + "startColumn": 1, + "charOffset": 1835, + "charLength": 182, + "snippet": { + "text": " user_state = user_data.get('user_state')\r\n return User(\r\n chat_id = chat_id,\r\n full_name=pseudo,\r\n gender=gender,\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "eb064201a538febe4a5532f0ea462d4fc8805c61edef7e02118dbcdf704974ae" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 167, + "startColumn": 27, + "charOffset": 7175, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 165, + "startColumn": 1, + "charOffset": 7047, + "charLength": 386, + "snippet": { + "text": "#remove balance button in admin menu\r\nupdatebalanceusers = ReplyKeyboardMarkup(resize_keyboard=True)\r\nupdatebalanceconfirmbutton= KeyboardButton(text=\"❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗\")\r\nbackbuttontoadminmemubutton = KeyboardButton(text=\"⬅️Назад в меню\")\r\nupdatebalanceusers.row(updatebalanceconfirmbutton)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ec2c599b67fde63301e08c94ff9c2bd1a3605b76800fc20a5700d8d094a8ae54" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 17, + "startColumn": 102, + "charOffset": 534, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 15, + "startColumn": 1, + "charOffset": 384, + "charLength": 273, + "snippet": { + "text": " try:\r\n chat_id:int = int(id)\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','tgusr','user_state').eq('chat_id', chat_id).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ec3601be026b1af27fe60e0743b3151bed454fc715d5343f1bb193da3c164f03" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 740, + "startColumn": 1, + "charOffset": 33369, + "charLength": 59, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.promo_addpromo_naming)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 738, + "startColumn": 1, + "charOffset": 33317, + "charLength": 220, + "snippet": { + "text": " await AdminPanel.promo_addpromo_naming.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming)\r\nasync def get_naming_promo_usages(message: types.Message, state:FSMContext):\r\n name = str(message.text)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ec86e472905af383d7d5b9cdc750922b12f311917d3888b89a6309b03474ccf4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 44, + "startColumn": 1, + "charOffset": 1593, + "charLength": 52, + "snippet": { + "text": "def update_user_age_by_tgusr(tgusr: str, age : int):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 42, + "startColumn": 1, + "charOffset": 1526, + "charLength": 227, + "snippet": { + "text": " print(f\"Error updating user fullname for {tgusr}: {e}\")\r\n\r\ndef update_user_age_by_tgusr(tgusr: str, age : int):\r\n try:\r\n response = supabase.table(table_name).update({'age': age}).eq('tgusr', tgusr).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ecc1a5848324b722906a3a5c6e5af4f8211cfe3a470ce6bd06ba44efe7c9e9ae" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 9, + "startColumn": 1, + "charOffset": 371, + "charLength": 13, + "snippet": { + "text": "#menu buttons" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 7, + "startColumn": 1, + "charOffset": 350, + "charLength": 130, + "snippet": { + "text": "ikbg.add(ibm,ibf)\r\n\r\n#menu buttons\r\nrkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nkprofile= KeyboardButton(text=\"👤Профиль\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ecf419a796739583d847821875ba2e35e571baae3753bf7d252b39a77859e219" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: W292 no newline at end of file", + "markdown": "PEP 8: W292 no newline at end of file" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1908, + "startColumn": 49, + "charOffset": 86639, + "charLength": 1, + "snippet": { + "text": ")" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1906, + "startColumn": 1, + "charOffset": 86561, + "charLength": 79, + "snippet": { + "text": "\r\nif __name__ == '__main__':\r\n executor.start_polling(dp, skip_updates=True)" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ee7a92329d274515f403a05925a82d4f749f1199f5c978e6d5860d698f7e9767" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1722, + "startColumn": 83, + "charOffset": 78923, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1720, + "startColumn": 1, + "charOffset": 78719, + "charLength": 285, + "snippet": { + "text": " user_exists = supabase.table('Report').select('tgusr').eq('tgusr', username).execute()\r\n if not user_exists.data:\r\n await message.reply(\"Такого пользователя нет в базе данных\", reply_markup= admreport)\r\n await state.finish()\r\n await AdminPanel.ticket.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "eed6e482d20cb9301bc907a3e5358caf2976035f3e3881f35e37c04e1f155c3c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 157, + "startColumn": 1, + "charOffset": 5214, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 155, + "startColumn": 1, + "charOffset": 5071, + "charLength": 268, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Event maker panel\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f024e3dd954fd4f8e60a2eb1130e002abcecbd1df7567e9663521d19a28fa34f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1703, + "startColumn": 27, + "charOffset": 77987, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1701, + "startColumn": 1, + "charOffset": 77913, + "charLength": 221, + "snippet": { + "text": " user.user_state = str(AdminPanel.ticket)\r\n\r\n@dp.message_handler(text = \"Удалить обращение\", state=AdminPanel.ticket)\r\nasync def delete_ticket(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f0b12dc0b5efc78af0d5e0a26db406fe23a4361f12d64b0a4506357ec8186fa0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 60, + "startColumn": 17, + "charOffset": 2312, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 58, + "startColumn": 1, + "charOffset": 2261, + "charLength": 217, + "snippet": { + "text": " return None\r\n \r\n def set(self,user : User) -> None:\r\n if self.get(user.chat_id): \r\n self.client.table(self.table_name).update(user.dict()).eq('chat_id',user.chat_id).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f0e7695476eb6200d0466c57acaa8a0d3093ff70f08dae12c2805ff46b7371d5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (157 > 120 characters)", + "markdown": "PEP 8: E501 line too long (157 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 846, + "startColumn": 25, + "charOffset": 38237, + "charLength": 109, + "snippet": { + "text": "\"Вы попали в раздел для выдачи права создания заданий пользователям. Нажмите на кнопку и следуйте указаниям.\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 844, + "startColumn": 1, + "charOffset": 38147, + "charLength": 293, + "snippet": { + "text": " user.user_state = str(AdminPanel.rules)\r\n users.set(user)\r\n await message.reply(\"Вы попали в раздел для выдачи права создания заданий пользователям. Нажмите на кнопку и следуйте указаниям.\", reply_markup=ruleskbm)\r\n\r\n@dp.message_handler(text=\"Выдать права\",state = AdminPanel.rules)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f2ac13be09ec541ab3d8a440d5975e6dd7f9c4059100d9b4e85c273eeb1e9f8e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 663, + "startColumn": 1, + "charOffset": 29948, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 661, + "startColumn": 1, + "charOffset": 29944, + "charLength": 269, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система промокодов\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f30f9b05ff3546ccac6e88200be1c5393832e1f4267625e3574c95e742f2316e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E722 do not use bare 'except'", + "markdown": "PEP 8: E722 do not use bare 'except'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 44, + "startColumn": 9, + "charOffset": 2524, + "charLength": 6, + "snippet": { + "text": "except" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 42, + "startColumn": 1, + "charOffset": 2180, + "charLength": 688, + "snippet": { + "text": " else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"\n except:\n if user[\"gender\"]:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f320f3c9cbbaf875c081c4736e78d8756224b11d085b6e0f2ee57c9eed0c487b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1114, + "startColumn": 40, + "charOffset": 50019, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1112, + "startColumn": 1, + "charOffset": 49885, + "charLength": 276, + "snippet": { + "text": " await state.update_data(rightAnswers = rightAnswers)\r\n querylist.append(new_json_data)\r\n await state.update_data(querylist = querylist)\r\n if counter > 1:\r\n await bot.send_message(chat_id, \"Пожалуйста, заполните следующий вопрос\",reply_markup=surveywebapp)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f559b3b73540291e74a20c2c7ab15cd4bd9f77ce1f5b97acb02f7c95eb0e3180" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1481, + "startColumn": 1, + "charOffset": 67090, + "charLength": 28, + "snippet": { + "text": "#Система отображения профиля" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1479, + "startColumn": 1, + "charOffset": 66966, + "charLength": 277, + "snippet": { + "text": "\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система отображения профиля\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f58c5c956e74f3e1581b1ef6a255d5a5dd70020ef86b92f13005494cd134f2f7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E202 whitespace before ')'", + "markdown": "PEP 8: E202 whitespace before ')'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 70, + "startColumn": 36, + "charOffset": 2705, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 68, + "startColumn": 1, + "charOffset": 2666, + "charLength": 194, + "snippet": { + "text": "\r\n\r\ndef get_user_info_by_id(chat_id:int ) -> str:\r\n try:\r\n response = supabase.table('UsersData').select('full_name','gender','age','balance','tgusr').eq('chat_id', chat_id).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f5a8efc6349ac296bcbbc9b6b455149b99946042c2d0de8d48e08c448d59e800" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1484, + "startColumn": 1, + "charOffset": 67244, + "charLength": 45, + "snippet": { + "text": "@dp.message_handler(state=MenuStates.profile)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1482, + "startColumn": 1, + "charOffset": 67120, + "charLength": 271, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(state=MenuStates.profile)\r\nasync def handle_profile(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f5c62fd9c1c41d87fe553b6363e9fba15f2703b4a437a55e0d40456c57ee41f8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 676, + "startColumn": 1, + "charOffset": 30590, + "charLength": 68, + "snippet": { + "text": "@dp.message_handler(text=\"Добавить QR\", state=AdminPanel.promo_menu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 674, + "startColumn": 1, + "charOffset": 30510, + "charLength": 269, + "snippet": { + "text": " await message.reply(\"Вы вошли в меню промокодов\", reply_markup=admpromo)\r\n\r\n@dp.message_handler(text=\"Добавить QR\", state=AdminPanel.promo_menu)\r\nasync def admin_promocodes_addqr(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_qrstart.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f6429ea1de9aab6c352960f8e1eefa99265648854988699b12aa042481b4f13d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 933, + "startColumn": 1, + "charOffset": 41351, + "charLength": 64, + "snippet": { + "text": "@dp.message_handler(text=\"⬅️Админ меню\", state=AdminPanel.rules)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 931, + "startColumn": 1, + "charOffset": 41317, + "charLength": 246, + "snippet": { + "text": " await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text=\"⬅️Админ меню\", state=AdminPanel.rules)\r\nasync def back_from_rules(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f714e7fd6d7f8ef475ed55e0d24e7f2ebb0ecaa88d181cf0b3152295bb8588b1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1769, + "startColumn": 1, + "charOffset": 81075, + "charLength": 54, + "snippet": { + "text": "@dp.message_handler(text=\"➡️\", state=MenuStates.tasks)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1767, + "startColumn": 1, + "charOffset": 81011, + "charLength": 211, + "snippet": { + "text": " await state.update_data(message_id_data=message_id_data)\r\n\r\n@dp.message_handler(text=\"➡️\", state=MenuStates.tasks)\r\nasync def right(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f74e61a2027833a1e9e27ff20b05017f180dd8d772de9ab2efd7cd8bda93f372" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 105, + "startColumn": 1, + "charOffset": 7432, + "charLength": 33, + "snippet": { + "text": "def rating_update_start_thread():" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 103, + "startColumn": 1, + "charOffset": 7400, + "charLength": 126, + "snippet": { + "text": " schedule.run_pending()\n\ndef rating_update_start_thread():\n threading.Thread(target=rating_update_over_time).start()" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f77cc150221a9c10ead4ab549edbfaa417d91b40b15f040ddde4ac1f5c8cb3d5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1055, + "startColumn": 42, + "charOffset": 47054, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1053, + "startColumn": 1, + "charOffset": 46908, + "charLength": 209, + "snippet": { + "text": " description = message.text\r\n await bot.send_message(chat_id, \"Отправте фотографию мероприятия:\")\r\n await state.update_data(description = description)\r\n await AdminPanel.taskmenu_photowait.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f7d0f6f63b41694f0d1975eb5b10e570340400b86863759d2bffffe6e560b82d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ':'", + "markdown": "PEP 8: E203 whitespace before ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 13, + "startColumn": 21, + "charOffset": 232, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 11, + "startColumn": 1, + "charOffset": 201, + "charLength": 59, + "snippet": { + "text": " ...\r\n\r\n def delete(self,id : str) -> None:\r\n ...\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f7fbc4b910941e12b2d0fa2226e5ed50d2d73342de645fa6202af68b94770896" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 407, + "startColumn": 54, + "charOffset": 17036, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 405, + "startColumn": 1, + "charOffset": 16921, + "charLength": 211, + "snippet": { + "text": "\r\n@dp.message_handler(state=AdminPanel.update_users_balance)\r\nasync def update_users_balance(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance.set()\r\n select = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f8ee37bddcd95446a5496f3dbb9eb6894785291d2355e162f01651583bcaf5f9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (182 > 120 characters)", + "markdown": "PEP 8: E501 line too long (182 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 53, + "startColumn": 120, + "charOffset": 3440, + "charLength": 2, + "snippet": { + "text": "f'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 51, + "startColumn": 1, + "charOffset": 3247, + "charLength": 317, + "snippet": { + "text": " if user[\"gender\"]:\n insert_image = f'=IMAGE(\"{link}\")'\n google_update_list.append([\"=СТРОКА()-1\", insert_image, user['full_name'], user['balance'],user['chat_id'],f'=ГИПЕРССЫЛКА(\"t.me/{user[\"tgusr\"][1:]}\";\"{user[\"tgusr\"]}\")'])\n else:\n insert_image = f'=IMAGE(\"{link}\")'" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f99324942623f705d320b555c456767999378f366cbadb293d3b085eae904c89" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 913, + "startColumn": 1, + "charOffset": 40695, + "charLength": 69, + "snippet": { + "text": "@dp.message_handler(text='Действующие права', state=AdminPanel.rules)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 911, + "startColumn": 1, + "charOffset": 40661, + "charLength": 172, + "snippet": { + "text": " await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text='Действующие права', state=AdminPanel.rules)\r\nasync def show_rules(message: types.Message, state: FSMContext):\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f9bdf099775a4612fadab47de0dd38bcca56cd54c17afd128beb1afb6413c816" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E303 too many blank lines (5)", + "markdown": "PEP 8: E303 too many blank lines (5)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1806, + "startColumn": 1, + "charOffset": 82739, + "charLength": 89, + "snippet": { + "text": "@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=MenuStates.tasks)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1804, + "startColumn": 1, + "charOffset": 82735, + "charLength": 232, + "snippet": { + "text": "\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=MenuStates.tasks)\r\nasync def handle_test_results(message: types.ContentType.WEB_APP_DATA, state: FSMContext):\r\n message.text = message.web_app_data.data\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f9c1e838a86743558c459fdb5c488b984987c8b6da5ff0cfe497b15311f171fd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 979, + "startColumn": 1, + "charOffset": 43502, + "charLength": 72, + "snippet": { + "text": "@dp.message_handler(text='Удалить коллекцию', state=AdminPanel.taskmenu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 977, + "startColumn": 1, + "charOffset": 43479, + "charLength": 279, + "snippet": { + "text": " users.set(user)\r\n\r\n@dp.message_handler(text='Удалить коллекцию', state=AdminPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите пожалуйста имя коллекции для её удаления\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fa0e836e6f2be0e3b380c2bd32d911a62ac71a707ddb9dd6b7613d041e4d5adf" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (125 > 120 characters)", + "markdown": "PEP 8: E501 line too long (125 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1236, + "startColumn": 121, + "charOffset": 55523, + "charLength": 3, + "snippet": { + "text": "FIO" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1234, + "startColumn": 1, + "charOffset": 55345, + "charLength": 250, + "snippet": { + "text": " if FIO[word][0].istitle():\r\n cnt += 1\r\n if name.replace(\" \", \"\").isalpha() and len(name) < 40 and len(name) >= 5 and detector(name) == False and cnt == len(FIO):\r\n user = users.get(chat_id)\r\n user.full_name = name\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fa32a5b90870634993c97e5141e3b9eb1a8c54be282ae5f3ecebb43eda7491a6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1776, + "startColumn": 36, + "charOffset": 81439, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1774, + "startColumn": 1, + "charOffset": 81295, + "charLength": 283, + "snippet": { + "text": " if counter>len(supabase.table('TaskCollection').select('name' ).execute().data)-1:\r\n counter = 0\r\n await state.update_data(counter = counter)\r\n await handle_tasks(message, state)\r\n await bot.delete_message(chat_id=chat_id, message_id=data.get('message_id_data'))\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fa8bbb906451e59e159689ad4d23e7dab722000012fbb0915b9f253774aad926" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E122 continuation line missing indentation or outdented", + "markdown": "PEP 8: E122 continuation line missing indentation or outdented" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 480, + "startColumn": 9, + "charOffset": 20617, + "charLength": 2, + "snippet": { + "text": "f\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 478, + "startColumn": 1, + "charOffset": 20481, + "charLength": 374, + "snippet": { + "text": " # Формирование сообщения профиля пользователя\r\n profile_message = f\"Профиль пользователя {username}:\\n\\n\" \\\r\n f\"{gender}{pseudo}, {age} лет\\n└Место в топе: {counter+1}\\n\\n\" \\\r\n f\"💰Баланс: {balance}🔘 поинтов\\n└Мероприятий посещено: ?\"\r\n await bot.send_photo(chat_id=chat_id, photo=image, caption=profile_message, reply_markup=admue)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fad56b6f36255fbc41af524bbcc10db2b6a901394fcddf54ff2b17809f4188e4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E303 too many blank lines (3)", + "markdown": "PEP 8: E303 too many blank lines (3)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 428, + "startColumn": 1, + "charOffset": 17996, + "charLength": 44, + "snippet": { + "text": "# Хендлер для кнопки ️Изменить пользователя" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 426, + "startColumn": 1, + "charOffset": 17992, + "charLength": 204, + "snippet": { + "text": "\r\n\r\n# Хендлер для кнопки ️Изменить пользователя\r\n@dp.message_handler(text=\"⚙️Изменить пользователя\", state=AdminPanel.admin_menu)\r\nasync def admin_change_user(message: types.Message, state: FSMContext):\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fafaa572a726a75aa28725e732aa144041581cabf682681571239eab86c0972e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1464, + "startColumn": 1, + "charOffset": 66301, + "charLength": 32, + "snippet": { + "text": "#Система рейтинга(Google sheets)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1462, + "startColumn": 1, + "charOffset": 66177, + "charLength": 282, + "snippet": { + "text": "\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система рейтинга(Google sheets)\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fb14cc942f9adccde03275c2fa8edb7eb7e13b211692e3ab0f4c153b94d0e50c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1064, + "startColumn": 39, + "charOffset": 47464, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1062, + "startColumn": 1, + "charOffset": 47351, + "charLength": 250, + "snippet": { + "text": " try:\r\n await state.update_data(photo = photo.photo[2].file_id)\r\n await bot.send_message(chat_id,\"Введите количество вопросов в коллекции:\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fb89f37fe0b3aa6f9c253db8a9f97e966b270c0411d150ae41b5b79811d3893b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 38, + "startColumn": 77, + "charOffset": 1424, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 36, + "startColumn": 1, + "charOffset": 1292, + "charLength": 278, + "snippet": { + "text": " except ValueError:\r\n tgusr:str = id\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','chat_id','user_state').eq('tgusr', tgusr).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fb8d406933dd423f6fb9972484b6cde5faed88527e707f184a779a265088adc2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1849, + "startColumn": 62, + "charOffset": 84215, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1847, + "startColumn": 1, + "charOffset": 84123, + "charLength": 195, + "snippet": { + "text": "\r\n ident = generate_code()\r\n supabase.table('Passd').insert({'chat_id':chat_id, 'name':name, 'id': ident}).execute()\r\n new_balance = user_balance + score\r\n user.balance = new_balance\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fbb5dd65a55264495a1e3b4e995590cb233a838a010f0486fec02b4f03511b3e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1875, + "startColumn": 1, + "charOffset": 84826, + "charLength": 121, + "snippet": { + "text": "#------------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1873, + "startColumn": 1, + "charOffset": 84822, + "charLength": 304, + "snippet": { + "text": "\r\n\r\n#------------------------------------------------------------------------------------------------------------------------\r\n#Система отлова людей без state и обработчик стикеров\r\n#------------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fbd5cad48791167889663d7a34f2c498d3f883df4dc468c17e4b79169a33aee0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1671, + "startColumn": 43, + "charOffset": 76722, + "charLength": 5, + "snippet": { + "text": "state" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1669, + "startColumn": 1, + "charOffset": 76556, + "charLength": 297, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📨Обращения\", state = AdminPanel.admin_menu)\r\nasync def handle_report(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fc343a5d71499feb42b4d40d38dcbf836c48de29e1859d4300cbbf5eae45532f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 173, + "startColumn": 1, + "charOffset": 7491, + "charLength": 15, + "snippet": { + "text": "#rating buttons" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 171, + "startColumn": 1, + "charOffset": 7487, + "charLength": 311, + "snippet": { + "text": "\r\n\r\n#rating buttons\r\nikbmrating = InlineKeyboardMarkup(row_width=1)\r\nibrating = InlineKeyboardButton(text=\"📊Полный рейтинг\", web_app = WebAppInfo(url ='https://docs.google.com/spreadsheets/d/e/2PACX-1vQFzN5HRvQhS5j4kDcv9wWH3uucCqp1AFmu2ErZYikmmJSshj1f16v7ry013vde0y6OYVWeSsVtgaKT/pubhtml?gid=0&single=true') )\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fcebaca98a7bd90aa0a424d272acdbcbd7ae5097370751ec7fba30c4f26a9229" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 68, + "startColumn": 1, + "charOffset": 2224, + "charLength": 40, + "snippet": { + "text": "def is_dirt(pattern: str=standart_dirt):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 66, + "startColumn": 1, + "charOffset": 2198, + "charLength": 102, + "snippet": { + "text": " return hide_search\r\n\r\ndef is_dirt(pattern: str=standart_dirt):\r\n\r\n funk = _get_search(pattern)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fd0ff0566f48037b4f9dd938125a3e1395ebaa2395c7e640577193ee128370b0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 754, + "startColumn": 1, + "charOffset": 34023, + "charLength": 63, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.promo_addpromo_naming_end)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 752, + "startColumn": 1, + "charOffset": 33967, + "charLength": 224, + "snippet": { + "text": " await AdminPanel.promo_addpromo_naming_end.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming_end)\r\nasync def create_naming_promo(message: types.Message, state:FSMContext):\r\n cost = int(message.text)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fde5054a3d3ea1e09005d40171aabadcce200404334a6c2e48a9f738ef49b106" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1635, + "startColumn": 1, + "charOffset": 75064, + "charLength": 46, + "snippet": { + "text": "@dp.message_handler(state=MenuStates.help_end)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1633, + "startColumn": 1, + "charOffset": 75025, + "charLength": 167, + "snippet": { + "text": " await MenuStates.help_end.set()\r\n\r\n@dp.message_handler(state=MenuStates.help_end)\r\nasync def handle_help_end(message: types.Message, state: FSMContext):\r\n try:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fde919700e365197adedbe6a9f1b60657a3c0f46b24e56003cdf7416f718254a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ':'", + "markdown": "PEP 8: E203 whitespace before ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 67, + "startColumn": 25, + "charOffset": 2623, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 65, + "startColumn": 1, + "charOffset": 2515, + "charLength": 180, + "snippet": { + "text": " self.client.table(self.table_name).insert(user.dict()).execute()\r\n \r\n def delete(self,user : User) -> None:\r\n try:\r\n if self.get(user.chat_id):\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fdeff09318d5b46684e994fb969be5b913b13bea48807c5e3cd32dd7e93194d8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1671, + "startColumn": 25, + "charOffset": 76704, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1669, + "startColumn": 1, + "charOffset": 76556, + "charLength": 297, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📨Обращения\", state = AdminPanel.admin_menu)\r\nasync def handle_report(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ff444c416a00d3b6f5726d65210cd22e2d5d657c9af0078f79649eb6903f5fcc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1375, + "startColumn": 1, + "charOffset": 62545, + "charLength": 121, + "snippet": { + "text": "#----------------------------------------------------------------------------------------------------------------------- " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1373, + "startColumn": 1, + "charOffset": 62402, + "charLength": 269, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система промокодов\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ff71140f3f9d7eacac26a436d41582fa8c14225b923c2293cfed15cf724fea55" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1762, + "startColumn": 46, + "charOffset": 80751, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1760, + "startColumn": 1, + "charOffset": 80633, + "charLength": 224, + "snippet": { + "text": " ibback = KeyboardButton(text=\"⬅️Меню\")\r\n print(f\"{task['url']}\")\r\n ibgo = KeyboardButton(text=\"✅\", web_app = WebAppInfo(url = f'{task[\"url\"]}'))\r\n ikbmtasks.row(ibleft, ibgo, ibright)\r\n ikbmtasks.row(ibback)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fffe4e0f1be3ea48f2ccb9f6f8be6fcea3c9798d7dc0d588758996b57962f442" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 307, + "startColumn": 9, + "charOffset": 11920, + "charLength": 12, + "snippet": { + "text": "rightAnswers" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 305, + "startColumn": 1, + "charOffset": 11849, + "charLength": 198, + "snippet": { + "text": " numberPoints: dict = {}\r\n if rightAnswers == None:\r\n rightAnswers: dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r\n message.text = message.web_app_data.data\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1100b80a957495a7aedff9a482273dd112c3bf3f3bbc5eb3d18d50f38cdfcc08" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1638, + "startColumn": 9, + "charOffset": 75201, + "charLength": 11, + "snippet": { + "text": "Description" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1636, + "startColumn": 1, + "charOffset": 75112, + "charLength": 203, + "snippet": { + "text": "async def handle_help_end(message: types.Message, state: FSMContext):\r\n try:\r\n Description = message.text\r\n chat_id = message.chat.id\r\n telegram_name = message.from_user.username\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "43b1f4dc9a5232f4ed25cce17d96257a6188c1eecdc0fad75a1f8b792cf0820a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1093, + "startColumn": 5, + "charOffset": 48984, + "charLength": 12, + "snippet": { + "text": "numberPoints" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1091, + "startColumn": 1, + "charOffset": 48906, + "charLength": 190, + "snippet": { + "text": " counter = data.get(\"counter\")\r\n querylist = data.get(\"querylist\")\r\n numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5681fe341c3b9fcbd922c3d7dbcb6b7fd849c4a3e66e4eca8b4a239be1d3afed" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 581, + "startColumn": 5, + "charOffset": 25814, + "charLength": 3, + "snippet": { + "text": "FIO" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 579, + "startColumn": 1, + "charOffset": 25771, + "charLength": 140, + "snippet": { + "text": " detector = is_dirt()\r\n cnt = 0\r\n FIO = new_fullname.split()\r\n for word in range(len(FIO)):\r\n if FIO[word][0].istitle():\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "587fe0d6abe6cf0402736c8d9e22172010a1eaad4f4cc9db437b59d28d101842" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 301, + "startColumn": 5, + "charOffset": 11727, + "charLength": 12, + "snippet": { + "text": "rightAnswers" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 299, + "startColumn": 1, + "charOffset": 11639, + "charLength": 179, + "snippet": { + "text": " querylist = data.get(\"querylist\")\r\n numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r\n querylist = []\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "65cb6825563c00f1b6e808d6167a85e1a3343eb302279212053cf570f5ae49b6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 300, + "startColumn": 5, + "charOffset": 11682, + "charLength": 12, + "snippet": { + "text": "numberPoints" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 298, + "startColumn": 1, + "charOffset": 11604, + "charLength": 190, + "snippet": { + "text": " counter = data.get(\"counter\")\r\n querylist = data.get(\"querylist\")\r\n numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "91aed61b7f5c3d44e25c8c5f096d8bc0d2108d5b438e6772f48ec60596166509" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Function name should be lowercase", + "markdown": "Function name should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1887, + "startColumn": 11, + "charOffset": 85487, + "charLength": 24, + "snippet": { + "text": "handle_The_Last_Frontier" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1885, + "startColumn": 1, + "charOffset": 85388, + "charLength": 221, + "snippet": { + "text": "# ВНИМАНИЕ! Данный handler ловит людей без состояния!\r\n@dp.message_handler(state= None)\r\nasync def handle_The_Last_Frontier(message: types.Message, state: FSMContext):\r\n sost = await state.get_state()\r\n print(sost)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c37d140c8a512e3d31182f3fb9564f1a8a84af095e0e77f76191438865ab5271" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1100, + "startColumn": 9, + "charOffset": 49221, + "charLength": 12, + "snippet": { + "text": "rightAnswers" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1098, + "startColumn": 1, + "charOffset": 49151, + "charLength": 196, + "snippet": { + "text": " numberPoints:dict = {}\r\n if rightAnswers == None:\r\n rightAnswers:dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r\n message.text = message.web_app_data.data\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d039c6f0b49de9d7a4d889bcc0f49ab69f05ce2d68517368d4b6945eed33625e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1231, + "startColumn": 5, + "charOffset": 55278, + "charLength": 3, + "snippet": { + "text": "FIO" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1229, + "startColumn": 1, + "charOffset": 55223, + "charLength": 121, + "snippet": { + "text": " name = message.text\r\n detector = is_dirt()\r\n FIO = name.split()\r\n cnt = 0\r\n for word in range(len(FIO)):\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d8761514863cb728bbadc51e14177e4764e202a56100117ead10afff9871b479" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1094, + "startColumn": 5, + "charOffset": 49029, + "charLength": 12, + "snippet": { + "text": "rightAnswers" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1092, + "startColumn": 1, + "charOffset": 48941, + "charLength": 179, + "snippet": { + "text": " querylist = data.get(\"querylist\")\r\n numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r\n querylist = []\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ddeb8a7d96a3a3e80bed3ea94be226f6fa33a330772d4530bced8e93572204b6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 305, + "startColumn": 9, + "charOffset": 11857, + "charLength": 12, + "snippet": { + "text": "numberPoints" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 303, + "startColumn": 1, + "charOffset": 11795, + "charLength": 149, + "snippet": { + "text": " querylist = []\r\n if numberPoints == None:\r\n numberPoints: dict = {}\r\n if rightAnswers == None:\r\n rightAnswers: dict = {}\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "de2b34670ae0efe71e36e64834db8824ff6d24923c0c7281c91ea51885c847f4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1333, + "startColumn": 5, + "charOffset": 60571, + "charLength": 3, + "snippet": { + "text": "FIO" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1331, + "startColumn": 1, + "charOffset": 60510, + "charLength": 135, + "snippet": { + "text": " chat_id = message.chat.id\r\n detector = is_dirt()\r\n FIO = new_fullname.split()\r\n cnt = 0\r\n for word in range(len(FIO)):\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e08a5651cf6aa5976566994733d3037da24bb4a54a6b1230eca045488b12eb15" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1098, + "startColumn": 9, + "charOffset": 49159, + "charLength": 12, + "snippet": { + "text": "numberPoints" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1096, + "startColumn": 1, + "charOffset": 49097, + "charLength": 147, + "snippet": { + "text": " querylist = []\r\n if numberPoints == None:\r\n numberPoints:dict = {}\r\n if rightAnswers == None:\r\n rightAnswers:dict = {}\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fbe3a6ac3e7f045612001f6110bb40e28483f11b27ece9843a87cee656f33954" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingBuiltinsInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows built-in name 'id'", + "markdown": "Shadows built-in name 'id'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 7, + "startColumn": 16, + "charOffset": 130, + "charLength": 2, + "snippet": { + "text": "id" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 5, + "startColumn": 1, + "charOffset": 83, + "charLength": 79, + "snippet": { + "text": "class UserRepository(ABC):\r\n \r\n def get(self,id : str) -> User:\r\n ...\r\n \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "30d0c64f288af9ac517e6cb8255915346988b216c9e8052615d71815baa8d37c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingBuiltinsInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows built-in name 'id'", + "markdown": "Shadows built-in name 'id'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 14, + "startColumn": 18, + "charOffset": 364, + "charLength": 2, + "snippet": { + "text": "id" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 12, + "startColumn": 1, + "charOffset": 307, + "charLength": 125, + "snippet": { + "text": " self.table_name = table_name\r\n\r\n def get(self,id : str) -> User:\r\n try:\r\n chat_id:int = int(id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3e865bbe821993e1f79346b8f47af1b27cc469a3cdd80b20c479f3b9f57e7a77" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingBuiltinsInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows built-in name 'id'", + "markdown": "Shadows built-in name 'id'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 13, + "startColumn": 19, + "charOffset": 230, + "charLength": 2, + "snippet": { + "text": "id" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 11, + "startColumn": 1, + "charOffset": 201, + "charLength": 59, + "snippet": { + "text": " ...\r\n\r\n def delete(self,id : str) -> None:\r\n ...\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3f17f8a37373df79f3893f19c5a8c1e4354e432a41b1224bf807da20bd52753c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1607, + "startColumn": 9, + "charOffset": 73630, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1605, + "startColumn": 1, + "charOffset": 73564, + "charLength": 338, + "snippet": { + "text": " if tgu == None:\r\n nome = 'имени пользователя'\r\n url = 'https://ru.the-hitech.net/7264375-how-to-create-a-username-on-telegram'\r\n await bot.send_message(chat_id,\r\n f\"У вас нет \" + f\"[{nome}]({url})\" + f\" телеграм!Укажите его в своём профиле и тогда администрация сможет вам помочь.\",\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1773fe4cded7960c0357923e0b5014c36f3d9b3221ffdbfa439420bf61fd0662" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1570, + "startColumn": 9, + "charOffset": 71768, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1568, + "startColumn": 1, + "charOffset": 71690, + "charLength": 187, + "snippet": { + "text": " events_message = 'Мероприятия:'\r\n for event in response.data:\r\n url = 'https://leader-id.ru/events/'\r\n url = url +str(event['id'])\r\n name = event['full_name']\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "40c81260e62af0113ed62df94641effa2af7a902df1c67b109cfc5f9cf095756" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1126, + "startColumn": 9, + "charOffset": 50586, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1124, + "startColumn": 1, + "charOffset": 50488, + "charLength": 205, + "snippet": { + "text": " querydict_dump: str = json.dumps(querydict)\r\n url = url + querydict_dump \r\n url = url.replace(' ','%20')\r\n url = url.replace('\"', '%22')\r\n data = await state.get_data()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4bd865c662aaa0f9b5d100572c828781479c74a5740c9e64d7106cb5f449cc25" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1101, + "startColumn": 5, + "charOffset": 49249, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1099, + "startColumn": 1, + "charOffset": 49183, + "charLength": 202, + "snippet": { + "text": " if rightAnswers == None:\r\n rightAnswers:dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r\n message.text = message.web_app_data.data\r\n data = json.loads(message.text)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6eb50b14618d280ba37b65e444d9f39ee6a595ab41609096ae97d0ddf99ada5d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 308, + "startColumn": 5, + "charOffset": 11949, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 306, + "startColumn": 1, + "charOffset": 11882, + "charLength": 202, + "snippet": { + "text": " if rightAnswers == None:\r\n rightAnswers: dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r\n message.text = message.web_app_data.data\r\n data = json.loads(message.text)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "706ac765e95a95a4deb5ecc7407ed8c3347b48a2d000dab547db00a8563793f8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 332, + "startColumn": 9, + "charOffset": 13232, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 330, + "startColumn": 1, + "charOffset": 13124, + "charLength": 213, + "snippet": { + "text": " querydict = {\"surveyData\": querylist}\r\n querydict_dump: str = json.dumps(querydict)\r\n url = url + querydict_dump\r\n url = url.replace(' ', '%20')\r\n url = url.replace('\"', '%22')\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7d8bdfa447a2f44b298d80588f64dd1ddb83e0b937e3a008aaf9d84d00a68780" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 333, + "startColumn": 9, + "charOffset": 13268, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 331, + "startColumn": 1, + "charOffset": 13171, + "charLength": 205, + "snippet": { + "text": " querydict_dump: str = json.dumps(querydict)\r\n url = url + querydict_dump\r\n url = url.replace(' ', '%20')\r\n url = url.replace('\"', '%22')\r\n data = await state.get_data()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "93b589eb8e02a7fc441c69dc743ce1c702e338f431a93bb24a913e06bf3ba6fa" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1125, + "startColumn": 9, + "charOffset": 50549, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1123, + "startColumn": 1, + "charOffset": 50442, + "charLength": 212, + "snippet": { + "text": " querydict = {\"surveyData\":querylist}\r\n querydict_dump: str = json.dumps(querydict)\r\n url = url + querydict_dump \r\n url = url.replace(' ','%20')\r\n url = url.replace('\"', '%22')\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "adbd3c4b6b746dc231074aed618561688337aa3b303f1bd6036bba07ef358da7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1571, + "startColumn": 9, + "charOffset": 71814, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1569, + "startColumn": 1, + "charOffset": 71727, + "charLength": 197, + "snippet": { + "text": " for event in response.data:\r\n url = 'https://leader-id.ru/events/'\r\n url = url +str(event['id'])\r\n name = event['full_name']\r\n date_start = event['date_start'][:16]\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c9c46418cb19ad3436ff7a01222112f8dd9ad74ab1a71784c9f0ef878a84cf63" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1016, + "startColumn": 9, + "charOffset": 45185, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1014, + "startColumn": 1, + "charOffset": 45116, + "charLength": 136, + "snippet": { + "text": " for promo in promos.data:\r\n name = promo['name']\r\n url = promo['url']\r\n\r\n name_parsed = f'{name}'\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d1231fe4be9d0bf57afe28f081e229d769b92f93822f4aa5405e14eedc410322" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1127, + "startColumn": 9, + "charOffset": 50624, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1125, + "startColumn": 1, + "charOffset": 50541, + "charLength": 185, + "snippet": { + "text": " url = url + querydict_dump \r\n url = url.replace(' ','%20')\r\n url = url.replace('\"', '%22')\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d59fe9a8f6dbd263270b5b2db22df75fd2aa6b8606042aa7e1f4f2e6e16890bc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 334, + "startColumn": 9, + "charOffset": 13307, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 332, + "startColumn": 1, + "charOffset": 13224, + "charLength": 185, + "snippet": { + "text": " url = url + querydict_dump\r\n url = url.replace(' ', '%20')\r\n url = url.replace('\"', '%22')\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d7095b3738a34c5f7537197f55e5199ad18b0274d2af89d9c6c1ff708afe9155" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 225, + "startColumn": 9, + "charOffset": 8152, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 223, + "startColumn": 1, + "charOffset": 8083, + "charLength": 136, + "snippet": { + "text": " for promo in promos.data:\r\n name = promo['name']\r\n url = promo['url']\r\n\r\n name_parsed = f'{name}'\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fddcdc6bad7ce34ab0de6b0cda32604167ada52d09a525ee3471173139be65fa" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyTypeCheckerInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Expected type 'User', got 'None' instead", + "markdown": "Expected type 'User', got 'None' instead" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 58, + "startColumn": 20, + "charOffset": 2280, + "charLength": 4, + "snippet": { + "text": "None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 56, + "startColumn": 1, + "charOffset": 2164, + "charLength": 171, + "snippet": { + "text": " except Exception as e:\r\n print(f\"Error get info about user: {chat_id}: {e}\")\r\n return None\r\n \r\n def set(self,user : User) -> None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "15711725dad4de481fc76ce416bceccee4c0d1624e8951abfade7f9d8e1b98f9" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyTypeCheckerInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Expected type 'str', got 'int' instead", + "markdown": "Expected type 'str', got 'int' instead" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 69, + "startColumn": 25, + "charOffset": 2680, + "charLength": 12, + "snippet": { + "text": "user.chat_id" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 67, + "startColumn": 1, + "charOffset": 2599, + "charLength": 226, + "snippet": { + "text": " def delete(self,user : User) -> None:\r\n try:\r\n if self.get(user.chat_id):\r\n self.client.table(self.table_name).delete().eq('chat_id',user.chat_id).execute()\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a2bac809752be795cc73196a9d780ff8eec608ad653e2c7bb1d35345aa49b888" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyTypeCheckerInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Expected type 'str', got 'int' instead", + "markdown": "Expected type 'str', got 'int' instead" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 61, + "startColumn": 21, + "charOffset": 2356, + "charLength": 12, + "snippet": { + "text": "user.chat_id" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 59, + "startColumn": 1, + "charOffset": 2286, + "charLength": 207, + "snippet": { + "text": " \r\n def set(self,user : User) -> None:\r\n if self.get(user.chat_id): \r\n self.client.table(self.table_name).update(user.dict()).eq('chat_id',user.chat_id).execute()\r\n else:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ca315ea4efd979262740fd5b53224ef96db1d483553208c6427cf5fb304d4077" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyTypeCheckerInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Expected to return 'str', got no return", + "markdown": "Expected to return 'str', got no return" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 58, + "startColumn": 45, + "charOffset": 2277, + "charLength": 3, + "snippet": { + "text": "str" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 56, + "startColumn": 1, + "charOffset": 2167, + "charLength": 161, + "snippet": { + "text": " print(f\"Error updating user balance for {tgusr}: {e}\")\r\n\r\ndef delete_user_data_by_id(chat_id: int) -> str:\r\n try:\r\n chat_id_str = str(chat_id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ea8659d8c79becbdd02b8c9a24cfd396c42bb4f75484de1b8e4b82b85b38a257" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnboundLocalVariableInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Local variable 'counter' might be referenced before assignment", + "markdown": "Local variable 'counter' might be referenced before assignment" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 284, + "startColumn": 8, + "charOffset": 10846, + "charLength": 7, + "snippet": { + "text": "counter" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 282, + "startColumn": 1, + "charOffset": 10684, + "charLength": 331, + "snippet": { + "text": " await bot.send_message(chat_id, \"Введенное значение должно быть числом > 0\")\r\n await EventMakerPanel.taskmenu_collection_counterwait.set()\r\n if counter <= 0:\r\n await bot.send_message(chat_id, \"Введенное значение должно быть числом > 0\")\r\n await EventMakerPanel.taskmenu_collection_counterwait.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3b429aac6b59475117ad6fc25f9074184570b2f8d1d530dffa69e9447755f68b" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnboundLocalVariableInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Local variable 'counter' might be referenced before assignment", + "markdown": "Local variable 'counter' might be referenced before assignment" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1079, + "startColumn": 8, + "charOffset": 48197, + "charLength": 7, + "snippet": { + "text": "counter" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1077, + "startColumn": 1, + "charOffset": 48041, + "charLength": 319, + "snippet": { + "text": " await bot.send_message(chat_id,\"Введенное значение должно быть числом > 0\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n if counter <= 0:\r\n await bot.send_message(chat_id,\"Введенное значение должно быть числом > 0\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "44b3fd93d6bbf33fe8531037979452b21f0ddbc115da61a275cc3385ed27545a" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnboundLocalVariableInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Local variable 'chat_id' might be referenced before assignment", + "markdown": "Local variable 'chat_id' might be referenced before assignment" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 57, + "startColumn": 49, + "charOffset": 2244, + "charLength": 7, + "snippet": { + "text": "chat_id" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 55, + "startColumn": 1, + "charOffset": 2149, + "charLength": 146, + "snippet": { + "text": " )\r\n except Exception as e:\r\n print(f\"Error get info about user: {chat_id}: {e}\")\r\n return None\r\n \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ef267900fc0a9983bd182f036e0030c4188b18aedddf9daca73ce1c2e84f808c" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'name' value is not used", + "markdown": "Local variable 'name' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1108, + "startColumn": 5, + "charOffset": 49575, + "charLength": 4, + "snippet": { + "text": "name" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1106, + "startColumn": 1, + "charOffset": 49483, + "charLength": 343, + "snippet": { + "text": " new_json_data = ast.literal_eval(new_json_data)\r\n data = await state.get_data()\r\n name = data.get(\"name\") \r\n numberPoints.update({new_json_data[\"questionId\"]:new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']})\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "056b465ffd6602e0ef04d3b51149147ae9d383d681a7c7a2d65d36cbbfb00108" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 669, + "startColumn": 52, + "charOffset": 30340, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 667, + "startColumn": 1, + "charOffset": 30216, + "charLength": 222, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"🗝️Промокоды\", state=AdminPanel.admin_menu)\r\nasync def admin_promocodes(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "069d841d7dfc87257c93e4ce6495546185801be01c5098f6642a6c20ba19bbeb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 398, + "startColumn": 63, + "charOffset": 16481, + "charLength": 16, + "snippet": { + "text": "state:FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 396, + "startColumn": 1, + "charOffset": 16285, + "charLength": 311, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"❗Обнулить баланс всех пользователей❗\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def update_users_balance_confirm(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance_confirm.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0c0dbedc36c55789e748608e640094cad4e6a0ff60fa6dfff3778d9dd94ea735" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1704, + "startColumn": 49, + "charOffset": 78083, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1702, + "startColumn": 1, + "charOffset": 77959, + "charLength": 217, + "snippet": { + "text": "\r\n@dp.message_handler(text = \"Удалить обращение\", state=AdminPanel.ticket)\r\nasync def delete_ticket(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await AdminPanel.ticket_delete.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "105a881cfed75f5909119c40dce97b562ebf9d1fd958278e2833955ecdf931ea" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 446, + "startColumn": 55, + "charOffset": 19113, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 444, + "startColumn": 1, + "charOffset": 18927, + "charLength": 269, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Получить информацию о пользователе\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_get_user_info(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user = users.get(chat_id) \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1338379f4cad2076586acd27bc46c95e5445c954132893c0735e358e9ce90594" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1681, + "startColumn": 49, + "charOffset": 77277, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1679, + "startColumn": 1, + "charOffset": 77151, + "charLength": 208, + "snippet": { + "text": "\r\n@dp.message_handler(text='Действующие обращения', state=AdminPanel.ticket)\r\nasync def check_tickets(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user = users.get(chat_id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1539e178176ad140c2e8ea677f5cc498862104fa818891beb866a1372d8ce13d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 956, + "startColumn": 54, + "charOffset": 42498, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 954, + "startColumn": 1, + "charOffset": 42375, + "charLength": 223, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"📊Рейтинг\", state=AdminPanel.admin_menu)\r\nasync def admin_rating_board(message: types.Message, state: FSMContext):\r\n await AdminPanel.rating_board.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1fbe96f7c57a3965ced230e4fb8b748ffa20d4c307a8f4b807cd53176ae11f12" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'e' value is not used", + "markdown": "Local variable 'e' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 271, + "startColumn": 25, + "charOffset": 10235, + "charLength": 1, + "snippet": { + "text": "e" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 269, + "startColumn": 1, + "charOffset": 10057, + "charLength": 351, + "snippet": { + "text": " await bot.send_message(chat_id, \"Введите количество вопросов в коллекции:\")\r\n await EventMakerPanel.taskmenu_collection_counterwait.set()\r\n except Exception as e:\r\n await bot.send_message(chat_id, \"Произошла ошибка, отправьте пожалуйста фотографию в хорошем качестве.\")\r\n await EventMakerPanel.taskmenu_photowait.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "20b5bdf43f66707ae68f4faf65b0a564141b6970193d4484639ee0ca93d82b29" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'user' value is not used", + "markdown": "Local variable 'user' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 737, + "startColumn": 5, + "charOffset": 33282, + "charLength": 4, + "snippet": { + "text": "user" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 735, + "startColumn": 1, + "charOffset": 33114, + "charLength": 254, + "snippet": { + "text": "async def get_naming_promo(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите имя промокода\", reply_markup=types.ReplyKeyboardRemove())\r\n user = users.get(message.chat.id)\r\n await AdminPanel.promo_addpromo_naming.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "24203bb150b5ef324cbec058cb9a6ff9b7fcbaa234575ae16445080e41a73ee3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1150, + "startColumn": 49, + "charOffset": 51830, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1148, + "startColumn": 1, + "charOffset": 51729, + "charLength": 234, + "snippet": { + "text": "\r\n@dp.message_handler(Command('start'), state=None)\r\nasync def start_command(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user = users.get(id=chat_id) # Получение состояния пользователя из Supabase\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "25d2055a464abda2d1b8108c566b62c2f5fb0321cf62602ce37def3929c28f69" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'response' value is not used", + "markdown": "Local variable 'response' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 39, + "startColumn": 9, + "charOffset": 1331, + "charLength": 8, + "snippet": { + "text": "response" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 37, + "startColumn": 1, + "charOffset": 1249, + "charLength": 276, + "snippet": { + "text": "def update_user_fullname_by_tgusr(tgusr: str, full_name: str):\r\n try:\r\n response = supabase.table(table_name).update({'full_name': full_name}).eq('tgusr', tgusr).execute()\r\n print(f\"Updated user fullname for {tgusr}: {full_name}\")\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2b853433106ba491171ad138044f38fdd09e5fcf0a6116f98a6ef924aab78b01" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1737, + "startColumn": 55, + "charOffset": 79479, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1735, + "startColumn": 1, + "charOffset": 79354, + "charLength": 260, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=AdminPanel.ticket)\r\nasync def handle_tickets_back(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2f8c75fb9679fed2488c06ff76f9865d5cfdb48b559a8078da739df60f4d99b6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1591, + "startColumn": 47, + "charOffset": 72839, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1589, + "startColumn": 1, + "charOffset": 72747, + "charLength": 410, + "snippet": { + "text": "\r\n@dp.message_handler(state=MenuStates.help)\r\nasync def handle_help(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, f\"Привет\\\\! Если у тебя есть какие\\\\-то проблемы или пожелания \\\\, то смелее нажимай на кнопку \" + f\"{code('📨Создать заявку')}\" + f\" и администратор с радостью тебе поможет\\\\! \", reply_markup=userhelp, parse_mode = 'MarkdownV2')\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "302491daa99f523f185769ee4885cbfe0dafd52508246ac66bb70db8a6b284f0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'userinfo' value is not used", + "markdown": "Local variable 'userinfo' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 623, + "startColumn": 9, + "charOffset": 27996, + "charLength": 8, + "snippet": { + "text": "userinfo" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 621, + "startColumn": 1, + "charOffset": 27928, + "charLength": 281, + "snippet": { + "text": " username = message.text # получаем username\r\n try:\r\n userinfo = users.get(username)\r\n await state.update_data(username=username) # сохраняем username в данных состояния\r\n await AdminPanel.change_user_agestart.set() # переходим к следующему состоянию\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "30589a5d361961ea18c4ec208995480dd13283f8a2cbd0291b56903c9d308b86" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 355, + "startColumn": 51, + "charOffset": 14322, + "charLength": 16, + "snippet": { + "text": "state:FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 353, + "startColumn": 1, + "charOffset": 14204, + "charLength": 224, + "snippet": { + "text": "\r\n@dp.message_handler(text = \"⬅️Меню\", state=EventMakerPanel.menu)\r\nasync def back_from_event(message: types.Message, state:FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3326a738833e1d92513fa1c6cc9365f9af6c7868b147495fccace83a138c30de" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1485, + "startColumn": 50, + "charOffset": 67340, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1483, + "startColumn": 1, + "charOffset": 67242, + "charLength": 176, + "snippet": { + "text": "\r\n@dp.message_handler(state=MenuStates.profile)\r\nasync def handle_profile(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n select = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "408caea62d7f3876b7c05c4f3e8e8b505cc48dfd6e64e3bba2667d0068566243" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 407, + "startColumn": 55, + "charOffset": 17037, + "charLength": 16, + "snippet": { + "text": "state:FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 405, + "startColumn": 1, + "charOffset": 16921, + "charLength": 211, + "snippet": { + "text": "\r\n@dp.message_handler(state=AdminPanel.update_users_balance)\r\nasync def update_users_balance(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance.set()\r\n select = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4465a2c6b3529675f69e2c2937584877d21e42a12cfb381d036236ad63fad921" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 430, + "startColumn": 53, + "charOffset": 18176, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 428, + "startColumn": 1, + "charOffset": 17996, + "charLength": 285, + "snippet": { + "text": "# Хендлер для кнопки ️Изменить пользователя\r\n@dp.message_handler(text=\"⚙️Изменить пользователя\", state=AdminPanel.admin_menu)\r\nasync def admin_change_user(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_start.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4bcb3f412712de5e29d1e4ae65bf9669a7a62fe97c58d6062e8781d872bde4ab" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'name' value is not used", + "markdown": "Local variable 'name' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 315, + "startColumn": 5, + "charOffset": 12274, + "charLength": 4, + "snippet": { + "text": "name" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 313, + "startColumn": 1, + "charOffset": 12182, + "charLength": 321, + "snippet": { + "text": " new_json_data = ast.literal_eval(new_json_data)\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r\n numberPoints.update({new_json_data[\"questionId\"]: new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']: new_json_data['correctAnswer']})\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4f7de69e26f13a6ad8a6b591caca5eb625c8af7fad2e1b3fd1e9d16c6fbde6cc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 677, + "startColumn": 58, + "charOffset": 30717, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 675, + "startColumn": 1, + "charOffset": 30588, + "charLength": 230, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Добавить QR\", state=AdminPanel.promo_menu)\r\nasync def admin_promocodes_addqr(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_qrstart.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "502c37f38d595e9824e2c84fa37574a64797e21a00430611aa70b3bdc1551274" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 186, + "startColumn": 44, + "charOffset": 6456, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 184, + "startColumn": 1, + "charOffset": 6332, + "charLength": 330, + "snippet": { + "text": "\r\n@dp.message_handler(text='Удалить коллекцию', state=EventMakerPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите пожалуйста имя коллекции для её удаления\", reply_markup=types.ReplyKeyboardRemove())\r\n await EventMakerPanel.taskmenu_collection_delete_select.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6145c356cfb0b0461ab964e263577566309405427d7ac0dd7ff84384d3326675" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'e' value is not used", + "markdown": "Local variable 'e' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1066, + "startColumn": 25, + "charOffset": 47598, + "charLength": 1, + "snippet": { + "text": "e" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1064, + "startColumn": 1, + "charOffset": 47426, + "charLength": 339, + "snippet": { + "text": " await bot.send_message(chat_id,\"Введите количество вопросов в коллекции:\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n except Exception as e:\r\n await bot.send_message(chat_id,\"Произошла ошибка, отправьте пожалуйста фотографию в хорошем качестве.\")\r\n await AdminPanel.taskmenu_photowait.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "63c4d36b1c863e05230ac446d5487a0fbce666e712ee3163fc859735a1da0c1c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'response' value is not used", + "markdown": "Local variable 'response' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 53, + "startColumn": 9, + "charOffset": 1979, + "charLength": 8, + "snippet": { + "text": "response" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 51, + "startColumn": 1, + "charOffset": 1899, + "charLength": 267, + "snippet": { + "text": "def update_user_balance_by_tgusr(tgusr: str, balance : int):\r\n try:\r\n response = supabase.table(table_name).update({'balance': balance}).eq('tgusr', tgusr).execute()\r\n print(f\"Updated user balance for {tgusr}: {balance}\")\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "668bc15ccf1562aa64ee6a4e8d2cbbda83975957cb104f2c5a8713e8fdfa7777" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 980, + "startColumn": 44, + "charOffset": 43619, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 978, + "startColumn": 1, + "charOffset": 43500, + "charLength": 320, + "snippet": { + "text": "\r\n@dp.message_handler(text='Удалить коллекцию', state=AdminPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите пожалуйста имя коллекции для её удаления\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.taskmenu_collection_delete_select.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6c02a233fd67bdaf5cba9286c2051fa8241f168e11c74b7b920f394375675be0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 972, + "startColumn": 52, + "charOffset": 43255, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 970, + "startColumn": 1, + "charOffset": 43126, + "charLength": 265, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"📝Создать задание\", state=AdminPanel.admin_menu)\r\nasync def admin_task_maker(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вошли в редактор заданий\", reply_markup=admtasks)\r\n await AdminPanel.taskmenu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6cf3700282e473830672b70b7c2c28ddb8d519211f3d3cb27d068e3abbceb252" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1295, + "startColumn": 52, + "charOffset": 58520, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1293, + "startColumn": 1, + "charOffset": 58383, + "charLength": 303, + "snippet": { + "text": "\r\n@dp.callback_query_handler(text='back_to_menu', state = MenuStates.promocodestart)\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню промокодов.\", reply_markup=promo_kb)\r\n await MenuStates.promocode.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6eacd0d8e20b36696033781be06b29416833dbf8669d6ee316b2e58b79bfdcda" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1211, + "startColumn": 62, + "charOffset": 54531, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1209, + "startColumn": 1, + "charOffset": 54395, + "charLength": 226, + "snippet": { + "text": "\r\n@dp.callback_query_handler(state=RegistrationStates.waiting_for_gender)\r\nasync def handle_gender_callback(query: types.CallbackQuery, state: FSMContext):\r\n chat_id = query.message.chat.id\r\n gender = query.data.lower()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "70806aa4c59bb1ee33e7757b353b47bba39c7c02a389b840c3d3b6478c4b3824" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 612, + "startColumn": 57, + "charOffset": 27465, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 610, + "startColumn": 1, + "charOffset": 27295, + "charLength": 274, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Изменить возраст\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_change_user_age(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_age.set()\r\n admin = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "70e865be408e6ac2a3945d09211de83d8a8f49e7ee0c812c33650fa9e66f46ec" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1177, + "startColumn": 46, + "charOffset": 52987, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1175, + "startColumn": 1, + "charOffset": 52877, + "charLength": 190, + "snippet": { + "text": "\r\n@dp.message_handler(state=RegistrationStates.waiting_for_age)\r\nasync def handle_age(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user_age = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7a8ce72628ff6cc6a355e41666a4d0a7a0cee5e8d55fc12b2f66367fec4cbd4d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 849, + "startColumn": 46, + "charOffset": 38486, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 847, + "startColumn": 1, + "charOffset": 38372, + "charLength": 321, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Выдать права\",state = AdminPanel.rules)\r\nasync def give_rules(message: types.Message, state: FSMContext):\r\n await AdminPanel.rules_addmaker.set()\r\n await message.reply(\"Введите @username пользователя которому хотите выдать права ивент мейкера\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7c85fdcb52a536ff4af73d8121f5c9e67dc5845e561eba71f091f1777fa86097" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1458, + "startColumn": 56, + "charOffset": 66011, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1456, + "startColumn": 1, + "charOffset": 65882, + "charLength": 292, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=MenuStates.promocode)\r\nasync def back_from_promo_menu(message: types.Message, state: FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(message.chat.id, \"Вы вернулись в главное меню\", reply_markup=rkbm)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7f87e60b9d954e68348854957a7f9a1025ac88501e6a7e84126ca28a0e52ece0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1672, + "startColumn": 49, + "charOffset": 76802, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1670, + "startColumn": 1, + "charOffset": 76678, + "charLength": 358, + "snippet": { + "text": "\r\n@dp.message_handler(text = \"📨Обращения\", state = AdminPanel.admin_menu)\r\nasync def handle_report(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, \"Нажата кнопка обращений, здесь вы можете просмотреть действующие обращения от пользователей или удалить уже решённые. \", reply_markup=admreport)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "80b9de60e528dff45e3615f3b66f0405b1db1a6e46b0b764c539fd832366baa9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 798, + "startColumn": 48, + "charOffset": 36158, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 796, + "startColumn": 1, + "charOffset": 36034, + "charLength": 287, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Удалить промокод\", state=AdminPanel.promo_menu)\r\nasync def delete_promo(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_delpromo.set()\r\n await message.reply(\"Введите промокод для удаления\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "83eb76d41a5e38755873fc544abccb2a9efb0aa3506c09ea008078af02066973" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1137, + "startColumn": 51, + "charOffset": 51211, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1135, + "startColumn": 1, + "charOffset": 51088, + "charLength": 258, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=AdminPanel.taskmenu)\r\nasync def back_from_rules(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8fb3802011942d1c09be85f74d7297aff5172e4e7fcf6d01d6a84ed61cf1e27f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1469, + "startColumn": 53, + "charOffset": 66592, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1467, + "startColumn": 1, + "charOffset": 66460, + "charLength": 226, + "snippet": { + "text": "\r\n@dp.message_handler(text =\"📊Рейтинг\", state=MenuStates.waiting_for_profile)\r\nasync def user_rating_board(message: types.Message, state: FSMContext):\r\n await MenuStates.rating.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9256ce6c6ee7eaa26cdceda55a8a11e10290ba323e710b45212be58353bd05d2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'tgus' value is not used", + "markdown": "Local variable 'tgus' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1614, + "startColumn": 9, + "charOffset": 74125, + "charLength": 4, + "snippet": { + "text": "tgus" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1612, + "startColumn": 1, + "charOffset": 74054, + "charLength": 169, + "snippet": { + "text": " await MenuStates.waiting_for_profile.set()\r\n else:\r\n tgus = '@' + tgu\r\n tgus = '@' + tgu\r\n # Проверяем, есть ли у пользователя предыдущие заявки\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "92e4184fde41d24ad508dee73d4ac58af0ac34f90acad32432e4d4cea0c446b5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1204, + "startColumn": 49, + "charOffset": 54174, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1202, + "startColumn": 1, + "charOffset": 54058, + "charLength": 217, + "snippet": { + "text": "\r\n@dp.message_handler(state=RegistrationStates.waiting_for_gender)\r\nasync def handle_gender(message: types.Message, state: FSMContext):\r\n gender = message.text.lower()\r\n if gender not in [\"мужской\", \"женский\"]:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "92f4146badd06ca21f53779c8f87fc7335a6faa05db76bd2d8cc9ee68fbf78d3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1311, + "startColumn": 67, + "charOffset": 59393, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1309, + "startColumn": 1, + "charOffset": 59269, + "charLength": 202, + "snippet": { + "text": "\r\n@dp.message_handler(state=ProlfileStates.edit_profile)\r\nasync def handle_waiting_for_edit_profile(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n select = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9467926ea5d92e6ae77d8aa185eb7c268fb84701808b6cce9f27dd6aa7d5ae68" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'response' value is not used", + "markdown": "Local variable 'response' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 32, + "startColumn": 9, + "charOffset": 988, + "charLength": 8, + "snippet": { + "text": "response" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 30, + "startColumn": 1, + "charOffset": 899, + "charLength": 283, + "snippet": { + "text": " try:\r\n chat_id_str = str(chat_id) # Преобразование chat_id в строку\r\n response = supabase.table(table_name).update({'user_state': state}).eq('chat_id', chat_id_str).execute()\r\n print(f\"Updated user state for {chat_id}: {state}\")\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "94b186c99f2b6599655c9c8018ecd272edb87d031ea33414d4ed81a22df2a155" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 161, + "startColumn": 49, + "charOffset": 5440, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 159, + "startColumn": 1, + "charOffset": 5338, + "charLength": 209, + "snippet": { + "text": "\r\n@dp.message_handler(commands=['event'], state='*')\r\nasync def event_command(message: types.Message, state: FSMContext):\r\n with open('roles.json') as f:\r\n event_roles = json.load(f)['event_makers']\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9646be1d11ae1185b2eae30995df4bf8cf7ec3a2e72bae30f3c750850720b9c0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 942, + "startColumn": 51, + "charOffset": 41830, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 940, + "startColumn": 1, + "charOffset": 41713, + "charLength": 224, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"⬅️Меню\", state=AdminPanel.admin_menu)\r\nasync def admin_menu_back(message: types.Message, state: FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "97684a45d8f542544b572775cf67b3d2416c61a53fe0f8ec70ed28e01485fab7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1662, + "startColumn": 52, + "charOffset": 76222, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1660, + "startColumn": 1, + "charOffset": 76031, + "charLength": 290, + "snippet": { + "text": "\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r\nasync def handle_help_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await MenuStates.waiting_for_profile.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "984c8e368c38ad7cc438866b7dcc26eaad813dd18e77e064717ae54cf4fad8a8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 841, + "startColumn": 49, + "charOffset": 38054, + "charLength": 16, + "snippet": { + "text": "state:FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 839, + "startColumn": 1, + "charOffset": 37928, + "charLength": 218, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"👨‍🚀Организаторы\", state=AdminPanel.admin_menu)\r\nasync def give_ruleskbm(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9b3aca32c35526285b03419c7540d4a0a5c9c4078f30c88dca86631afbb3f527" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 827, + "startColumn": 52, + "charOffset": 37416, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 825, + "startColumn": 1, + "charOffset": 37201, + "charLength": 350, + "snippet": { + "text": "# Хедлер для бека в меню админа\r\n@dp.message_handler(text=\"⬅️Админ меню\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end, AdminPanel.promo_menu])\r\nasync def admin_backtomenu(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a290d7f64733565db3037b5b35961ee446889c6064b7b35a4058609f5aa3aaf7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1029, + "startColumn": 46, + "charOffset": 45736, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1027, + "startColumn": 1, + "charOffset": 45615, + "charLength": 290, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Создать коллекцию\", state=AdminPanel.taskmenu)\r\nasync def admin_make(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id,f\"Введите название коллекции заданий:\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "af824c5041a21aee459983d02554a08453124ae5d3f28059330305369b50f003" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'tgusr' value is not used", + "markdown": "Local variable 'tgusr' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1641, + "startColumn": 9, + "charOffset": 75324, + "charLength": 5, + "snippet": { + "text": "tgusr" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1639, + "startColumn": 1, + "charOffset": 75229, + "charLength": 156, + "snippet": { + "text": " chat_id = message.chat.id\r\n telegram_name = message.from_user.username\r\n tgusr = telegram_name\r\n\r\n tgusr = \"@\" + telegram_name\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b224ab24e63454ef4ff334809f9ed0c8de0dc583e40017d43b35e7e492f64a6b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 771, + "startColumn": 46, + "charOffset": 34879, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 769, + "startColumn": 1, + "charOffset": 34756, + "charLength": 296, + "snippet": { + "text": "\r\n@dp.message_handler(text ='Добавить промокод',state=AdminPanel.promo_menu)\r\nasync def get_usages(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите количество использований:\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.promo_addpromousages.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b94a4ecd0dbf3f6e8e443ac297b9f1569b44275db8ab4c58db34c2d25ee6af6e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 501, + "startColumn": 61, + "charOffset": 21806, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 499, + "startColumn": 1, + "charOffset": 21633, + "charLength": 384, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Изменить баланс\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_change_user_balance(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_balancestart.set()\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "bac33b3925f4642babd98655393acffde7cbfe8ccba8dfcffc15caa3c31fe10e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 934, + "startColumn": 51, + "charOffset": 41467, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 932, + "startColumn": 1, + "charOffset": 41349, + "charLength": 253, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"⬅️Админ меню\", state=AdminPanel.rules)\r\nasync def back_from_rules(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "bf006dbc742ee8cbc2cd7cecd4c4f4e3f2c274696f9b58b0fab49af8d36bd14d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'userinfo' value is not used", + "markdown": "Local variable 'userinfo' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 512, + "startColumn": 9, + "charOffset": 22368, + "charLength": 8, + "snippet": { + "text": "userinfo" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 510, + "startColumn": 1, + "charOffset": 22300, + "charLength": 203, + "snippet": { + "text": " username = message.text # получаем username\r\n try:\r\n userinfo = users.get(username)\r\n await state.update_data(username=username)\r\n await AdminPanel.change_user_balance.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c0d4ee5945e43cb757d279ddbfb327da00358aaf95b06bf9d8ca2ac4571e5ad9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 375, + "startColumn": 49, + "charOffset": 15402, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 373, + "startColumn": 1, + "charOffset": 15300, + "charLength": 208, + "snippet": { + "text": "\r\n@dp.message_handler(commands=['admin'], state='*')\r\nasync def admin_command(message: types.Message, state: FSMContext):\r\n # Проверка, что пользователь в списке админов\r\n with open('roles.json') as f:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c3e6b50802fc6e156b978f93b150cf9fdfbbb9abfd94783a702739e59d2d0dd3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'delete_query' value is not used", + "markdown": "Local variable 'delete_query' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1728, + "startColumn": 5, + "charOffset": 79053, + "charLength": 12, + "snippet": { + "text": "delete_query" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1726, + "startColumn": 1, + "charOffset": 79021, + "charLength": 218, + "snippet": { + "text": "\r\n # Удаление обращения\r\n delete_query = supabase.table('Report').delete().eq('tgusr', username).execute()\r\n\r\n await message.reply(f\"Обращение пользователя {username} успешно удалено\", reply_markup=admreport)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c484efbedce7a56e8bb08a4cafd812a7d61f228b8d7ad3964fa3d348ee48a833" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 881, + "startColumn": 53, + "charOffset": 39652, + "charLength": 16, + "snippet": { + "text": "state:FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 879, + "startColumn": 1, + "charOffset": 39531, + "charLength": 314, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Забрать права\", state=AdminPanel.rules)\r\nasync def del_from_eventers(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules_delmaker.set()\r\n await message.reply(\"Введите @username пользователя у котрого хотите забрать права\",reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c6080c1e4be402a471ac2df6ce173102941597cdb1552094b096ec67dd8d3e1b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1290, + "startColumn": 52, + "charOffset": 58197, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1288, + "startColumn": 1, + "charOffset": 58021, + "charLength": 361, + "snippet": { + "text": "\r\n@dp.callback_query_handler(text=\"cancel_user\", state=[ProlfileStates.edit_profile_name, ProlfileStates.edit_profile_age])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню редактирования профиля.\", reply_markup=menuedit)\r\n await ProlfileStates.edit_profile.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cd0c08edb0946925eb9645794eb953627f6fe0372117ad40280a526d51ffce0a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 239, + "startColumn": 46, + "charOffset": 8748, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 237, + "startColumn": 1, + "charOffset": 8622, + "charLength": 296, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Создать коллекцию\", state=EventMakerPanel.taskmenu)\r\nasync def admin_make(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, f\"Введите название коллекции заданий:\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cf15efd86c36b68c127b316573e26ddff1b89eab65f78f0dc31ee87e3bea3337" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 176, + "startColumn": 49, + "charOffset": 6063, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 174, + "startColumn": 1, + "charOffset": 5938, + "charLength": 226, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"📝Создать задание\", state=EventMakerPanel.menu)\r\nasync def go_event_menu(message: types.Message, state: FSMContext):\r\n await EventMakerPanel.taskmenu.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d884de07b61b89285ac5d706b994d650eda8705c8a7e1c8074f2ebf74f704ae7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 370, + "startColumn": 52, + "charOffset": 15131, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 368, + "startColumn": 1, + "charOffset": 14862, + "charLength": 437, + "snippet": { + "text": "# Хендлер отмены действия через кнопку\r\n@dp.callback_query_handler(text=\"cancel\", state=[AdminPanel.change_user_balance,AdminPanel.change_user_fullname,AdminPanel.change_user_agestart,AdminPanel.get_info_about_user])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню админ-панели.\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d8bee3224b89c94a0dacda99d094087f14180d5cf09fd9e479f8882d518de8bf" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 549, + "startColumn": 62, + "charOffset": 24214, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 547, + "startColumn": 1, + "charOffset": 24043, + "charLength": 383, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Изменить ФИО\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_change_user_fullname(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_fullnamestart.set()\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d9e740d48ff6bb981375062e08d55e1509d865dd144b7f37bca2e47ea70fd5ce" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1300, + "startColumn": 52, + "charOffset": 58820, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1298, + "startColumn": 1, + "charOffset": 58687, + "charLength": 297, + "snippet": { + "text": "\r\n@dp.callback_query_handler(text=\"cancel_user_help\", state=MenuStates.help_end)\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню помощи.\", reply_markup=userhelp)\r\n await MenuStates.help_cancel.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e0fe336544bddabc1a060fe3547ae2a1e1eb1bccf0f39e3d4ba22a26f6bbb925" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'response' value is not used", + "markdown": "Local variable 'response' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 46, + "startColumn": 9, + "charOffset": 1665, + "charLength": 8, + "snippet": { + "text": "response" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 44, + "startColumn": 1, + "charOffset": 1593, + "charLength": 243, + "snippet": { + "text": "def update_user_age_by_tgusr(tgusr: str, age : int):\r\n try:\r\n response = supabase.table(table_name).update({'age': age}).eq('tgusr', tgusr).execute()\r\n print(f\"Updated user age for {tgusr}: {age}\")\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e67d9b13c224cd63efbd6d81d533208057927c81194c9926847cae220b0edf57" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'userinfo' value is not used", + "markdown": "Local variable 'userinfo' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 560, + "startColumn": 9, + "charOffset": 24780, + "charLength": 8, + "snippet": { + "text": "userinfo" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 558, + "startColumn": 1, + "charOffset": 24712, + "charLength": 281, + "snippet": { + "text": " username = message.text # получаем username\r\n try:\r\n userinfo = users.get(username)\r\n await state.update_data(username=username) # сохраняем username в данных состояния\r\n await AdminPanel.change_user_fullname.set() # переходим к следующему состоянию\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e84d5931d48032d156be10034c71e7d861137746412db8271b8f358ae9357612" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 735, + "startColumn": 52, + "charOffset": 33165, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 733, + "startColumn": 1, + "charOffset": 33040, + "charLength": 276, + "snippet": { + "text": "\r\n@dp.message_handler(text='Нэйминг-промо', state=AdminPanel.promo_menu)\r\nasync def get_naming_promo(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите имя промокода\", reply_markup=types.ReplyKeyboardRemove())\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ecb61bc2c6881c93261a9dd3668e8814d7df47084941e5937d70f585f426518e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1565, + "startColumn": 51, + "charOffset": 71567, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1563, + "startColumn": 1, + "charOffset": 71467, + "charLength": 222, + "snippet": { + "text": "\r\n@dp.message_handler(state=MenuStates.calendar)\r\nasync def handle_calendar(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n response = supabase.table('Event').select('*').limit(5).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ecdbe02f1fca27752f53078d59999690ae115e0862daafd22f25a8d28c759120" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 346, + "startColumn": 59, + "charOffset": 13943, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 344, + "startColumn": 1, + "charOffset": 13807, + "charLength": 233, + "snippet": { + "text": "\r\n@dp.message_handler(text='⬅️Назад в меню', state=EventMakerPanel.taskmenu)\r\nasync def back_to_event_main_menu(message: types.Message, state: FSMContext):\r\n await EventMakerPanel.menu.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f9fbf2876be1a95de3af1ba0312e7926a80d170968671bc05844bf3e41f9806e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + } + ], + "automationDetails": { + "id": "project/qodana/2024-01-30", + "guid": "45974875-8be7-41f7-ad90-0a1c788e6518", + "properties": { + "jobUrl": "https://github.com/Student-Labs-2023/BoilerPoint/actions/runs/7706546158" + } + }, + "newlineSequences": [ + "\r\n", + "\n" + ], + "properties": { + "qodana.sanity.results": [ + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'ValidationError'", + "markdown": "Unresolved reference 'ValidationError'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/models/users.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 33, + "charOffset": 32, + "charLength": 15, + "snippet": { + "text": "ValidationError" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 52, + "snippet": { + "text": "from pydantic import BaseModel, ValidationError\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0c2fe2c1e25c29179a5fab900a4d49b6f90b0554b6b17c4809a97b6ceb0fc212" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'ReplyKeyboardMarkup'", + "markdown": "Unresolved reference 'ReplyKeyboardMarkup'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 70, + "charOffset": 69, + "charLength": 19, + "snippet": { + "text": "ReplyKeyboardMarkup" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 173, + "snippet": { + "text": "from aiogram.types import InlineKeyboardMarkup,InlineKeyboardButton, ReplyKeyboardMarkup, KeyboardButton\r\nfrom aiogram.types.web_app_info import WebAppInfo\r\n#gender buttons\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0f0996642f50f8974ac8210b312844b7211bbe6d5be4926347e3e1087cac721d" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'aiogram'", + "markdown": "Unresolved reference 'aiogram'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 6, + "charOffset": 5, + "charLength": 7, + "snippet": { + "text": "aiogram" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 88, + "snippet": { + "text": "from aiogram import Bot, types\r\nfrom Database.DataUsers import *\r\nfrom buttons import *\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "22125fe1302db9d68540e734877a48821cf29767438c97360a122c4acca06959" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "No module named 'gspread'", + "markdown": "No module named 'gspread'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 8, + "charOffset": 7, + "charLength": 7, + "snippet": { + "text": "gspread" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 114, + "snippet": { + "text": "import gspread\nfrom gspread import Cell, Client, Spreadsheet, Worksheet\nfrom supabase import Client, create_client" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "274c1b42b1e3778b9f1e70205c26a374d518acdaf62389601b86085bcd8e808d" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'types'", + "markdown": "Unresolved reference 'types'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 26, + "charOffset": 25, + "charLength": 5, + "snippet": { + "text": "types" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 88, + "snippet": { + "text": "from aiogram import Bot, types\r\nfrom Database.DataUsers import *\r\nfrom buttons import *\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "27e6f5d9fd16ac7bdbf1bde762b5fe29e9a1dd17ad656074e418777a14e0da07" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'gspread'", + "markdown": "Unresolved reference 'gspread'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 2, + "startColumn": 6, + "charOffset": 20, + "charLength": 7, + "snippet": { + "text": "gspread" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 130, + "snippet": { + "text": "import gspread\nfrom gspread import Cell, Client, Spreadsheet, Worksheet\nfrom supabase import Client, create_client\nimport schedule" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4b271ea587d1c1a2fd9f0fae889d0ebe9d06defcea2270d2e66de898883e69c3" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'pydantic'", + "markdown": "Unresolved reference 'pydantic'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/models/users.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 6, + "charOffset": 5, + "charLength": 8, + "snippet": { + "text": "pydantic" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 52, + "snippet": { + "text": "from pydantic import BaseModel, ValidationError\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5007533137c3a2dff61a34d5d6ce4245497f40a9ddade2e77e18113d9a036f6e" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'Client'", + "markdown": "Unresolved reference 'Client'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 3, + "startColumn": 22, + "charOffset": 64, + "charLength": 6, + "snippet": { + "text": "Client" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 91, + "snippet": { + "text": "import os\r\nfrom dotenv import load_dotenv\r\nfrom supabase import Client , create_client\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "75b1b9cdf02a980fb7e76da6bb64cea304e52e615c0886781bafca411e4d8025" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'BaseModel'", + "markdown": "Unresolved reference 'BaseModel'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/models/users.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 22, + "charOffset": 21, + "charLength": 9, + "snippet": { + "text": "BaseModel" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 52, + "snippet": { + "text": "from pydantic import BaseModel, ValidationError\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7d892af0a92f891af1d7aa481ad8d3d36b5bca537dc7c4003a21a05465d5c78b" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'aiogram'", + "markdown": "Unresolved reference 'aiogram'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 6, + "charOffset": 5, + "charLength": 7, + "snippet": { + "text": "aiogram" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 173, + "snippet": { + "text": "from aiogram.types import InlineKeyboardMarkup,InlineKeyboardButton, ReplyKeyboardMarkup, KeyboardButton\r\nfrom aiogram.types.web_app_info import WebAppInfo\r\n#gender buttons\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "874c3e366dd35a3c7d28d217291bb6796ba91fbc0f396a5ed8e897247fa2bf20" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'Cell'", + "markdown": "Unresolved reference 'Cell'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 2, + "startColumn": 21, + "charOffset": 35, + "charLength": 4, + "snippet": { + "text": "Cell" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 130, + "snippet": { + "text": "import gspread\nfrom gspread import Cell, Client, Spreadsheet, Worksheet\nfrom supabase import Client, create_client\nimport schedule" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "94b74117687be51e4dabba521a8d8d1af8087bfa81911c8e7d2bff769afff489" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'load_dotenv'", + "markdown": "Unresolved reference 'load_dotenv'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 2, + "startColumn": 20, + "charOffset": 30, + "charLength": 11, + "snippet": { + "text": "load_dotenv" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 89, + "snippet": { + "text": "import os\r\nfrom dotenv import load_dotenv\r\nfrom supabase import Client , create_client\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a3701fe4785e6547a5be504b5a92b01d124abf775a9f5109c5c6f88fec840bc1" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused import statement 'Cell'", + "markdown": "Unused import statement `Cell`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 2, + "startColumn": 21, + "charOffset": 35, + "charLength": 4, + "snippet": { + "text": "Cell" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 130, + "snippet": { + "text": "import gspread\nfrom gspread import Cell, Client, Spreadsheet, Worksheet\nfrom supabase import Client, create_client\nimport schedule" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a44cd16d98d558745013117051f3e0dc55e513e60d7c6be29b3ea7bf0b3eb12e" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'InlineKeyboardMarkup'", + "markdown": "Unresolved reference 'InlineKeyboardMarkup'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 27, + "charOffset": 26, + "charLength": 20, + "snippet": { + "text": "InlineKeyboardMarkup" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 173, + "snippet": { + "text": "from aiogram.types import InlineKeyboardMarkup,InlineKeyboardButton, ReplyKeyboardMarkup, KeyboardButton\r\nfrom aiogram.types.web_app_info import WebAppInfo\r\n#gender buttons\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b72f7a133887a80d04dd1b02d6e0747b90c9947146b14fc52c70e43bcaafad4e" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused import statement 'ValidationError'", + "markdown": "Unused import statement `ValidationError`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/models/users.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 33, + "charOffset": 32, + "charLength": 15, + "snippet": { + "text": "ValidationError" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 52, + "snippet": { + "text": "from pydantic import BaseModel, ValidationError\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c3e7b17eec00181d35ab4e60bb823ac8399532d2e371ae082ce885f469697f5a" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'Bot'", + "markdown": "Unresolved reference 'Bot'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 21, + "charOffset": 20, + "charLength": 3, + "snippet": { + "text": "Bot" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 88, + "snippet": { + "text": "from aiogram import Bot, types\r\nfrom Database.DataUsers import *\r\nfrom buttons import *\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c743cfc30e33a9433b282807a950ad9a588f1c154658da810bcd99014652a2ad" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused import statement 'types'", + "markdown": "Unused import statement `types`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 26, + "charOffset": 25, + "charLength": 5, + "snippet": { + "text": "types" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 88, + "snippet": { + "text": "from aiogram import Bot, types\r\nfrom Database.DataUsers import *\r\nfrom buttons import *\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d042b9e7a55f6e14bf0cea175839220303ddfbf5765d90bca770050d5bb82ee0" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'supabase'", + "markdown": "Unresolved reference 'supabase'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 3, + "startColumn": 6, + "charOffset": 48, + "charLength": 8, + "snippet": { + "text": "supabase" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 91, + "snippet": { + "text": "import os\r\nfrom dotenv import load_dotenv\r\nfrom supabase import Client , create_client\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "dc6abac050449f31a4623088adb01e7176fb19f32862ae8dc34af887c3cff258" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'InlineKeyboardButton'", + "markdown": "Unresolved reference 'InlineKeyboardButton'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 48, + "charOffset": 47, + "charLength": 20, + "snippet": { + "text": "InlineKeyboardButton" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 173, + "snippet": { + "text": "from aiogram.types import InlineKeyboardMarkup,InlineKeyboardButton, ReplyKeyboardMarkup, KeyboardButton\r\nfrom aiogram.types.web_app_info import WebAppInfo\r\n#gender buttons\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e52a3f58d0f4847fb7b3a3b39dd1c90bb785af007b49035c561c823ca28ceb29" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'dotenv'", + "markdown": "Unresolved reference 'dotenv'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 2, + "startColumn": 6, + "charOffset": 16, + "charLength": 6, + "snippet": { + "text": "dotenv" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 89, + "snippet": { + "text": "import os\r\nfrom dotenv import load_dotenv\r\nfrom supabase import Client , create_client\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f5129ef3d86298dd931d20a604df7af63b2ddc5e529d9553a8324d23fd259159" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + } + ], + "configProfile": "absent", + "deviceId": "200820300000000-3c3f-adba-b6ad-f53bc8911872", + "qodanaNewResultSummary": { + "moderate": 650, + "high": 20, + "total": 670 + } + } + } + ] +} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 68bc17f..308adf2 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,9 @@ __pycache__/ # C extensions *.so +# JSON с гугл докой +boilerpoint-393111-68b01f6645e3.json + # Distribution / packaging .Python build/ diff --git a/Database/DataUsers.py b/Database/DataUsers.py new file mode 100644 index 0000000..0fe7b45 --- /dev/null +++ b/Database/DataUsers.py @@ -0,0 +1,79 @@ +import os +from dotenv import load_dotenv +from supabase import Client , create_client + + + +load_dotenv() + +# Инициализация подключения к базе данных Supabase +url: str = os.environ.get("SUPABASE_URL") +key: str = os.environ.get("SUPABASE_KEY") +supabase: Client = create_client(url,key) +table_name = "UsersData" + + +def get_user_state_by_id(chat_id: int) -> str: + try: + response = supabase.table(table_name).select('user_state').eq('chat_id', chat_id).limit(1).execute() + if len(response.data) > 0: + user_state = response.data[0].get('user_state') + print(f"Retrieved user state for {chat_id}: {user_state}") + return user_state + else: + return "" + except Exception as e: + print(f"Error retrieving user state for {chat_id}: {e}") + return "" + +def update_user_state_by_id(chat_id: int, state: str): + try: + chat_id_str = str(chat_id) # Преобразование chat_id в строку + response = supabase.table(table_name).update({'user_state': state}).eq('chat_id', chat_id_str).execute() + print(f"Updated user state for {chat_id}: {state}") + except Exception as e: + print(f"Error updating user state for {chat_id}: {e}") + +def update_user_fullname_by_tgusr(tgusr: str, full_name: str): + try: + response = supabase.table(table_name).update({'full_name': full_name}).eq('tgusr', tgusr).execute() + print(f"Updated user fullname for {tgusr}: {full_name}") + except Exception as e: + print(f"Error updating user fullname for {tgusr}: {e}") + +def update_user_age_by_tgusr(tgusr: str, age : int): + try: + response = supabase.table(table_name).update({'age': age}).eq('tgusr', tgusr).execute() + print(f"Updated user age for {tgusr}: {age}") + except Exception as e: + print(f"Error updating user age for {tgusr}: {e}") + +def update_user_balance_by_tgusr(tgusr: str, balance : int): + try: + response = supabase.table(table_name).update({'balance': balance}).eq('tgusr', tgusr).execute() + print(f"Updated user balance for {tgusr}: {balance}") + except Exception as e: + print(f"Error updating user balance for {tgusr}: {e}") + +def delete_user_data_by_id(chat_id: int) -> str: + try: + chat_id_str = str(chat_id) + result = supabase.table(table_name).delete().eq('chat_id', chat_id_str).execute() + if result["error"]: + print(f"Error deleting rows: {result['error']}") + else: + print(f"{result['count']} rows deleted") + except Exception as e: + print(f"Error delete user data: {chat_id}: {e}") + + +def get_user_info_by_id(chat_id:int ) -> str: + try: + response = supabase.table('UsersData').select('full_name','gender','age','balance','tgusr').eq('chat_id', chat_id).execute() + return response + except Exception as e: + print(f"Error get info about user: {chat_id}: {e}") + + + + diff --git a/Database/YandexDB.py b/Database/YandexDB.py deleted file mode 100644 index 63ad37a..0000000 --- a/Database/YandexDB.py +++ /dev/null @@ -1,15 +0,0 @@ -import boto3 -import os -from dotenv import load_dotenv - -load_dotenv() - -# Инициализация подключение к Базе Данных Yandex Data-Base через AWS с boto3 -database = boto3.resource( - 'dynamodb', - endpoint_url=os.getenv("USER_STORAGE_URL"), - region_name='ru-central1', - aws_access_key_id=os.getenv("AWS_PUBLIC_KEY"), - aws_secret_access_key=os.getenv("AWS_SECRET_KEY") -) -table = database.Table('table123') \ No newline at end of file diff --git a/Database/__pycache__/YandexDB.cpython-310.pyc b/Database/__pycache__/YandexDB.cpython-310.pyc deleted file mode 100644 index 479e435..0000000 Binary files a/Database/__pycache__/YandexDB.cpython-310.pyc and /dev/null differ diff --git a/Database/__pycache__/YandexDB.cpython-311.pyc b/Database/__pycache__/YandexDB.cpython-311.pyc deleted file mode 100644 index 1d515d6..0000000 Binary files a/Database/__pycache__/YandexDB.cpython-311.pyc and /dev/null differ diff --git a/Database/__pycache__/state.cpython-311.pyc b/Database/__pycache__/state.cpython-311.pyc deleted file mode 100644 index 2976f2c..0000000 Binary files a/Database/__pycache__/state.cpython-311.pyc and /dev/null differ diff --git a/Database/docker-compose.yml b/Database/docker-compose.yml deleted file mode 100644 index 4d03cc5..0000000 --- a/Database/docker-compose.yml +++ /dev/null @@ -1,17 +0,0 @@ -version: '3.3' -services: - yc: - container_name: ydb-local - hostname: localhost - ports: - - '2135:2135' - - '2136:2136' - - '8765:8765' - volumes: - - '$(pwd)/ydb_certs:/ydb_certs' - - '$(pwd)/ydb_data:/ydb_data' - environment: - - GRPC_TLS_PORT=2135 - - GRPC_PORT=2136 - - MON_PORT=8765 - image: 'cr.yandex/yc/yandex-docker-local-ydb:latest' \ No newline at end of file diff --git a/Documentation/BoilerPointTG.sql b/Documentation/BoilerPointTG.sql new file mode 100644 index 0000000..c9a0b44 --- /dev/null +++ b/Documentation/BoilerPointTG.sql @@ -0,0 +1,59 @@ +CREATE TABLE "DataUsers" ( + "chat_id" int UNIQUE PRIMARY KEY, + "full_name" varchar, + "age" int, + "gender" bool, + "balance" int, + "user_state" varchar, + "tgusr" varchar +); + +CREATE TABLE "Report" ( + "tgusr" varchar UNIQUE PRIMARY KEY, + "description" varchar +); + +CREATE TABLE "Promocode" ( + "promo" varchar UNIQUE PRIMARY KEY, + "last" int, + "cost" int +); + +CREATE TABLE "UsedPromocode" ( + "id" int UNIQUE PRIMARY KEY, + "promo" varchar, + "chat_id" int +); + +CREATE TABLE "Event" ( + "id" int PRIMARY KEY, + "date_start" varchar, + "date_end" varchar, + "full_name" varchar +); + +CREATE TABLE "TaskCollection" ( + "name" varchar UNIQUE PRIMARY KEY, + "description" varchar, + "photo" varchar, + "counter" int, + "url" varchar, + "numberPoints" varchar, + "rightAnswers" varchar +); + +CREATE TABLE "Passd" ( + "id" int PRIMARY KEY, + "name" varchar, + "chat_id" int +); + +ALTER TABLE "DataUsers" ADD FOREIGN KEY ("chat_id") REFERENCES "UsedPromocode" ("chat_id"); + +ALTER TABLE "DataUsers" ADD FOREIGN KEY ("tgusr") REFERENCES "Report" ("tgusr"); + +ALTER TABLE "Promocode" ADD FOREIGN KEY ("promo") REFERENCES "UsedPromocode" ("promo"); + +ALTER TABLE "TaskCollection" ADD FOREIGN KEY ("name") REFERENCES "Passd" ("name"); + +ALTER TABLE "DataUsers" ADD FOREIGN KEY ("chat_id") REFERENCES "Passd" ("chat_id"); diff --git a/Documentation/Docs/README.md b/Documentation/Docs/README.md new file mode 100644 index 0000000..70c9d6c --- /dev/null +++ b/Documentation/Docs/README.md @@ -0,0 +1,154 @@ +# Техническая документация + +## Disclaimer + +Документация делается на случай того, если связь с 4-мя разрабами окончательно потеряется и нельзя будет поддерживать бота без их участия. +Вся документация пишется исключительно по доброй воле и не является 100% технической, скорее составляется на тот случай, если другого выхода не будет. + + +Разработчики: + +1. https://github.com/WhiteHodok + +2. https://github.com/Qubicool + +3. https://github.com/Goldenbarnowl + +4. https://github.com/dudava (Web-App) + + +# За что отвечает каждый импорт + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/702df1c4-5f2c-4c57-97a4-a0348799a1a7) + + +## json +- Работа с JSON файлами + +## PIL.image +- Работа с QR + +## io +- Хранение QR кода в опреативной памяти при его создании + +## pyzbar +- Чтение QR кодов с текста + +## aiogram +- Фреймворк на котором сделан бот + +## os +- Подтягивание .env файлов в файловой системе компьютера + +## buttons +- buttons.py отвечает за кнопки в боте + +## src... +- UserRepostiory для удобного обращения к БД + +## GoogleSheets (gspread) +- Для работы гугл-таблиц + +## codegen +- Функции для генерации промокодов + +## funcs +- Функции для работы бота + +## ast +- Dependencies QR + + +# Finite State Machine + +## Для чего нужны стейты (состояния) + +- Стейты нужны для работы с клавиатурой +- При наличии стейтов нельзя попасть в админку не находясь в roles.json или создать ивент +- https://mastergroosha.github.io/aiogram-2-guide/fsm/ + +## Как объявить новое состояние + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/292b5e4b-9b61-4166-adc5-e07401b36a74) + + +- Создать новый класс и передать в класс от которого он наследуется StatesGroup +- Передать аргументы нового состояния следующим образом + + +```py +class RegistrationStates(StatesGroup): + waiting_for_age = State() + waiting_for_gender = State() + waiting_for_name = State() + final_reg = State() +``` + + +Всё это позволит вам создать новый класс в машине состояний (FSM) + + +# Что делать если я вижу бота на миллион строк и не понимаю что в нём редачить + + Определённые функции в боте можно идентифицировать однозначно с помощью следующих способов : + + +1. Способ + +1.1.Мы видим в нашем боте любую красивую кнопку у которой хотим изменить функционал. + +1.2.Заходим в любой IDE, открываем main.py, нажимаем CTR+F и пишем текст кнопки, которую хотим изменить. + +1.3.Вы прекрасны + + +2. Способ + +2.1. Мы знаем про существование FSM в нашем боте + +2.2. Заходим в нужный класс и делаем CTR+F по этому стейту. + +2.3. Profit + + +3. Способ + +3.1. Весь код в боте разделён на тематические блоки : + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/d5934852-5efa-46ee-bd0a-daf4eb1f6ac7) + +Эти блоки сообщают нам о том за что конкретно отвечает каждый блок + +3.2. Все хендлеры в блоке идут последовательно и не разорваны по коду мейна, т.е каждая клавиатура идёт последовательно друг за другом и никак иначе. + + +## Структура .env + +``` +TOKEN = +SUPABASE_URL = +SUPABASE_KEY = +MALE = +FEMALE = +``` + +## Структура JSON + +``` +{ + "type": "service_account", + "project_id": "boilerpoint", + "private_key_id": "", + "private_key": "-----BEGIN PRIVATE KEY-----\n-----END PRIVATE KEY-----\n", + "client_email": "", + "client_id": "", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "", + "universe_domain": "googleapis.com" +} +``` + + +P.S. Как получить .env & JSON можно посмотреть в раниих ветках проекта, а именно в старом README.md датой около 10-21 июля 2023 года diff --git a/Documentation/README.md b/Documentation/README.md new file mode 100644 index 0000000..ffc383b --- /dev/null +++ b/Documentation/README.md @@ -0,0 +1,15 @@ +# EULA + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/3a0b8b77-e2aa-439f-8e58-972d9689501e) + +## Правила + +Здесь собраны необходимые для ознакомления *правила* и *рекомендации* : + +1. Пользователю при вводе его имени желательно ставить его реальное ФИО, чтобы администратор был уверен в том, кому выдаёт награду. + +1.1. Если ваше имя не валидируется , т.е система не даёт вам зарегистрироваться из-за вашего имени, зарегистрируйтесь под любым именем, которое пропустит система, зачем перейдите в кнопку "Помощь" , в ней создайте заявку администратору на смену имени. + +2. Не используйте ругательства и оскорбления в графе ФИО, администрация следит за этим. + +3. Вы прекрасны! diff --git a/Documentation/Schema/index.puml b/Documentation/Schema/index.puml new file mode 100644 index 0000000..ee1e5d4 --- /dev/null +++ b/Documentation/Schema/index.puml @@ -0,0 +1,51 @@ +@startuml Foobr-System +!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml + +LAYOUT_WITH_LEGEND() + +!define DEVICONS https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/devicons +!include DEVICONS/python.puml +!include DEVICONS/database.puml +!include DEVICONS/javascript.puml + +left to right direction + +Person(user, "User", "Boiling point visitor") +Person(admin, "Administrator", "Boiling point admin") + +System_Boundary(bpb, "Boiling Point Bot") { + Container(bot, "Boiling Point Bot", "Python/Aiogram", "Perform main buisness logic", $sprite="python") + ContainerDb(db, "Database", "Supabase", "Contain info about users, events, they relations, etc.", $sprite="database") + Container(scanner, "QR Scanner", "Vue/grammyjs","QR Code Scanner Telegram Web Application", $sprite="javascript") + Container(form_reader, "Forms", "Quasar", "Form walkthrough Telegram Web Application", $sprite="javascript") + Container(form_writer, "Forms Creator", "Quasar", "Form creation Telegram Web Application", $sprite="javascript") + Container(event_sync, "Event Syncronizer", "Typescipt", "Cron, used for synchronization of the leader id events with database", $sprite="javascript") +} + +System_Ext(leaderid, "Leader ID", "Provide info about events, users, etc.") +System_Ext(telegram, "Telegram", "Telegram Domain") +System_Ext(sheets, "Google Sheets", "Google Sheets Api") + +Rel(user, telegram, "Using to participate in events, saw profile, users top and work with promos", "Telegram/Web App") +Rel(user, scanner, "Using to scan promo QR Codes", "HTTPS") +Rel(user, form_reader, "Using to complete event forms", "HTTPS") + +Rel(telegram, bot, "Using to pass requests to bot", "HTTPS/Webhook") + +Rel(admin, telegram, "Using to CRUD users, events, etc.", "Telegram/Web App") +Rel(admin, form_writer, "Using to create forms", "HTTPS") +Rel(admin, db, "Using to add some files, CRUD info", "HTTPS/Supabase UI") + +Rel(bot, sheets, "Using to update raiting sheet") + +Rel(form_reader, telegram, "Using, to push user answers to bot", "HTTPS") +Rel(form_writer, telegram, "Using to push created form to bot", "HTTPS") +Rel(scanner, telegram, "Using to push promo to bot", "HTTPS") + +Rel(bot, db, "Using to CRUD info about users, events, etc. Work with files (i. e. images)", "HTTPS/supabase-py") + + +Rel(event_sync, db, "Using to write events from Leader ID to database", "HTTPS/supabase-js") +Rel(event_sync, leaderid, "Using to synchronize info about events", "sync,HTTPS/Rest") + +@enduml diff --git a/Documentation/Schema/plantuml-1.2023.10.jar b/Documentation/Schema/plantuml-1.2023.10.jar new file mode 100644 index 0000000..aa8d50f Binary files /dev/null and b/Documentation/Schema/plantuml-1.2023.10.jar differ diff --git a/Documentation/Schema/schema.png b/Documentation/Schema/schema.png new file mode 100644 index 0000000..1ea94d0 Binary files /dev/null and b/Documentation/Schema/schema.png differ diff --git a/Documentation/Schema/simple.puml b/Documentation/Schema/simple.puml new file mode 100644 index 0000000..d9bd244 --- /dev/null +++ b/Documentation/Schema/simple.puml @@ -0,0 +1,18 @@ +@startuml +!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml + +LAYOUT_WITH_LEGEND() + +Person(user, "User", "Boiling point visitor") +Person(admin, "Administrator", "Boiling point admin") + +System(bpb, "Boiling Point Bot", "Provide boiling point gamification functionality") +System_Ext(leaderid, "Leader ID", "Provide info about events, users, etc.") +System_Ext(telegram, "Telegram", "Telegram Domain") + +Rel(user, telegram, "Using to participate in events, saw profile, users top and work with promos", "Telegram/Web App") +Rel(admin, telegram, "Using to CRUD users, events, etc.", "Telegram/Web App") +Rel(telegram, bpb, "Using to pass requests to bot", "HTTPS/Webhook") +Rel(bpb, leaderid, "Using to synchronize info about events", "sync,HTTPS/Rest") + +@enduml \ No newline at end of file diff --git a/Documentation/User guide/README.md b/Documentation/User guide/README.md new file mode 100644 index 0000000..1a3b493 --- /dev/null +++ b/Documentation/User guide/README.md @@ -0,0 +1,317 @@ +# Руководство пользователя BoilerPoin-bot + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/4a701b8e-da4b-4964-bff6-61d811cfaec8) + + +## Регистрация пользователя + +- Перейдите в бота и нажмите кнопку start снизу , либо же введите /start + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/6fa07fa7-db70-4a39-ba5c-4158f8344cda) + + +- Следуйте указаниям бота при регистрации (ваш возраст должен быть целым числом , а ФИО не более 40 символов) + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/8a5a88bc-4053-433a-981d-4b3934351bce) + + +- После успешной регистрации у вас появится клавиатура пользователя + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/3620173b-8d65-4363-b617-6b0b1c3ab8db) + + +# Эксплуатация бота + +## Кнопка "Профиль" + +- Кнопка "Профиль" создана для просмотра вашего профиля , в ней находятся все ваши данные. Также в кнопке профиль предусмотрен функционал для того , чтобы удалить своей профиль или вернуться в главное меню +- При нажатии на кнопку профиль у вас вызовется следующая клавиатура + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/4f9b84c3-9ef4-43c0-8fca-5d942c5ef2a0) + + +- Также отобразится основная информация о вашем профиле + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/b177d111-33f6-4a95-bedd-1cdd88c59cbc) + + +## Кнопка "Удалить профиль" в клавиатуре профиля + +- Эта кнопка предназначена для удаления вашего профиля. Так выглядит процедура удаления профиля. Пошагово + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/8f89daf2-9c02-411f-be87-5d86093cb380) + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/854af315-ef90-4932-ac5c-c5ac2df18f49) + + +## Кнопка "Задания" + +- Эта кнопка служит для просмотра заданий с ивентов , их прохождения и получение за это баллов + +![Telegram_oXvF2ifqSk](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/8495f8e8-1ea9-4ad9-a139-22df356cb947) + + + +## Кнопка "Календарь событий" + +- Кнопка служит для отображения ближайших событий и при нажатии выводит сообщения следующего типа : + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/de37984d-2b9a-4821-a7ea-334194554628) + + +## Кнопка "Помощь" + +- Кнопка помощь создана для связи с администратором +- При нажатии на кнопку помощь у вас вызывается следующая клавиатура + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/468716b1-56d5-4069-a671-c5f03ad55fdd) + + +## Кнопка "Создать заявку" в клавиатуре помощи + +- При нажатии на эту кнопку у вас исчезнет клавиатура и появятся дальнейшие указания как написать заявку + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/d91a3341-2b99-4560-b44b-be808b494518) + + +## Кнопка "Рейтинг" + +- Эта кнопка служит для отображения таблицы рейтинга пользователей по балам + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/037ad5fb-e4c9-4ffb-99f3-119c6b31b303) + + +## Инлайн кнопка "Полный рейтинг" в сообщении "Рейтинг" + +- Следующая кнопка служит для перехода к просмотру полного рейтинга пользователей + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/fd3b9260-d1bd-498e-9a5d-e03ee3273f46) + + +## Кнопка "Промокоды" + +- Кнопка служит для взаимодействия с промокодами + +- При нажатии на данную кнопку у вас появится данная клавиатура + + ![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/b51fd489-9ef1-464f-b3b2-f515422d303b) + + +## Кнопка "QR-код" в клавиатуре "Промокодыы" + +- Данная кнопка служит для сканирования QR-кодов с промокодами + +- При нажатии на неё у вас откроется камера для сканирования промо внутри телеграма + + +## Кнопка "Ввести промокод" в клавиатуре "Промокоды" + +- Эта кнопка служит для ввода промокода , пополняющего баланс пользователя в балах + +- Следуйте указаниям бота после нажатия на эту кнопку + +- В случае если промокод недействителен бот выдаст следующее + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/1c90c360-4480-46a4-8577-c094f0c32c93) + + +- В случае если промокод действителен бот выдаст следующее + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/8544087c-c79e-446c-9103-3c2974214390) + + +# Функционал event maker`a + +## Вход в панель event maker`a + + +- Пропишите команду /event в чат с ботом +- После этой команды у вас осуществится вход в панель event maker`a и появится клавиатура + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/5e40d51c-7726-42f4-b936-3b22a8733231) + + +- Чтобы покинуть панель event maker`a нажмите на кнопку "Меню" + + +## Кнопка "Создать задание" в клавиатуре event maker`a + +- Эта кнопка вызвает следующую клавиатуру + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/bb8a04f8-a62a-4bda-8bde-e5dd8c635d39) + + +## Кнопка "Создать коллекцию" в клавиатуре "Создать задание" + +![Telegram_GoStbnuAza](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/cc98640d-6a58-4ddd-be41-d076d4ec7578) + +Функционал остальных кнопок в этой клавиатуре отражён в GIF + +# Функционал администратора + +## Вход в панель администратора + + +- Пропишите команду /admin в чат с ботом +- После этой команды у вас осуществится вход в панель администратора и появится клавиатура + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/d9867bd6-0094-493d-aa2b-771215264975) + + +- Чтобы покинуть панель администратора нажмите на кнопку "Меню" + + +## Кнопка "Изменить пользователя" в панели администратора + +- Эта кнопка служит для изменения таких параметров пользователя как ФИО , Возраст , Баланс +- При нажатии на кнопку у вас появится следующая клавиатура + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/fa90c19a-118f-49e4-88fe-77484fc7185b) + + +- Нажмите на нужный вам параметр чтобы изменить определённого пользователя и следуйте указаниям бота + +- Пример изменения баланса пользователя + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/2b4adf57-8418-471e-95c8-b2eb41708d9f) + + +## Кнопка "Получить информацию о пользователе" в клавиатуре "Изменить пользователя" + +- Кнопка служит для получения основной информации о профиле ЛЮБОГО пользователя бота по его @username телеграма + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/583ffbcc-ead7-477c-9176-96f977b408eb) +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/530f5969-a9fd-4f43-8a63-d8e322d1ecad) + + +## Кнопка "Обнулить баланс всех пользователей" в клавиатуре "Изменить пользователя" + +- Данная кнопка служит для обнуления очков рейтинга и используется только старшим админом, который понимает что делает + + + +## Кнопка "Промокоды" в панели администратора + +- Эта кнопка служит для взаимодействия с промокодами , отвечат за их создание и удаление +- При нажатии на эту кнопку у вас появится следующая клавиатура + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/e9b55a7a-f1bd-49b3-9c77-55bef52aa3a3) + + +## Кнопка "Добавить промокод" в клавиатуре промокодов + +- Эта кнопка служит для создания промокода +- Следуйте указаниям бота чтобы создать промокод с нужными вам параметрами + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/17c3c62e-5636-477a-832e-2ee4b6085502) + + +## Кнопка "Действующие промокоды" в клавиатуре промокодов + +- Эта кнопка служит для просмотра действующих промокодов + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/c6799e13-c36e-43cf-88c8-0e9cc519a368) + + +## Кнопка "Нэйминг-промо" в клавиатуре промокодов + +- Эта кнопка служит для создания нэйминговых промокодов (содержащих слово в названии) + +- Следуйте инструкциям бота чтобы создать именованный промокод + + +## Кнопка "Удалить промокод" в клавиатуре промокодов + +- Кнопка служит для удаления определённого промокода из базы данных + +- Следуйте указаниям бота чтобы удалить нужный вам промокод + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/982fe5e5-fa01-4315-b8e9-864e127b1219) + + +## Кнопка "Добавить QR" в клавиатуре промокодов + +- Кнопка служит для создания QR кода в котором содержится промокод ( Промокод должен быть заранее создан чтобы поместить его в QR-code) + +- Нажмите на кнопку и следуйте указаниям бота + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/bee01fac-5ea8-4aba-893e-ce08583ec22b) + + +- В случае если введённый промокод недействителен бот выдаст вам сообщение об ошибке + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/403a382e-489c-497b-a42b-f7dfa983a43c) + + +## Кнопка "Рейтинг" в панели администратора + +- Кнопка служит для просмотра рейтинга лидеров и списка всех пользователей +- Кнопка выводит имена пользователей , чтобы администратор мог с ними связаться в случае необходимости + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/22b031e6-8092-4672-b17d-986e96607efc) + + +## Кнопка "Права" в панели администратора + +- Кнопка служит для регулирования прав пользователей в качестве event maker`a , располагает функционалом выдачи/изъятия правы у юзеров +- Кнопка вызывает следующую клавиатуру + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/47bfc211-15ef-4bab-b301-8a0da6eee5d4) + + +## Кнопка "Выдать права" в клавиатуре "Права" + +- Кнопка служит для выдачи прав пользователю в качестве event maker`a +- Нажмите на кнопку и следуйте инструкциям бота + + +## Кнопка "Изъять права" в клавиатуре "Права" + +- Кнопка служит для изъятия прав пользователю в качестве event maker`a +- Нажмите на кнопку и следуйте инструкциям бота + + +## Кнопка "Действующие права" в клавиатуре "Права" + +- Кнопка служит для просмотра действующих пользователей с правом event maker`a + + +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/619925bc-7dcc-495e-aa8d-15fa6cc3c5d0) + + + +## Кнопка "Создать задание" в панели администратора + + +## Кнопка "Создать коллекцию" в клавиатуре "Создать задание" + +![Telegram_GoStbnuAza](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/cc98640d-6a58-4ddd-be41-d076d4ec7578) + +Функционал остальных кнопок в этой клавиатуре отражён в GIF + + diff --git a/GoogleSheets/Google_sheets.py b/GoogleSheets/Google_sheets.py new file mode 100644 index 0000000..3d7c063 --- /dev/null +++ b/GoogleSheets/Google_sheets.py @@ -0,0 +1,106 @@ +import gspread +from gspread import Cell, Client, Spreadsheet, Worksheet +from supabase import Client, create_client +import schedule +import os +from dotenv import load_dotenv +import threading +from src.repository.usersrepository import UserRepository +from src.repository.SupabaseUserRepository import SupabaseUserRepository +from aiogram import Bot, types +from dotenv import load_dotenv +import asyncio +load_dotenv() +bot = Bot(token=os.getenv("TOKEN")) +SPREADSHEET_URL = "https://docs.google.com/spreadsheets/d/19_XAs2KCiWZXO30accQ2z0dDOW-KSVt5qDGpznXdsFw/edit#gid=0" +ADMIN_SPREADSHEET_URL = "https://docs.google.com/spreadsheets/d/1x7miGgIGGghqRQQ20Qzg37r4UGLkeHpqBUlpNRiNMmo/edit#gid=0" +load_dotenv() + +url: str = os.environ.get("SUPABASE_URL") +key: str = os.environ.get("SUPABASE_KEY") +supabase: Client = create_client(url,key) +table_name = "UsersData" +users : UserRepository = SupabaseUserRepository(supabase) + +def admin_rating_udpate(): + gc: Client = gspread.service_account("./GoogleSheets/boilerpoint-393111-68b01f6645e3.json") + sh: Spreadsheet = gc.open_by_url(ADMIN_SPREADSHEET_URL) + worksheet = sh.worksheet("📊 Админ Рейтинг") + response = supabase.table('UsersData').select('full_name', 'chat_id', 'tgusr', 'balance', 'gender').order('balance',desc=True).execute() + users_data = response.data + worksheet.clear() + google_update_list = [["🏆", "Аватар", "Имя", "🔘 Поинты", "Чат ID", "Username"]] + for index, user in enumerate(users_data): + try: + user_profile_photo = asyncio.run(bot.get_user_profile_photos(user['chat_id'])) + if len(user_profile_photo['photos'][0]) > 0: + file = asyncio.run(bot.get_file(user_profile_photo['photos'][0][0].file_id)) + link = f'https://api.telegram.org/file/bot{os.getenv("TOKEN")}/{file.file_path}' + else: + if user["gender"]: + link = "https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z" + else: + link = "https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z" + except: + if user["gender"]: + link = "https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z" + else: + link = "https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z" + if user['balance'] < 1: + break + if user["gender"]: + insert_image = f'=IMAGE("{link}")' + google_update_list.append(["=СТРОКА()-1", insert_image, user['full_name'], user['balance'],user['chat_id'],f'=ГИПЕРССЫЛКА("t.me/{user["tgusr"][1:]}";"{user["tgusr"]}")']) + else: + insert_image = f'=IMAGE("{link}")' + google_update_list.append(["=СТРОКА()-1", insert_image, user['full_name'], user['balance'], user['chat_id'],f'=ГИПЕРССЫЛКА("t.me/{user["tgusr"][1:]}";"{user["tgusr"]}")']) + worksheet.insert_rows(google_update_list, value_input_option="USER_ENTERED") + worksheet.sort((4, 'des')) + +def rating_update(): + gc: Client = gspread.service_account("./GoogleSheets/boilerpoint-393111-68b01f6645e3.json") + sh: Spreadsheet = gc.open_by_url(SPREADSHEET_URL) + worksheet = sh.worksheet("📊Рейтинг") + response = supabase.table('UsersData').select('chat_id','full_name', 'balance', 'gender' ).order('balance', desc = True).execute() + users_data = response.data + worksheet.clear() + google_update_list = [["🏆", "Аватар", "Имя", "🔘 Поинты"]] + for index, user in enumerate(users_data): + try: + user_profile_photo = asyncio.run(bot.get_user_profile_photos(user['chat_id'])) + if len(user_profile_photo['photos'][0]) > 0: + file = asyncio.run(bot.get_file(user_profile_photo['photos'][0][0].file_id)) + link = f'https://api.telegram.org/file/bot{os.getenv("TOKEN")}/{file.file_path}' + else: + if user["gender"]: + link = "https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z" + else: + link = "https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z" + except: + if user["gender"]: + link = "https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z" + else: + link = "https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z" + + if user['balance'] < 1: + break + if user["gender"]: + insert_image = f'=IMAGE("{link}")' + #insert_image = '=IMAGE("https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z")' + google_update_list.append(["=СТРОКА()-1",insert_image, user['full_name'], user['balance']]) + else: + insert_image = f'=IMAGE("{link}")' + #insert_image = '=IMAGE("https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z")' + google_update_list.append(["=СТРОКА()-1", insert_image, user['full_name'], user['balance']]) + worksheet.insert_rows(google_update_list, value_input_option="USER_ENTERED") + worksheet.sort((4, 'des')) + admin_rating_udpate() + +def rating_update_over_time(): + rating_update() + schedule.every(10).minutes.do(rating_update) + while True: + schedule.run_pending() + +def rating_update_start_thread(): + threading.Thread(target=rating_update_over_time).start() \ No newline at end of file diff --git a/README.md b/README.md index 8d3cd08..97ee646 100644 --- a/README.md +++ b/README.md @@ -6,82 +6,79 @@ ## Dependencies -1. Для установки зависимостей вам необходимо запустить installreq.bat или же прописать в консоли : +1. Для установки зависимостей вам необходимо запустить installer.bat или же прописать в консоли : ```sh pip install requirements.txt ``` +2. Получите все переменные для вашей среды следующим образом : -2. Необходимо установить со сторонних сайтов : +- Из документации по gspread узнайте как получить ваш credentials.json , который необходимо оставить в корневой папке и GoogleSheets -- MongoDB Server : https://www.mongodb.com/try/download/community +- Из документации по supabase узнайте как получить ваши SUPABASE_URL & SUPABASE_KEY +3. Теперь перейдите в @BotFather в телеграм и получите токен для вашего бота : -3. Необходимо зарегистрироваться и настроить Yandex DB : - -- https://console.cloud.yandex.ru/ -- Создайте и подключите платёжный аккаунт - - -Перейдите сюда и настройте сервисный аккаунт - -![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/1889abaa-e22a-42da-af14-dd1e29962d97) - - -![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/b31261bd-4177-4e15-bd80-e3df821a89b2) - - -Настройте сервисный аккаунт с указанными параметрами : - -![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/b0049a26-cb80-4a4b-a2d6-12c7ccc2f513) - - -Создайте вашу Yandex Data Base , вернувшись в дашборд каталога: - -![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/e91d0ed8-c77d-485e-993a-ad9116eab0b2) +- Поместите токен в .env файл с параметром TOKEN -![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/88980491-1070-484e-95c1-4828fce0339b) +Теперь переместите свои .env файлы в корневую директорию проекта , а также в Database -![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/2a9df91d-7675-4ff0-8ed1-63d7d467b987) +# Для тестировщиков -Перейдите в вашу БД и скопируйте этот эндпоинт (создайте .env файл и передайте это в параметр USER_STORAGE_URL): +- Зарегистрируйтесь в SupaBase и пришлите мне в телеграм (t.me/whitehodok) e-mail на который вы зарегистрировались + +- Получите у меня в телеграме (t.me/whitehodok) наш .env файл + +- Получите у меня в телеграме (t.me/whitehodok) наш credentials.json -![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/ce0236c7-4890-4eef-9c7d-f294031e5971) +# Для проверяющих +- Напишите мне в телеграм https://t.me/whitehodok с просьбой скинуть последний билд бота -Вернитесь в ваш сервисный аккаунт и проделайте следующий шаг : +- Распакуйте полученный архив в любую доступную вам папку -![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/88b4b03c-31ac-41d1-9e7a-a7cbdd67a193) +- Убедитесь что у вас установлен Python версии не ниже чем 3.9.X +- Установите все необходимые зависимости через консоль, прописав следующее -![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/de1074f4-2f22-4704-91a3-24253f8fea60) +``` +pip install -r requirements.txt +``` +- Запустите main.py любым удобным для вас способом +# Схема проекта на текущий момент -Скопируйте ключи и поместите Public в своём .env в параметр AWS_PUBLIC_KEY (он короче) , а Private в AWS_SECRET_KEY (он длиннее) +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/ee14121c-6085-4e2c-9e8a-1cc66eb3a20b) +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/be27e216-883a-4f6d-9fc8-098dcdde7102) -Теперь перейдите в @BotFather в телеграм и получите токен для вашего бота : -- Поместите токен в .env файл с параметром TOKEN +# Схема базы данных на текущий момент +![image](https://github.com/Student-Labs-2023/BoilerPoint/assets/39564937/e40a735a-3d66-45ee-adcc-634cb45e7b86) -Теперь переместите свои .env файлы в корневую директорию проекта , а также в Database # Documentation -YDB - https://ydb.tech/ru/docs/ -MongoDB - https://www.mongodb.com/docs/ -pydantic - https://docs.pydantic.dev/latest/ -aiogram - https://aiogram.readthedocs.io/_/downloads/en/latest/pdf/ +| Frame | Docs | +|-----------|---------------------------------------------------------| +|SupaBase | https://supabase.com/docs | +|gspread | https://gspread.readthedocs.io/_/downloads/en/latest/pdf/ | +|pydantic | https://docs.pydantic.dev/latest/ | +|aiogram | https://aiogram.readthedocs.io/_/downloads/en/latest/pdf/ | +|schedule | https://schedule.readthedocs.io/en/stable/installation.html | +|qrcode | https://pypi.org/project/qrcode/ | +|pyzbar | https://pypi.org/project/pyzbar/ | +|userguide | https://github.com/Student-Labs-2023/BoilerPoint/tree/main/Documentation/User%20guide | -# Запуск бота +# Start Jelezyaka После установки зависимостей и подключений введите в консоли следующее : diff --git a/buttons.py b/buttons.py index 7e86901..99700d2 100644 --- a/buttons.py +++ b/buttons.py @@ -1,9 +1,9 @@ from aiogram.types import InlineKeyboardMarkup,InlineKeyboardButton, ReplyKeyboardMarkup, KeyboardButton +from aiogram.types.web_app_info import WebAppInfo #gender buttons - ikbg = InlineKeyboardMarkup(row_width=2) -ibm = InlineKeyboardButton(text="Мужчина",callback_data='Male') -ibf = InlineKeyboardButton(text="Женщина",callback_data='Female') +ibm = InlineKeyboardButton(text="🙋‍♂️Мужчина",callback_data='1') +ibf = InlineKeyboardButton(text="🙋‍♀️Женщина",callback_data='0') ikbg.add(ibm,ibf) #menu buttons @@ -13,19 +13,188 @@ kschedule= KeyboardButton(text="📆Календарь событий") khelp= KeyboardButton(text="❓Помощь") kexercise= KeyboardButton(text="📝Задания") -rkbm.row(kprofile,kexercise) +kpromo = KeyboardButton(text="🗝️Промокоды") +rkbm.row(kprofile,kliderboard) +rkbm.add(kexercise) rkbm.add(kschedule) -rkbm.row(khelp,kliderboard) +rkbm.row(khelp,kpromo) + +#promo_menuu +promo_kb = ReplyKeyboardMarkup(resize_keyboard=True) +promo_kb_qrscanner = KeyboardButton(text="📲QR-код", web_app=WebAppInfo(url="https://bpb-qr.pages.dev/")) +promo_kb_enter = KeyboardButton(text="🗝️Ввести промокод") +promo_kb_back = KeyboardButton(text="⬅️Назад в меню") +promo_kb.add(promo_kb_enter) +promo_kb.add(promo_kb_qrscanner) +promo_kb.add(promo_kb_back) + + +#profilemenu buttons +profilebuttons = ReplyKeyboardMarkup(resize_keyboard=True) +delprofile = KeyboardButton(text="❌Удалить профиль") +profilebuttons.row(delprofile) +editbutton = ReplyKeyboardMarkup(resize_keyboard=True) +edbutton = KeyboardButton(text="⚙️Редактировать профиль") +profilebuttons.row(edbutton) +backtomenubutton = KeyboardButton(text="⬅️Назад в меню") +profilebuttons.row(backtomenubutton) +#confirm delete button and edit button + back button to profile +back = ReplyKeyboardMarkup(resize_keyboard=True) +backbutt = KeyboardButton(text="⬅️Назад в меню") +back.row(backbutt) + +menuedit = ReplyKeyboardMarkup(resize_keyboard=True) +editname = KeyboardButton(text="Изменить ФИО") +editage = KeyboardButton(text="Изменить возраст") +menuedit.row(editname) +menuedit.row(editage) +menuedit.row(backbutt) + +confirmbutton = ReplyKeyboardMarkup(resize_keyboard=True) +confbutton = KeyboardButton(text="❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.") +backbutton = KeyboardButton(text="⬅️Назад в меню") +confirmbutton.row(confbutton) +confirmbutton.row(backbutton) + +#usermaker buttons +usermakerkbm = ReplyKeyboardMarkup(resize_keyboard=True) +usmkbm_task = KeyboardButton(text="📝Создать задание") +usmkbm_menu = KeyboardButton(text="⬅️Меню") +usermakerkbm.row(usmkbm_task) +usermakerkbm.row(usmkbm_menu) + + +#usermaker add task menu buttons +eventtasks = ReplyKeyboardMarkup(resize_keyboard=True) +admcreatetask = KeyboardButton(text="Создать коллекцию") +admtasklist = KeyboardButton(text="Список коллекций") +admdeletetask = KeyboardButton(text="Удалить коллекцию") +admtaskback = KeyboardButton(text="⬅️Назад в меню") +eventtasks.row(admcreatetask) +eventtasks.row(admdeletetask,admtasklist) +eventtasks.row(admtaskback) #admin buttons -admin_list=['5617565289'] admrkbm = ReplyKeyboardMarkup(resize_keyboard=True) admk_user_editor = KeyboardButton(text="⚙️Изменить пользователя") -admk_event_creation = KeyboardButton(text="🛠️Создать мероприятие") admk_job_creation = KeyboardButton(text="📝Создать задание") admk_menu = KeyboardButton(text="⬅️Меню") admk_liderboard = KeyboardButton(text="📊Рейтинг") +admk_promo = KeyboardButton(text="🗝️Промокоды") +admk_ticket = KeyboardButton(text="📨Обращения") +admk_rules = KeyboardButton(text="👨‍🚀Организаторы") admrkbm.row(admk_user_editor) -admrkbm.row(admk_event_creation) -admrkbm.row(admk_job_creation) -admrkbm.row(admk_menu,admk_liderboard) \ No newline at end of file +admrkbm.row(admk_job_creation,admk_promo) +admrkbm.row(admk_liderboard, admk_ticket) +admrkbm.row(admk_menu,admk_rules) + +#rules keyboard +ruleskbm = ReplyKeyboardMarkup(resize_keyboard=True) +ruleskbm_addmaker = KeyboardButton(text="Выдать права") +ruleskbm_delmaker = KeyboardButton(text="Забрать права") +ruleskbm_check = KeyboardButton(text="Действующие права") +ruleskbm_back = KeyboardButton(text="⬅️Админ меню") +ruleskbm.row(ruleskbm_addmaker,ruleskbm_delmaker) +ruleskbm.row(ruleskbm_check) +ruleskbm.row(ruleskbm_back) + +# admin report keyboard +admreport = ReplyKeyboardMarkup(resize_keyboard=True) +admreport_check = KeyboardButton(text="Действующие обращения") +admreport_del = KeyboardButton(text="Удалить обращение") +admreport_back = KeyboardButton(text="⬅️Назад в меню") +admreport.row(admreport_check) +admreport.row(admreport_del) +admreport.row(admreport_back) + +#User help button +userhelp = ReplyKeyboardMarkup(resize_keyboard=True) +userhelp_back = KeyboardButton(text="⬅️Назад в меню") +userhelp_ticket = KeyboardButton(text="📨Создать заявку") +guide = KeyboardButton(text="?📑Руководство пользователя", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/User%20guide/README.md')) +userhelp.row(userhelp_ticket) +userhelp.row(guide) +userhelp.row(userhelp_back) + +# admin user editor button +admue = ReplyKeyboardMarkup(resize_keyboard=True) +admue_fullname_editor = KeyboardButton(text="Изменить ФИО") +admue_age_editor = KeyboardButton(text="Изменить возраст") +admue_balance_editor = KeyboardButton(text="Изменить баланс") +admue_get_info_user = KeyboardButton(text="Получить информацию о пользователе") +admue_update_users_balance = KeyboardButton(text="❗Обнулить баланс всех пользователей❗") +admue_back = KeyboardButton(text="⬅️Админ меню") +admue.row(admue_get_info_user) +admue.row(admue_fullname_editor,admue_age_editor,admue_balance_editor) +admue.row(admue_update_users_balance) +admue.row(admue_back) +admui = ReplyKeyboardMarkup(resize_keyboard=True) +admui_back = InlineKeyboardButton(text="⬅️Отменить редактирование") + +#admin promo button +admpromo = ReplyKeyboardMarkup(resize_keyboard=True) +admpromo_checkpromo = KeyboardButton(text="Действующие промокоды") +admpromo_addpromo = KeyboardButton(text="Добавить промокод") +admpromo_namingpromo = KeyboardButton(text="Нэйминг-промо") +admpromo_delpromo = KeyboardButton(text="Удалить промокод") +addpromo_addqr = KeyboardButton(text="Добавить QR") +admpromo.row(addpromo_addqr) +admpromo.row(admpromo_checkpromo) +admpromo.row(admpromo_addpromo,admpromo_namingpromo,admpromo_delpromo) +admpromo.row(admue_back) + +cancel_button = InlineKeyboardButton(text="❌Отмена", callback_data="cancel") + +# Отмена редактирования для юзера +cancel_button_for_user = InlineKeyboardMarkup(row_width=1) +cancel_abob = InlineKeyboardButton(text="Отмена❌", callback_data="cancel_user") +cancel_button_for_user.add(cancel_abob) + +cancel_button_to_main = InlineKeyboardMarkup(row_width=1) +cancel_main = InlineKeyboardButton(text="Отмена❌", callback_data="back_to_menu") +cancel_button_to_main.add(cancel_main) + +cancel_button_for_user_help = InlineKeyboardMarkup(row_width=1) +cancel_helper = InlineKeyboardButton(text="Отмена❌", callback_data="cancel_user_help") +cancel_button_for_user_help.add(cancel_helper) + +cancel_button_for_user_promocode = InlineKeyboardMarkup(row_width=1) +cancel_promo = InlineKeyboardButton(text="Отмена❌", callback_data="cancel_user_promocode") +cancel_button_for_user_promocode.add(cancel_promo) + +#remove balance button in admin menu +updatebalanceusers = ReplyKeyboardMarkup(resize_keyboard=True) +updatebalanceconfirmbutton= KeyboardButton(text="❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗") +backbuttontoadminmemubutton = KeyboardButton(text="⬅️Назад в меню") +updatebalanceusers.row(updatebalanceconfirmbutton) +updatebalanceusers.row(backbuttontoadminmemubutton) + + +#rating buttons +ikbmrating = InlineKeyboardMarkup(row_width=1) +ibrating = InlineKeyboardButton(text="📊Полный рейтинг", web_app = WebAppInfo(url ='https://docs.google.com/spreadsheets/d/e/2PACX-1vQFzN5HRvQhS5j4kDcv9wWH3uucCqp1AFmu2ErZYikmmJSshj1f16v7ry013vde0y6OYVWeSsVtgaKT/pubhtml?gid=0&single=true') ) +ikbmrating.add(ibrating) +ikbmadminrating = InlineKeyboardMarkup(row_width=1) +ibadminrating = InlineKeyboardButton(text="📊Админ Рейтинг",web_app = WebAppInfo(url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vR__0ahX-O5SK3sS7OditV88sjG64duAF6mAW702CT3uM3Yj6z5mwsnxv-lL2vF9-H3YjlD0rtmg84N/pubhtml?gid=0&single=true')) +ikbmadminrating.add(ibadminrating) + +#help buttons +helpinlinereg = InlineKeyboardMarkup(row_width=1) +helpinlinenaming = InlineKeyboardButton(text="Помощь", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/README.md')) +helpinlinereg.add(helpinlinenaming) + +#admin tasks +admtasks = ReplyKeyboardMarkup(resize_keyboard=True) +admcreatetask = KeyboardButton(text="Создать коллекцию") +admtasklist = KeyboardButton(text="Список коллекций") +admdeletetask = KeyboardButton(text="Удалить коллекцию") +admtaskback = KeyboardButton(text="⬅️Назад в меню") +admtasks.row(admcreatetask) +admtasks.row(admdeletetask,admtasklist) +admtasks.row(admtaskback) + +#survey web-app +surveywebapp = ReplyKeyboardMarkup(resize_keyboard=True) +survquestcreate = KeyboardButton(text="Создать вопрос",web_app=WebAppInfo(url = 'https://survey-web-app.pages.dev/edit?json=%7B%22surveyData%22%3A%20%5B%7B%22questionId%22%3A%2069%2C%20%22question%22%3A%20%22%22%2C%20%22choices%22%3A%20%5B%5D%7D%5D%7D')) +surveywebapp.row(survquestcreate) + diff --git a/codegen.py b/codegen.py new file mode 100644 index 0000000..ff16441 --- /dev/null +++ b/codegen.py @@ -0,0 +1,59 @@ +import random +import string +import os +from dotenv import load_dotenv +from supabase import Client, create_client + +load_dotenv() + +# Инициализация подключения к базе данных Supabase +url = os.environ.get("SUPABASE_URL") +key = os.environ.get("SUPABASE_KEY") +supabase = create_client(url, key) + +table_name = "Promocode" + + +def generate_code(length=16): + chars = string.ascii_letters + string.digits + code = ''.join(random.choice(chars) for _ in range(length)) + return code + + +def generate_promo(usages, cost): + code = generate_code() + print(f"Generated promo code: {code}") + + if cost == 0: + cost = 1 + + if usages < 0: + usages = 1 + + data = { + 'promo': code, + 'last': usages, + 'cost': cost + } + + supabase.table(table_name).insert(data).execute() + print(f"Added {code} with {usages} usages and {cost} cost to {table_name} table") + return code + +def generate_naming_promo(name, usages, cost): + + if cost == 0: + cost = 1 + + if usages < 0: + usages = 1 + + data = { + 'promo': name, + 'last': usages, + 'cost': cost + } + + supabase.table(table_name).insert(data).execute() + print(f"Added {name} with {usages} usages and {cost} cost to {table_name} table") + return name \ No newline at end of file diff --git a/funcs.py b/funcs.py new file mode 100644 index 0000000..ec17e98 --- /dev/null +++ b/funcs.py @@ -0,0 +1,80 @@ +from aiogram import Bot, types +from Database.DataUsers import * +from buttons import * +from dotenv import load_dotenv +import re +from functools import lru_cache +import string +import random + +load_dotenv() + +bot = Bot(token=os.getenv("TOKEN")) + +async def show_rating(chat_id: int): + # Запрос топ 4 пользователей из БД + top_users = supabase.table('UsersData').select('full_name', 'balance', 'tgusr').order('balance', desc = True).limit(4).execute() + + # Формируем текст рейтинга + rating_text = "🏆 Рейтинг пользователей 🏆\n\n" + for i, user in enumerate(top_users.data): + position = i + 1 + full_name = user['full_name'] + balance = user['balance'] + tgusr = user['tgusr'] + rating_text += f"{position}. {full_name} ({tgusr}) - {balance} баллов\n" + + # Отправляем сообщение + await bot.send_message(chat_id, rating_text, reply_markup=ikbmadminrating) + +async def show_user_rating(chat_id: int): + # Запрос топ 4 пользователей из БД + top_users = supabase.table('UsersData').select('full_name', 'balance', ).order('balance', desc = True).limit(4).execute() + + # Формируем текст рейтинга + rating_text = "🏆 Рейтинг пользователей 🏆\n\n" + for i, user in enumerate(top_users.data): + position = i + 1 + full_name = user['full_name'] + balance = user['balance'] + rating_text += f"{position}. {full_name} - {balance} баллов\n" + + # Отправляем сообщение + await bot.send_message(chat_id, rating_text, reply_markup=ikbmrating) + +# generate id for survey +async def generate_id_for_survey(length): + characters = string.ascii_letters + string.digits + random_string = ''.join(random.choice(characters) for _ in range(length)) + return random_string + + + + +# Validation BAD words + +standart_dirt = [1093, 1091, 1081, 124, 1073, 1083, 1103, 124, 1077, 1073, 124, + 1087, 1080, 1079, 1076, 124, 1105, 1073, 124, 1079, 1072, 1083, 1091, 1087] # censored + +standart_dirt = ''.join(chr(n) for n in standart_dirt) + +def _get_search(pattern: str): + @lru_cache() + def hide_search(word: str) -> bool: + return bool(re.search(pattern, word)) + + return hide_search + +def is_dirt(pattern: str=standart_dirt): + + funk = _get_search(pattern) + + def hide_search(text: str) -> bool: + for word in re.findall(r'\w+', text): + if funk(word.lower()): + return True + return False + return hide_search + + + diff --git a/image.png b/image.png deleted file mode 100644 index 1fde3ad..0000000 Binary files a/image.png and /dev/null differ diff --git a/installreq.bat b/installer.bat similarity index 100% rename from installreq.bat rename to installer.bat diff --git a/leaderid_synchronizer/script.ts b/leaderid_synchronizer/script.ts new file mode 100644 index 0000000..e16a21a --- /dev/null +++ b/leaderid_synchronizer/script.ts @@ -0,0 +1,71 @@ +import axios from 'axios'; +import { createClient } from '@supabase/supabase-js' +import * as dotenv from 'dotenv'; + +dotenv.config(); +const supabaseKey = process.env.SUPABASE_KEY || ''; +const supabaseUrl = process.env.SUPABASE_URL || ''; +const supabase = createClient(supabaseUrl, supabaseKey); + + +interface Event { + id: number; + date_start: string; + full_name: string; + date_end: string; +} + +let tok:string; + +const postData = { + client_id: '', + client_secret: '', + grant_type: 'client_credentials' +}; + +const url = 'https://apps.leader-id.ru/api/v1/events/search?paginationPage=1&paginationSize=15&sort=date&dateFrom=2023-07-28&dateTo=2023-08-03&participationFormat=person&placeIds[]=3942'; + +axios.post('https://apps.leader-id.ru/api/v1/oauth/token', postData) + .then(response => { + tok = response.data.access_token; + (async () => { + const events = await getEvents().then( + events => insertEvents(events) + ); + })(); + }) + .catch(error => { + console.error(error); + }); + + +async function getEvents(): Promise { + console.log(tok); + const config = { + headers: { + 'Authorization': 'Bearer '+ tok + }, + }; + const response = await axios.get(url, config); + const events: Event[] = response.data.items.map((event: any) => ( + { + id: event.id, + date_start: event.date_start, + full_name: event.full_name, + date_end: event.date_end, + } + )); + console.log(events); + return events; +} + +async function insertEvents(events: Event[]) { + try { + await supabase.from('Event').insert(events); +} catch(error){ + console.error(error); + } +} + + + diff --git a/main.py b/main.py index 6db1464..35e16e4 100644 --- a/main.py +++ b/main.py @@ -1,163 +1,1263 @@ from dotenv import load_dotenv +import json +import PIL.Image +import io +import pyzbar.pyzbar as pyzbar from aiogram import Bot, types -from Database.YandexDB import table -from aiogram.utils import executor +from io import BytesIO +import qrcode +import logging +import random +import string +import asyncio +from aiogram.utils import executor , markdown +from aiogram.utils.markdown import hlink, escape_md , code from aiogram.dispatcher import Dispatcher, FSMContext from aiogram.contrib.fsm_storage.memory import MemoryStorage import os -from boto3.dynamodb.conditions import Key -from dataclasses import dataclass from typing import Optional from aiogram.dispatcher.filters import Command from aiogram.dispatcher.filters.state import State, StatesGroup -from buttons import ikbg, rkbm,admrkbm,admin_list -from pydantic import BaseModel, Field, ValidationError, validator -from validator import ValidatedUserRegistrationDTO -from state import update_user_state - +from buttons import * +from pydantic import ValidationError +from src.models.users import User +from src.repository.usersrepository import UserRepository +from src.repository.SupabaseUserRepository import SupabaseUserRepository +from GoogleSheets.Google_sheets import rating_update_start_thread +from supabase import Client, create_client +#from Database.DataUsers import * +from codegen import * +from funcs import show_rating, show_user_rating, is_dirt, generate_id_for_survey +from aiogram.types.web_app_info import WebAppInfo +import ast load_dotenv() - -# Инициализация бота, диспетчера и хранилища состояний +logging.basicConfig(level=logging.INFO) +# Инициализация бота, диспетчера и хранилищаа состояний bot = Bot(token=os.getenv("TOKEN")) dp = Dispatcher(bot, storage=MemoryStorage()) +rating_update_start_thread() + +# Инициализация подключения к базе данных Supabase +url: str = os.environ.get("SUPABASE_URL") +key: str = os.environ.get("SUPABASE_KEY") + +supabase: Client = create_client(url, key) + + +users: UserRepository = SupabaseUserRepository(supabase) + -# DTO для хранения состояния регистрации пользователей -@dataclass -class UserRegistrationDTO: - chat_id: str - age: Optional[str] = None - gender: Optional[str] = None - name: Optional[str] = None +#----------------------------------------------------------------------------------------------------------------------- +# Все состояния в которых может пребывать пользователь/админ бота +#----------------------------------------------------------------------------------------------------------------------- -# Словарь для хранения экземпляров DTO -user_registration = {} -# Состояния регистрации class RegistrationStates(StatesGroup): waiting_for_age = State() waiting_for_gender = State() waiting_for_name = State() final_reg = State() - - # Состояния меню class MenuStates(StatesGroup): waiting_for_profile = State() profile = State() + tasks = State() + tasks_checking = State() + tasks_checking_question = State() + tasks_solving = State() + calendar = State() + help = State() + help_start = State() + help_end = State() + help_cancel = State() + help_ender = State() + rating = State() + promocode = State() + promocodestart = State() + +# Состояние удаления профиля +class ProlfileStates(StatesGroup): + profile_menu_main_state = State() + delete_profile = State() + edit_profile = State() + edit_profile_name = State() + edit_profile_age = State() + +# Состояния админ-панели +class AdminPanel(StatesGroup): + admin_menu = State() + change_user = State() + change_user_end = State() + get_info_about_user_start = State() + get_info_about_user = State() + get_info_about_user_end = State() + change_user_start = State() + change_user_fullname = State() + change_user_fullnamestart = State() + change_user_age = State() + change_user_agestart = State() + change_user_balance = State() + change_user_balancestart = State() + update_users_balance_confirm = State() + update_users_balance = State() + promo_menu = State() + promo_check_promocode = State() + promo_addpromostart = State() + promo_addpromo_naming = State() + promo_addpromo_naming_usages = State() + promo_addpromo_naming_cost = State() + promo_addpromo_naming_end = State() + promo_addpromousages = State() + promo_addpromocost = State() + promo_addpromoend = State() + promo_delpromo = State() + promo_qr = State() + promo_qrstart = State() + promo_qrend = State() + add_event = State() + add_task = State() + backward = State() + rating_board = State() + ticket = State() + ticket_check = State() + ticket_delete = State() + ticket_start = State() + ticket_middle = State() + ticket_end = State() + rules = State() + rules_addmaker = State() + rules_addmaker_start = State() + rules_delmaker = State() + rules_delmaker_start = State() + taskmenu = State() + taskmenu_namewait = State() + taskmenu_descriptionwait = State() + taskmenu_photowait = State() + taskmenu_collection_counterwait = State() + taskmenu_collection_surveywebapp = State() + taskmenu_collection_list = State() + taskmenu_collection_delete_select = State() + taskmenu_collection_delete_confirm = State() + +class EventMakerPanel(StatesGroup): + menu = State() + taskmenu = State() + taskmenu_namewait = State() + taskmenu_descriptionwait = State() + taskmenu_photowait = State() + taskmenu_collection_counterwait = State() + taskmenu_collection_surveywebapp = State() + taskmenu_collection_list = State() + taskmenu_collection_delete_select = State() + taskmenu_collection_delete_confirm = State() + +#----------------------------------------------------------------------------------------------------------------------- +# Event maker panel +#----------------------------------------------------------------------------------------------------------------------- + + +@dp.message_handler(commands=['event'], state='*') +async def event_command(message: types.Message, state: FSMContext): + with open('roles.json') as f: + event_roles = json.load(f)['event_makers'] + + if str(message.from_user.id) not in event_roles: + await message.reply("У вас нет прав event maker'а!", reply_markup=rkbm) + return + + await EventMakerPanel.menu.set() + user = users.get(message.chat.id) + user.user_state = str(EventMakerPanel.menu) + users.set(user) + await message.reply("Вы вошли в панель event maker`a!", reply_markup=usermakerkbm) + +@dp.message_handler(text="📝Создать задание", state=EventMakerPanel.menu) +async def go_event_menu(message: types.Message, state: FSMContext): + await EventMakerPanel.taskmenu.set() + user = users.get(message.chat.id) + user.user_state = str(EventMakerPanel.taskmenu) + users.set(user) + await message.reply("Вы вошли в панель создания заданий.", reply_markup=eventtasks) + + + +@dp.message_handler(text='Удалить коллекцию', state=EventMakerPanel.taskmenu) +async def del_coll(message: types.Message, state: FSMContext): + await message.reply("Введите пожалуйста имя коллекции для её удаления", reply_markup=types.ReplyKeyboardRemove()) + await EventMakerPanel.taskmenu_collection_delete_select.set() + + +@dp.message_handler(state=EventMakerPanel.taskmenu_collection_delete_select) +async def delete_survey_handler(message: types.Message, state: FSMContext): + codee = message.text + deleted = supabase.table('TaskCollection').delete().match({'name': codee}).execute() + + if not deleted.data: + # ничего не удалено + await message.reply("Такой коллекции нет", reply_markup=eventtasks) + await state.finish() + await EventMakerPanel.taskmenu.set() + return + + # удаление прошло успешно + codee_code = code(codee) + await message.reply(f"Коллекция {codee_code} удалена", reply_markup=eventtasks, parse_mode='MarkdownV2') + await EventMakerPanel.taskmenu.set() + user = users.get(message.chat.id) + user.user_state = str(EventMakerPanel) + + +@dp.message_handler(text='Список коллекций', state=EventMakerPanel) +async def del_coll(message: types.Message, state: FSMContext): + await EventMakerPanel.taskmenu_collection_list.set() + chat_id = message.chat.id + user = users.get(message.chat.id) + user.user_state = str(EventMakerPanel.taskmenu_collection_list) + + promos = supabase.table('TaskCollection').select('name', 'url').filter('name', 'gt', 0).order('name', + desc=True).execute() + + promo_text = "📝 Действующие формы опросов:\n\n" + + for promo in promos.data: + name = promo['name'] + url = promo['url'] + + name_parsed = f'{name}' + url_parsed = f'Ссылка' + promo_text += (name_parsed + f" {url_parsed} \n") + + await bot.send_message(chat_id, promo_text, parse_mode=types.ParseMode.HTML, reply_markup=eventtasks, + disable_web_page_preview=True) + await state.finish() + await EventMakerPanel.taskmenu.set() + user.user_state = str(EventMakerPanel.taskmenu) + + +@dp.message_handler(text="Создать коллекцию", state=EventMakerPanel.taskmenu) +async def admin_make(message: types.Message, state: FSMContext): + chat_id = message.chat.id + await bot.send_message(chat_id, f"Введите название коллекции заданий:", reply_markup=types.ReplyKeyboardRemove()) + await EventMakerPanel.taskmenu_namewait.set() + + +@dp.message_handler(state=EventMakerPanel.taskmenu_namewait) +async def admin_taskmenu_namewait(message: types.Message, state: FSMContext): + chat_id = message.chat.id + name = message.text + await bot.send_message(chat_id, "Введите описание коллекции заданий:") + await state.update_data(name=name) + await EventMakerPanel.taskmenu_descriptionwait.set() + + +@dp.message_handler(state=EventMakerPanel.taskmenu_descriptionwait) +async def admin_taskmenu_descriptionwait(message: types.Message, state: FSMContext): + chat_id = message.chat.id + description = message.text + await bot.send_message(chat_id, "Отправте фотографию мероприятия:") + await state.update_data(description=description) + await EventMakerPanel.taskmenu_photowait.set() + + +@dp.message_handler(content_types=types.ContentType.PHOTO, state=EventMakerPanel.taskmenu_photowait) +async def admin_taskmenu_photowait(message: types.Message, state: FSMContext): + chat_id = message.chat.id + photo = message + try: + await state.update_data(photo=photo.photo[2].file_id) + await bot.send_message(chat_id, "Введите количество вопросов в коллекции:") + await EventMakerPanel.taskmenu_collection_counterwait.set() + except Exception as e: + await bot.send_message(chat_id, "Произошла ошибка, отправьте пожалуйста фотографию в хорошем качестве.") + await EventMakerPanel.taskmenu_photowait.set() + + +@dp.message_handler(state=EventMakerPanel.taskmenu_collection_counterwait) +async def admin_taskmenu_collection_counterwait(message: types.Message, state: FSMContext): + chat_id = message.chat.id + try: + counter = int(message.text) + except ValueError: + await bot.send_message(chat_id, "Введенное значение должно быть числом > 0") + await EventMakerPanel.taskmenu_collection_counterwait.set() + if counter <= 0: + await bot.send_message(chat_id, "Введенное значение должно быть числом > 0") + await EventMakerPanel.taskmenu_collection_counterwait.set() + else: + await state.update_data(counter=counter) + await bot.send_message(chat_id, "Коллекция создана успешно! Перейдите пожалуйста, к составлению заданий!⬇️", + reply_markup=surveywebapp) + await EventMakerPanel.taskmenu_collection_surveywebapp.set() + + +@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=EventMakerPanel.taskmenu_collection_surveywebapp) +async def survey_web_app(message: types.ContentType.WEB_APP_DATA, state: FSMContext): + chat_id = message.chat.id + data = await state.get_data() + counter = data.get("counter") + querylist = data.get("querylist") + numberPoints = data.get("numberPoints") + rightAnswers = data.get("rightAnswers") + if querylist == None: + querylist = [] + if numberPoints == None: + numberPoints: dict = {} + if rightAnswers == None: + rightAnswers: dict = {} + url = 'https://survey-web-app.pages.dev/view?json=' + message.text = message.web_app_data.data + data = json.loads(message.text) + data['questionId'] = await generate_id_for_survey(10) + new_json_data = json.dumps(data) + new_json_data = ast.literal_eval(new_json_data) + data = await state.get_data() + name = data.get("name") + numberPoints.update({new_json_data["questionId"]: new_json_data["numberPoints"]}) # numberPoints:correctAnswer + rightAnswers.update({new_json_data['questionId']: new_json_data['correctAnswer']}) + await state.update_data(numberPoints=numberPoints) + await state.update_data(rightAnswers=rightAnswers) + querylist.append(new_json_data) + await state.update_data(querylist=querylist) + if counter > 1: + await bot.send_message(chat_id, "Пожалуйста, заполните следующий вопрос", reply_markup=surveywebapp) + await EventMakerPanel.taskmenu_collection_surveywebapp.set() + counter -= 1 + await state.update_data(counter=counter) + else: + await EventMakerPanel.taskmenu.set() + await bot.send_message(chat_id, "Опрос успешно создан!", reply_markup=eventtasks) + querydict = {"surveyData": querylist} + querydict_dump: str = json.dumps(querydict) + url = url + querydict_dump + url = url.replace(' ', '%20') + url = url.replace('"', '%22') + data = await state.get_data() + name = data.get("name") + description = data.get("description") + photo = data.get("photo") + supabase.table('TaskCollection').insert( + {'name': name, 'description': description, 'photo': photo, 'counter': counter, 'url': url, + 'numberPoints': numberPoints, 'rightAnswers': rightAnswers}).execute() + await state.finish() + await EventMakerPanel.taskmenu.set() + +@dp.message_handler(text='⬅️Назад в меню', state=EventMakerPanel.taskmenu) +async def back_to_event_main_menu(message: types.Message, state: FSMContext): + await EventMakerPanel.menu.set() + user = users.get(message.chat.id) + user.user_state = str(EventMakerPanel.menu) + users.set(user) + await message.reply("Вы вышли из панели создания заданий", reply_markup=usermakerkbm) + + +@dp.message_handler(text = "⬅️Меню", state=EventMakerPanel.menu) +async def back_from_event(message: types.Message, state:FSMContext): + await MenuStates.waiting_for_profile.set() + user = users.get(message.chat.id) + user.user_state = str(MenuStates.waiting_for_profile) + users.set(user) + await message.reply("Вы вышли из панели event maker`a", reply_markup=rkbm) + + +#----------------------------------------------------------------------------------------------------------------------- +# Event maker panel +#----------------------------------------------------------------------------------------------------------------------- + + +# Хендлер отмены действия через кнопку +@dp.callback_query_handler(text="cancel", state=[AdminPanel.change_user_balance,AdminPanel.change_user_fullname,AdminPanel.change_user_agestart,AdminPanel.get_info_about_user]) +async def cancel_action(call: types.CallbackQuery, state: FSMContext): + await call.message.answer("Действие отменено, вы вернулись в меню админ-панели.", reply_markup=admrkbm) + await AdminPanel.admin_menu.set() + +@dp.message_handler(commands=['admin'], state='*') +async def admin_command(message: types.Message, state: FSMContext): + # Проверка, что пользователь в списке админов + with open('roles.json') as f: + admin_roles = json.load(f)['admins'] + + if str(message.from_user.id) not in admin_roles: + await message.reply("У вас нет прав администратора!", reply_markup=rkbm) + return + + # Установка состояния и вывод кнопок админки + await AdminPanel.admin_menu.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.admin_menu) + users.set(user) + await message.reply("Вы вошли в панель администратора", reply_markup=admrkbm) + + +#----------------------------------------------------------------------------------------------------------------------- +# Система обнуления баланса пользователя +#----------------------------------------------------------------------------------------------------------------------- + + +@dp.message_handler(text="❗Обнулить баланс всех пользователей❗", state=[AdminPanel.change_user_start, AdminPanel.change_user_end]) +async def update_users_balance_confirm(message: types.Message,state:FSMContext): + await AdminPanel.update_users_balance_confirm.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.update_users_balance) + users.set(user) + await bot.send_message(message.chat.id, '❗Внимание❗ Вы действительно хотите обнулить баланс ВСЕХ пользователей? Данное действие ОТМЕНИТЬ будет НЕВОЗМОЖНО', reply_markup=updatebalanceusers) + await AdminPanel.update_users_balance.set() + +@dp.message_handler(state=AdminPanel.update_users_balance) +async def update_users_balance(message: types.Message,state:FSMContext): + await AdminPanel.update_users_balance.set() + select = message.text + if select == '❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗': + supabase.table('UsersData_duplicate').update({'balance': 0}).neq('balance',0).execute() + await AdminPanel.admin_menu.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.admin_menu) + users.set(user) + await message.reply("Баланс всех пользователей равен 0!", reply_markup=admrkbm) + elif select == '⬅️Назад в меню': + await AdminPanel.admin_menu.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.admin_menu) + users.set(user) + await message.reply("Вы вернулись в панель администратора", reply_markup=admrkbm) + else: + await message.reply("Нет такого варианта, ошибка!") + -class AdminStates(StatesGroup): - adminmenu = State() +# Хендлер для кнопки ️Изменить пользователя +@dp.message_handler(text="⚙️Изменить пользователя", state=AdminPanel.admin_menu) +async def admin_change_user(message: types.Message, state: FSMContext): + await AdminPanel.change_user_start.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.change_user_start) + users.set(user) + await message.reply( + "Вы попали в меню редактирования пользователя, нажмите нужную вам кнопку чтобы изменить параметры пользователя. После нажатия на кнопку введите @username человека в телеграм чтобы поменять его параметры.", + reply_markup=admue) + +#----------------------------------------------------------------------------------------------------------------------- +# Система получения информации о пользователе +#----------------------------------------------------------------------------------------------------------------------- + + +@dp.message_handler(text="Получить информацию о пользователе", state=[AdminPanel.change_user_start, AdminPanel.change_user_end]) +async def admin_get_user_info(message: types.Message, state: FSMContext): + chat_id = message.chat.id + user = users.get(chat_id) + user.user_state = str(AdminPanel.get_info_about_user) + await message.reply("Введите @username пользователя о котором хотите получить информацию", reply_markup=types.ReplyKeyboardRemove()) + await message.reply("Для отмены действия, нажмите кнопку отмена", reply_markup=InlineKeyboardMarkup().add(cancel_button)) + await AdminPanel.get_info_about_user.set() + users.set(user) + + +@dp.message_handler(state=AdminPanel.get_info_about_user) +async def admin_get_user_info_start(message: types.Message, state: FSMContext): + chat_id = message.chat.id + username = message.text + user = users.get(chat_id) + user.user_state = str(AdminPanel.get_info_about_user_start) + try: + userinfo = users.get(username) + userlist = supabase.table('UsersData').select('chat_id').order('balance', desc=True).execute().data + counter = 0 + while userlist[counter]['chat_id'] != userinfo.chat_id: + counter += 1 + pseudo = userinfo.full_name + gender = userinfo.gender + age = userinfo.age + balance = userinfo.balance + if gender: + gender = "🙋‍♂️" + image = os.environ.get("MALE") + else: + gender = "🙋‍♀️" + image = os.environ.get("FEMALE") + # Формирование сообщения профиля пользователя + profile_message = f"Профиль пользователя {username}:\n\n" \ + f"{gender}{pseudo}, {age} лет\n└Место в топе: {counter+1}\n\n" \ + f"💰Баланс: {balance}🔘 поинтов\n└Мероприятий посещено: ?" + await bot.send_photo(chat_id=chat_id, photo=image, caption=profile_message, reply_markup=admue) + await AdminPanel.get_info_about_user_end.set() + user.user_state = str(AdminPanel.get_info_about_user_end) + users.set(user) + await state.finish() + await AdminPanel.change_user_start.set() + except IndexError: + await message.reply("Такого пользователя не существует. ", reply_markup=admue) + await AdminPanel.change_user_start.set() + user.user_state = str(AdminPanel.change_user_start) + users.set(user) + + +#----------------------------------------------------------------------------------------------------------------------- +# Система редактирования баланса пользователя +#----------------------------------------------------------------------------------------------------------------------- + + +@dp.message_handler(text="Изменить баланс", state=[AdminPanel.change_user_start, AdminPanel.change_user_end]) +async def admin_change_user_balance(message: types.Message, state: FSMContext): + await AdminPanel.change_user_balancestart.set() + await message.reply("Введите @username пользователя, которого необходимо отредактировать", reply_markup=types.ReplyKeyboardRemove()) + admin = users.get(message.chat.id) + admin.user_state = str(AdminPanel.change_user_balancestart) + users.set(admin) + +@dp.message_handler(state=AdminPanel.change_user_balancestart) +async def admin_change_user_balance_handler(message: types.Message, state: FSMContext): + username = message.text # получаем username + try: + userinfo = users.get(username) + await state.update_data(username=username) + await AdminPanel.change_user_balance.set() + await message.reply("Введите новый баланс пользователя", reply_markup=InlineKeyboardMarkup().add(cancel_button)) + admin = users.get(message.chat.id) + admin.user_state = str(AdminPanel.change_user_balance) + users.set(admin) + except IndexError: + await message.reply("Такого пользователя нет в базе данных", reply_markup=admue) + await state.finish() + await AdminPanel.change_user_start.set() + return + +@dp.message_handler(state=AdminPanel.change_user_balance) +async def admin_change_user_balance_handler(message: types.Message, state: FSMContext): + new_balance = message.text + data = await state.get_data() + username = data.get("username") + userinfo = users.get(username) + userinfo.balance = new_balance + users.set(userinfo) + # Отправляем сообщение об успешном обновлении + await state.finish() + await AdminPanel.change_user_end.set() + admin = users.get(message.chat.id) + admin.user_state = str(AdminPanel.change_user_end) + users.set(admin) + new_code_balance = code(new_balance) + await message.reply(f"Баланс пользователя {username} успешно обновлен на {new_code_balance}🔘", reply_markup=admue, parse_mode="MarkdownV2") + + +#----------------------------------------------------------------------------------------------------------------------- +# Система редактирования ФИО пользователя +#----------------------------------------------------------------------------------------------------------------------- + + +@dp.message_handler(text="Изменить ФИО", state=[AdminPanel.change_user_start, AdminPanel.change_user_end]) +async def admin_change_user_fullname(message: types.Message, state: FSMContext): + await AdminPanel.change_user_fullnamestart.set() + await message.reply("Введите @username пользователя, которого необходимо отредактировать", reply_markup=types.ReplyKeyboardRemove()) + admin = users.get(message.chat.id) + admin.user_state = str(AdminPanel.change_user_fullnamestart) + users.set(admin) + +@dp.message_handler(state=AdminPanel.change_user_fullnamestart) +async def admin_change_user_fullname_handler(message: types.Message, state: FSMContext): + username = message.text # получаем username + try: + userinfo = users.get(username) + await state.update_data(username=username) # сохраняем username в данных состояния + await AdminPanel.change_user_fullname.set() # переходим к следующему состоянию + await message.reply("Введите новое ФИО пользователя", reply_markup=InlineKeyboardMarkup().add(cancel_button)) + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.change_user_fullname) + users.set(user) + except IndexError: + await message.reply("Такого пользователя нет в базе данных", reply_markup=admue) + await state.finish() + await AdminPanel.change_user_start.set() + return + # Проверяем, есть ли такой пользователь + +@dp.message_handler(state=AdminPanel.change_user_fullname) +async def admin_change_user_fullname_handler(message: types.Message, state: FSMContext): + new_fullname = message.text # получаем новое ФИО + chat_id = message.chat.id + admin = users.get(chat_id) + detector = is_dirt() + cnt = 0 + FIO = new_fullname.split() + for word in range(len(FIO)): + if FIO[word][0].istitle(): + cnt += 1 + if new_fullname.replace(" ", "").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO): + data = await state.get_data() + username = data.get("username") # получаем сохраненный username из данных состояния + userinfo = users.get(username) + userinfo.full_name = new_fullname + admin.user_state = str(AdminPanel.change_user_end) + users.set(admin) + users.set(userinfo) + # Отправляем сообщение об успешном обновлении + new_code_fullname = code(new_fullname) + await message.reply(f"ФИО пользователя {username} успешно обновлено на {new_code_fullname}", reply_markup=admue, parse_mode='MarkdownV2') + await state.finish() + await AdminPanel.change_user_end.set() + else: + await message.reply("Неккоректное ФИО") + await AdminPanel.change_user_fullname.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.change_user_fullname) + users.set(user) + + +#----------------------------------------------------------------------------------------------------------------------- +# Система редактирования возраста пользователя +#----------------------------------------------------------------------------------------------------------------------- + + +@dp.message_handler(text="Изменить возраст", state=[AdminPanel.change_user_start, AdminPanel.change_user_end]) +async def admin_change_user_age(message: types.Message, state: FSMContext): + await AdminPanel.change_user_age.set() + admin = users.get(message.chat.id) + admin.user_state = str(AdminPanel.change_user_age) + users.set(admin) + await message.reply("Введите @username пользователя, которого необходимо отредактировать", reply_markup=types.ReplyKeyboardRemove()) + +@dp.message_handler(state=AdminPanel.change_user_age) +async def admin_change_user_age_handler(message: types.Message, state: FSMContext): + username = message.text # получаем username + try: + userinfo = users.get(username) + await state.update_data(username=username) # сохраняем username в данных состояния + await AdminPanel.change_user_agestart.set() # переходим к следующему состоянию + admin = users.get(message.chat.id) + admin.user_state = str(AdminPanel.change_user_agestart) + users.set(admin) + await message.reply("Введите новый возраст пользователя", reply_markup=InlineKeyboardMarkup().add(cancel_button)) + # Проверяем, есть ли такой пользователь + except IndexError: + await message.reply("Такого пользователя нет в базе данных", reply_markup=admue) + await state.finish() + await AdminPanel.change_user_start.set() + return + +@dp.message_handler(state=AdminPanel.change_user_agestart) +async def admin_change_user_age_handler(message: types.Message, state: FSMContext): + new_age = message.text # получаем новый возраст + try: + new_age = int(new_age) + except ValueError as e: + await message.reply("Ваш возраст неккоректен. Возраст не должен содержать буквы!") + print(f"Error validation age{e}") + if new_age < 12 or new_age > 122: + await message.reply("Ваш возраст неккоректен. Возраст должен лежать в диапазоне от 12 - 122") + await AdminPanel.change_user_agestart.set() + else: + data = await state.get_data() + username = data.get("username") # получаем сохраненный username из данных состояния + user = users.get(username) + user.age = new_age + user.user_state = str(AdminPanel.change_user_end) + users.set(user) + # Отправляем сообщение об успешном обновлении + new_code_age = code(new_age) + await message.reply(f"Возраст пользователя {username} успешно обновлен на {new_code_age}", reply_markup=admue, parse_mode='MarkdownV2') + await state.finish() + await AdminPanel.change_user_end.set() + + +#----------------------------------------------------------------------------------------------------------------------- +# Система промокодов +#----------------------------------------------------------------------------------------------------------------------- + + +@dp.message_handler(text="🗝️Промокоды", state=AdminPanel.admin_menu) +async def admin_promocodes(message: types.Message, state: FSMContext): + await AdminPanel.promo_menu.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.promo_menu) + users.set(user) + await message.reply("Вы вошли в меню промокодов", reply_markup=admpromo) + +@dp.message_handler(text="Добавить QR", state=AdminPanel.promo_menu) +async def admin_promocodes_addqr(message: types.Message, state: FSMContext): + await AdminPanel.promo_qrstart.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.promo_qrstart) + users.set(user) + await message.reply("Введите промокод, который хотите помстить в QR-код", reply_markup=types.ReplyKeyboardRemove()) + +@dp.message_handler(state=AdminPanel.promo_qrstart) +async def admin_promocodes_add_qr_set(message: types.Message, state: FSMContext): + promo_code = message.text + promocode_data = supabase.table('Promocode').select('cost').eq('promo', promo_code).execute() + + if not promocode_data.data or promocode_data.data[0]['cost'] == 0: + await message.reply("Такого промокода не существует или лимит его использования исчерпан", reply_markup=admpromo) + await state.finish() + await AdminPanel.promo_menu.set() + return + + qr = qrcode.make(promo_code) + + byte_io = BytesIO() + qr.save(byte_io, 'PNG') + byte_io.seek(0) + + await message.reply_photo(byte_io, caption="Вот QR\\-код для промокода " + code(promo_code) , reply_markup=admpromo, parse_mode="MarkdownV2") + + byte_io.close() + + await state.finish() + await AdminPanel.promo_menu.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.promo_menu) + +@dp.message_handler(text="Действующие промокоды", state=AdminPanel.promo_menu) +async def admin_promocodes_check(message: types.Message, state: FSMContext): + await AdminPanel.promo_check_promocode.set() + chat_id = message.chat.id + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.promo_check_promocode) + + promos = supabase.table('Promocode').select('promo', 'last', 'cost').filter('last', 'gt', 0).order('cost', desc=True).execute() + + promo_text = "📝 Действующие промокоды:\n\n" + + for promo in promos.data: + codee = promo['promo'] + uses_left = promo['last'] + cost = promo['cost'] + + promo_text += (code(f"{codee}") + f" \\- {uses_left} исп\\.\\, {cost} поинтов\n") + + await bot.send_message(chat_id, promo_text, parse_mode="MarkdownV2", reply_markup=admpromo) + supabase.table('Promocode').delete().eq('last', 0).execute() + await state.finish() + await AdminPanel.promo_menu.set() + user.user_state = str(AdminPanel.promo_menu) + +@dp.message_handler(text='Нэйминг-промо', state=AdminPanel.promo_menu) +async def get_naming_promo(message: types.Message, state: FSMContext): + await message.reply("Введите имя промокода", reply_markup=types.ReplyKeyboardRemove()) + user = users.get(message.chat.id) + await AdminPanel.promo_addpromo_naming.set() + +@dp.message_handler(state=AdminPanel.promo_addpromo_naming) +async def get_naming_promo_usages(message: types.Message, state:FSMContext): + name = str(message.text) + await message.reply("Введите количество использований:") + await state.update_data(name=name) + await AdminPanel.promo_addpromo_naming_cost.set() + +@dp.message_handler(state=AdminPanel.promo_addpromo_naming_cost) +async def get_naming_promo_cost(message: types.Message, state:FSMContext): + usages = int(message.text) + await message.reply("Введите цену промокода:") + await state.update_data(usages=usages) + await AdminPanel.promo_addpromo_naming_end.set() + +@dp.message_handler(state=AdminPanel.promo_addpromo_naming_end) +async def create_naming_promo(message: types.Message, state:FSMContext): + cost = int(message.text) + data = await state.get_data() + name = data.get("name") + usages = data.get("usages") + codee = generate_naming_promo(name, usages, cost) + usages_code = code(usages) + code_cost = code(cost) + texting = (f'Промокод '+ code(f"{codee}") + f' с {usages_code} использованиями и ценой {code_cost}🔘 создан') + await message.reply(texting, reply_markup=admpromo, parse_mode= "MarkdownV2") + await state.finish() + await AdminPanel.promo_menu.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.promo_menu) + +@dp.message_handler(text ='Добавить промокод',state=AdminPanel.promo_menu) +async def get_usages(message: types.Message, state: FSMContext): + await message.reply("Введите количество использований:", reply_markup=types.ReplyKeyboardRemove()) + await AdminPanel.promo_addpromousages.set() + +@dp.message_handler(state=AdminPanel.promo_addpromousages) +async def get_cost(message: types.Message, state: FSMContext): + usages = int(message.text) + await message.reply("Введите цену промокода:") + await state.update_data(usages=usages) + await AdminPanel.promo_addpromocost.set() + +@dp.message_handler(state=AdminPanel.promo_addpromocost) +async def create_promo(message: types.Message, state: FSMContext): + data = await state.get_data() + usages = data.get("usages") + cost = int(message.text) + codee = generate_promo(usages, cost) + usages_code = code(usages) + cost_code = code(cost) + texting = (f'Промокод ' + code(f"{codee}") + f' с {usages_code} использованиями и ценой {cost_code}🔘 создан') + await message.reply(texting, reply_markup=admpromo, parse_mode="MarkdownV2") + await state.finish() + await AdminPanel.promo_menu.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.promo_menu) + +@dp.message_handler(text="Удалить промокод", state=AdminPanel.promo_menu) +async def delete_promo(message: types.Message, state: FSMContext): + await AdminPanel.promo_delpromo.set() + await message.reply("Введите промокод для удаления", reply_markup=types.ReplyKeyboardRemove()) + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.promo_delpromo) + users.set(user) + + +@dp.message_handler(state=AdminPanel.promo_delpromo) +async def delete_promo_handler(message: types.Message, state: FSMContext): + codee = message.text + deleted = supabase.table('Promocode').delete().match({'promo': codee}).execute() + + if not deleted.data: + # ничего не удалено + await message.reply("Промокод не найден", reply_markup=admpromo) + await state.finish() + await AdminPanel.promo_menu.set() + return + + # удаление прошло успешно + codee_code = code(codee) + await message.reply(f"Промокод {codee_code} удален", reply_markup=admpromo, parse_mode='MarkdownV2') + await AdminPanel.promo_menu.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.promo_menu) + +# Хедлер для бека в меню админа +@dp.message_handler(text="⬅️Админ меню", state=[AdminPanel.change_user_start, AdminPanel.change_user_end, AdminPanel.promo_menu]) +async def admin_backtomenu(message: types.Message, state: FSMContext): + await message.reply("Вы вернулись в админ меню", reply_markup=admrkbm) + await AdminPanel.admin_menu.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.admin_menu) + users.set(user) + + +#----------------------------------------------------------------------------------------------------------------------- +# Система прав +#----------------------------------------------------------------------------------------------------------------------- + + +@dp.message_handler(text="👨‍🚀Организаторы", state=AdminPanel.admin_menu) +async def give_ruleskbm(message: types.Message, state:FSMContext): + await AdminPanel.rules.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.rules) + users.set(user) + await message.reply("Вы попали в раздел для выдачи права создания заданий пользователям. Нажмите на кнопку и следуйте указаниям.", reply_markup=ruleskbm) + +@dp.message_handler(text="Выдать права",state = AdminPanel.rules) +async def give_rules(message: types.Message, state: FSMContext): + await AdminPanel.rules_addmaker.set() + await message.reply("Введите @username пользователя которому хотите выдать права ивент мейкера", reply_markup=types.ReplyKeyboardRemove()) + +@dp.message_handler(state=AdminPanel.rules_addmaker) +async def give_rules_start(message: types.Message, state: FSMContext): + tgusr = message.text + + user_data = supabase.table('UsersData').select('chat_id').eq('tgusr', tgusr).execute() + + if not user_data.data: + await message.reply("Пользователя с таким @username не существует", reply_markup=ruleskbm) + await state.finish() + await AdminPanel.rules.set() + return + + chat_id = user_data.data[0]['chat_id'] + + with open('roles.json', 'r') as f: + roles = json.load(f) + + roles['event_makers'].append(str(chat_id)) + + with open('roles.json', 'w') as f: + json.dump(roles, f) + + await message.reply("Права выданы успешно", reply_markup=ruleskbm) + + await state.finish() + await AdminPanel.rules.set() + +@dp.message_handler(text="Забрать права", state=AdminPanel.rules) +async def del_from_eventers(message: types.Message, state:FSMContext): + await AdminPanel.rules_delmaker.set() + await message.reply("Введите @username пользователя у котрого хотите забрать права",reply_markup=types.ReplyKeyboardRemove()) + +@dp.message_handler(state=AdminPanel.rules_delmaker) +async def del_from_eventers_start(message: types.Message, state: FSMContext): + tgusr = message.text + + user_data = supabase.table('UsersData').select('chat_id').eq('tgusr', tgusr).execute() + + if not user_data.data: + await message.reply("Пользователя с таким username не существует", reply_markup=ruleskbm) + await state.finish() + await AdminPanel.rules.set() + return + + chat_id = user_data.data[0]['chat_id'] + + with open('roles.json', 'r') as f: + roles = json.load(f) + + if str(chat_id) in roles['event_makers']: + roles['event_makers'].remove(str(chat_id)) + + with open('roles.json', 'w') as f: + json.dump(roles, f) + + await message.reply("Права успешно удалены", reply_markup=ruleskbm) + + await state.finish() + await AdminPanel.rules.set() + +@dp.message_handler(text='Действующие права', state=AdminPanel.rules) +async def show_rules(message: types.Message, state: FSMContext): + + with open('roles.json', 'r') as f: + roles = json.load(f) + + event_makers = roles['event_makers'] + + rules_text = "📝 Пользователи с правами ивент-мейкера:\n\n" + + for chat_id in event_makers: + user_data = supabase.table('UsersData').select('tgusr').eq('chat_id', int(chat_id)).execute() + if user_data.data: + username = user_data.data[0]['tgusr'] + rules_text += f"{username} - {chat_id}\n" + + await message.reply(rules_text) + await state.finish() + await AdminPanel.rules.set() + +@dp.message_handler(text="⬅️Админ меню", state=AdminPanel.rules) +async def back_from_rules(message: types.Message, state: FSMContext): + await message.reply("Вы вернулись в админ меню", reply_markup=admrkbm) + await AdminPanel.admin_menu.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.admin_menu) + users.set(user) + +@dp.message_handler(text="⬅️Меню", state=AdminPanel.admin_menu) +async def admin_menu_back(message: types.Message, state: FSMContext): + await MenuStates.waiting_for_profile.set() + user = users.get(message.chat.id) + user.user_state = str(MenuStates.waiting_for_profile) + users.set(user) + await message.reply("Вы вышли из панели администратора", reply_markup=rkbm) + + +#----------------------------------------------------------------------------------------------------------------------- +# Система админ рейтинга +#----------------------------------------------------------------------------------------------------------------------- + + +@dp.message_handler(text="📊Рейтинг", state=AdminPanel.admin_menu) +async def admin_rating_board(message: types.Message, state: FSMContext): + await AdminPanel.rating_board.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.rating_board) + users.set(user) + await show_rating(message.chat.id) + await AdminPanel.admin_menu.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.admin_menu) + users.set(user) + +#----------------------------------------------------------------------------------------------------------------------- +# Система заданий +#----------------------------------------------------------------------------------------------------------------------- + +@dp.message_handler(text="📝Создать задание", state=AdminPanel.admin_menu) +async def admin_task_maker(message: types.Message, state: FSMContext): + await message.reply("Вы вошли в редактор заданий", reply_markup=admtasks) + await AdminPanel.taskmenu.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.taskmenu) + users.set(user) + +@dp.message_handler(text='Удалить коллекцию', state=AdminPanel.taskmenu) +async def del_coll(message: types.Message, state: FSMContext): + await message.reply("Введите пожалуйста имя коллекции для её удаления", reply_markup=types.ReplyKeyboardRemove()) + await AdminPanel.taskmenu_collection_delete_select.set() + +@dp.message_handler(state=AdminPanel.taskmenu_collection_delete_select) +async def delete_survey_handler(message: types.Message, state: FSMContext): + codee = message.text + deleted = supabase.table('TaskCollection').delete().match({'name': codee}).execute() + + if not deleted.data: + # ничего не удалено + await message.reply("Такой коллекции нет", reply_markup=admtasks) + await state.finish() + await AdminPanel.taskmenu.set() + return + + # удаление прошло успешно + codee_code = code(codee) + await message.reply(f"Коллекция {codee_code} удалена", reply_markup=admtasks, parse_mode='MarkdownV2') + await AdminPanel.taskmenu.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.taskmenu) + +@dp.message_handler(text='Список коллекций', state=AdminPanel.taskmenu) +async def del_coll(message: types.Message, state: FSMContext): + await AdminPanel.taskmenu_collection_list.set() + chat_id = message.chat.id + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.taskmenu_collection_list) + + promos = supabase.table('TaskCollection').select('name', 'url').filter('name', 'gt', 0).order('name',desc=True).execute() + + promo_text = "📝 Действующие формы опросов:\n\n" + + for promo in promos.data: + name = promo['name'] + url = promo['url'] + + name_parsed = f'{name}' + url_parsed = f'Ссылка' + promo_text += (name_parsed + f" {url_parsed} \n") + + await bot.send_message(chat_id, promo_text, parse_mode=types.ParseMode.HTML, reply_markup=admtasks, disable_web_page_preview=True) + await state.finish() + await AdminPanel.taskmenu.set() + user.user_state = str(AdminPanel.taskmenu) + + +@dp.message_handler(text="Создать коллекцию", state=AdminPanel.taskmenu) +async def admin_make(message: types.Message, state: FSMContext): + chat_id = message.chat.id + await bot.send_message(chat_id,f"Введите название коллекции заданий:", reply_markup=types.ReplyKeyboardRemove()) + await AdminPanel.taskmenu_namewait.set() + +@dp.message_handler(state=AdminPanel.taskmenu_namewait) +async def admin_taskmenu_namewait(message: types.Message, state: FSMContext): + chat_id = message.chat.id + name = message.text + tasks_name = [] + response = supabase.table('TaskCollection').select('*').execute() + for name_table in response.data: + tasks_name.append(name_table['name']) + if name in tasks_name: + await bot.send_message(chat_id,"Введенное имя уже существует, введите другое", reply_markup=types.ReplyKeyboardRemove()) + await AdminPanel.AdminPanel.taskmenu.set() + else: + await bot.send_message(chat_id, "Введите описание коллекции заданий:") + await state.update_data(name=name) + await AdminPanel.taskmenu_descriptionwait.set() + +@dp.message_handler(state=AdminPanel.taskmenu_descriptionwait) +async def admin_taskmenu_descriptionwait(message: types.Message, state: FSMContext): + chat_id = message.chat.id + description = message.text + await bot.send_message(chat_id, "Отправте фотографию мероприятия:") + await state.update_data(description = description) + await AdminPanel.taskmenu_photowait.set() + +@dp.message_handler(content_types= types.ContentType.PHOTO, state = AdminPanel.taskmenu_photowait) +async def admin_taskmenu_photowait(message: types.Message , state: FSMContext): + chat_id = message.chat.id + photo = message + try: + await state.update_data(photo = photo.photo[2].file_id) + await bot.send_message(chat_id,"Введите количество вопросов в коллекции:") + await AdminPanel.taskmenu_collection_counterwait.set() + except Exception as e: + await bot.send_message(chat_id,"Произошла ошибка, отправьте пожалуйста фотографию в хорошем качестве.") + await AdminPanel.taskmenu_photowait.set() + + +@dp.message_handler(state=AdminPanel.taskmenu_collection_counterwait) +async def admin_taskmenu_collection_counterwait(message: types.Message, state: FSMContext): + chat_id = message.chat.id + try: + counter = int(message.text) + except ValueError: + await bot.send_message(chat_id,"Введенное значение должно быть числом > 0") + await AdminPanel.taskmenu_collection_counterwait.set() + if counter <= 0: + await bot.send_message(chat_id,"Введенное значение должно быть числом > 0") + await AdminPanel.taskmenu_collection_counterwait.set() + else: + await state.update_data(counter = counter) + await bot.send_message(chat_id,"Коллекция создана успешно! Перейдите пожалуйста, к составлению заданий!⬇️",reply_markup=surveywebapp) + await AdminPanel.taskmenu_collection_surveywebapp.set() + +@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=AdminPanel.taskmenu_collection_surveywebapp) +async def survey_web_app(message: types.ContentType.WEB_APP_DATA , state: FSMContext): + chat_id = message.chat.id + data = await state.get_data() + counter = data.get("counter") + querylist = data.get("querylist") + numberPoints = data.get("numberPoints") + rightAnswers = data.get("rightAnswers") + if querylist == None: + querylist = [] + if numberPoints == None: + numberPoints:dict = {} + if rightAnswers == None: + rightAnswers:dict = {} + url = 'https://survey-web-app.pages.dev/view?json=' + message.text = message.web_app_data.data + data = json.loads(message.text) + data['questionId'] = await generate_id_for_survey(10) + new_json_data = json.dumps(data) + new_json_data = ast.literal_eval(new_json_data) + data = await state.get_data() + name = data.get("name") + numberPoints.update({new_json_data["questionId"]:new_json_data["numberPoints"]}) # numberPoints:correctAnswer + rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']}) + await state.update_data(numberPoints = numberPoints) + await state.update_data(rightAnswers = rightAnswers) + querylist.append(new_json_data) + await state.update_data(querylist = querylist) + if counter > 1: + await bot.send_message(chat_id, "Пожалуйста, заполните следующий вопрос",reply_markup=surveywebapp) + await AdminPanel.taskmenu_collection_surveywebapp.set() + counter -= 1 + await state.update_data(counter = counter) + else: + await AdminPanel.taskmenu.set() + await bot.send_message(chat_id, "Опрос успешно создан!", reply_markup=admtasks) + querydict = {"surveyData":querylist} + querydict_dump: str = json.dumps(querydict) + url = url + querydict_dump + url = url.replace(' ','%20') + url = url.replace('"', '%22') + data = await state.get_data() + name = data.get("name") + description = data.get("description") + photo = data.get("photo") + supabase.table('TaskCollection').insert({'name': name, 'description': description, 'photo': photo, 'counter': counter, 'url': url,'numberPoints':numberPoints, 'rightAnswers':rightAnswers}).execute() + await state.finish() + await AdminPanel.taskmenu.set() + +@dp.message_handler(text="⬅️Назад в меню", state=AdminPanel.taskmenu) +async def back_from_rules(message: types.Message, state: FSMContext): + await message.reply("Вы вернулись в админ меню", reply_markup=admrkbm) + await AdminPanel.admin_menu.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.admin_menu) + users.set(user) + +#----------------------------------------------------------------------------------------------------------------------- +# Система регистрации +#----------------------------------------------------------------------------------------------------------------------- + + @dp.message_handler(Command('start'), state=None) async def start_command(message: types.Message, state: FSMContext): chat_id = message.chat.id - # Проверка наличия пользователя в базе данных - response = table.query(KeyConditionExpression=Key('chatid').eq(str(chat_id))) - if response.get('Items'): + user = users.get(id=chat_id) # Получение состояния пользователя из Supabase + + if user and not (user.full_name == ""): # Пользователь уже зарегистрирован await MenuStates.waiting_for_profile.set() - await message.reply("Чтобы просмотреть свой профиль, нажмите кнопку 'Профиль'.") + await message.reply("Чтобы просмотреть свой профиль, нажмите кнопку 'Профиль'.", reply_markup=rkbm) else: + user = user if user else User(chat_id=chat_id) + + # Сохранение состояния пользователя + telegram_name = message.from_user.username + + user.user_state = str(RegistrationStates.waiting_for_age) + if telegram_name == None: + user.tgusr = "У пользователя нет имени" + else: + user.tgusr = "@" + telegram_name + users.set(user) + # Регистрация нового пользователя - user_registration[chat_id] = UserRegistrationDTO(chat_id) await message.reply("Привет! Давай зарегистрируемся! Введите ваш возраст:") - # Установка состояния "waiting_for_age" для пользователя await RegistrationStates.waiting_for_age.set() - # Сохранение состояния пользователя - update_user_state(str(chat_id), str(RegistrationStates.waiting_for_age)) - @dp.message_handler(state=RegistrationStates.waiting_for_age) async def handle_age(message: types.Message, state: FSMContext): chat_id = message.chat.id - age = message.text - - # Проверка и валидация возраста пользователя + user_age = message.text try: - validated_age = ValidatedUserRegistrationDTO(chat_id=chat_id, age=age).age - except ValidationError as e: - error_msg = e.errors()[0]["msg"] - await message.reply(error_msg) - return + user_age = int(user_age) + except ValueError as e: + await bot.send_message(chat_id, "Ваш возраст неккоректен. Возраст не должен содержать буквы!") + print(f"Error validation age{e}") + if int(user_age) < 12 or int(user_age) > 122: + await bot.send_message(chat_id, "Ваш возраст неккоректен. Попробуйте еще раз") + await RegistrationStates.waiting_for_age.set() + else: + user = users.get(chat_id) + user.age = user_age + # Сохранение возраста пользователя в DTO + print(f"Возраст пользователя {chat_id}: {user_age}") - # Сохранение возраста пользователя в DTO - dto = user_registration[chat_id] - dto.age = validated_age - print(f"Возраст пользователя {chat_id}: {validated_age}") + # Переход к следующему состоянию "waiting_for_gender" + await RegistrationStates.waiting_for_gender.set() + # Сохранение состояния пользователя + user.user_state = str(RegistrationStates.waiting_for_gender) + users.set(user) - # Запрашиваем пол пользователя - await message.reply("Введите ваш пол (Male/Female):", reply_markup=ikbg) + # Запрашиваем пол пользователя + await message.reply("Введите ваш пол (Male/Female):", reply_markup=ikbg) - # Переход к следующему состоянию "waiting_for_gender" - await RegistrationStates.waiting_for_gender.set() - # Сохранение состояния пользователя - update_user_state(str(chat_id), str(RegistrationStates.waiting_for_gender)) +@dp.message_handler(state=RegistrationStates.waiting_for_gender) +async def handle_gender(message: types.Message, state: FSMContext): + gender = message.text.lower() + if gender not in ["мужской", "женский"]: + await message.reply("Пол указан некорректно. Выберите пол кнопками ниже:", reply_markup=ikbg) + return @dp.callback_query_handler(state=RegistrationStates.waiting_for_gender) async def handle_gender_callback(query: types.CallbackQuery, state: FSMContext): chat_id = query.message.chat.id gender = query.data.lower() - - # Сохранение выбранного пола в DTO - dto = user_registration[chat_id] - dto.gender = gender.capitalize() + user = users.get(chat_id) + user.gender = bool(int(gender)) print(f"Пол пользователя {chat_id}: {gender}") # Запрашиваем имя пользователя - await query.message.reply("Введите ваше ФИО:") + await query.message.reply("Введите ваше ФИО:", reply_markup = helpinlinereg) # Переход к следующему состоянию "waiting_for_name" await RegistrationStates.waiting_for_name.set() - - # Сохранение состояния пользователя - update_user_state(str(chat_id), str(RegistrationStates.waiting_for_name)) + user.user_state = str(RegistrationStates.waiting_for_name) + users.set(user) @dp.message_handler(state=RegistrationStates.waiting_for_name) async def handle_name(message: types.Message, state: FSMContext): chat_id = message.chat.id name = message.text + detector = is_dirt() + FIO = name.split() + cnt = 0 + for word in range(len(FIO)): + if FIO[word][0].istitle(): + cnt += 1 + if name.replace(" ", "").isalpha() and len(name) < 40 and len(name) >= 5 and detector(name) == False and cnt == len(FIO): + user = users.get(chat_id) + user.full_name = name + user.user_state = str(RegistrationStates.final_reg) + users.set(user) - # Сохранение имени пользователя в DTO - dto = user_registration[chat_id] - dto.name = name - print(f"Имя пользователя {chat_id}: {name}") - - # Получаем имя пользователя из его профиля в Telegram - telegram_name = message.from_user.first_name - - # Обновление данных пользователя в базе данных - try: - tg_username = '@' + message.from_user.username if message.from_user.username else dto.name - response = table.put_item( - Item={ - 'chatid': str(dto.chat_id), # Тип String - 'pseudo': dto.name , # Тип String (Псевдоним в базе данных) - 'name': telegram_name, # Тип String (имя в Telegram) - 'age': int(dto.age), # Тип Number - 'gender': dto.gender, # Тип String - 'balance': 0, # Тип Number - 'tgusr': tg_username # Тип String - } - ) - print(f"Данные пользователя {chat_id} обновлены: {response}") - except Exception as e: - print(f"Ошибка при обновлении данных пользователя {chat_id}: {e}") + print(f"Имя пользователя {chat_id}: {name}") + # Отправка сообщения о успешной регистрации + if str(message.from_user.username) == 'None': + await bot.send_message(chat_id, + f"Регистрация успешно завершена с неточностями, {user.full_name}!У вас нет имени пользователя Телеграм, связь администрации с вами может быть усложнена, вам необходимо указать в вашем профиле телеграма ваше имя пользователя и перерегистрироваться в боте.", + reply_markup=rkbm) + else: + await bot.send_message(chat_id, f"Регистрация успешно завершена, {user.full_name}!", reply_markup=rkbm) + await state.finish() + await MenuStates.waiting_for_profile.set() + else: + await bot.send_message(chat_id, f"Пожалуйста, введите корректно свое ФИО") + await RegistrationStates.waiting_for_name.set() - # Обновление состояния пользователя в базе данных - update_user_state(str(chat_id), str(RegistrationStates.final_reg)) - # Отправка сообщения о успешной регистрации - await bot.send_message(chat_id, f"Регистрация успешно завершена, {dto.name}!", reply_markup=rkbm) +#----------------------------------------------------------------------------------------------------------------------- +# Кнопкни главного меню +#----------------------------------------------------------------------------------------------------------------------- - # Удаление данных о регистрации пользователя из словаря user_registration - del user_registration[chat_id] - print(f"Данные о регистрации пользователя {chat_id} удалены") - await state.finish() - await MenuStates.profile.set() @dp.message_handler(state=MenuStates.waiting_for_profile) async def handle_waiting_for_profile(message: types.Message, state: FSMContext): @@ -166,58 +1266,643 @@ async def handle_waiting_for_profile(message: types.Message, state: FSMContext): if select == "👤Профиль": await MenuStates.profile.set() await handle_profile(message, state) + elif select == "📊Рейтинг": + await MenuStates.rating.set() + await user_rating_board(message, state) + elif select =="❓Помощь": + await MenuStates.help.set() + await handle_help(message,state) + elif select == "📆Календарь событий": + await MenuStates.calendar.set() + await handle_calendar(message, state) + elif select == "📝Задания": + await MenuStates.tasks.set() + counter = 0 + await state.update_data(counter=counter) + await handle_tasks(message, state) + elif select == "🗝️Промокоды": + await MenuStates.promocode.set() + await bot.send_message(chat_id, "Вы попали в меню работы с промокодами", reply_markup=promo_kb) + else: + await message.reply("Нет такого варианта выбора!", reply_markup=rkbm) + +@dp.callback_query_handler(text="cancel_user", state=[ProlfileStates.edit_profile_name, ProlfileStates.edit_profile_age]) +async def cancel_action(call: types.CallbackQuery, state: FSMContext): + await call.message.answer("Действие отменено, вы вернулись в меню редактирования профиля.", reply_markup=menuedit) + await ProlfileStates.edit_profile.set() + +@dp.callback_query_handler(text='back_to_menu', state = MenuStates.promocodestart) +async def cancel_action(call: types.CallbackQuery, state: FSMContext): + await call.message.answer("Действие отменено, вы вернулись в меню промокодов.", reply_markup=promo_kb) + await MenuStates.promocode.set() + +@dp.callback_query_handler(text="cancel_user_help", state=MenuStates.help_end) +async def cancel_action(call: types.CallbackQuery, state: FSMContext): + await call.message.answer("Действие отменено, вы вернулись в меню помощи.", reply_markup=userhelp) + await MenuStates.help_cancel.set() + + +#----------------------------------------------------------------------------------------------------------------------- +#Система редактирования профиля +#----------------------------------------------------------------------------------------------------------------------- + + +@dp.message_handler(state=ProlfileStates.edit_profile) +async def handle_waiting_for_edit_profile(message: types.Message, state: FSMContext): + chat_id = message.chat.id + select = message.text + if select == "Изменить ФИО": + await ProlfileStates.edit_profile_name.set() + await bot.send_message(chat_id, "Вы выбрали редактирование ФИО", reply_markup=types.ReplyKeyboardRemove()) + await bot.send_message(chat_id, "Введите новое ФИО ", reply_markup=cancel_button_for_user) + elif select == "Изменить возраст": + await ProlfileStates.edit_profile_age.set() + await bot.send_message(chat_id, "Вы выбрали редактирование возраста", reply_markup=types.ReplyKeyboardRemove()) + await bot.send_message(chat_id, "Введите новый возраст ", reply_markup=cancel_button_for_user) + elif select == "⬅️Назад в меню": + await MenuStates.waiting_for_profile.set() + await bot.send_message(chat_id, "Вы вышли в меню! ", reply_markup=rkbm) else: - await message.reply("Чтобы просмотреть свой профиль, нажмите кнопку 'Профиль'.") + await message.reply("Нет такого варианта выбора!") + +@dp.message_handler(state=ProlfileStates.edit_profile_name) +async def edit_name_profile(message: types.Message, state:FSMContext): + new_fullname = message.text + chat_id = message.chat.id + detector = is_dirt() + FIO = new_fullname.split() + cnt = 0 + for word in range(len(FIO)): + if FIO[word][0].istitle(): + cnt += 1 + if new_fullname.replace(" ", "").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO): + user = users.get(chat_id) + user.full_name = new_fullname + user.user_state = str(ProlfileStates.edit_profile_name) + users.set(user) + await message.reply(f"Имя успешно обновлено на : {new_fullname}", reply_markup=rkbm) + await state.finish() + await MenuStates.waiting_for_profile.set() + else: + await bot.send_message(chat_id, f"Пожалуйста, введите корректно свое ФИО, например: Иванов Иван Иванович") + await ProlfileStates.edit_profile_name.set() + +@dp.message_handler(state=ProlfileStates.edit_profile_age) +async def edit_age_profile(message: types.Message, state: FSMContext): + new_age = message.text # получаем новый возраст + try: + new_age = int(new_age) + except ValueError as e: + await message.reply("Ваш возраст неккоректен. Возраст не должен содержать буквы!") + print(f"Error validation age{e}") + if new_age < 12 or new_age > 122: + await message.reply("Ваш возраст неккоректен. Возраст должен лежать в диапазоне от 12 - 122") + await ProlfileStates.edit_profile_age.set() + else: + chat_id = message.chat.id + user = users.get(chat_id) + user.age = new_age + user.user_state = str(ProlfileStates.edit_profile_age) + users.set(user) + # Отправляем сообщение об успешном обновлении + await message.reply(f"Возраст успешно обновлен на {new_age}", reply_markup=rkbm) + await state.finish() + await MenuStates.waiting_for_profile.set() + + +#----------------------------------------------------------------------------------------------------------------------- +#Система промокодов +#----------------------------------------------------------------------------------------------------------------------- + + +@dp.message_handler(text="🗝️Ввести промокод", state=MenuStates.promocode) +async def enter_promocode(message: types.Message): + await bot.send_message(message.chat.id, "Введите , пожалуйста , ваш промокод сообщением или отправьте боту изображение QR-кода", reply_markup=types.ReplyKeyboardRemove()) + await bot.send_message(message.chat.id, "Если хотите вернуться , то нажмите сюда", reply_markup=cancel_button_to_main) + await MenuStates.promocodestart.set() + +@dp.message_handler(content_types=['photo'], state=MenuStates.promocodestart) +async def check_qr_code(message: types.Message, state: FSMContext): + + photo_bytes = await message.photo[-1].download(destination=io.BytesIO()) + photo_bytes = photo_bytes.getvalue() + + photo_image = PIL.Image.open(io.BytesIO(photo_bytes)) + + qr_code = pyzbar.decode(photo_image) + + if qr_code: + qr_code = qr_code[0].data.decode() + + message.text = qr_code + await check_promocode(message, state) + +@dp.message_handler(state=MenuStates.promocodestart) +async def check_promocode(message: types.Message, state: FSMContext): + chat_id = message.chat.id + promocode = message.text + poro = promocode + + user = users.get(chat_id) + user_balance = user.balance + + promocode_data = supabase.table('Promocode').select('last', 'cost').eq('promo', promocode).execute() + + if not promocode_data.data: + await message.reply("Промокод не найден!", reply_markup=promo_kb) + await state.finish() + await MenuStates.promocode.set() + user.user_state = str(MenuStates.promocode) # Меню стейт + users.set(user) + return + + promocode = promocode_data.data[0] + + used_promocode_data = supabase.table('UsedPromocode').select('chat_id').eq('promo', poro).eq('chat_id', chat_id).execute() + + if used_promocode_data.data: + # уже использовал + await message.reply("Вы уже использовали этот промокод!", reply_markup=promo_kb) + await state.finish() + await MenuStates.promocode.set() + user.user_state = str(MenuStates.promocode) # Меню стейт + users.set(user) + return + + if promocode['last'] <= 0: + await message.reply("Срок действия промокода истек!", reply_markup=promo_kb) + await state.finish() + await MenuStates.promocode.set() + user.user_state = str(MenuStates.promocode) # Меню стейт + users.set(user) + return + + new_balance = user_balance + promocode['cost'] + + new_last = promocode['last'] - 1 + + user.balance = new_balance + # Добавим запись о том, что промокод был использован данным пользователем + supabase.table('Promocode').update({'last': new_last}).eq('promo', poro).execute() + expression = ''.join(random.choices(string.ascii_letters, k=8)) + supabase.table('UsedPromocode').insert({'id' : expression,'promo': poro, 'chat_id': str(chat_id)}).execute() + + await message.reply(f"Ваш баланс пополнен на {code(promocode['cost'])}🔘\\!", reply_markup=promo_kb, parse_mode='MarkdownV2') + + await state.finish() + await MenuStates.promocode.set() + user.user_state = str(MenuStates.promocode) # Меню стейт + users.set(user) + +@dp.message_handler(text="⬅️Назад в меню", state=MenuStates.promocode) +async def back_from_promo_menu(message: types.Message, state: FSMContext): + await MenuStates.waiting_for_profile.set() + await bot.send_message(message.chat.id, "Вы вернулись в главное меню", reply_markup=rkbm) + + +#----------------------------------------------------------------------------------------------------------------------- +#Система рейтинга(Google sheets) +#----------------------------------------------------------------------------------------------------------------------- + + +@dp.message_handler(text ="📊Рейтинг", state=MenuStates.waiting_for_profile) +async def user_rating_board(message: types.Message, state: FSMContext): + await MenuStates.rating.set() + user = users.get(message.chat.id) + user.user_state = str(MenuStates.rating) + users.set(user) + await show_user_rating(message.chat.id) + await MenuStates.waiting_for_profile.set() + user = users.get(message.chat.id) + user.user_state = str(MenuStates.waiting_for_profile) + users.set(user) + +#----------------------------------------------------------------------------------------------------------------------- +#Система отображения профиля +#----------------------------------------------------------------------------------------------------------------------- @dp.message_handler(state=MenuStates.profile) async def handle_profile(message: types.Message, state: FSMContext): chat_id = message.chat.id select = message.text if select == "👤Профиль": - # Запрос данных пользователя из базы данных - update_user_state(str(chat_id), str(MenuStates.profile)) - response = table.query(KeyConditionExpression=Key('chatid').eq(str(chat_id))) - items = response.get('Items') - if items: - user_data = items[0] - pseudo = user_data.get('pseudo', 'Unknown') - gender = user_data.get('gender', 'Unknown') - age = user_data.get('age', 'Unknown') - name = user_data.get('name', 'Unknown') - balance = user_data.get('balance', 0) - if gender in ['Male']: - gender = "🙋‍♂️" - image = "image.png" - else: - gender = "🙋‍♀️" - image = "image.png" - # Формирование сообщения профиля пользователя - profile_message = f"Добро пожаловать в ваш профиль:\n\n" \ - f"{gender}{pseudo}, {age} Лет\n├Ваш юзернейм: {name}\n└Ваше место в топе: ?\n\n" \ - f"💰Баланс: {balance}⭐\n└Мероприятий посещено: ?" - - await bot.send_photo(chat_id=chat_id, photo=open(image, 'rb'), caption=profile_message) + # Запрос данных пользователя из базы данных Supabase + user = users.get(chat_id) + pseudo = user.full_name + gender = user.gender + age = user.age + balance = user.balance + userlist = supabase.table('UsersData').select('chat_id').order('balance', desc=True).execute().data + counter = 0 + while userlist[counter]['chat_id'] != chat_id: + counter+=1 + if gender: + gender = "🙋‍♂️" + image = os.environ.get("MALE") else: - await bot.send_message(chat_id, "Профиль не найден.") + gender = "🙋‍♀️" + image = os.environ.get("FEMALE") + # Формирование сообщения профиля пользователя + profile_message = f"Добро пожаловать в ваш профиль:\n\n" \ + f"{gender}{pseudo}, {age} лет\n└Ваше место в топе: {counter+1}\n\n" \ + f"💰Баланс: {balance}🔘 поинтов\n└Мероприятий посещено: ?" + await bot.send_photo(chat_id=chat_id, photo=image, caption=profile_message, reply_markup=profilebuttons) + # Обработчик нажатия на кнопку удалить профиль + elif select == "❌Удалить профиль": + await bot.send_message(chat_id, "Вы действительно хотите удалить свой профиль?", reply_markup=confirmbutton) + await ProlfileStates.delete_profile.set() + elif select == "⚙️Редактировать профиль": + await ProlfileStates.edit_profile.set() + await bot.send_message(chat_id, "Выберите какие данные хотите отредактировать! ", reply_markup=menuedit) + elif select == "⬅️Назад в меню": + await MenuStates.waiting_for_profile.set() + await bot.send_message(chat_id, "Вы вернулись в меню!", reply_markup=rkbm) + else: await bot.send_message(chat_id, "Некорректный выбор.") -@dp.message_handler(Command('admin'), state=None) -async def admin_command(message: types.Message, state: FSMContext): + +#----------------------------------------------------------------------------------------------------------------------- +#Система удаления профиля +#----------------------------------------------------------------------------------------------------------------------- + + +@dp.message_handler(state=ProlfileStates.delete_profile) +async def del_profile(message: types.Message, state: FSMContext): + select = message.text + chat_id = message.chat.id + tgname = message.from_user.username + if tgname == None and select == "❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.": + user = users.get(chat_id) + users.delete(user) + supabase.table('UsedPromocode').delete().eq('chat_id', chat_id).execute() + supabase.table('Passd').delete().eq('chat_id', chat_id).execute() + await bot.send_message(chat_id, "Ваш профиль был удален!", reply_markup=types.ReplyKeyboardRemove()) + await state.finish() + elif tgname != None and select == "❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.": + tgname = "@" + tgname + user = users.get(tgname) + users.delete(user) + supabase.table('Passd').delete().eq('chat_id', chat_id).execute() + supabase.table('UsedPromocode').delete().eq('chat_id', chat_id).execute() + supabase.table('Report').delete().eq('tgusr',tgname).execute() + await bot.send_message(chat_id, "Ваш профиль был удален!", reply_markup=types.ReplyKeyboardRemove()) + await state.finish() + elif select == "⬅️Назад в меню": + await MenuStates.waiting_for_profile.set() + await bot.send_message(chat_id, "Вы вернулись в меню!", reply_markup=rkbm) + else: + await MenuStates.waiting_for_profile.set() + await bot.send_message(chat_id, "Некорректный выбор, вы вернулись в меню!", reply_markup=rkbm) + + +#----------------------------------------------------------------------------------------------------------------------- +#Система отображения мероприятий +#----------------------------------------------------------------------------------------------------------------------- + + +@dp.message_handler(state=MenuStates.calendar) +async def handle_calendar(message: types.Message, state: FSMContext): + chat_id = message.chat.id + response = supabase.table('Event').select('*').limit(5).execute() + events_message = 'Мероприятия:' + for event in response.data: + url = 'https://leader-id.ru/events/' + url = url +str(event['id']) + name = event['full_name'] + date_start = event['date_start'][:16] + date_end = event['date_end'] + date = date_start + "-" + date_end[11:16] + print(date) + events_message += f' \n' \ + f"[{name}]({url}) \n" \ + f"⏱{date} \n" \ + f'------------------------------' + await bot.send_message(chat_id, events_message,disable_web_page_preview=True,parse_mode=types.ParseMode.MARKDOWN) + await MenuStates.waiting_for_profile.set() + user = users.get(chat_id) + user.user_state = str(MenuStates.calendar) + +#----------------------------------------------------------------------------------------------------------------------- +#Система тикетов для юзера +#----------------------------------------------------------------------------------------------------------------------- + +@dp.message_handler(state=MenuStates.help) +async def handle_help(message: types.Message, state: FSMContext): + chat_id = message.chat.id + await bot.send_message(chat_id, f"Привет\\! Если у тебя есть какие\\-то проблемы или пожелания \\, то смелее нажимай на кнопку " + f"{code('📨Создать заявку')}" + f" и администратор с радостью тебе поможет\\! ", reply_markup=userhelp, parse_mode = 'MarkdownV2') + user = users.get(chat_id) + user.user_state = str(MenuStates.help) + users.set(user) + await MenuStates.help_start.set() + user.user_state = str(MenuStates.help_start) + + +@dp.message_handler(text="📨Создать заявку", state=MenuStates.help_start) +async def handle_help_start(message: types.Message, state: FSMContext): chat_id = message.chat.id - if chat_id in admin_list: + tgu = message.from_user.username + if tgu == None: + nome = 'имени пользователя' + url = 'https://ru.the-hitech.net/7264375-how-to-create-a-username-on-telegram' + await bot.send_message(chat_id, + f"У вас нет " + f"[{nome}]({url})" + f" телеграм!Укажите его в своём профиле и тогда администрация сможет вам помочь.", + reply_markup=rkbm, disable_web_page_preview=True, + parse_mode=types.ParseMode.MARKDOWN) + await MenuStates.waiting_for_profile.set() + else: + tgus = '@' + tgu + tgus = '@' + tgu + # Проверяем, есть ли у пользователя предыдущие заявки + existing_reports = supabase.table('Report').select('tgusr').eq('tgusr', tgus).execute() + if existing_reports.data: + await message.reply("У вас уже есть открытая заявка. Пожалуйста, дождитесь ответа.", reply_markup=rkbm) await state.finish() - await AdminStates.adminmenu.set() - await message.reply("Добро пожаловать в консоль администратора:", reply_markup=admrkbm) + await MenuStates.waiting_for_profile.set() + + user = users.get(chat_id) + user.user_state = str(MenuStates.help) + users.set(user) + return + + await bot.send_message(chat_id, "Нажмите сюда чтобы вернуться", reply_markup=types.ReplyKeyboardRemove()) + await bot.send_message(chat_id, "Распишите здесь наиподробнейшим образом какой у вас возник вопрос или пожелание!",reply_markup=cancel_button_for_user_help) + + user = users.get(chat_id) + user.user_state = str(MenuStates.help_end) + await MenuStates.help_end.set() + +@dp.message_handler(state=MenuStates.help_end) +async def handle_help_end(message: types.Message, state: FSMContext): + try: + Description = message.text + chat_id = message.chat.id + telegram_name = message.from_user.username + tgusr = telegram_name + + tgusr = "@" + telegram_name + + # Вставка в БД + supabase.table('Report').insert({'description': Description, 'tgusr': tgusr}).execute() + + # Подтверждающее сообщение + await bot.send_message(chat_id, "Заявка успешно отправлена! В ближайшее время с вами свяжется администратор.", reply_markup=userhelp) + + except: + chat_id = message.chat.id + await bot.send_message(chat_id, "Извините, произошла ошибка при отправке заявки", reply_markup=userhelp) + await MenuStates.help_cancel.set() + + # Сброс состояния + await state.finish() + await MenuStates.help_ender.set() + users.user_state=str(MenuStates.help) + +@dp.message_handler(text = "⬅️Назад в меню", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel]) +async def handle_help_back(message: types.Message, state: FSMContext): + chat_id = message.chat.id + await MenuStates.waiting_for_profile.set() + await bot.send_message(chat_id, "Вы вернулись в меню!", reply_markup=rkbm) + +#----------------------------------------------------------------------------------------------------------------------- +#Система тикетов для админов +#----------------------------------------------------------------------------------------------------------------------- + +@dp.message_handler(text = "📨Обращения", state = AdminPanel.admin_menu) +async def handle_report(message: types.Message, state: FSMContext): + chat_id = message.chat.id + await bot.send_message(chat_id, "Нажата кнопка обращений, здесь вы можете просмотреть действующие обращения от пользователей или удалить уже решённые. ", reply_markup=admreport) + await AdminPanel.ticket.set() + user = users.get(chat_id) + user.user_state = str(AdminPanel.ticket) + + +@dp.message_handler(text='Действующие обращения', state=AdminPanel.ticket) +async def check_tickets(message: types.Message, state: FSMContext): + chat_id = message.chat.id + user = users.get(chat_id) + user.user_state = str(AdminPanel.ticket_check) + + # Запрос обращений из БД + tickets = supabase.table('Report').select('tgusr', 'description').execute().data + + tickets_text = "📨 Действующие обращения:\n\n" + + for i, ticket in enumerate(tickets, 1): + username = ticket['tgusr'] + description = ticket['description'] + tickets_text += f"{i}. {username} - {description}\n" + + # Отправка сообщения + await bot.send_message(chat_id, tickets_text) + # Смена состояния + await AdminPanel.ticket.set() + user.user_state = str(AdminPanel.ticket) + +@dp.message_handler(text = "Удалить обращение", state=AdminPanel.ticket) +async def delete_ticket(message: types.Message, state: FSMContext): + chat_id = message.chat.id + await AdminPanel.ticket_delete.set() + user = users.get(chat_id) + user.user_state = str(AdminPanel.ticket_delete) + await message.reply("Введите @username пользователя чтобы удалить его заявку", reply_markup=types.ReplyKeyboardRemove()) + await AdminPanel.ticket_start.set() + user.user_state = str(AdminPanel.ticket_delete) + + +@dp.message_handler(state=AdminPanel.ticket_start) +async def handle_ticket_delete(message: types.Message, state: FSMContext): + chat_id = message.chat.id + username = message.text + + # Проверка, есть ли такой пользователь + user_exists = supabase.table('Report').select('tgusr').eq('tgusr', username).execute() + if not user_exists.data: + await message.reply("Такого пользователя нет в базе данных", reply_markup= admreport) + await state.finish() + await AdminPanel.ticket.set() + return + + # Удаление обращения + delete_query = supabase.table('Report').delete().eq('tgusr', username).execute() + + await message.reply(f"Обращение пользователя {username} успешно удалено", reply_markup=admreport) + await AdminPanel.ticket.set() + user = users.get(chat_id) + user.user_state = str(AdminPanel.ticket) + + +@dp.message_handler(text="⬅️Назад в меню", state=AdminPanel.ticket) +async def handle_tickets_back(message: types.Message, state: FSMContext): + await message.reply("Вы вернулись в админ меню", reply_markup=admrkbm) + await AdminPanel.admin_menu.set() + user = users.get(message.chat.id) + user.user_state = str(AdminPanel.admin_menu) + users.set(user) + +#----------------------------------------------------------------------------------------------------------------------- +#Система заданий +#----------------------------------------------------------------------------------------------------------------------- + +@dp.message_handler(text = "📝Задания", state=MenuStates.tasks) +async def handle_tasks(message: types.Message, state: FSMContext): + chat_id = message.chat.id + data = await state.get_data() + counter = data.get('counter') + await state.update_data(counter = counter) + task = supabase.table('TaskCollection').select('name','description','photo','url').execute().data[int(counter)] + text = f"{task['name']}\n{task['description']}" + await state.update_data(name = task['name']) + ikbmtasks = ReplyKeyboardMarkup(resize_keyboard=True) + ibleft = KeyboardButton(text="⬅️") + ibright = KeyboardButton(text="➡️") + ibback = KeyboardButton(text="⬅️Меню") + print(f"{task['url']}") + ibgo = KeyboardButton(text="✅", web_app = WebAppInfo(url = f'{task["url"]}')) + ikbmtasks.row(ibleft, ibgo, ibright) + ikbmtasks.row(ibback) + message_id_data = await bot.send_photo(chat_id, task['photo'] , text, reply_markup= ikbmtasks) + message_id_data = message_id_data['message_id'] + await state.update_data(message_id_data=message_id_data) + +@dp.message_handler(text="➡️", state=MenuStates.tasks) +async def right(message: types.Message, state: FSMContext): + chat_id = message.chat.id + data = await state.get_data() + counter = data.get('counter')+1 + if counter>len(supabase.table('TaskCollection').select('name' ).execute().data)-1: + counter = 0 + await state.update_data(counter = counter) + await handle_tasks(message, state) + await bot.delete_message(chat_id=chat_id, message_id=data.get('message_id_data')) + await bot.delete_message(chat_id=chat_id, message_id=message.message_id) + +@dp.message_handler(text="⬅️", state=MenuStates.tasks) +async def left(message: types.Message, state: FSMContext): + chat_id = message.chat.id + data = await state.get_data() + counter = data.get('counter') - 1 + if counter < 0: + counter = len(supabase.table('TaskCollection').select('name').execute().data) - 1 + await state.update_data(counter=counter) + await handle_tasks(message, state) + await bot.delete_message(chat_id=chat_id, message_id=data.get('message_id_data')) + await bot.delete_message(chat_id=chat_id, message_id=message.message_id) + +@dp.message_handler(text="⬅️Меню", state=MenuStates.tasks) +async def task_back(message: types.Message, state: FSMContext): + chat_id = message.chat.id + data = await state.get_data() + await bot.delete_message(chat_id=chat_id, message_id=data.get('message_id_data')) + await bot.delete_message(chat_id=chat_id, message_id=message.message_id) + await MenuStates.waiting_for_profile.set() + await bot.send_message(chat_id, "Вы вернулись в меню!", reply_markup=rkbm) + + + + + +@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=MenuStates.tasks) +async def handle_test_results(message: types.ContentType.WEB_APP_DATA, state: FSMContext): + message.text = message.web_app_data.data + chat_id = message.chat.id + user_answers = json.loads(message.text) + + data = await state.get_data() + counter = data.get('counter') + name = data.get('name') + task = supabase.table('TaskCollection').select('numberPoints', 'rightAnswers').execute().data[int(counter)] + + # Преобразуем в словарь + right_answers = json.loads(task['rightAnswers']) + points = json.loads(task['numberPoints']) + + + user_answers_dict = {} + + for question_id in user_answers: + user_answers_dict[question_id] = user_answers[question_id] + + num_correct = 0 + score = 0 + + user = users.get(chat_id) + user_balance = user.balance + + for question_id in user_answers_dict: + if user_answers_dict[question_id] == right_answers[question_id]: + num_correct += 1 + score += int(points[question_id]) + + used_survey_data = supabase.table('Passd').select('chat_id').eq('name', name).eq('chat_id', chat_id).execute() + + if used_survey_data.data: + + await bot.send_message( + message.chat.id, + text=f"Вы уже проходили этот опрос." + ) + return + + ident = generate_code() + supabase.table('Passd').insert({'chat_id':chat_id, 'name':name, 'id': ident}).execute() + new_balance = user_balance + score + user.balance = new_balance + users.set(user) + await bot.send_message( + message.chat.id, + text=f"Правильных ответов: {num_correct}\nБаллов: {score}" + ) + + + +# код подсчета результатов + + +def calculate_score(user_answers, right_answers, points): + score = 0 + num_correct = 0 + + for question_id in user_answers: + if user_answers[question_id] == right_answers[question_id]: + score += int(points[question_id]) + num_correct += 1 + + return num_correct, score + + +#------------------------------------------------------------------------------------------------------------------------ +#Система отлова людей без state и обработчик стикеров +#------------------------------------------------------------------------------------------------------------------------ # Ответ на отправку стикера -@dp.message_handler(content_types=types.ContentType.STICKER, state=None) +@dp.message_handler(content_types=types.ContentType.STICKER, state="*") async def handle_sticker(message: types.Message): chat_id = message.chat.id await bot.send_message(chat_id, "Извините, я не принимаю стикеры.") +# ВНИМАНИЕ! Данный handler ловит людей без состояния! +@dp.message_handler(state= None) +async def handle_The_Last_Frontier(message: types.Message, state: FSMContext): + sost = await state.get_state() + print(sost) + await start_command(message, state) + +#----------------------------------------------------------------------------------------------------------------------- +#Система для Telegram Web App +#----------------------------------------------------------------------------------------------------------------------- + +@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=[MenuStates.promocode,MenuStates.promocodestart]) +async def handle_qr(message: types.ContentType.WEB_APP_DATA , state: FSMContext): + message.text = message.web_app_data.data + await asyncio.wait_for(check_promocode(message,state),timeout=3.5) + + await message.delete() +#----------------------------------------------------------------------------------------------------------------------- +#Система для Telegram Web App +#----------------------------------------------------------------------------------------------------------------------- if __name__ == '__main__': executor.start_polling(dp, skip_updates=True) \ No newline at end of file diff --git a/qodana.sarif.json b/qodana.sarif.json new file mode 100644 index 0000000..22c36f7 --- /dev/null +++ b/qodana.sarif.json @@ -0,0 +1,44625 @@ +{ + "$schema": "https://raw.githubusercontent.com/schemastore/schemastore/master/src/schemas/json/sarif-2.1.0-rtm.5.json", + "version": "2.1.0", + "runs": [ + { + "tool": { + "driver": { + "name": "QDPYC", + "fullName": "Qodana Community for Python", + "version": "233.14241.160", + "rules": [], + "taxa": [ + { + "id": "Python", + "name": "Python" + }, + { + "id": "EditorConfig", + "name": "EditorConfig" + }, + { + "id": "Shell script", + "name": "Shell script" + }, + { + "id": "XML", + "name": "XML" + }, + { + "id": "YAML", + "name": "YAML" + }, + { + "id": "JSON and JSON5", + "name": "JSON and JSON5" + }, + { + "id": "RegExp", + "name": "RegExp" + }, + { + "id": "Properties files", + "name": "Properties files" + }, + { + "id": "HTML", + "name": "HTML" + }, + { + "id": "General", + "name": "General" + }, + { + "id": "Qodana", + "name": "Qodana" + }, + { + "id": "RELAX NG", + "name": "RELAX NG" + }, + { + "id": "Proofreading", + "name": "Proofreading" + }, + { + "id": "Internationalization", + "name": "Internationalization" + }, + { + "id": "TOML", + "name": "TOML" + }, + { + "id": "Version control", + "name": "Version control" + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + "extensions": [ + { + "name": "PythonCore", + "version": "233.14241", + "rules": [ + { + "id": "PyPandasSeriesToListInspection", + "shortDescription": { + "text": "Method Series.to_list() is recommended" + }, + "fullDescription": { + "text": "Reports redundant 'list' in 'list(Series.values)' statement for pandas and polars libraries. Such 'Series' values extraction can be replaced with the 'to_list()' function call. Example: list(df['column'].values)\n When the quick-fix is applied, the code changes to: df['column'].to_list()", + "markdown": "Reports redundant `list` in `list(Series.values)` statement for pandas and polars libraries.\nSuch `Series` values extraction can be replaced with the `to_list()` function call.\n\n**Example:**\n\n```\nlist(df['column'].values)\n```\n\nWhen the quick-fix is applied, the code changes to:\n\n```\ndf['column'].to_list()\n```" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyPackages", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PySetFunctionToLiteralInspection", + "shortDescription": { + "text": "Function call can be replaced with set literal" + }, + "fullDescription": { + "text": "Reports calls to the 'set' function that can be replaced with the 'set' literal. Example: 'def do_mult(a, b):\n c = a * b\n return set([c, a, b])' When the quick-fix is applied, the code changes to: 'def do_mult(a, b):\n c = a * b\n return {c, a, b}'", + "markdown": "Reports calls to the `set` function that can be replaced with\nthe `set` literal.\n\n**Example:**\n\n\n def do_mult(a, b):\n c = a * b\n return set([c, a, b])\n\nWhen the quick-fix is applied, the code changes to:\n\n\n def do_mult(a, b):\n c = a * b\n return {c, a, b}\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PySetFunctionToLiteral", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyStatementEffectInspection", + "shortDescription": { + "text": "Statement has no effect" + }, + "fullDescription": { + "text": "Reports statements that have no effect. Example: 'class Car:\n def __init__(self, speed=0):\n self.speed = speed\n self.time # has no effect\n\n2 + 3 # has no effect' In this example, you can either add a field 'time' to the 'Car' class or introduce variables for the problematic statements.", + "markdown": "Reports statements that have no effect.\n\n**Example:**\n\n\n class Car:\n def __init__(self, speed=0):\n self.speed = speed\n self.time # has no effect\n\n 2 + 3 # has no effect\n\nIn this example, you can either add a field `time` to the `Car` class or\nintroduce variables for the problematic statements." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyStatementEffect", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyMandatoryEncodingInspection", + "shortDescription": { + "text": "No encoding specified for file" + }, + "fullDescription": { + "text": "Reports a missing encoding comment in Python 2. Example: 'class Book(object):\n def __init__(self):\n pass' When the quick-fix is applied, the missing comment is added: '# coding=utf-8\nclass Book(object):\n def __init__(self):\n pass'", + "markdown": "Reports a missing encoding comment in Python 2.\n\n**Example:**\n\n\n class Book(object):\n def __init__(self):\n pass\n\nWhen the quick-fix is applied, the missing comment is added:\n\n\n # coding=utf-8\n class Book(object):\n def __init__(self):\n pass\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "PyMandatoryEncoding", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyOverridesInspection", + "shortDescription": { + "text": "Invalid usages of @override decorator" + }, + "fullDescription": { + "text": "Reports when a method decorated with @override doesn't have a matching method in its ancestor classes Example: 'from typing import override\n\nclass Parent:\n def foo(self) -> int:\n return 1\n\n def bar(self, x: str) -> str:\n return x\n\nclass Child(Parent):\n @override\n def foo(self) -> int:\n return 2\n\n @override # Missing super method for override function\n def baz(self) -> int:\n return 1'", + "markdown": "Reports when a method decorated with @override doesn't have a matching method in its ancestor classes\n\n**Example:**\n\n\n from typing import override\n\n class Parent:\n def foo(self) -> int:\n return 1\n\n def bar(self, x: str) -> str:\n return x\n\n class Child(Parent):\n @override\n def foo(self) -> int:\n return 2\n\n @override # Missing super method for override function\n def baz(self) -> int:\n return 1\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyOverrides", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyInconsistentIndentationInspection", + "shortDescription": { + "text": "Inconsistent indentation" + }, + "fullDescription": { + "text": "Reports inconsistent indentation in Python source files when, for example, you use a mixture of tabs and spaces in your code.", + "markdown": "Reports inconsistent indentation in Python source files when, for example,\nyou use a mixture of tabs and spaces in your code." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyInconsistentIndentation", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyAttributeOutsideInitInspection", + "shortDescription": { + "text": "An instance attribute is defined outside `__init__`" + }, + "fullDescription": { + "text": "Reports a problem when instance attribute definition is outside '__init__' method. Example: 'class Book:\n def __init__(self):\n self.author = 'Mark Twain'\n\n def release(self):\n self.year = '1889'' When the quick-fix is applied, the code sample changes to: 'class Book:\n def __init__(self):\n self.year = '1889'\n self.author = 'Mark Twain'\n\n def release(self):\n pass'", + "markdown": "Reports a problem when instance attribute definition is outside `__init__` method.\n\n**Example:**\n\n\n class Book:\n def __init__(self):\n self.author = 'Mark Twain'\n\n def release(self):\n self.year = '1889'\n\n\nWhen the quick-fix is applied, the code sample changes to:\n\n\n class Book:\n def __init__(self):\n self.year = '1889'\n self.author = 'Mark Twain'\n\n def release(self):\n pass\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyAttributeOutsideInit", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyTypedDictInspection", + "shortDescription": { + "text": "Invalid TypedDict definition and usages" + }, + "fullDescription": { + "text": "Reports invalid definition and usage of TypedDict. Example: 'from typing import TypedDict\n\n\nclass Movie(TypedDict):\n name: str\n year: int\n rate: int = 10 # Right-hand side values are not supported\n\n def method(self): # Invalid statement in TypedDict\n pass\n\n\nm = Movie(name=\"name\", year=1000, rate=9)\nprint(m[\"director\"]) # There is no the 'director' key in 'Movie'\ndel m[\"name\"] # The 'name' key cannot be deleted\nm[\"year\"] = \"1001\" # Expected 'int', got 'str''", + "markdown": "Reports invalid definition and usage of\n[TypedDict](https://www.python.org/dev/peps/pep-0589/).\n\n**Example:**\n\n\n from typing import TypedDict\n\n\n class Movie(TypedDict):\n name: str\n year: int\n rate: int = 10 # Right-hand side values are not supported\n\n def method(self): # Invalid statement in TypedDict\n pass\n\n\n m = Movie(name=\"name\", year=1000, rate=9)\n print(m[\"director\"]) # There is no the 'director' key in 'Movie'\n del m[\"name\"] # The 'name' key cannot be deleted\n m[\"year\"] = \"1001\" # Expected 'int', got 'str'\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyTypedDict", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyPep8Inspection", + "shortDescription": { + "text": "PEP 8 coding style violation" + }, + "fullDescription": { + "text": "Reports violations of the PEP 8 coding style guide by running the bundled pycodestyle.py tool.", + "markdown": "Reports violations of the [PEP 8 coding style guide](https://www.python.org/dev/peps/pep-0008/) by running the bundled [pycodestyle.py](https://github.com/PyCQA/pycodestyle) tool." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyPep8", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyMissingTypeHintsInspection", + "shortDescription": { + "text": "Missing type hinting for function definition" + }, + "fullDescription": { + "text": "Reports missing type hints for function declaration in one of the two formats: parameter annotations or a type comment. Select the Only when types are known checkbox if you want the inspection check the types collected from runtime or inferred.", + "markdown": "Reports missing type hints for function declaration in\none of the two formats: parameter annotations or a type comment.\n\nSelect the **Only when types are known** checkbox if you want the inspection check\nthe types collected from runtime or inferred." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "PyMissingTypeHints", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyTupleItemAssignmentInspection", + "shortDescription": { + "text": "Tuple item assignment is prohibited" + }, + "fullDescription": { + "text": "Reports assignments to a tuple item. Example: 't = ('red', 'blue', 'green', 'white')\nt[3] = 'black'' A quick-fix offers to replace the tuple with a list.", + "markdown": "Reports assignments to a tuple item.\n\n**Example:**\n\n\n t = ('red', 'blue', 'green', 'white')\n t[3] = 'black'\n\nA quick-fix offers to replace the tuple with a list." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyTupleItemAssignment", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyInitNewSignatureInspection", + "shortDescription": { + "text": "Incompatible signatures of __new__ and __init__" + }, + "fullDescription": { + "text": "Reports incompatible signatures of the '__new__' and '__init__' methods. Example: 'class MyClass(object):\n def __new__(cls, arg1):\n return super().__new__(cls)\n\n def __init__(self):\n pass' If the '__new__' and '__init__' have different arguments, then the 'MyClass' cannot be instantiated. As a fix, the IDE offers to apply the Change Signature refactoring.", + "markdown": "Reports incompatible signatures of the `__new__` and `__init__` methods.\n\n**Example:**\n\n\n class MyClass(object):\n def __new__(cls, arg1):\n return super().__new__(cls)\n\n def __init__(self):\n pass\n\nIf the `__new__` and `__init__` have different arguments, then the `MyClass`\ncannot be instantiated.\n\nAs a fix, the IDE offers to apply the Change Signature refactoring." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyInitNewSignature", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyDunderSlotsInspection", + "shortDescription": { + "text": "Invalid usages of classes with '__slots__' definitions" + }, + "fullDescription": { + "text": "Reports invalid usages of a class with '__slots__' definitions. Example: 'class Foo:\n __slots__ = ['foo', 'bar']\n\n\nfoo = Foo()\nfoo.baz = 'spam''", + "markdown": "Reports invalid usages of a class with `__slots__` definitions.\n\n**Example:**\n\n\n class Foo:\n __slots__ = ['foo', 'bar']\n\n\n foo = Foo()\n foo.baz = 'spam'\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyDunderSlots", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyMissingConstructorInspection", + "shortDescription": { + "text": "Missed call to '__init__' of the super class" + }, + "fullDescription": { + "text": "Reports cases when a call to the 'super' constructor in a class is missed. Example: 'class Fruit:\n def __init__(self):\n pass\n\n\nclass Pear(Fruit):\n def __init__(self):\n pass' The 'Pear' class should have a 'super' call in the '__init__' method. When the quick-fix is applied, the code changes to: 'class Fruit:\n def __init__(self):\n pass\n\n\nclass Pear(Fruit):\n def __init__(self):\n super().__init__()'", + "markdown": "Reports cases when a call to the `super` constructor in a class is missed.\n\n**Example:**\n\n\n class Fruit:\n def __init__(self):\n pass\n\n\n class Pear(Fruit):\n def __init__(self):\n pass\n\nThe `Pear` class should have a `super` call in the `__init__`\nmethod.\n\nWhen the quick-fix is applied, the code changes to:\n\n\n class Fruit:\n def __init__(self):\n pass\n\n\n class Pear(Fruit):\n def __init__(self):\n super().__init__()\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyMissingConstructor", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyDefaultArgumentInspection", + "shortDescription": { + "text": "The default argument is mutable" + }, + "fullDescription": { + "text": "Reports a problem when a mutable value as a list or dictionary is detected in a default value for an argument. Default argument values are evaluated only once at function definition time, which means that modifying the default value of the argument will affect all subsequent calls of that function. Example: 'def func(s, cache={}):\n cache[s] = None' When the quick-fix is applied, the code changes to: 'def func(s, cache=None):\n if cache is None:\n cache = {}\n cache[s] = None'", + "markdown": "Reports a problem when a mutable value as a list or dictionary is detected in a default value for\nan argument. \n\nDefault argument values are evaluated only once at function definition time,\nwhich means that modifying the\ndefault value of the argument will affect all subsequent calls of that function.\n\n**Example:**\n\n\n def func(s, cache={}):\n cache[s] = None\n\nWhen the quick-fix is applied, the code changes to:\n\n\n def func(s, cache=None):\n if cache is None:\n cache = {}\n cache[s] = None\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyDefaultArgument", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyTestUnpassedFixtureInspection", + "shortDescription": { + "text": "Fixture is not requested by test functions" + }, + "fullDescription": { + "text": "Reports if a fixture is used without being passed to test function parameters or to '@pytest.mark.usefixtures' decorator", + "markdown": "Reports if a fixture is used without being passed to test function parameters or to `@pytest.mark.usefixtures` decorator" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyTestUnpassedFixture", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyShadowingBuiltinsInspection", + "shortDescription": { + "text": "Shadowing built-in names" + }, + "fullDescription": { + "text": "Reports shadowing built-in names, such as 'len' or 'list'. Example: 'def len(a, b, c):\n d = a + b + c\n return d' In this code fragment, the 'len' built-in name is used. The IDE offers to apply the Rename refactoring as a fix.", + "markdown": "Reports shadowing built-in names, such as `len` or `list`.\n\n**Example:**\n\n\n def len(a, b, c):\n d = a + b + c\n return d\n\nIn this code fragment, the `len` built-in name is used. The IDE offers to\napply the Rename refactoring as a fix." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyShadowingBuiltins", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PySimplifyBooleanCheckInspection", + "shortDescription": { + "text": "Redundant boolean variable check" + }, + "fullDescription": { + "text": "Reports equality comparison with a boolean literal. Example: 'def func(s):\n if s.isdigit() == True:\n return int(s)' With the quick-fix applied, the code fragment will be simplified to: 'def func(s):\n if s.isdigit():\n return int(s)'", + "markdown": "Reports equality comparison with a boolean literal.\n\n**Example:**\n\n\n def func(s):\n if s.isdigit() == True:\n return int(s)\n\nWith the quick-fix applied, the code fragment will be simplified to:\n\n\n def func(s):\n if s.isdigit():\n return int(s)\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PySimplifyBooleanCheck", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyMethodOverridingInspection", + "shortDescription": { + "text": "Method signature does not match signature of overridden method" + }, + "fullDescription": { + "text": "Reports inconsistencies in overriding method signatures. Example: 'class Book:\n def add_title(self):\n pass\n\n\nclass Novel(Book):\n def add_title(self, text):\n pass' Parameters of the 'add_title' method in the 'Novel' class do not match the method signature specified in the 'Book' class. As a fix, the IDE offers to apply the Change Signature refactoring.", + "markdown": "Reports inconsistencies in overriding method signatures.\n\n**Example:**\n\n\n class Book:\n def add_title(self):\n pass\n\n\n class Novel(Book):\n def add_title(self, text):\n pass\n\nParameters of the `add_title` method in the `Novel` class do not match the method\nsignature specified in the `Book` class. As a fix, the IDE offers to apply the Change Signature\nrefactoring." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyMethodOverriding", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PoetryPackageVersionsInspection", + "shortDescription": { + "text": "Poetry package versions" + }, + "fullDescription": { + "text": "Reports outdated versions of packages in '[tool.poetry.dependencies]' and '[tool.poetry.dev-dependencies]' sections of 'pyproject.toml'.", + "markdown": "Reports outdated versions of packages in `[tool.poetry.dependencies]` and `[tool.poetry.dev-dependencies]`\nsections of `pyproject.toml`." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PoetryPackageVersions", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyTestParametrizedInspection", + "shortDescription": { + "text": "Incorrect arguments in @pytest.mark.parametrize" + }, + "fullDescription": { + "text": "Reports functions that are decorated with @pytest.mark.parametrize but do not have arguments to accept parameters of the decorator.", + "markdown": "Reports functions that are decorated with [@pytest.mark.parametrize](https://docs.pytest.org/en/stable/parametrize.html) but do not have arguments to accept\nparameters of the decorator." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyTestParametrized", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyDecoratorInspection", + "shortDescription": { + "text": "Class-specific decorator is used outside the class" + }, + "fullDescription": { + "text": "Reports usages of '@classmethod' or '@staticmethod' decorators in methods outside a class. Example: 'class State(object):\n\n @classmethod\n def my_state(cls, name):\n cls.name = name\n\n\n@classmethod\ndef change_state(self):\n pass' The 'change_state' method should not use the '@classmethod' decorator or it should be moved to the 'State' class declaration. If you apply the 'Remove decorator' action, the code changes to: 'class State(object):\n\n @classmethod\n def my_state(cls, name):\n cls.name = name\n\n\ndef change_state(self):\n pass'", + "markdown": "Reports usages of `@classmethod` or `@staticmethod` decorators\nin methods outside a class.\n\n**Example:**\n\n\n class State(object):\n\n @classmethod\n def my_state(cls, name):\n cls.name = name\n\n\n @classmethod\n def change_state(self):\n pass\n\nThe `change_state` method should not use the `@classmethod` decorator or it should be\nmoved to the `State` class declaration.\n\nIf you apply the `Remove decorator` action, the code changes to:\n\n\n class State(object):\n\n @classmethod\n def my_state(cls, name):\n cls.name = name\n\n\n def change_state(self):\n pass\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyDecorator", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyAsyncCallInspection", + "shortDescription": { + "text": "Missing `await` syntax in coroutine calls" + }, + "fullDescription": { + "text": "Reports coroutines that were called without using the 'await' syntax. Example: 'async def bar():\n pass\n\n\nasync def foo():\n bar()' After the quick-fix is applied, the code changes to: 'async def bar():\n pass\n\n\nasync def foo():\n await bar()'", + "markdown": "Reports coroutines that were called\nwithout using the `await` syntax.\n\n**Example:**\n\n\n async def bar():\n pass\n\n\n async def foo():\n bar()\n\nAfter the quick-fix is applied, the code changes to:\n\n\n async def bar():\n pass\n\n\n async def foo():\n await bar()\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyAsyncCall", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CommandLineInspection", + "shortDescription": { + "text": "Incorrect CLI syntax" + }, + "fullDescription": { + "text": "Reports the problems if the arguments of the command you type in the console are not in the proper order. The inspection also verifies that option names and arguments are correct. Do not disable the inspection if you are going to use command-line interfaces like manage.py in Django.", + "markdown": "Reports the problems if the arguments of the command you type in the console are not in the proper order. The inspection also verifies\nthat option names and arguments are correct.\n\nDo not disable the inspection if you are going to use command-line interfaces like [manage.py in Django](https://www.jetbrains.com/help/pycharm/running-manage-py.html)." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "CommandLineInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyComparisonWithNoneInspection", + "shortDescription": { + "text": "Using equality operators to compare with None" + }, + "fullDescription": { + "text": "Reports comparisons with 'None'. That type of comparisons should always be done with 'is' or 'is not', never the equality operators. Example: 'a = 2\n\n\nif a == None:\n print(\"Success\")' Once the quick-fix is applied, the code changes to: 'a = 2\n\n\nif a is None:\n print(\"Success\")'", + "markdown": "Reports comparisons with `None`. That type of comparisons\nshould always be done with `is` or `is not`, never\nthe equality operators.\n\n**Example:**\n\n\n a = 2\n\n\n if a == None:\n print(\"Success\")\n\nOnce the quick-fix is applied, the code changes to:\n\n\n a = 2\n\n\n if a is None:\n print(\"Success\")\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyComparisonWithNone", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyCallingNonCallableInspection", + "shortDescription": { + "text": "Attempt to call a non-callable object" + }, + "fullDescription": { + "text": "Reports a problem when you are trying to call objects that are not callable, like, for example, properties: Example: 'class Record:\n @property\n def as_json(self):\n\njson = Record().as_json()'", + "markdown": "Reports a problem when you are trying\nto call objects that are not callable, like, for example, properties:\n\n**Example:**\n\n\n class Record:\n @property\n def as_json(self):\n\n json = Record().as_json()\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyCallingNonCallable", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyUnreachableCodeInspection", + "shortDescription": { + "text": "Unreachable code" + }, + "fullDescription": { + "text": "Reports code fragments that cannot be normally reached. Example: 'if True:\n print('Yes')\nelse:\n print('No')' As a fix, you might want to check and modify the algorithm to ensure it implements the expected logic.", + "markdown": "Reports code fragments that cannot be normally reached.\n\n**Example:**\n\n\n if True:\n print('Yes')\n else:\n print('No')\n\nAs a fix, you might want to check and modify the algorithm to ensure it implements\nthe expected logic." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyUnreachableCode", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyMethodParametersInspection", + "shortDescription": { + "text": "Improper first parameter" + }, + "fullDescription": { + "text": "Reports methods that lack the first parameter that is usually named 'self'. Example: 'class Movie:\n\n def show():\n pass' When the quick-fix is applied, the code changes to: 'class Movie:\n\n def show(self):\n pass' The inspection also reports naming issues in class methods. Example: 'class Movie:\n @classmethod\n def show(abc):\n pass' Since the first parameter of a class method should be 'cls', the IDE provides a quick-fix to rename it.", + "markdown": "Reports methods that lack the first parameter that is usually\nnamed `self`.\n\n**Example:**\n\n\n class Movie:\n\n def show():\n pass\n\nWhen the quick-fix is applied, the code changes to:\n\n\n class Movie:\n\n def show(self):\n pass\n\nThe inspection also reports naming issues in class methods.\n\n**Example:**\n\n\n class Movie:\n @classmethod\n def show(abc):\n pass\n\nSince the first parameter of a class method should be `cls`, the IDE provides a quick-fix\nto rename it." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyMethodParameters", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyChainedComparisonsInspection", + "shortDescription": { + "text": "Too complex chained comparisons" + }, + "fullDescription": { + "text": "Reports chained comparisons that can be simplified. Example: 'def do_comparison(x):\n xmin = 10\n xmax = 100\n if x >= xmin and x <= xmax:\n pass' The IDE offers to simplify 'if x >= xmin and x <= xmax'. When the quick-fix is applied, the code changes to: 'def do_comparison(x):\n xmin = 10\n xmax = 100\n if xmin <= x <= xmax:\n pass'", + "markdown": "Reports chained comparisons that can be simplified.\n\n**Example:**\n\n\n def do_comparison(x):\n xmin = 10\n xmax = 100\n if x >= xmin and x <= xmax:\n pass\n\nThe IDE offers to simplify `if x >= xmin and x <= xmax`.\nWhen the quick-fix is applied, the code changes to:\n\n\n def do_comparison(x):\n xmin = 10\n xmax = 100\n if xmin <= x <= xmax:\n pass\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyChainedComparisons", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyDocstringTypesInspection", + "shortDescription": { + "text": "Type in docstring does not match inferred type" + }, + "fullDescription": { + "text": "Reports types in docstring that do not match dynamically inferred types.", + "markdown": "Reports types in docstring that do not match dynamically inferred types." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyDocstringTypes", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyCompatibilityInspection", + "shortDescription": { + "text": "Code is incompatible with specific Python versions" + }, + "fullDescription": { + "text": "Reports incompatibility with the specified versions of Python. Enable this inspection if you need your code to be compatible with a range of Python versions, for example, if you are building a library. To define the range of the inspected Python versions, select the corresponding checkboxes in the Options section. For more information about the Python versions supported by the IDE, see the web help.", + "markdown": "Reports incompatibility with the specified versions of Python.\nEnable this inspection if you need your code to be compatible with a range of Python versions, for example,\nif you are building a library.\n\nTo define the range of the inspected Python versions, select the corresponding checkboxes in the **Options**\nsection.\n\nFor more information about the Python versions supported by the IDE, see the\n[web help](https://www.jetbrains.com/help/pycharm/python.html#support)." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "PyCompatibility", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyGlobalUndefinedInspection", + "shortDescription": { + "text": "Global variable is not defined at the module level" + }, + "fullDescription": { + "text": "Reports problems when a variable defined through the 'global' statement is not defined in the module scope. Example: 'def foo():\n global bar\n print(bar)\n\nfoo()' As a fix, you can move the global variable declaration: 'global bar\n\n\ndef foo():\n print(bar)'", + "markdown": "Reports problems when a variable defined through the `global`\nstatement is not defined in the module scope.\n\n**Example:**\n\n\n def foo():\n global bar\n print(bar)\n\n foo()\n\nAs a fix, you can move the global variable declaration:\n\n\n global bar\n\n\n def foo():\n print(bar)\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyGlobalUndefined", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyMethodFirstArgAssignmentInspection", + "shortDescription": { + "text": "First argument of the method is reassigned" + }, + "fullDescription": { + "text": "Reports cases when the first parameter, such as 'self' or 'cls', is reassigned in a method. Because in most cases, there are no objectives in such reassignment, the IDE indicates an error. Example: 'class Account:\n def calc(self, balance):\n if balance == 0:\n self = balance\n return self' As a fix, you might want to check and modify the algorithm to ensure that reassignment is needed. If everything is correct, you can invoke intention actions for this code and opt to ignore the warning.", + "markdown": "Reports cases when the first parameter,\nsuch as `self` or `cls`, is reassigned in a method.\nBecause in most cases, there are no objectives in such reassignment, the\nIDE indicates an error.\n\n**Example:**\n\n\n class Account:\n def calc(self, balance):\n if balance == 0:\n self = balance\n return self\n\nAs a fix, you might want to check and modify the algorithm to ensure that reassignment is needed. If everything is correct,\nyou can invoke intention actions for this code and opt to ignore the warning." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyMethodFirstArgAssignment", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyNewStyleGenericSyntaxInspection", + "shortDescription": { + "text": "Invalid usage of new-style type parameters and type aliases" + }, + "fullDescription": { + "text": "Reports invalid usage of PEP 695 type parameter syntax Finds the following problems in function and class definitions and new-style type alias statements: Extending typing.Generic in new-style generic classes Extending parameterized typing.Protocol in new-style generic classes Using generic upper bounds and constraints with type parameters for ParamSpec and TypeVarTuple Mixing traditional and new-style type variables Using traditional type variables in new-style type aliases Examples: 'from typing import Generic\n\n class Example[T](Generic[T]): ... # Classes with type parameter list should not extend 'Generic'' 'class Example[T: (list[S], str)]: ... # Generic types are not allowed inside constraints and bounds of type parameters' 'from typing import TypeVar\n\n K = TypeVar(\"K\")\n\n class ClassC[V]:\n def method2[M](self, a: M, b: K) -> M | K: ... # Mixing traditional and new-style TypeVars is not allowed'", + "markdown": "Reports invalid usage of [PEP 695](https://www.python.org/dev/peps/pep-0695/) type parameter syntax\n\n\nFinds the following problems in function and class definitions and new-style type alias statements:\n\n* Extending typing.Generic in new-style generic classes\n* Extending parameterized typing.Protocol in new-style generic classes\n* Using generic upper bounds and constraints with type parameters for ParamSpec and TypeVarTuple\n* Mixing traditional and new-style type variables\n* Using traditional type variables in new-style type aliases\n\n\nExamples:\n\n\n from typing import Generic\n\n class Example[T](Generic[T]): ... # Classes with type parameter list should not extend 'Generic'\n\n\n class Example[T: (list[S], str)]: ... # Generic types are not allowed inside constraints and bounds of type parameters\n\n\n from typing import TypeVar\n\n K = TypeVar(\"K\")\n\n class ClassC[V]:\n def method2[M](self, a: M, b: K) -> M | K: ... # Mixing traditional and new-style TypeVars is not allowed\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyNewStyleGenericSyntax", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyProtocolInspection", + "shortDescription": { + "text": "Invalid protocol definitions and usages" + }, + "fullDescription": { + "text": "Reports invalid definitions and usages of protocols introduced in PEP-544. Example: 'from typing import Protocol\n\n\nclass MyProtocol(Protocol):\n def method(self, p: int) -> str:\n pass\n\n\nclass MyClass(MyProtocol):\n def method(self, p: str) -> int: # Type of 'method' is not compatible with 'MyProtocol'\n pass\n\n\nclass MyAnotherProtocol(MyClass, Protocol): # All bases of a protocol must be protocols\n pass'", + "markdown": "Reports invalid definitions and usages of protocols introduced in\n[PEP-544](https://www.python.org/dev/peps/pep-0544/).\n\n**Example:**\n\n\n from typing import Protocol\n\n\n class MyProtocol(Protocol):\n def method(self, p: int) -> str:\n pass\n\n\n class MyClass(MyProtocol):\n def method(self, p: str) -> int: # Type of 'method' is not compatible with 'MyProtocol'\n pass\n\n\n class MyAnotherProtocol(MyClass, Protocol): # All bases of a protocol must be protocols\n pass\n\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyProtocol", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyTypeHintsInspection", + "shortDescription": { + "text": "Invalid type hints definitions and usages" + }, + "fullDescription": { + "text": "Reports invalid usages of type hints. Example: 'from typing import TypeVar\n\nT0 = TypeVar('T1') # Argument of 'TypeVar' must be 'T0'\n\n\ndef b(p: int) -> int: # Type specified both in a comment and annotation\n # type: (int) -> int\n pass\n\n\ndef c(p1, p2): # Type signature has too many arguments\n # type: (int) -> int\n pass' Available quick-fixes offer various actions. You can rename, remove, or move problematic elements. You can also manually modify type declarations to ensure no warning is shown.", + "markdown": "Reports invalid usages of type hints.\n\n**Example:**\n\n\n from typing import TypeVar\n\n T0 = TypeVar('T1') # Argument of 'TypeVar' must be 'T0'\n\n\n def b(p: int) -> int: # Type specified both in a comment and annotation\n # type: (int) -> int\n pass\n\n\n def c(p1, p2): # Type signature has too many arguments\n # type: (int) -> int\n pass\n\nAvailable quick-fixes offer various actions. You can rename, remove, or move problematic elements. You can also manually modify type declarations to ensure no warning is shown." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyTypeHints", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyMethodMayBeStaticInspection", + "shortDescription": { + "text": "Method is not declared static" + }, + "fullDescription": { + "text": "Reports any methods that do not require a class instance creation and can be made static. Example: 'class MyClass(object):\n def my_method(self, x):\n print(x)' If a Make function from method quick-fix is applied, the code changes to: 'def my_method(x):\n print(x)\n\n\nclass MyClass(object):\n pass' If you select the Make method static quick-fix, the '@staticmethod' decorator is added: 'class MyClass(object):\n @staticmethod\n def my_method(x):\n print(x)'", + "markdown": "Reports any methods that do not require a class instance creation and can be\nmade static.\n\n**Example:**\n\n\n class MyClass(object):\n def my_method(self, x):\n print(x)\n\nIf a **Make function from method** quick-fix is applied, the code changes to:\n\n\n def my_method(x):\n print(x)\n\n\n class MyClass(object):\n pass\n\nIf you select the **Make method static** quick-fix, the `@staticmethod` decorator is added:\n\n\n class MyClass(object):\n @staticmethod\n def my_method(x):\n print(x)\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyMethodMayBeStatic", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyTupleAssignmentBalanceInspection", + "shortDescription": { + "text": "Tuple assignment balance is incorrect" + }, + "fullDescription": { + "text": "Reports cases when the number of expressions on the right-hand side and targets on the left-hand side are not the same. Example: 't = ('red', 'blue', 'green', 'white')\n(c1, c2, c3) = t' As a quick-fix, you can modify the highlighted code fragment to restore the tuple balance.", + "markdown": "Reports cases when the number of expressions on the right-hand side\nand targets on the left-hand side are not the same.\n\n**Example:**\n\n\n t = ('red', 'blue', 'green', 'white')\n (c1, c2, c3) = t\n\nAs a quick-fix, you can modify the highlighted code fragment to restore the tuple\nbalance." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyTupleAssignmentBalance", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyClassHasNoInitInspection", + "shortDescription": { + "text": "Class has no `__init__` method" + }, + "fullDescription": { + "text": "Reports cases in Python 2 when a class has no '__init__' method, neither its parent classes. Example: 'class Book():\n pass' The quick-fix adds the '__init__' method: 'class Book():\n def __init__(self):\n pass'", + "markdown": "Reports cases in Python 2 when a class has no `__init__` method, neither its parent\nclasses.\n\n**Example:**\n\n\n class Book():\n pass\n\nThe quick-fix adds the `__init__` method:\n\n\n class Book():\n def __init__(self):\n pass\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyClassHasNoInit", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyArgumentEqualDefaultInspection", + "shortDescription": { + "text": "The function argument is equal to the default parameter value" + }, + "fullDescription": { + "text": "Reports a problem when an argument passed to the function is equal to the default parameter value. This inspection is disabled by default to avoid performance degradation. Example: 'def my_function(a: int = 2):\n print(a)\n\n\nmy_function(2)'", + "markdown": "Reports a problem when an argument\npassed to the function is equal to the default parameter value.\n\nThis inspection is disabled by default to avoid performance degradation.\n\n**Example:**\n\n\n def my_function(a: int = 2):\n print(a)\n\n\n my_function(2)\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "PyArgumentEqualDefault", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyClassVarInspection", + "shortDescription": { + "text": "Invalid usage of ClassVar variables" + }, + "fullDescription": { + "text": "Reports invalid usages of ClassVar annotations. Example: 'from typing import ClassVar\n\n\nclass Cat:\n color: ClassVar[str] = \"white\"\n weight: int\n\n def __init__(self, weight: int):\n self.weight = weight\n\n\nCat.color = \"black\" # OK\nmy_cat = Cat(5)\nmy_cat.color = \"gray\" # Error, setting class variable on instance'", + "markdown": "Reports invalid usages of [ClassVar](https://docs.python.org/3/library/typing.html#typing.ClassVar) annotations.\n\n**Example:**\n\n\n from typing import ClassVar\n\n\n class Cat:\n color: ClassVar[str] = \"white\"\n weight: int\n\n def __init__(self, weight: int):\n self.weight = weight\n\n\n Cat.color = \"black\" # OK\n my_cat = Cat(5)\n my_cat.color = \"gray\" # Error, setting class variable on instance\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyClassVar", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyDictCreationInspection", + "shortDescription": { + "text": "Dictionary creation can be rewritten by dictionary literal" + }, + "fullDescription": { + "text": "Reports situations when you can rewrite dictionary creation by using a dictionary literal. This approach brings performance improvements. Example: 'dic = {}\ndic['var'] = 1' When the quick-fix is applied, the code changes to: 'dic = {'var': 1}'", + "markdown": "Reports situations when you can rewrite dictionary creation\nby using a dictionary literal.\n\nThis approach brings performance improvements.\n\n**Example:**\n\n\n dic = {}\n dic['var'] = 1\n\nWhen the quick-fix is applied, the code changes to:\n\n\n dic = {'var': 1}\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyDictCreation", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyStringFormatInspection", + "shortDescription": { + "text": "Errors in string formatting operations" + }, + "fullDescription": { + "text": "Reports errors in string formatting operations. Example 1: '\"Hello {1}\".format(\"people\")' Example 2: 'def bar():\n return 1\n\n\n\"%s %s\" % bar()' As a fix, you need to rewrite string formatting fragments to adhere to the formatting syntax.", + "markdown": "Reports errors in string formatting operations.\n\n**Example 1:**\n\n\n \"Hello {1}\".format(\"people\")\n\n**Example 2:**\n\n\n def bar():\n return 1\n\n\n \"%s %s\" % bar()\n\nAs a fix, you need to rewrite string formatting fragments to\nadhere to the [formatting syntax](https://docs.python.org/3/library/string.html#format-string-syntax)." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyStringFormat", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyExceptionInheritInspection", + "shortDescription": { + "text": "Exceptions do not inherit from standard 'Exception' class" + }, + "fullDescription": { + "text": "Reports cases when a custom exception class is raised but does not inherit from the builtin Exception class. Example: 'class A:\n pass\n\n\ndef me_exception():\n raise A()' The proposed quick-fix changes the code to: 'class A(Exception):\n pass\n\n\ndef me_exception():\n raise A()'", + "markdown": "Reports cases when a custom exception class is\nraised but does not inherit from the\n[builtin Exception class](https://docs.python.org/3/library/exceptions.html).\n\n**Example:**\n\n\n class A:\n pass\n\n\n def me_exception():\n raise A()\n\nThe proposed quick-fix changes the code to:\n\n\n class A(Exception):\n pass\n\n\n def me_exception():\n raise A()\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyExceptionInherit", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyAssignmentToLoopOrWithParameterInspection", + "shortDescription": { + "text": "Assignments to 'for' loop or 'with' statement parameter" + }, + "fullDescription": { + "text": "Reports the cases when you rewrite a loop variable with an inner loop. Example: 'for i in range(5):\n for i in range(20, 25):\n print(\"Inner\", i)\n print(\"Outer\", i)' It also warns you if a variable declared in the 'with' statement is redeclared inside the statement body: 'with open(\"file\") as f:\n f.read()\n with open(\"file\") as f:'", + "markdown": "Reports the cases when you rewrite a loop variable with an inner loop.\n\n**Example:**\n\n\n for i in range(5):\n for i in range(20, 25):\n print(\"Inner\", i)\n print(\"Outer\", i)\n \nIt also warns you if a variable declared in the `with` statement is redeclared inside the statement body:\n\n\n with open(\"file\") as f:\n f.read()\n with open(\"file\") as f:\n \n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyAssignmentToLoopOrWithParameter", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyFromFutureImportInspection", + "shortDescription": { + "text": "Improper position of from __future__ import" + }, + "fullDescription": { + "text": "Reports 'from __future__ import' statements that are used not at the beginning of a file. Example: 'a = 1\nfrom __future__ import print_function\nprint()' When the quick-fix is applied, the code changes to: 'from __future__ import print_function\n\na = 1\nprint()'", + "markdown": "Reports `from __future__ import`\nstatements that are used not at\nthe beginning of a file.\n\n**Example:**\n\n\n a = 1\n from __future__ import print_function\n print()\n\nWhen the quick-fix is applied, the code changes to:\n\n\n from __future__ import print_function\n\n a = 1\n print()\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyFromFutureImport", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyUnresolvedReferencesInspection", + "shortDescription": { + "text": "Unresolved references" + }, + "fullDescription": { + "text": "Reports references in your code that cannot be resolved. In a dynamically typed language, this is possible in a limited number of cases. If a reference type is unknown, then its attributes are not highlighted as unresolved even if you know that they should be: 'def print_string(s):\n print(s.abc())' In this code fragment 's' is always a string and 'abc' should be highlighted as unresolved. However, 's' type is inferred as 'Any' and no warning is reported. The IDE provides quick-fix actions to add missing references on-the-fly.", + "markdown": "Reports references in your code that cannot be resolved.\n\nIn a dynamically typed language, this is possible in a limited number of cases.\n\nIf a reference type is unknown, then its attributes are not highlighted as unresolved even if you know that they should be:\n\n\n def print_string(s):\n print(s.abc())\n\nIn this code fragment `s` is always a string and `abc` should be highlighted as unresolved. However, `s`\ntype is inferred as `Any` and no warning is reported.\n\nThe IDE provides quick-fix actions to add missing references on-the-fly." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "PyUnresolvedReferences", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PySuperArgumentsInspection", + "shortDescription": { + "text": "Wrong arguments to call super" + }, + "fullDescription": { + "text": "Reports cases when any call to 'super(A, B)' does not meet the following requirements: 'B' is an instance of 'A' 'B' a subclass of 'A' Example: 'class Figure:\n def color(self):\n pass\n\n\nclass Rectangle(Figure):\n def color(self):\n pass\n\n\nclass Square(Figure):\n def color(self):\n return super(Rectangle, self).color() # Square is not an instance or subclass of Rectangle' As a fix, you can make the 'Square' an instance of the 'Rectangle' class.", + "markdown": "Reports cases when any call to `super(A, B)` does not meet the\nfollowing requirements:\n\n* `B` is an instance of `A`\n* `B` a subclass of `A`\n\n**Example:**\n\n\n class Figure:\n def color(self):\n pass\n\n\n class Rectangle(Figure):\n def color(self):\n pass\n\n\n class Square(Figure):\n def color(self):\n return super(Rectangle, self).color() # Square is not an instance or subclass of Rectangle\n\nAs a fix, you can make the `Square` an instance of the `Rectangle` class." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PySuperArguments", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyPackageRequirementsInspection", + "shortDescription": { + "text": "Unsatisfied package requirements" + }, + "fullDescription": { + "text": "Reports packages mentioned in requirements files (for example, 'requirements.txt' or 'Pipfile') but not installed, or imported but not mentioned in requirements files. The IDE shows a quick-fix banner so that you can install the missing packages in one click.", + "markdown": "Reports packages mentioned in requirements files (for example, `requirements.txt` or `Pipfile`) but not installed,\nor imported but not mentioned in requirements files.\n\n\nThe IDE shows a quick-fix banner so that you can install the missing packages in one click." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyPackageRequirements", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyNonAsciiCharInspection", + "shortDescription": { + "text": "File contains non-ASCII character" + }, + "fullDescription": { + "text": "Reports cases in Python 2 when a file contains non-ASCII characters and does not have an encoding declaration at the top. Example: 'class A(object):\n# №5\n def __init__(self):\n pass' In this example, the IDE reports a non-ASCII symbol in a comment and a lack of encoding declaration. Apply the proposed quick-fix to add a missing encoding declaration: '# coding=utf-8\nclass A(object)\n# №5\n def __init__(self):\n pass'", + "markdown": "Reports cases in Python 2 when a file contains non-ASCII characters and does not\nhave an encoding declaration at the top.\n\n**Example:**\n\n\n class A(object):\n # №5\n def __init__(self):\n pass\n\nIn this example, the IDE reports a non-ASCII symbol in a comment and a lack of encoding\ndeclaration. Apply the proposed quick-fix to add a missing encoding declaration:\n\n\n # coding=utf-8\n class A(object)\n # №5\n def __init__(self):\n pass\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyNonAsciiChar", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyRedundantParenthesesInspection", + "shortDescription": { + "text": "Redundant parentheses" + }, + "fullDescription": { + "text": "Reports about redundant parentheses in expressions. The IDE provides the quick-fix action to remove the redundant parentheses.", + "markdown": "Reports about redundant parentheses in expressions.\n\nThe IDE provides the quick-fix action to remove the redundant parentheses." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyRedundantParentheses", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyTrailingSemicolonInspection", + "shortDescription": { + "text": "Prohibited trailing semicolon in a statement" + }, + "fullDescription": { + "text": "Reports trailing semicolons in statements. Example: 'def my_func(a):\n c = a ** 2;\n return c' IDE provides a quick-fix that removes a trailing semicolon. When you apply it, the code changes to: 'def my_func(a):\n c = a ** 2\n return c'", + "markdown": "Reports trailing semicolons in statements.\n\n**Example:**\n\n\n def my_func(a):\n c = a ** 2;\n return c\n\nIDE provides a quick-fix that removes a trailing semicolon. When you\napply it, the code changes to:\n\n\n def my_func(a):\n c = a ** 2\n return c\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyTrailingSemicolon", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyOldStyleClassesInspection", + "shortDescription": { + "text": "Old-style class contains new-style class features" + }, + "fullDescription": { + "text": "Reports occurrences of new-style class features in old-style classes. The inspection highlights '__slots__', '__getattribute__', and 'super()' inside old-style classes.", + "markdown": "Reports occurrences of\n[new-style class features](https://www.python.org/doc/newstyle/)\nin old-style classes. The inspection highlights\n`__slots__`, `__getattribute__`, and `super()`\ninside old-style classes." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyOldStyleClasses", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyAbstractClassInspection", + "shortDescription": { + "text": "Class must implement all abstract methods" + }, + "fullDescription": { + "text": "Reports cases when not all abstract properties or methods are defined in a subclass. Example: 'from abc import abstractmethod, ABC\n\n\nclass Figure(ABC):\n\n @abstractmethod\n def do_figure(self):\n pass\n\n\nclass Triangle(Figure):\n def do_triangle(self):\n pass' When the quick-fix is applied, the IDE implements an abstract method for the 'Triangle' class: 'from abc import abstractmethod, ABC\n\n\nclass Figure(ABC):\n\n @abstractmethod\n def do_figure(self):\n pass\n\n\nclass Triangle(Figure):\n def do_figure(self):\n pass\n\n def do_triangle(self):\n pass'", + "markdown": "Reports cases when not all abstract properties or methods are defined in\na subclass.\n\n**Example:**\n\n\n from abc import abstractmethod, ABC\n\n\n class Figure(ABC):\n\n @abstractmethod\n def do_figure(self):\n pass\n\n\n class Triangle(Figure):\n def do_triangle(self):\n pass\n\nWhen the quick-fix is applied, the IDE implements an abstract method for the `Triangle` class:\n\n\n from abc import abstractmethod, ABC\n\n\n class Figure(ABC):\n\n @abstractmethod\n def do_figure(self):\n pass\n\n\n class Triangle(Figure):\n def do_figure(self):\n pass\n\n def do_triangle(self):\n pass\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyAbstractClass", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyArgumentListInspection", + "shortDescription": { + "text": "Incorrect call arguments" + }, + "fullDescription": { + "text": "Reports discrepancies between declared parameters and actual arguments, as well as incorrect arguments, for example, duplicate named arguments, and incorrect argument order. Example: 'class Foo:\n def __call__(self, p1: int, *, p2: str = \"%\"):\n return p2 * p1\n\n\nbar = Foo()\nbar.__call__() # unfilled parameter\nbar(5, \"#\") # unexpected argument' The correct code fragment looks at follows: 'class Foo:\n def __call__(self, p1: int, *, p2: str = \"%\"):\n return p2 * p1\n\n\nbar = Foo()\nbar.__call__(5)\nbar(5, p2=\"#\")'", + "markdown": "Reports discrepancies between declared parameters and actual arguments, as well as\nincorrect arguments, for example, duplicate named arguments, and incorrect argument order.\n\n**Example:**\n\n\n class Foo:\n def __call__(self, p1: int, *, p2: str = \"%\"):\n return p2 * p1\n\n\n bar = Foo()\n bar.__call__() # unfilled parameter\n bar(5, \"#\") # unexpected argument\n\nThe correct code fragment looks at follows:\n\n\n class Foo:\n def __call__(self, p1: int, *, p2: str = \"%\"):\n return p2 * p1\n\n\n bar = Foo()\n bar.__call__(5)\n bar(5, p2=\"#\")\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyArgumentList", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyInterpreterInspection", + "shortDescription": { + "text": "An invalid interpreter" + }, + "fullDescription": { + "text": "Reports problems if there is no Python interpreter configured for the project or if the interpreter is invalid. Without a properly configured interpreter, you cannot execute your Python scripts and benefit from some Python code insight features. The IDE provides quick access to the interpreter settings.", + "markdown": "Reports problems if there is no Python interpreter configured for the project or if the interpreter is invalid. Without a properly\nconfigured interpreter, you cannot execute your Python scripts and benefit from some Python code insight features.\n\nThe IDE provides quick access to the interpreter settings." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "PyInterpreter", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyBroadExceptionInspection", + "shortDescription": { + "text": "Unclear exception clauses" + }, + "fullDescription": { + "text": "Reports exception clauses that do not provide specific information about the problem. Example: Clauses that do not specify an exception class Clauses that are specified as 'Exception'", + "markdown": "Reports exception clauses that do not provide specific information\nabout the problem.\n\n**Example:**\n\n* Clauses that do not specify an exception class\n* Clauses that are specified as `Exception`" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyBroadException", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyTypeCheckerInspection", + "shortDescription": { + "text": "Incorrect type" + }, + "fullDescription": { + "text": "Reports type errors in function call expressions, targets, and return values. In a dynamically typed language, this is possible in a limited number of cases. Types of function parameters can be specified in docstrings or in Python 3 function annotations. Example: 'def foo() -> int:\n return \"abc\" # Expected int, got str\n\n\na: str\na = foo() # Expected str, got int' With the quick-fix, you can modify the problematic types: 'def foo() -> str:\n return \"abc\"\n\n\na: str\na = foo()'", + "markdown": "Reports type errors in function call expressions, targets, and return values. In a dynamically typed language, this is possible in a limited number of cases.\n\nTypes of function parameters can be specified in\ndocstrings or in Python 3 function annotations.\n\n**Example:**\n\n\n def foo() -> int:\n return \"abc\" # Expected int, got str\n\n\n a: str\n a = foo() # Expected str, got int\n\nWith the quick-fix, you can modify the problematic types:\n\n\n def foo() -> str:\n return \"abc\"\n\n\n a: str\n a = foo()\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyTypeChecker", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyPropertyAccessInspection", + "shortDescription": { + "text": "Inappropriate access to properties" + }, + "fullDescription": { + "text": "Reports cases when properties are accessed inappropriately: Read-only properties are set Write-only properties are read Non-deletable properties are deleted Example: 'class MyClass:\n @property\n def read_only(self): return None\n\n def __write_only_setter(self, value): pass\n\n write_only = property(None, __write_only_setter)\n\n\na = MyClass()\na.read_only = 10 # property cannot be set\ndel a.read_only # property cannot be deleted\nprint(a.write_only) # property cannot be read'", + "markdown": "Reports cases when properties are accessed inappropriately:\n\n* Read-only properties are set\n* Write-only properties are read\n* Non-deletable properties are deleted\n\n**Example:**\n\n\n class MyClass:\n @property\n def read_only(self): return None\n\n def __write_only_setter(self, value): pass\n\n write_only = property(None, __write_only_setter)\n\n\n a = MyClass()\n a.read_only = 10 # property cannot be set\n del a.read_only # property cannot be deleted\n print(a.write_only) # property cannot be read\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyPropertyAccess", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyStubPackagesAdvertiser", + "shortDescription": { + "text": "Stub packages advertiser" + }, + "fullDescription": { + "text": "Reports availability of stub packages. Stub package is a package that contains type information for the corresponding runtime package. Using stub packages ensures better coding assistance for the corresponding python package.", + "markdown": "Reports availability of stub packages.\n\n\n[Stub package](https://www.python.org/dev/peps/pep-0561/) is a package that contains type information for the corresponding\nruntime package.\n\nUsing stub packages ensures better coding assistance for the corresponding python package." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyStubPackagesAdvertiser", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyByteLiteralInspection", + "shortDescription": { + "text": "A byte literal contains a non-ASCII character" + }, + "fullDescription": { + "text": "Reports characters in byte literals that are outside ASCII range. Example: 's = b'№5''", + "markdown": "Reports characters in byte literals that are outside ASCII range.\n\n**Example:**\n\n\n s = b'№5'\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyByteLiteral", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyRelativeImportInspection", + "shortDescription": { + "text": "Suspicious relative imports" + }, + "fullDescription": { + "text": "Reports usages of relative imports inside plain directories, for example, directories neither containing '__init__.py' nor explicitly marked as namespace packages.", + "markdown": "Reports usages of relative imports inside plain directories, for example, directories neither containing `__init__.py` nor\nexplicitly marked as namespace packages." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyPackages", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyAugmentAssignmentInspection", + "shortDescription": { + "text": "Assignment can be replaced with augmented assignment" + }, + "fullDescription": { + "text": "Reports assignments that can be replaced with augmented assignments. Example: 'a = 23\nb = 3\na = a + b' After the quick-fix is applied, the code changes to: 'a = 23\nb = 3\na += b'", + "markdown": "Reports assignments that can be replaced with augmented assignments.\n\n**Example:**\n\n\n a = 23\n b = 3\n a = a + b\n\nAfter the quick-fix is applied, the code changes to:\n\n\n a = 23\n b = 3\n a += b\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "PyAugmentAssignment", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyDeprecationInspection", + "shortDescription": { + "text": "Deprecated function, class, or module" + }, + "fullDescription": { + "text": "Reports usages of Python functions, or methods that are marked as deprecated and raise the 'DeprecationWarning' or 'PendingDeprecationWarning' warning. Also, this inspection highlights usages of 'abc.abstractstaticmethod', 'abc.abstractproperty', and 'abc.abstractclassmethod' decorators. Example: 'class Foo:\n @property\n def bar(self):\n import warnings\n warnings.warn(\"this is deprecated\", DeprecationWarning, 2)\n return 5\n\n\nfoo = Foo()\nprint(foo.bar)'", + "markdown": "Reports usages of Python functions, or methods that are marked as\ndeprecated and raise the `DeprecationWarning` or `PendingDeprecationWarning` warning.\n\nAlso, this inspection highlights usages of `abc.abstractstaticmethod`, `abc.abstractproperty`, and `abc.abstractclassmethod`\ndecorators.\n\n**Example:**\n\n\n class Foo:\n @property\n def bar(self):\n import warnings\n warnings.warn(\"this is deprecated\", DeprecationWarning, 2)\n return 5\n\n\n foo = Foo()\n print(foo.bar)\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyDeprecation", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyUnnecessaryBackslashInspection", + "shortDescription": { + "text": "Unnecessary backslash" + }, + "fullDescription": { + "text": "Reports backslashes in places where line continuation is implicit inside '()', '[]', and '{}'. Example: 'a = ('first', \\\n 'second', 'third')' When the quick-fix is applied, the redundant backslash is deleted.", + "markdown": "Reports backslashes in places where line continuation is implicit inside `()`,\n`[]`, and `{}`.\n\n**Example:**\n\n\n a = ('first', \\\n 'second', 'third')\n\nWhen the quick-fix is applied, the redundant backslash is deleted." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyUnnecessaryBackslash", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyRedeclarationInspection", + "shortDescription": { + "text": "Redeclared names without usages" + }, + "fullDescription": { + "text": "Reports unconditional redeclarations of names without being used in between. Example: 'def x(): pass\n\n\nx = 2' It applies to function and class declarations, and top-level assignments. When the warning is shown, you can try a recommended action, for example, you might be prompted to rename the variable.", + "markdown": "Reports unconditional redeclarations of names without being used in between.\n\n**Example:**\n\n\n def x(): pass\n\n\n x = 2\n\nIt applies to function and class declarations, and top-level assignments.\n\nWhen the warning is shown, you can try a recommended action, for example, you might be prompted to\nrename the variable." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyRedeclaration", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyShadowingNamesInspection", + "shortDescription": { + "text": "Shadowing names from outer scopes" + }, + "fullDescription": { + "text": "Reports shadowing names defined in outer scopes. Example: 'def outer(p):\n def inner(p):\n pass' As a quick-fix, the IDE offers to remove a parameter or rename it.", + "markdown": "Reports shadowing names defined in outer scopes.\n\n**Example:**\n\n\n def outer(p):\n def inner(p):\n pass\n\nAs a quick-fix, the IDE offers to remove a parameter or rename it." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyShadowingNames", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyFinalInspection", + "shortDescription": { + "text": "Invalid usages of final classes, methods, and variables" + }, + "fullDescription": { + "text": "Reports invalid usages of final classes, methods and variables. Example: 'from typing import final\n\n\n@final\nclass A:\n def a_method(self):\n pass\n\n\nclass B(A):\n def a_method(self):\n pass'", + "markdown": "Reports invalid usages of final classes,\nmethods and variables.\n\n**Example:**\n\n\n from typing import final\n\n\n @final\n class A:\n def a_method(self):\n pass\n\n\n class B(A):\n def a_method(self):\n pass\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyFinal", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyStubPackagesCompatibilityInspection", + "shortDescription": { + "text": "Incompatible stub packages" + }, + "fullDescription": { + "text": "Reports stub packages that do not support the version of the corresponding runtime package. A stub package contains type information for some runtime package.", + "markdown": "Reports stub packages that do not support the version of the corresponding runtime package.\n\nA [stub package](https://www.python.org/dev/peps/pep-0561/) contains type information for some runtime package." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyStubPackagesCompatibility", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyProtectedMemberInspection", + "shortDescription": { + "text": "Accessing a protected member of a class or a module" + }, + "fullDescription": { + "text": "Reports cases when a protected member is accessed outside the class, a descendant of the class where it is defined, or a module. Example: 'class Foo:\n def _protected_method(self):\n pass\n\n\nclass Bar(Foo):\n def public_method(self):\n self._protected_method()\n\n\nfoo = Foo()\nfoo._protected_method() # Access to a protected method'", + "markdown": "Reports cases when a protected member is accessed outside the class,\na descendant of the class where it is defined, or a module.\n\n**Example:**\n\n\n class Foo:\n def _protected_method(self):\n pass\n\n\n class Bar(Foo):\n def public_method(self):\n self._protected_method()\n\n\n foo = Foo()\n foo._protected_method() # Access to a protected method\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyProtectedMember", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyUnboundLocalVariableInspection", + "shortDescription": { + "text": "Unbound local variables" + }, + "fullDescription": { + "text": "Reports local variables referenced before assignment. Example: 'x = 0\nif x > 10:\n b = 3\nprint(b)' The IDE reports a problem for 'print(b)'. A possible fix is: 'x = 0\nif x > 10:\n b = 3\n print(b)'", + "markdown": "Reports local variables referenced before assignment.\n\n**Example:**\n\n\n x = 0\n if x > 10:\n b = 3\n print(b)\n\nThe IDE reports a problem for `print(b)`. A possible fix is:\n\n\n x = 0\n if x > 10:\n b = 3\n print(b)\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyUnboundLocalVariable", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyNamedTupleInspection", + "shortDescription": { + "text": "Invalid definition of 'typing.NamedTuple'" + }, + "fullDescription": { + "text": "Reports invalid definition of a typing.NamedTuple. Example: 'import typing\n\n\nclass FullName(typing.NamedTuple):\n first: str\n last: str = \"\"\n middle: str' As a fix, place the field with the default value after the fields without default values: 'import typing\n\n\nclass FullName(typing.NamedTuple):\n first: str\n middle: str\n last: str = \"\"'", + "markdown": "Reports invalid definition of a\n[typing.NamedTuple](https://docs.python.org/3/library/typing.html#typing.NamedTuple).\n\n**Example:**\n\n\n import typing\n\n\n class FullName(typing.NamedTuple):\n first: str\n last: str = \"\"\n middle: str\n\nAs a fix, place the field with the default value after the fields without default values:\n\n\n import typing\n\n\n class FullName(typing.NamedTuple):\n first: str\n middle: str\n last: str = \"\"\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyNamedTuple", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PySingleQuotedDocstringInspection", + "shortDescription": { + "text": "Single quoted docstring" + }, + "fullDescription": { + "text": "Reports docstrings that do not adhere to the triple double-quoted string format. Example: 'def calc(self, balance=0):\n 'param: balance'\n self.balance = balance' When the quick-fix is applied, the code changes to: 'def calc(self, balance=0):\n \"\"\"param: balance\"\"\"\n self.balance = balance'", + "markdown": "Reports docstrings that do not adhere to the triple double-quoted string format.\n\n**Example:**\n\n\n def calc(self, balance=0):\n 'param: balance'\n self.balance = balance\n\nWhen the quick-fix is applied, the code changes to:\n\n\n def calc(self, balance=0):\n \"\"\"param: balance\"\"\"\n self.balance = balance\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PySingleQuotedDocstring", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyUnusedLocalInspection", + "shortDescription": { + "text": "Unused local symbols" + }, + "fullDescription": { + "text": "Reports local variables, parameters, and functions that are locally defined, but not used name in a function.", + "markdown": "Reports local variables, parameters, and functions that are locally defined, but not used name in a function." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyUnusedLocal", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyReturnFromInitInspection", + "shortDescription": { + "text": "__init__ method that returns a value" + }, + "fullDescription": { + "text": "Reports occurrences of 'return' statements with a return value inside '__init__' methods of classes. Example: 'class Sum:\n def __init__(self, a, b):\n self.a = a\n self.b = b\n self.sum = a + b\n return self.sum' A constructor should not return any value. The '__init__' method should only initialize the values of instance members for news objects. As a quick-fix, the IDE offers to remove the 'return' statement.", + "markdown": "Reports occurrences of `return` statements with a return value inside\n`__init__` methods of classes.\n\n**Example:**\n\n\n class Sum:\n def __init__(self, a, b):\n self.a = a\n self.b = b\n self.sum = a + b\n return self.sum\n\nA constructor should not return any value. The `__init__` method should\nonly initialize the values of instance members for news objects.\n\nAs a quick-fix, the IDE offers to remove the `return` statement." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyReturnFromInit", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyNestedDecoratorsInspection", + "shortDescription": { + "text": "Problematic nesting of decorators" + }, + "fullDescription": { + "text": "Reports problems with nesting decorators. The inspection highlights the cases when 'classmethod' or 'staticmethod' is applied before another decorator. Example: 'def innocent(f):\n return f\n\n\nclass A:\n @innocent # Decorator will not receive a callable it may expect\n @classmethod\n def f2(cls):\n pass\n\n @innocent # Decorator will not receive a callable it may expect\n @staticmethod\n def f1():\n pass' As a quick-fix, the IDE offers to remove the decorator.", + "markdown": "Reports problems with nesting decorators. The inspection highlights the cases when `classmethod` or `staticmethod`\nis applied before another decorator.\n\n**Example:**\n\n\n def innocent(f):\n return f\n\n\n class A:\n @innocent # Decorator will not receive a callable it may expect\n @classmethod\n def f2(cls):\n pass\n\n @innocent # Decorator will not receive a callable it may expect\n @staticmethod\n def f1():\n pass\n\nAs a quick-fix, the IDE offers to remove the decorator." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyNestedDecorators", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyMissingOrEmptyDocstringInspection", + "shortDescription": { + "text": "Missing or empty docstring" + }, + "fullDescription": { + "text": "Reports missing and empty docstrings. Example of a missing docstring 'def demo(a):\n c = a ** 2' Example of an empty docstring 'def demo(a):\n \"\"\"\n \"\"\"\n c = a ** 2' When the quick-fix is applied, the code fragments change to: 'def demo(a):\n \"\"\"\n\n :param a:\n \"\"\"\n c = a ** 2' You need to provide some details about the parameter in the generated template.", + "markdown": "Reports missing and empty docstrings.\n\n**Example of a missing docstring**\n\n\n def demo(a):\n c = a ** 2\n\n**Example of an empty docstring**\n\n\n def demo(a):\n \"\"\"\n \"\"\"\n c = a ** 2\n\nWhen the quick-fix is applied, the code fragments change to:\n\n\n def demo(a):\n \"\"\"\n\n :param a:\n \"\"\"\n c = a ** 2\n\nYou need to provide some details about the parameter in the generated template." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "PyMissingOrEmptyDocstring", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyOverloadsInspection", + "shortDescription": { + "text": "Overloads in regular Python files" + }, + "fullDescription": { + "text": "Reports cases when overloads in regular Python files are placed after the implementation or when their signatures are not compatible with the implementation. Example: 'from typing import overload\n\n\n@overload\ndef foo(p1, p2): # Overload signature is not compatible with the implementation\n pass\n\n\n@overload\ndef foo(p1): # Overload signature is not compatible with the implementation\n pass\n\n\ndef foo(p1, p2, p3):\n print(p1, p2, p3)'", + "markdown": "Reports cases when overloads in regular Python files are placed after the implementation or when their signatures are\nnot compatible with the implementation.\n\n**Example:**\n\n\n from typing import overload\n\n\n @overload\n def foo(p1, p2): # Overload signature is not compatible with the implementation\n pass\n\n\n @overload\n def foo(p1): # Overload signature is not compatible with the implementation\n pass\n\n\n def foo(p1, p2, p3):\n print(p1, p2, p3)\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyOverloads", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyPep8NamingInspection", + "shortDescription": { + "text": "PEP 8 naming convention violation" + }, + "fullDescription": { + "text": "Reports violations of the PEP8 naming conventions. Example: 'class mammalia(object):\n extremities = 4\n\n def feeds(self):\n print(\"milk\")' In this code fragment, IDE offers to rename 'mammalia' to 'Mammalia'. When the quick-fix is applied, the code change to: 'class Mammalia(object):\n extremities = 4\n\n def feeds(self):\n print(\"milk\")'", + "markdown": "Reports violations of the\n[PEP8](https://www.python.org/dev/peps/pep-0008/) naming conventions.\n\n**Example:**\n\n\n class mammalia(object):\n extremities = 4\n\n def feeds(self):\n print(\"milk\")\n\nIn this code fragment, IDE offers to rename `mammalia` to `Mammalia`.\nWhen the quick-fix is applied, the code change to:\n\n\n class Mammalia(object):\n extremities = 4\n\n def feeds(self):\n print(\"milk\")\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyPep8Naming", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyDictDuplicateKeysInspection", + "shortDescription": { + "text": "Dictionary contains duplicate keys" + }, + "fullDescription": { + "text": "Reports using the same value as the dictionary key twice. Example: 'dic = {\"a\": [1, 2], \"a\": [3, 4]}'", + "markdown": "Reports using the same value as the dictionary key twice.\n\n**Example:**\n\n\n dic = {\"a\": [1, 2], \"a\": [3, 4]}\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyDictDuplicateKeys", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyExceptClausesOrderInspection", + "shortDescription": { + "text": "Wrong order of 'except' clauses" + }, + "fullDescription": { + "text": "Reports cases when 'except' clauses are not in the proper order, from the more specific to the more generic, or one exception class is caught twice. If you do not fix the order, some exceptions may not be caught by the most specific handler. Example: 'try:\n call()\nexcept ValueError:\n pass\nexcept UnicodeError:\n pass' The IDE recommends moving the clause up. When the quick-fix is applied, the code changes to: 'try:\n call()\nexcept UnicodeError:\n pass\nexcept ValueError:\n pass'", + "markdown": "Reports cases when `except` clauses are not in the proper order,\nfrom the more specific to the more generic, or one exception class is caught twice.\n\n\nIf you do not fix the order, some exceptions may not be caught by the most specific handler.\n\n**Example:**\n\n\n try:\n call()\n except ValueError:\n pass\n except UnicodeError:\n pass\n\nThe IDE recommends moving the clause up. When the quick-fix is applied, the code changes to:\n\n\n try:\n call()\n except UnicodeError:\n pass\n except ValueError:\n pass\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyExceptClausesOrder", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyDataclassInspection", + "shortDescription": { + "text": "Invalid definition and usage of Data Classes" + }, + "fullDescription": { + "text": "Reports invalid definitions and usages of classes created with 'dataclasses' or 'attr' modules. Example: 'import dataclasses\n\n\n@dataclasses.dataclass\nclass FullName:\n first: str\n middle: str = \"\"\n last: str'", + "markdown": "Reports invalid definitions and usages of classes created with\n`dataclasses` or `attr` modules.\n\n**Example:**\n\n\n import dataclasses\n\n\n @dataclasses.dataclass\n class FullName:\n first: str\n middle: str = \"\"\n last: str\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyDataclass", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyClassicStyleClassInspection", + "shortDescription": { + "text": "Classic style class usage" + }, + "fullDescription": { + "text": "Reports classic style classes usage. This inspection applies only to Python 2. Example: 'class A:\n pass' With quick-fixes provided by the IDE, this code fragment changes to: 'class A(object):\n def __init__(self):\n pass'", + "markdown": "Reports [classic style classes](https://docs.python.org/2/reference/datamodel.html#new-style-and-classic-classes) usage. This inspection applies only to Python 2.\n\n**Example:**\n\n\n class A:\n pass\n\nWith quick-fixes provided by the IDE, this code fragment changes to:\n\n\n class A(object):\n def __init__(self):\n pass\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "PyClassicStyleClass", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyprojectInspection", + "shortDescription": { + "text": "Depencencies in pyproject.toml" + }, + "fullDescription": { + "text": "Reports unsatisfied dependencies, declared [project.dependencies] table in pyproject.toml. Shows a quick-fix to install missing packages.", + "markdown": "Reports unsatisfied dependencies, declared \\[project.dependencies\\] table in pyproject.toml.\n\n\nShows a quick-fix to install missing packages." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyprojectInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyNoneFunctionAssignmentInspection", + "shortDescription": { + "text": "Assigning function calls that don't return anything" + }, + "fullDescription": { + "text": "Reports cases when an assignment is done on a function that does not return anything. This inspection is similar to pylint inspection E1111. Example: 'def just_print():\n print(\"Hello!\")\n\n\naction = just_print()' As a quick-fix, the IDE offers to remove the assignment.", + "markdown": "Reports cases when an assignment is done on a function that does not return anything.\nThis inspection is similar to [pylint inspection E1111](https://docs.pylint.org/en/1.6.0/features.html#id6).\n\n**Example:**\n\n\n def just_print():\n print(\"Hello!\")\n\n\n action = just_print()\n\nAs a quick-fix, the IDE offers to remove the assignment." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyNoneFunctionAssignment", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyPropertyDefinitionInspection", + "shortDescription": { + "text": "Incorrect property definition" + }, + "fullDescription": { + "text": "Reports problems with the arguments of 'property()' and functions annotated with '@property'. 'class C:\n @property\n def abc(self): # Getter should return or yield something\n pass\n\n @abc.setter\n def foo(self, value): # Names of function and decorator don't match\n pass\n\n @abc.setter\n def abc(self, v1, v2): # Setter signature should be (self, value)\n pass\n\n @abc.deleter\n def abc(self, v1): # Delete signature should be (self)\n pass' A quick-fix offers to update parameters.", + "markdown": "Reports problems with the arguments of `property()` and functions\nannotated with `@property`.\n\n\n class C:\n @property\n def abc(self): # Getter should return or yield something\n pass\n\n @abc.setter\n def foo(self, value): # Names of function and decorator don't match\n pass\n\n @abc.setter\n def abc(self, v1, v2): # Setter signature should be (self, value)\n pass\n\n @abc.deleter\n def abc(self, v1): # Delete signature should be (self)\n pass\n\nA quick-fix offers to update parameters." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PyPropertyDefinition", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyIncorrectDocstringInspection", + "shortDescription": { + "text": "Incorrect docstring" + }, + "fullDescription": { + "text": "Reports mismatched parameters in a docstring. For example, 'b' is highlighted, because there is no such a parameter in the 'add' function. 'def add(a, c):\n \"\"\"\n @param a:\n @param b:\n @return:\n \"\"\"\n pass' The inspection does not warn you of missing parameters if none of them is mentioned in a docstring: 'def mult(a, c):\n \"\"\"\n @return:\n \"\"\"\n pass'", + "markdown": "Reports mismatched parameters in a docstring. For example, `b` is highlighted, because there is no\nsuch a parameter in the `add` function.\n\n\n def add(a, c):\n \"\"\"\n @param a:\n @param b:\n @return:\n \"\"\"\n pass\n\nThe inspection does not warn you of missing parameters if none of them is mentioned in a docstring:\n\n\n def mult(a, c):\n \"\"\"\n @return:\n \"\"\"\n pass\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyIncorrectDocstring", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "PyListCreationInspection", + "shortDescription": { + "text": "Non-optimal list declaration" + }, + "fullDescription": { + "text": "Reports cases when a list declaration can be rewritten with a list literal. This ensures better performance of your application. Example: 'l = [1]\nl.append(2)' When the quick-fix is applied, the code changes to: 'l = [1, 2]'", + "markdown": "Reports cases when a list declaration\ncan be rewritten with a list literal.\n\nThis ensures better performance of your application.\n\n**Example:**\n\n\n l = [1]\n l.append(2)\n\nWhen the quick-fix is applied, the code changes to:\n\n\n l = [1, 2]\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PyListCreation", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Python", + "index": 0, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "org.editorconfig.editorconfigjetbrains", + "version": "233.14241", + "rules": [ + { + "id": "EditorConfigCharClassRedundancy", + "shortDescription": { + "text": "Unnecessary character class" + }, + "fullDescription": { + "text": "Reports character classes that consist of a single character. Such classes can be simplified to a character, for example '[a]'→'a'.", + "markdown": "Reports character classes that consist of a single character. Such classes can be simplified to a character, for example `[a]`→`a`." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigCharClassRedundancy", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigDeprecatedDescriptor", + "shortDescription": { + "text": "Deprecated property" + }, + "fullDescription": { + "text": "Reports EditorConfig properties that are no longer supported.", + "markdown": "Reports EditorConfig properties that are no longer supported." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigDeprecatedDescriptor", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigRootDeclarationUniqueness", + "shortDescription": { + "text": "Extra top-level declaration" + }, + "fullDescription": { + "text": "Reports multiple top-level declarations. There can be only one optional “root=true” top-level declaration in the EditorConfig file. Using multiple top-level declarations is not allowed.", + "markdown": "Reports multiple top-level declarations. There can be only one optional \"root=true\" top-level declaration in the EditorConfig file. Using multiple top-level declarations is not allowed." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigRootDeclarationUniqueness", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigNumerousWildcards", + "shortDescription": { + "text": "Too many wildcards" + }, + "fullDescription": { + "text": "Reports sections that contain too many wildcards. Using a lot of wildcards may lead to performance issues.", + "markdown": "Reports sections that contain too many wildcards. Using a lot of wildcards may lead to performance issues." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "EditorConfigNumerousWildcards", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigWildcardRedundancy", + "shortDescription": { + "text": "Redundant wildcard" + }, + "fullDescription": { + "text": "Reports wildcards that become redundant when the “**” wildcard is used in the same section. The “**” wildcard defines a broader set of files than any other wildcard. That is why, any other wildcard used in the same section has no affect and can be removed.", + "markdown": "Reports wildcards that become redundant when the \"\\*\\*\" wildcard is used in the same section.\n\n\nThe \"\\*\\*\" wildcard defines a broader set of files than any other wildcard.\nThat is why, any other wildcard used in the same section has no affect and can be removed." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigWildcardRedundancy", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigPartialOverride", + "shortDescription": { + "text": "Overlapping sections" + }, + "fullDescription": { + "text": "Reports subsets of files specified in the current section that overlap with other subsets in other sections. For example: '[{foo,bar}]' and '[{foo,bas}]' both contain “foo”.", + "markdown": "Reports subsets of files specified in the current section that overlap with other subsets in other sections. For example: `[{foo,bar}]` and `[{foo,bas}]` both contain \"foo\"." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "EditorConfigPartialOverride", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigEmptySection", + "shortDescription": { + "text": "Empty section" + }, + "fullDescription": { + "text": "Reports sections that do not contain any EditorConfig properties.", + "markdown": "Reports sections that do not contain any EditorConfig properties." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigEmptySection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigHeaderUniqueness", + "shortDescription": { + "text": "EditorConfig section is not unique" + }, + "fullDescription": { + "text": "Reports sections that define the same file pattern as other sections.", + "markdown": "Reports sections that define the same file pattern as other sections." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigHeaderUniqueness", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigShadowingOption", + "shortDescription": { + "text": "Overriding property" + }, + "fullDescription": { + "text": "Reports properties that override the same properties defined earlier in the file. For example: '[*.java]\nindent_size=4\n[{*.java,*.js}]\nindent_size=2' The second section includes the same files as '[*.java]' but also sets indent_size to value 2. Thus the first declaration 'indent_size=4'will be ignored.", + "markdown": "Reports properties that override the same properties defined earlier in the file.\n\nFor example:\n\n\n [*.java]\n indent_size=4\n [{*.java,*.js}]\n indent_size=2\n\nThe second section includes the same files as `[*.java]` but also sets indent_size to value 2. Thus the first declaration `indent_size=4`will be ignored." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigShadowingOption", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigListAcceptability", + "shortDescription": { + "text": "Unexpected value list" + }, + "fullDescription": { + "text": "Reports lists of values that are used in properties in which lists are not supported. In this case, only a single value can be specified.", + "markdown": "Reports lists of values that are used in properties in which lists are not supported. In this case, only a single value can be specified." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigListAcceptability", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigShadowedOption", + "shortDescription": { + "text": "Overridden property" + }, + "fullDescription": { + "text": "Reports properties that are already defined in other sections. For example: '[*.java]\nindent_size=4\n[{*.java,*.js}]\nindent_size=2' The second section includes all '*.java' files too but it also redefines indent_size. As a result the value 2 will be used for files matching '*.java'.", + "markdown": "Reports properties that are already defined in other sections.\n\nFor example:\n\n\n [*.java]\n indent_size=4\n [{*.java,*.js}]\n indent_size=2\n\nThe second section includes all `*.java` files too but it also redefines indent_size. As a result the value 2 will be used for files matching `*.java`." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigShadowedOption", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigEmptyHeader", + "shortDescription": { + "text": "Empty header" + }, + "fullDescription": { + "text": "Reports sections with an empty header. Section header must contain file path globs in the format similar to one supported by 'gitignore'.", + "markdown": "Reports sections with an empty header. Section header must contain file path globs in the format similar to one supported by `gitignore`." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigEmptyHeader", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigValueCorrectness", + "shortDescription": { + "text": "Invalid property value" + }, + "fullDescription": { + "text": "Reports property values that do not meet value restrictions. For example, some properties may be only “true” or “false”, others contain only integer numbers etc. If a value has a limited set of variants, use code completion to see all of them.", + "markdown": "Reports property values that do not meet value restrictions. For example, some properties may be only \"true\" or \"false\", others contain only integer numbers etc. If a value has a limited set of variants, use code completion to see all of them." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigValueCorrectness", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigVerifyByCore", + "shortDescription": { + "text": "Invalid .editorconfig file" + }, + "fullDescription": { + "text": "Verifies the whole file using the backing EditorConfig core library and reports any failures. Any such failure would prevent EditorConfig properties from being correctly applied.", + "markdown": "Verifies the whole file using the backing EditorConfig core library and reports any failures. Any such failure would prevent EditorConfig properties from being correctly applied." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigVerifyByCore", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigValueUniqueness", + "shortDescription": { + "text": "Non-unique list value" + }, + "fullDescription": { + "text": "Reports duplicates in lists of values.", + "markdown": "Reports duplicates in lists of values." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigValueUniqueness", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigMissingRequiredDeclaration", + "shortDescription": { + "text": "Required declarations are missing" + }, + "fullDescription": { + "text": "Reports properties that miss the required declarations. Refer to the documentation for more information.", + "markdown": "Reports properties that miss the required declarations. Refer to the documentation for more information." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigMissingRequiredDeclaration", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigCharClassLetterRedundancy", + "shortDescription": { + "text": "Duplicate character class letter" + }, + "fullDescription": { + "text": "Reports wildcard patterns in the EditorConfig section that contain a duplicate character in the character class, for example '[aa]'.", + "markdown": "Reports wildcard patterns in the EditorConfig section that contain a duplicate character in the character class, for example `[aa]`." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigCharClassLetterRedundancy", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigKeyCorrectness", + "shortDescription": { + "text": "Unknown property" + }, + "fullDescription": { + "text": "Reports properties that are not supported by the IDE. Note: some “ij” domain properties may require specific language plugins.", + "markdown": "Reports properties that are not supported by the IDE. Note: some \"ij\" domain properties may require specific language plugins." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigKeyCorrectness", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigPatternEnumerationRedundancy", + "shortDescription": { + "text": "Unnecessary braces" + }, + "fullDescription": { + "text": "Reports pattern lists that are either empty '{}' or contain just one pattern, for example '{foo}' in contrast to a list containing multiple patterns, for example '{foo,bar}'. In this case braces are handled as a part of the name. For example, the pattern '*.{a}' will match the file 'my.{a}' but not 'my.a'.", + "markdown": "Reports pattern lists that are either empty `{}` or contain just one pattern, for example `{foo}` in contrast to a list containing multiple patterns, for example `{foo,bar}`. In this case braces are handled as a part of the name. For example, the pattern `*.{a}` will match the file `my.{a}` but not `my.a`." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigPatternEnumerationRedundancy", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigEncoding", + "shortDescription": { + "text": "File encoding doesn't match EditorConfig charset" + }, + "fullDescription": { + "text": "Checks that current file encoding matches the encoding defined in \"charset\" property of .editorconfig file.", + "markdown": "Checks that current file encoding matches the encoding defined in \"charset\" property of .editorconfig file." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigEncoding", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigSpaceInHeader", + "shortDescription": { + "text": "Space in file pattern" + }, + "fullDescription": { + "text": "Reports space characters in wildcard patterns that affect pattern matching. If these characters are not intentional, they should be removed.", + "markdown": "Reports space characters in wildcard patterns that affect pattern matching. If these characters are not intentional, they should be removed." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "EditorConfigSpaceInHeader", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigOptionRedundancy", + "shortDescription": { + "text": "Redundant property" + }, + "fullDescription": { + "text": "Reports properties that are redundant when another applicable section already contains the same property and value. For example: '[*]\nindent_size=4\n[*.java]\nindent_size=4' are both applicable to '*.java' files and define the same 'indent_size' value.", + "markdown": "Reports properties that are redundant when another applicable section already contains the same property and value.\n\n\nFor example:\n\n\n [*]\n indent_size=4\n [*.java]\n indent_size=4\n\nare both applicable to `*.java` files and define the same `indent_size` value." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigOptionRedundancy", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigRootDeclarationCorrectness", + "shortDescription": { + "text": "Unexpected top-level declaration" + }, + "fullDescription": { + "text": "Reports unexpected top-level declarations. Top-level declarations other than “root=true” are not allowed in the EditorConfig file.", + "markdown": "Reports unexpected top-level declarations. Top-level declarations other than \"root=true\" are not allowed in the EditorConfig file." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigRootDeclarationCorrectness", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigReferenceCorrectness", + "shortDescription": { + "text": "Invalid reference" + }, + "fullDescription": { + "text": "Reports identifiers that are either unknown or have a wrong type.", + "markdown": "Reports identifiers that are either unknown or have a wrong type." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigReferenceCorrectness", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigUnusedDeclaration", + "shortDescription": { + "text": "Unused declaration" + }, + "fullDescription": { + "text": "Reports unused declarations. Such declarations can be removed.", + "markdown": "Reports unused declarations. Such declarations can be removed." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigUnusedDeclaration", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigPairAcceptability", + "shortDescription": { + "text": "Unexpected key-value pair" + }, + "fullDescription": { + "text": "Reports key-value pairs that are not allowed in the current context.", + "markdown": "Reports key-value pairs that are not allowed in the current context." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigPairAcceptability", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigPatternRedundancy", + "shortDescription": { + "text": "Duplicate or redundant pattern" + }, + "fullDescription": { + "text": "Reports file patterns that are redundant as there already are other patterns that define the same scope of files or even a broader one. For example, in '[{*.java,*}]' the first '*.java' pattern defines a narrower scope compared to '*'. That is why it is redundant and can be removed.", + "markdown": "Reports file patterns that are redundant as there already are other patterns that define the same scope of files or even a broader one. For example, in `[{*.java,*}]` the first `*.java` pattern defines a narrower scope compared to `*`. That is why it is redundant and can be removed." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigPatternRedundancy", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigNoMatchingFiles", + "shortDescription": { + "text": "No matching files" + }, + "fullDescription": { + "text": "Reports sections with wildcard patterns that do not match any files under the directory in which the '.editorconfig' file is located.", + "markdown": "Reports sections with wildcard patterns that do not match any files under the directory in which the `.editorconfig` file is located." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EditorConfigNoMatchingFiles", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EditorConfigUnexpectedComma", + "shortDescription": { + "text": "Unexpected comma" + }, + "fullDescription": { + "text": "Reports commas that cannot be used in the current context. Commas are allowed only as separators for values in lists.", + "markdown": "Reports commas that cannot be used in the current context. Commas are allowed only as separators for values in lists." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "EditorConfigUnexpectedComma", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "EditorConfig", + "index": 1, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "com.jetbrains.sh", + "version": "233.14241", + "rules": [ + { + "id": "ShellCheck", + "shortDescription": { + "text": "ShellCheck" + }, + "fullDescription": { + "text": "Reports shell script bugs detected by the integrated ShellCheck static analysis tool.", + "markdown": "Reports shell script bugs detected by the integrated [ShellCheck](https://github.com/koalaman/shellcheck) static analysis tool." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "ShellCheck", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "Shell script", + "index": 2, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "com.intellij", + "version": "233.14241.160", + "rules": [ + { + "id": "XmlHighlighting", + "shortDescription": { + "text": "XML highlighting" + }, + "fullDescription": { + "text": "Reports XML validation problems in the results of a batch code inspection.", + "markdown": "Reports XML validation problems in the results of a batch code inspection." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "XmlHighlighting", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "JsonSchemaDeprecation", + "shortDescription": { + "text": "Deprecated JSON property" + }, + "fullDescription": { + "text": "Reports a deprecated property in a JSON file. Note that deprecation mechanism is not defined in the JSON Schema specification yet, and this inspection uses a non-standard extension 'deprecationMessage'.", + "markdown": "Reports a deprecated property in a JSON file. \nNote that deprecation mechanism is not defined in the JSON Schema specification yet, and this inspection uses a non-standard extension 'deprecationMessage'." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "JsonSchemaDeprecation", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 5, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XmlDuplicatedId", + "shortDescription": { + "text": "Duplicate 'id' attribute" + }, + "fullDescription": { + "text": "Reports a duplicate 'id' attribute in XML.", + "markdown": "Reports a duplicate `id` attribute in XML." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "XmlDuplicatedId", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpDuplicateCharacterInClass", + "shortDescription": { + "text": "Duplicate character in character class" + }, + "fullDescription": { + "text": "Reports duplicate characters inside a RegExp character class. Duplicate characters are unnecessary and can be removed without changing the semantics of the regex. Example: '[aabc]' After the quick-fix is applied: '[abc]'", + "markdown": "Reports duplicate characters inside a RegExp character class. Duplicate characters are unnecessary and can be removed without changing the semantics of the regex.\n\n**Example:**\n\n\n [aabc]\n\nAfter the quick-fix is applied:\n\n\n [abc]\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpDuplicateCharacterInClass", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "JsonSchemaRefReference", + "shortDescription": { + "text": "Unresolved '$ref' and '$schema' references" + }, + "fullDescription": { + "text": "Reports an unresolved '$ref' or '$schema' path in a JSON schema.", + "markdown": "Reports an unresolved `$ref` or `$schema` path in a JSON schema. " + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "JsonSchemaRefReference", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 5, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HtmlUnknownBooleanAttribute", + "shortDescription": { + "text": "Incorrect boolean attribute" + }, + "fullDescription": { + "text": "Reports an HTML non-boolean attribute without a value. Suggests configuring attributes that should not be reported.", + "markdown": "Reports an HTML non-boolean attribute without a value. Suggests configuring attributes that should not be reported." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "HtmlUnknownBooleanAttribute", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XmlInvalidId", + "shortDescription": { + "text": "Unresolved 'id' reference" + }, + "fullDescription": { + "text": "Reports an unresolved 'id' reference in XML.", + "markdown": "Reports an unresolved `id` reference in XML." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "XmlInvalidId", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XmlUnboundNsPrefix", + "shortDescription": { + "text": "Unbound namespace prefix" + }, + "fullDescription": { + "text": "Reports an unbound namespace prefix in XML.", + "markdown": "Reports an unbound namespace prefix in XML." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "XmlUnboundNsPrefix", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RequiredAttributes", + "shortDescription": { + "text": "Missing required attribute" + }, + "fullDescription": { + "text": "Reports a missing mandatory attribute in an XML/HTML tag. Suggests configuring attributes that should not be reported.", + "markdown": "Reports a missing mandatory attribute in an XML/HTML tag. Suggests configuring attributes that should not be reported." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "RequiredAttributes", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "InconsistentLineSeparators", + "shortDescription": { + "text": "Inconsistent line separators" + }, + "fullDescription": { + "text": "Reports files with line separators different from the ones that are specified in the project's settings. For example, the inspection will be triggered if you set the line separator to '\\n' in Settings | Editor | Code Style | Line separator, while the file you are editing uses '\\r\\n' as a line separator. The inspection also warns you about mixed line separators within a file.", + "markdown": "Reports files with line separators different from the ones that are specified in the project's settings.\n\nFor example, the inspection will be triggered if you set the line separator to `\\n` in\n[Settings \\| Editor \\| Code Style \\| Line separator](settings://preferences.sourceCode?Line%20separator),\nwhile the file you are editing uses `\\r\\n` as a line separator.\n\nThe inspection also warns you about mixed line separators within a file." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "InconsistentLineSeparators", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 9, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "ReassignedToPlainText", + "shortDescription": { + "text": "Reassigned to plain text" + }, + "fullDescription": { + "text": "Reports files that were explicitly re-assigned to Plain Text File Type. This association is unnecessary because the platform auto-detects text files by content automatically. You can dismiss this warning by removing the file type association in Settings | Editor | File Types | Text.", + "markdown": "Reports files that were explicitly re-assigned to Plain Text File Type. This association is unnecessary because the platform auto-detects text files by content automatically.\n\nYou can dismiss this warning by removing the file type association\nin **Settings \\| Editor \\| File Types \\| Text**." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "ReassignedToPlainText", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 9, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RedundantSuppression", + "shortDescription": { + "text": "Redundant suppression" + }, + "fullDescription": { + "text": "Reports usages of the following elements that can be safely removed because the inspection they affect is no longer applicable in this context: '@SuppressWarning' annotation, or '// noinspection' line comment, or '/** noinspection */' JavaDoc comment Example: 'public class C {\n // symbol is already private,\n // but annotation is still around\n @SuppressWarnings({\"WeakerAccess\"})\n private boolean CONST = true;\n void f() {\n CONST = false;\n }\n}'", + "markdown": "Reports usages of the following elements that can be safely removed because the inspection they affect is no longer applicable in this context:\n\n* `@SuppressWarning` annotation, or\n* `// noinspection` line comment, or\n* `/** noinspection */` JavaDoc comment\n\nExample:\n\n\n public class C {\n // symbol is already private,\n // but annotation is still around\n @SuppressWarnings({\"WeakerAccess\"})\n private boolean CONST = true;\n void f() {\n CONST = false;\n }\n }\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "RedundantSuppression", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 9, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "ProblematicWhitespace", + "shortDescription": { + "text": "Problematic whitespace" + }, + "fullDescription": { + "text": "Reports the following problems: Tabs used for indentation when the code style is configured to use only spaces. Spaces used for indentation when the code style is configured to use only tabs. Spaces used for indentation and tabs used for alignment when the code style is configured to use smart tabs.", + "markdown": "Reports the following problems:\n\n* Tabs used for indentation when the code style is configured to use only spaces.\n* Spaces used for indentation when the code style is configured to use only tabs.\n* Spaces used for indentation and tabs used for alignment when the code style is configured to use smart tabs." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "ProblematicWhitespace", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 9, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HtmlUnknownTarget", + "shortDescription": { + "text": "Unresolved file in a link" + }, + "fullDescription": { + "text": "Reports an unresolved file in a link.", + "markdown": "Reports an unresolved file in a link." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "HtmlUnknownTarget", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "LongLine", + "shortDescription": { + "text": "Line is longer than allowed by code style" + }, + "fullDescription": { + "text": "Reports lines that are longer than the Hard wrap at parameter specified in Settings | Editor | Code Style | General.", + "markdown": "Reports lines that are longer than the **Hard wrap at** parameter specified in [Settings \\| Editor \\| Code Style \\| General](settings://preferences.sourceCode?Hard%20wrap%20at)." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "LongLine", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 9, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XmlUnusedNamespaceDeclaration", + "shortDescription": { + "text": "Unused schema declaration" + }, + "fullDescription": { + "text": "Reports an unused namespace declaration or location hint in XML.", + "markdown": "Reports an unused namespace declaration or location hint in XML." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "XmlUnusedNamespaceDeclaration", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpRedundantClassElement", + "shortDescription": { + "text": "Redundant '\\d', '[:digit:]', or '\\D' class elements" + }, + "fullDescription": { + "text": "Reports redundant '\\d' or '[:digit:]' that are used in one class with '\\w' or '[:word:]' ('\\D' with '\\W') and can be removed. Example: '[\\w\\d]' After the quick-fix is applied: '[\\w]' New in 2022.2", + "markdown": "Reports redundant `\\d` or `[:digit:]` that are used in one class with `\\w` or `[:word:]` (`\\D` with `\\W`) and can be removed.\n\n**Example:**\n\n\n [\\w\\d]\n\nAfter the quick-fix is applied:\n\n\n [\\w]\n\nNew in 2022.2" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "RegExpRedundantClassElement", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpSimplifiable", + "shortDescription": { + "text": "Regular expression can be simplified" + }, + "fullDescription": { + "text": "Reports regular expressions that can be simplified. Example: '[a] xx* [ah-hz]' After the quick-fix is applied: 'a x+ [ahz]' New in 2022.1", + "markdown": "Reports regular expressions that can be simplified.\n\n**Example:**\n\n\n [a] xx* [ah-hz]\n\nAfter the quick-fix is applied:\n\n\n a x+ [ahz]\n\nNew in 2022.1" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "RegExpSimplifiable", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XmlWrongRootElement", + "shortDescription": { + "text": "Wrong root element" + }, + "fullDescription": { + "text": "Reports a root tag name different from the name specified in the '' tag.", + "markdown": "Reports a root tag name different from the name specified in the `` tag." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "XmlWrongRootElement", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpEmptyAlternationBranch", + "shortDescription": { + "text": "Empty branch in alternation" + }, + "fullDescription": { + "text": "Reports empty branches in a RegExp alternation. An empty branch will only match the empty string, and in most cases that is not what is desired. This inspection will not report a single empty branch at the start or the end of an alternation. Example: '(alpha||bravo)' After the quick-fix is applied: '(alpha|bravo)' New in 2017.2", + "markdown": "Reports empty branches in a RegExp alternation. An empty branch will only match the empty string, and in most cases that is not what is desired. This inspection will not report a single empty branch at the start or the end of an alternation.\n\n**Example:**\n\n\n (alpha||bravo)\n\nAfter the quick-fix is applied:\n\n\n (alpha|bravo)\n\nNew in 2017.2" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpEmptyAlternationBranch", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CheckValidXmlInScriptTagBody", + "shortDescription": { + "text": "Malformed content of 'script' tag" + }, + "fullDescription": { + "text": "Reports contents of 'script' tags that are invalid XML. Example: '' After the quick-fix is applied: ''", + "markdown": "Reports contents of `script` tags that are invalid XML. \n\n**Example:**\n\n\n \n\nAfter the quick-fix is applied:\n\n\n \n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "CheckValidXmlInScriptTagBody", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "Annotator", + "shortDescription": { + "text": "Annotator" + }, + "fullDescription": { + "text": "Reports issues essential to this file (e.g., syntax errors) in the result of a batch code inspection run. These issues are usually always highlighted in the editor and can't be configured, unlike inspections. These options control the scope of checks performed by this inspection: Option \"Report syntax errors\": report parser-related issues. Option \"Report issues from language-specific annotators\": report issues found by annotators configured for the relevant language. See Custom Language Support: Annotators for details. Option \"Report other highlighting problems\": report issues specific to the language of the current file (e.g., type mismatches or unreported exceptions). See Custom Language Support: Highlighting for details.", + "markdown": "Reports issues essential to this file (e.g., syntax errors) in the result of a batch code inspection run. These issues are usually always highlighted in the editor and can't be configured, unlike inspections. These options control the scope of checks performed by this inspection:\n\n* Option \"**Report syntax errors**\": report parser-related issues.\n* Option \"**Report issues from language-specific annotators** \": report issues found by annotators configured for the relevant language. See [Custom Language Support: Annotators](https://plugins.jetbrains.com/docs/intellij/annotator.html) for details.\n* Option \"**Report other highlighting problems** \": report issues specific to the language of the current file (e.g., type mismatches or unreported exceptions). See [Custom Language Support: Highlighting](https://plugins.jetbrains.com/docs/intellij/syntax-highlighting-and-error-highlighting.html#semantic-highlighting) for details." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "Annotator", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 9, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpSuspiciousBackref", + "shortDescription": { + "text": "Suspicious back reference" + }, + "fullDescription": { + "text": "Reports back references that will not be resolvable at runtime. This means that the back reference can never match anything. A back reference will not be resolvable when the group is defined after the back reference, or if the group is defined in a different branch of an alternation. Example of a group defined after its back reference: '\\1(abc)' Example of a group and a back reference in different branches: 'a(b)c|(xy)\\1z' New in 2022.1", + "markdown": "Reports back references that will not be resolvable at runtime. This means that the back reference can never match anything. A back reference will not be resolvable when the group is defined after the back reference, or if the group is defined in a different branch of an alternation.\n\n**Example of a group defined after its back reference:**\n\n\n \\1(abc)\n\n**Example of a group and a back reference in different branches:**\n\n\n a(b)c|(xy)\\1z\n\nNew in 2022.1" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpSuspiciousBackref", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XmlPathReference", + "shortDescription": { + "text": "Unresolved file reference" + }, + "fullDescription": { + "text": "Reports an unresolved file reference in XML.", + "markdown": "Reports an unresolved file reference in XML." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "XmlPathReference", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpSingleCharAlternation", + "shortDescription": { + "text": "Single character alternation" + }, + "fullDescription": { + "text": "Reports single char alternation in a RegExp. It is simpler to use a character class instead. This may also provide better matching performance. Example: 'a|b|c|d' After the quick-fix is applied: '[abcd]' New in 2017.1", + "markdown": "Reports single char alternation in a RegExp. It is simpler to use a character class instead. This may also provide better matching performance.\n\n**Example:**\n\n\n a|b|c|d\n\nAfter the quick-fix is applied:\n\n\n [abcd]\n\n\nNew in 2017.1" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpSingleCharAlternation", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpUnnecessaryNonCapturingGroup", + "shortDescription": { + "text": "Unnecessary non-capturing group" + }, + "fullDescription": { + "text": "Reports unnecessary non-capturing groups, which have no influence on the match result. Example: 'Everybody be cool, (?:this) is a robbery!' After the quick-fix is applied: 'Everybody be cool, this is a robbery!' New in 2021.1", + "markdown": "Reports unnecessary non-capturing groups, which have no influence on the match result.\n\n**Example:**\n\n\n Everybody be cool, (?:this) is a robbery!\n\nAfter the quick-fix is applied:\n\n\n Everybody be cool, this is a robbery!\n\nNew in 2021.1" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpUnnecessaryNonCapturingGroup", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "TodoComment", + "shortDescription": { + "text": "TODO comment" + }, + "fullDescription": { + "text": "Reports TODO comments in your code. You can configure the format for TODO comments in Settings | Editor | TODO. Enable the Only warn on TODO comments without any details option to only warn on empty TODO comments, that don't provide any description on the task that should be done. Disable to report all TODO comments.", + "markdown": "Reports **TODO** comments in your code.\n\nYou can configure the format for **TODO** comments in [Settings \\| Editor \\| TODO](settings://preferences.toDoOptions).\n\nEnable the **Only warn on TODO comments without any details** option to only warn on empty TODO comments, that\ndon't provide any description on the task that should be done. Disable to report all TODO comments." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "TodoComment", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 9, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HtmlUnknownAttribute", + "shortDescription": { + "text": "Unknown attribute" + }, + "fullDescription": { + "text": "Reports an unknown HTML attribute. Suggests configuring attributes that should not be reported.", + "markdown": "Reports an unknown HTML attribute. Suggests configuring attributes that should not be reported." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "HtmlUnknownAttribute", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CheckTagEmptyBody", + "shortDescription": { + "text": "Empty element content" + }, + "fullDescription": { + "text": "Reports XML elements without contents. Example: '\n \n ' After the quick-fix is applied: '\n \n '", + "markdown": "Reports XML elements without contents.\n\n**Example:**\n\n\n \n \n \n\nAfter the quick-fix is applied:\n\n\n \n \n \n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "CheckTagEmptyBody", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpRedundantEscape", + "shortDescription": { + "text": "Redundant character escape" + }, + "fullDescription": { + "text": "Reports redundant character escape sequences that can be replaced with unescaped characters preserving the meaning. Many escape sequences that are necessary outside of a character class are redundant inside square brackets '[]' of a character class. Although unescaped opening curly braces '{' outside of character classes are allowed in some dialects (JavaScript, Python, and so on), it can cause confusion and make the pattern less portable, because there are dialects that require escaping curly braces as characters. For this reason the inspection does not report escaped opening curly braces. Example: '\\-\\;[\\.]' After the quick-fix is applied: '-;[.]' The Ignore escaped closing brackets '}' and ']' option specifies whether to report '\\}' and '\\]' outside of a character class when they are allowed to be unescaped by the RegExp dialect. New in 2017.3", + "markdown": "Reports redundant character escape sequences that can be replaced with unescaped characters preserving the meaning. Many escape sequences that are necessary outside of a character class are redundant inside square brackets `[]` of a character class.\n\n\nAlthough unescaped opening curly braces `{` outside of character classes are allowed in some dialects (JavaScript, Python, and so on),\nit can cause confusion and make the pattern less portable, because there are dialects that require escaping curly braces as characters.\nFor this reason the inspection does not report escaped opening curly braces.\n\n**Example:**\n\n\n \\-\\;[\\.]\n\nAfter the quick-fix is applied:\n\n\n -;[.]\n\n\nThe **Ignore escaped closing brackets '}' and '\\]'** option specifies whether to report `\\}` and `\\]` outside of a character class\nwhen they are allowed to be unescaped by the RegExp dialect.\n\nNew in 2017.3" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpRedundantEscape", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "Json5StandardCompliance", + "shortDescription": { + "text": "Compliance with JSON5 standard" + }, + "fullDescription": { + "text": "Reports inconsistency with the language specification in a JSON5 file.", + "markdown": "Reports inconsistency with [the language specification](http://json5.org) in a JSON5 file." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "Json5StandardCompliance", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 5, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "JsonDuplicatePropertyKeys", + "shortDescription": { + "text": "Duplicate keys in object literals" + }, + "fullDescription": { + "text": "Reports a duplicate key in an object literal.", + "markdown": "Reports a duplicate key in an object literal." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "JsonDuplicatePropertyKeys", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 5, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "UnresolvedReference", + "shortDescription": { + "text": "Unresolved reference" + }, + "fullDescription": { + "text": "Reports an unresolved reference to a named pattern ('define') in RELAX-NG files that use XML syntax. Suggests creating the referenced 'define' element.", + "markdown": "Reports an unresolved reference to a named pattern (`define`) in RELAX-NG files that use XML syntax. Suggests creating the referenced `define` element." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "UnresolvedReference", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "RELAX NG", + "index": 11, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HtmlMissingClosingTag", + "shortDescription": { + "text": "Missing closing tag" + }, + "fullDescription": { + "text": "Reports an HTML element without a closing tag. Some coding styles require that HTML elements have closing tags even where this is optional. Example: '\n \n

Behold!\n \n ' After the quick-fix is applied: '\n \n

Behold!

\n \n '", + "markdown": "Reports an HTML element without a closing tag. Some coding styles require that HTML elements have closing tags even where this is optional.\n\n**Example:**\n\n\n \n \n

Behold!\n \n \n\nAfter the quick-fix is applied:\n\n\n \n \n

Behold!

\n \n \n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "HtmlMissingClosingTag", + "ideaSeverity": "INFORMATION", + "qodanaSeverity": "Info" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpRedundantNestedCharacterClass", + "shortDescription": { + "text": "Redundant nested character class" + }, + "fullDescription": { + "text": "Reports unnecessary nested character classes. Example: '[a-c[x-z]]' After the quick-fix is applied: '[a-cx-z]' New in 2020.2", + "markdown": "Reports unnecessary nested character classes.\n\n**Example:**\n\n\n [a-c[x-z]]\n\nAfter the quick-fix is applied:\n\n\n [a-cx-z]\n\nNew in 2020.2" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpRedundantNestedCharacterClass", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XmlDeprecatedElement", + "shortDescription": { + "text": "Deprecated symbol" + }, + "fullDescription": { + "text": "Reports a deprecated XML element or attribute. Symbols can be marked by XML comment or documentation tag with text 'deprecated'.", + "markdown": "Reports a deprecated XML element or attribute.\n\nSymbols can be marked by XML comment or documentation tag with text 'deprecated'." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "XmlDeprecatedElement", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CustomRegExpInspection", + "shortDescription": { + "text": "Custom RegExp inspection" + }, + "fullDescription": { + "text": "Custom Regex Inspection", + "markdown": "Custom Regex Inspection" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "CustomRegExpInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "IncorrectFormatting", + "shortDescription": { + "text": "Incorrect formatting" + }, + "fullDescription": { + "text": "Reports formatting issues that appear if your code doesn't follow your project's code style settings. This inspection is not compatible with languages that require third-party formatters for code formatting, for example, Go or C with CLangFormat enabled.", + "markdown": "Reports formatting issues that appear if your code doesn't\nfollow your project's code style settings.\n\n\nThis inspection is not compatible with languages that require\nthird-party formatters for code formatting, for example, Go or\nC with CLangFormat enabled." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "IncorrectFormatting", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 9, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HtmlWrongAttributeValue", + "shortDescription": { + "text": "Wrong attribute value" + }, + "fullDescription": { + "text": "Reports an incorrect HTML attribute value.", + "markdown": "Reports an incorrect HTML attribute value." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "HtmlWrongAttributeValue", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XmlDefaultAttributeValue", + "shortDescription": { + "text": "Redundant attribute with default value" + }, + "fullDescription": { + "text": "Reports a redundant assignment of the default value to an XML attribute.", + "markdown": "Reports a redundant assignment of the default value to an XML attribute." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "XmlDefaultAttributeValue", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpOctalEscape", + "shortDescription": { + "text": "Octal escape" + }, + "fullDescription": { + "text": "Reports octal escapes, which are easily confused with back references. Use hexadecimal escapes to avoid confusion. Example: '\\07' After the quick-fix is applied: '\\x07' New in 2017.1", + "markdown": "Reports octal escapes, which are easily confused with back references. Use hexadecimal escapes to avoid confusion.\n\n**Example:**\n\n\n \\07\n\nAfter the quick-fix is applied:\n\n\n \\x07\n\nNew in 2017.1" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "RegExpOctalEscape", + "ideaSeverity": "INFORMATION", + "qodanaSeverity": "Info" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HtmlExtraClosingTag", + "shortDescription": { + "text": "Redundant closing tag" + }, + "fullDescription": { + "text": "Reports redundant closing tags on empty elements, for example, 'img' or 'br'. Example: '\n \n

\n \n ' After the quick-fix is applied: '\n \n
\n \n '", + "markdown": "Reports redundant closing tags on empty elements, for example, `img` or `br`.\n\n**Example:**\n\n\n \n \n

\n \n \n\nAfter the quick-fix is applied:\n\n\n \n \n
\n \n \n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "HtmlExtraClosingTag", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "UnusedDefine", + "shortDescription": { + "text": "Unused define" + }, + "fullDescription": { + "text": "Reports an unused named pattern ('define') in a RELAX-NG file (XML or Compact Syntax). 'define' elements that are used through an include in another file are ignored.", + "markdown": "Reports an unused named pattern (`define`) in a RELAX-NG file (XML or Compact Syntax). `define` elements that are used through an include in another file are ignored." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "UnusedDefine", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RELAX NG", + "index": 11, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HtmlUnknownAnchorTarget", + "shortDescription": { + "text": "Unresolved fragment in a link" + }, + "fullDescription": { + "text": "Reports an unresolved last part of an URL after the '#' sign.", + "markdown": "Reports an unresolved last part of an URL after the `#` sign." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "HtmlUnknownAnchorTarget", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "JsonSchemaCompliance", + "shortDescription": { + "text": "Compliance with JSON schema" + }, + "fullDescription": { + "text": "Reports inconsistence between a JSON file and the JSON schema that is assigned to it.", + "markdown": "Reports inconsistence between a JSON file and the [JSON schema](https://json-schema.org) that is assigned to it. " + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "JsonSchemaCompliance", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 5, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpUnexpectedAnchor", + "shortDescription": { + "text": "Begin or end anchor in unexpected position" + }, + "fullDescription": { + "text": "Reports '^' or '\\A' anchors not at the beginning of the pattern and '$', '\\Z' or '\\z' anchors not at the end of the pattern. In the wrong position these RegExp anchors prevent the pattern from matching anything. In case of the '^' and '$' anchors, most likely the literal character was meant and the escape forgotten. Example: '(Price $10)' New in 2018.1", + "markdown": "Reports `^` or `\\A` anchors not at the beginning of the pattern and `$`, `\\Z` or `\\z` anchors not at the end of the pattern. In the wrong position these RegExp anchors prevent the pattern from matching anything. In case of the `^` and `$` anchors, most likely the literal character was meant and the escape forgotten.\n\n**Example:**\n\n\n (Price $10)\n\n\nNew in 2018.1" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpUnexpectedAnchor", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "EmptyDirectory", + "shortDescription": { + "text": "Empty directory" + }, + "fullDescription": { + "text": "Reports empty directories. Available only from Code | Inspect Code or Code | Analyze Code | Run Inspection by Name and isn't reported in the editor. Use the Only report empty directories located under a source folder option to have only directories under source roots reported.", + "markdown": "Reports empty directories.\n\nAvailable only from **Code \\| Inspect Code** or\n**Code \\| Analyze Code \\| Run Inspection by Name** and isn't reported in the editor.\n\nUse the **Only report empty directories located under a source folder** option to have only directories under source\nroots reported." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "EmptyDirectory", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 9, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpAnonymousGroup", + "shortDescription": { + "text": "Anonymous capturing group or numeric back reference" + }, + "fullDescription": { + "text": "Reports anonymous capturing groups and numeric back references in a RegExp. These are only reported when the RegExp dialect supports named group and named group references. Named groups and named back references improve code readability and are recommended to use instead. When a capture is not needed, matching can be more performant and use less memory by using a non-capturing group, i.e. '(?:xxx)' instead of '(xxx)'. Example: '(\\d\\d\\d\\d)\\1' A better regex pattern could look like this: '(?\\d\\d\\d\\d)\\k' New in 2017.2", + "markdown": "Reports anonymous capturing groups and numeric back references in a RegExp. These are only reported when the RegExp dialect supports named group and named group references. Named groups and named back references improve code readability and are recommended to use instead. When a capture is not needed, matching can be more performant and use less memory by using a non-capturing group, i.e. `(?:xxx)` instead of `(xxx)`.\n\n**Example:**\n\n\n (\\d\\d\\d\\d)\\1\n\nA better regex pattern could look like this:\n\n\n (?\\d\\d\\d\\d)\\k\n\nNew in 2017.2" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpAnonymousGroup", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CheckDtdRefs", + "shortDescription": { + "text": "Unresolved DTD reference" + }, + "fullDescription": { + "text": "Reports inconsistency in a DTD-specific reference, for example, in a reference to an XML entity or to a DTD element declaration. Works in DTD an XML files.", + "markdown": "Reports inconsistency in a DTD-specific reference, for example, in a reference to an XML entity or to a DTD element declaration. Works in DTD an XML files." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "CheckDtdRefs", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "SpellCheckingInspection", + "shortDescription": { + "text": "Typo" + }, + "fullDescription": { + "text": "Reports typos and misspellings in your code, comments, and literals and fixes them with one click.", + "markdown": "Reports typos and misspellings in your code, comments, and literals and fixes them with one click." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "SpellCheckingInspection", + "ideaSeverity": "TYPO", + "qodanaSeverity": "Low" + } + }, + "relationships": [ + { + "target": { + "id": "Proofreading", + "index": 12, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CheckXmlFileWithXercesValidator", + "shortDescription": { + "text": "Failed external validation" + }, + "fullDescription": { + "text": "Reports a discrepancy in an XML file with the specified DTD or schema detected by the Xerces validator.", + "markdown": "Reports a discrepancy in an XML file with the specified DTD or schema detected by the Xerces validator." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "CheckXmlFileWithXercesValidator", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "XML", + "index": 3, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "NonAsciiCharacters", + "shortDescription": { + "text": "Non-ASCII characters" + }, + "fullDescription": { + "text": "Reports code elements that use non-ASCII symbols in an unusual context. Example: Non-ASCII characters used in identifiers, strings, or comments. Identifiers written in different languages, such as 'myСollection' with the letter 'C' written in Cyrillic. Comments or strings containing Unicode symbols, such as long dashes and arrows.", + "markdown": "Reports code elements that use non-ASCII symbols in an unusual context.\n\nExample:\n\n* Non-ASCII characters used in identifiers, strings, or comments.\n* Identifiers written in different languages, such as `my`**С**`ollection` with the letter **C** written in Cyrillic.\n* Comments or strings containing Unicode symbols, such as long dashes and arrows." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "NonAsciiCharacters", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Internationalization", + "index": 13, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HtmlUnknownTag", + "shortDescription": { + "text": "Unknown tag" + }, + "fullDescription": { + "text": "Reports an unknown HTML tag. Suggests configuring tags that should not be reported.", + "markdown": "Reports an unknown HTML tag. Suggests configuring tags that should not be reported." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "HtmlUnknownTag", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpEscapedMetaCharacter", + "shortDescription": { + "text": "Escaped meta character" + }, + "fullDescription": { + "text": "Reports escaped meta characters. Some RegExp coding styles specify that meta characters should be placed inside a character class, to make the regular expression easier to understand. This inspection does not warn about the meta character '[', ']' and '^', because those would need additional escaping inside a character class. Example: '\\d+\\.\\d+' After the quick-fix is applied: '\\d+[.]\\d+' New in 2017.1", + "markdown": "Reports escaped meta characters. Some RegExp coding styles specify that meta characters should be placed inside a character class, to make the regular expression easier to understand. This inspection does not warn about the meta character `[`, `]` and `^`, because those would need additional escaping inside a character class.\n\n**Example:**\n\n\n \\d+\\.\\d+\n\nAfter the quick-fix is applied:\n\n\n \\d+[.]\\d+\n\nNew in 2017.1" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "RegExpEscapedMetaCharacter", + "ideaSeverity": "INFORMATION", + "qodanaSeverity": "Info" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "LossyEncoding", + "shortDescription": { + "text": "Lossy encoding" + }, + "fullDescription": { + "text": "Reports characters that cannot be displayed because of the current document encoding. Examples: If you type international characters in a document with the US-ASCII charset, some characters will be lost on save. If you load a UTF-8-encoded file using the ISO-8859-1 one-byte charset, some characters will be displayed incorrectly. You can fix this by changing the file encoding either by specifying the encoding directly in the file, e.g. by editing 'encoding=' attribute in the XML prolog of XML file, or by changing the corresponding options in Settings | Editor | File Encodings.", + "markdown": "Reports characters that cannot be displayed because of the current document encoding.\n\nExamples:\n\n* If you type international characters in a document with the **US-ASCII** charset, some characters will be lost on save.\n* If you load a **UTF-8** -encoded file using the **ISO-8859-1** one-byte charset, some characters will be displayed incorrectly.\n\nYou can fix this by changing the file encoding\neither by specifying the encoding directly in the file, e.g. by editing `encoding=` attribute in the XML prolog of XML file,\nor by changing the corresponding options in **Settings \\| Editor \\| File Encodings**." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "LossyEncoding", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Internationalization", + "index": 13, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpDuplicateAlternationBranch", + "shortDescription": { + "text": "Duplicate branch in alternation" + }, + "fullDescription": { + "text": "Reports duplicate branches in a RegExp alternation. Duplicate branches slow down matching and obscure the intent of the expression. Example: '(alpha|bravo|charlie|alpha)' After the quick-fix is applied: '(alpha|bravo|charlie)' New in 2017.1", + "markdown": "Reports duplicate branches in a RegExp alternation. Duplicate branches slow down matching and obscure the intent of the expression.\n\n**Example:**\n\n\n (alpha|bravo|charlie|alpha)\n\nAfter the quick-fix is applied:\n\n\n (alpha|bravo|charlie)\n\nNew in 2017.1" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpDuplicateAlternationBranch", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RegExpRepeatedSpace", + "shortDescription": { + "text": "Consecutive spaces" + }, + "fullDescription": { + "text": "Reports multiple consecutive spaces in a RegExp. Because spaces are not visible by default, it can be hard to see how many spaces are required. The RegExp can be made more clear by replacing the consecutive spaces with a single space and a counted quantifier. Example: '( )' After the quick-fix is applied: '( {5})' New in 2017.1", + "markdown": "Reports multiple consecutive spaces in a RegExp. Because spaces are not visible by default, it can be hard to see how many spaces are required. The RegExp can be made more clear by replacing the consecutive spaces with a single space and a counted quantifier.\n\n**Example:**\n\n\n ( )\n\nAfter the quick-fix is applied:\n\n\n ( {5})\n\n\nNew in 2017.1" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "RegExpRepeatedSpace", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "RegExp", + "index": 6, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "IgnoreFileDuplicateEntry", + "shortDescription": { + "text": "Ignore file duplicates" + }, + "fullDescription": { + "text": "Reports duplicate entries (patterns) in the ignore file (e.g. .gitignore, .hgignore). Duplicate entries in these files are redundant and can be removed. Example: '# Output directories\n /out/\n /target/\n /out/'", + "markdown": "Reports duplicate entries (patterns) in the ignore file (e.g. .gitignore, .hgignore). Duplicate entries in these files are redundant and can be removed.\n\nExample:\n\n\n # Output directories\n /out/\n /target/\n /out/\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "IgnoreFileDuplicateEntry", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Version control", + "index": 15, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "JsonStandardCompliance", + "shortDescription": { + "text": "Compliance with JSON standard" + }, + "fullDescription": { + "text": "Reports the following discrepancies of a JSON file with the language specification: A line or block comment (configurable). Multiple top-level values (expect for JSON Lines files, configurable for others). A trailing comma in an object or array (configurable). A single quoted string. A property key is a not a double quoted strings. A NaN or Infinity/-Infinity numeric value as a floating point literal (configurable).", + "markdown": "Reports the following discrepancies of a JSON file with [the language specification](https://tools.ietf.org/html/rfc7159):\n\n* A line or block comment (configurable).\n* Multiple top-level values (expect for JSON Lines files, configurable for others).\n* A trailing comma in an object or array (configurable).\n* A single quoted string.\n* A property key is a not a double quoted strings.\n* A NaN or Infinity/-Infinity numeric value as a floating point literal (configurable)." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "JsonStandardCompliance", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "JSON and JSON5", + "index": 5, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CheckEmptyScriptTag", + "shortDescription": { + "text": "Empty tag" + }, + "fullDescription": { + "text": "Reports empty tags that do not work in some browsers. Example: '\n \n '", + "markdown": "Reports empty tags that do not work in some browsers.\n\n**Example:**\n\n\n \n \n \n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "CheckEmptyScriptTag", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTML", + "index": 8, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "org.jetbrains.plugins.yaml", + "version": "233.14241", + "rules": [ + { + "id": "YAMLRecursiveAlias", + "shortDescription": { + "text": "Recursive alias" + }, + "fullDescription": { + "text": "Reports recursion in YAML aliases. Alias can't be recursive and be used inside the data referenced by a corresponding anchor. Example: 'some_key: &some_anchor\n sub_key1: value1\n sub_key2: *some_anchor'", + "markdown": "Reports recursion in YAML aliases.\n\nAlias can't be recursive and be used inside the data referenced by a corresponding anchor.\n\n**Example:**\n\n\n some_key: &some_anchor\n sub_key1: value1\n sub_key2: *some_anchor\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "YAMLRecursiveAlias", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "YAML", + "index": 4, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "YAMLSchemaValidation", + "shortDescription": { + "text": "Validation by JSON Schema" + }, + "fullDescription": { + "text": "Reports inconsistencies between a YAML file and a JSON Schema if the schema is specified. Scheme example: '{\n \"properties\": {\n \"SomeNumberProperty\": {\n \"type\": \"number\"\n }\n }\n }' The following is an example with the corresponding warning: 'SomeNumberProperty: hello world'", + "markdown": "Reports inconsistencies between a YAML file and a JSON Schema if the schema is specified.\n\n**Scheme example:**\n\n\n {\n \"properties\": {\n \"SomeNumberProperty\": {\n \"type\": \"number\"\n }\n }\n }\n\n**The following is an example with the corresponding warning:**\n\n\n SomeNumberProperty: hello world\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "YAMLSchemaValidation", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "YAML", + "index": 4, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "YAMLIncompatibleTypes", + "shortDescription": { + "text": "Suspicious type mismatch" + }, + "fullDescription": { + "text": "Reports a mismatch between a scalar value type in YAML file and types of the values in the similar positions. Example: 'myElements:\n - value1\n - value2\n - false # <- reported, because it is a boolean value, while other values are strings'", + "markdown": "Reports a mismatch between a scalar value type in YAML file and types of the values in the similar positions.\n\n**Example:**\n\n\n myElements:\n - value1\n - value2\n - false # <- reported, because it is a boolean value, while other values are strings\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "YAMLIncompatibleTypes", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "YAML", + "index": 4, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "YAMLDuplicatedKeys", + "shortDescription": { + "text": "Duplicated YAML keys" + }, + "fullDescription": { + "text": "Reports duplicated keys in YAML files. Example: 'same_key: some value\n same_key: another value'", + "markdown": "Reports duplicated keys in YAML files.\n\n**Example:**\n\n\n same_key: some value\n same_key: another value\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "YAMLDuplicatedKeys", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "YAML", + "index": 4, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "YAMLUnusedAnchor", + "shortDescription": { + "text": "Unused anchor" + }, + "fullDescription": { + "text": "Reports unused anchors. Example: 'some_key: &some_anchor\n key1: value1'", + "markdown": "Reports unused anchors.\n\n**Example:**\n\n\n some_key: &some_anchor\n key1: value1\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "YAMLUnusedAnchor", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "YAML", + "index": 4, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "YAMLUnresolvedAlias", + "shortDescription": { + "text": "Unresolved alias" + }, + "fullDescription": { + "text": "Reports unresolved aliases in YAML files. Example: 'some_key: *unknown_alias'", + "markdown": "Reports unresolved aliases in YAML files.\n\n**Example:**\n\n\n some_key: *unknown_alias\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "YAMLUnresolvedAlias", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "YAML", + "index": 4, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "YAMLSchemaDeprecation", + "shortDescription": { + "text": "Deprecated YAML key" + }, + "fullDescription": { + "text": "Reports deprecated keys in YAML files. Deprecation is checked only if there exists a JSON schema associated with the corresponding YAML file. Note that the deprecation mechanism is not defined in the JSON Schema specification yet, and this inspection uses a non-standard 'deprecationMessage' extension. Scheme deprecation example: '{\n \"properties\": {\n \"SomeDeprecatedProperty\": {\n \"deprecationMessage\": \"Baz\",\n \"description\": \"Foo bar\"\n }\n }\n }' The following is an example with the corresponding warning: 'SomeDeprecatedProperty: some value'", + "markdown": "Reports deprecated keys in YAML files.\n\nDeprecation is checked only if there exists a JSON schema associated with the corresponding YAML file.\n\nNote that the deprecation mechanism is not defined in the JSON Schema specification yet,\nand this inspection uses a non-standard `deprecationMessage` extension.\n\n**Scheme deprecation example:**\n\n\n {\n \"properties\": {\n \"SomeDeprecatedProperty\": {\n \"deprecationMessage\": \"Baz\",\n \"description\": \"Foo bar\"\n }\n }\n }\n\n**The following is an example with the corresponding warning:**\n\n\n SomeDeprecatedProperty: some value\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "YAMLSchemaDeprecation", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "YAML", + "index": 4, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "com.intellij.properties", + "version": "233.14241", + "rules": [ + { + "id": "DuplicatePropertyInspection", + "shortDescription": { + "text": "Duplicate property" + }, + "fullDescription": { + "text": "Reports duplicate property keys with different values, duplicate keys, or duplicate property values. Example: 'property1=value;\nproperty2=value;' The Options list allows selecting the area in which the inspection should search for duplicates.", + "markdown": "Reports duplicate property keys with different values, duplicate keys, or duplicate property values.\n\nExample:\n\n\n property1=value;\n property2=value;\n\nThe **Options** list allows selecting the area in which the inspection should search for duplicates." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "DuplicatePropertyInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Properties files", + "index": 7, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "UseEllipsisInPropertyInspection", + "shortDescription": { + "text": "Three dot characters instead of the ellipsis" + }, + "fullDescription": { + "text": "Reports three \"dot\" characters which are used instead of the ellipsis character for UTF-8 properties files.", + "markdown": "Reports three \"dot\" characters which are used instead of the ellipsis character for UTF-8 properties files." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "UseEllipsisInPropertyInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Properties files", + "index": 7, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "AlphaUnsortedPropertiesFile", + "shortDescription": { + "text": "Properties file or resource bundle is alphabetically unsorted" + }, + "fullDescription": { + "text": "Reports alphabetically unsorted resource bundles or .properties files.", + "markdown": "Reports alphabetically unsorted resource bundles or .properties files." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "AlphaUnsortedPropertiesFile", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Properties files", + "index": 7, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "TrailingSpacesInProperty", + "shortDescription": { + "text": "Trailing spaces in property" + }, + "fullDescription": { + "text": "Reports properties whose keys or values end with a whitespace.", + "markdown": "Reports properties whose keys or values end with a whitespace." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "TrailingSpacesInProperty", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Properties files", + "index": 7, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "UnusedProperty", + "shortDescription": { + "text": "Unused property" + }, + "fullDescription": { + "text": "Reports properties that are not referenced outside of the .properties file they are contained in.", + "markdown": "Reports properties that are not referenced outside of the .properties file they are contained in." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "UnusedProperty", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Properties files", + "index": 7, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "WrongPropertyKeyValueDelimiter", + "shortDescription": { + "text": "Property key/value delimiter doesn't match code style settings" + }, + "fullDescription": { + "text": "Reports properties in which key or value delimiters do not match code style settings.", + "markdown": "Reports properties in which key or value delimiters do not match code style settings." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "WrongPropertyKeyValueDelimiter", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Properties files", + "index": 7, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "org.intellij.qodana", + "version": "233.14241", + "rules": [ + { + "id": "QodanaSanity", + "shortDescription": { + "text": "Sanity" + }, + "fullDescription": { + "text": "Reports issues essential to this file like syntax errors, unresolved methods and variables, etc...", + "markdown": "Reports issues essential to this file like syntax errors, unresolved methods and variables, etc..." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "QodanaSanity", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "Qodana", + "index": 10, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "org.intellij.intelliLang", + "version": "233.14241", + "rules": [ + { + "id": "InjectedReferences", + "shortDescription": { + "text": "Injected references" + }, + "fullDescription": { + "text": "Reports unresolved references injected by Language Injections. Example: '@Language(\"file-reference\")\n String fileName = \"/home/user/nonexistent.file\"; // highlighted if file doesn't exist'", + "markdown": "Reports unresolved references injected by [Language Injections](https://www.jetbrains.com/help/idea/using-language-injections.html).\n\nExample:\n\n\n @Language(\"file-reference\")\n String fileName = \"/home/user/nonexistent.file\"; // highlighted if file doesn't exist\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "InjectedReferences", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "General", + "index": 9, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "tanvd.grazi", + "version": "233.14241", + "rules": [ + { + "id": "LanguageDetectionInspection", + "shortDescription": { + "text": "Natural language detection" + }, + "fullDescription": { + "text": "Detects natural languages and suggests enabling corresponding grammar and spelling checks.", + "markdown": "Detects natural languages and suggests enabling corresponding grammar and spelling checks." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "LanguageDetectionInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Proofreading", + "index": 12, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GrazieInspection", + "shortDescription": { + "text": "Grammar" + }, + "fullDescription": { + "text": "Reports grammar mistakes in your text. You can configure the inspection in Settings | Editor | Natural Languages | Grammar.", + "markdown": "Reports grammar mistakes in your text. You can configure the inspection in [Settings \\| Editor \\| Natural Languages \\| Grammar](settings://reference.settingsdialog.project.grazie)." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "GrazieInspection", + "ideaSeverity": "GRAMMAR_ERROR", + "qodanaSeverity": "Info" + } + }, + "relationships": [ + { + "target": { + "id": "Proofreading", + "index": 12, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "org.toml.lang", + "version": "233.14241", + "rules": [ + { + "id": "TomlUnresolvedReference", + "shortDescription": { + "text": "Unresolved reference" + }, + "fullDescription": { + "text": "Reports unresolved references in TOML files.", + "markdown": "Reports unresolved references in TOML files." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "TomlUnresolvedReference", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "TOML", + "index": 14, + "toolComponent": { + "name": "QDPYC" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + } + ] + }, + "invocations": [ + { + "startTimeUtc": "2024-01-30T05:06:47.002120052Z", + "exitCode": 0, + "toolExecutionNotifications": [ + { + "message": { + "text": "Analysis by sanity inspection \"Unresolved references\" was suspended due to high number of problems." + }, + "level": "error", + "timeUtc": "2024-01-30T05:07:18.917424873Z", + "properties": { + "qodanaKind": "sanityFailure" + } + } + ], + "executionSuccessful": true + } + ], + "language": "en-US", + "versionControlProvenance": [ + { + "repositoryUri": "https://github.com/Student-Labs-2023/BoilerPoint.git", + "revisionId": "d771aa19bdcc5dfb7b9f6f605ba3d5c94b11f796", + "branch": "refs/heads/main", + "properties": { + "repoUrl": "https://github.com/Student-Labs-2023/BoilerPoint.git", + "lastAuthorName": "Vladislav Mikhaylyuck", + "vcsType": "Git", + "lastAuthorEmail": "39564937+whitehodok@users.noreply.github.com" + } + } + ], + "results": [ + { + "ruleId": "PyBroadExceptionInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Too broad exception clause", + "markdown": "Too broad exception clause" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 44, + "startColumn": 9, + "charOffset": 2524, + "charLength": 6, + "snippet": { + "text": "except" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 42, + "startColumn": 1, + "charOffset": 2180, + "charLength": 688, + "snippet": { + "text": " else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"\n except:\n if user[\"gender\"]:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3d5d518642ddd9c1309987a256c8f42c7fc798e03c6e9a1a8fa1cb5a5b5efc77" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyBroadExceptionInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Too broad exception clause", + "markdown": "Too broad exception clause" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 271, + "startColumn": 12, + "charOffset": 10222, + "charLength": 9, + "snippet": { + "text": "Exception" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 269, + "startColumn": 1, + "charOffset": 10057, + "charLength": 351, + "snippet": { + "text": " await bot.send_message(chat_id, \"Введите количество вопросов в коллекции:\")\r\n await EventMakerPanel.taskmenu_collection_counterwait.set()\r\n except Exception as e:\r\n await bot.send_message(chat_id, \"Произошла ошибка, отправьте пожалуйста фотографию в хорошем качестве.\")\r\n await EventMakerPanel.taskmenu_photowait.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6cf764b10a5d1e0490894d276b4e554eb2752b1ea0d95c3430fca2fa444b2116" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyBroadExceptionInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Too broad exception clause", + "markdown": "Too broad exception clause" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 79, + "startColumn": 9, + "charOffset": 5431, + "charLength": 6, + "snippet": { + "text": "except" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 77, + "startColumn": 1, + "charOffset": 5087, + "charLength": 688, + "snippet": { + "text": " else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"\n except:\n if user[\"gender\"]:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "75d0e4cd1d1300775faed7fa66445359fb3d796e71b6403cfa5587ebcd2904ae" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyBroadExceptionInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Too broad exception clause", + "markdown": "Too broad exception clause" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1651, + "startColumn": 5, + "charOffset": 75696, + "charLength": 6, + "snippet": { + "text": "except" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1649, + "startColumn": 1, + "charOffset": 75547, + "charLength": 306, + "snippet": { + "text": " await bot.send_message(chat_id, \"Заявка успешно отправлена! В ближайшее время с вами свяжется администратор.\", reply_markup=userhelp)\r\n\r\n except:\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, \"Извините, произошла ошибка при отправке заявки\", reply_markup=userhelp)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a9dd13878d304441b9cdb06fb23731a81baf7e729a252f173f4a79d3873b75cf" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyBroadExceptionInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Too broad exception clause", + "markdown": "Too broad exception clause" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1066, + "startColumn": 12, + "charOffset": 47585, + "charLength": 9, + "snippet": { + "text": "Exception" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1064, + "startColumn": 1, + "charOffset": 47426, + "charLength": 339, + "snippet": { + "text": " await bot.send_message(chat_id,\"Введите количество вопросов в коллекции:\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n except Exception as e:\r\n await bot.send_message(chat_id,\"Произошла ошибка, отправьте пожалуйста фотографию в хорошем качестве.\")\r\n await AdminPanel.taskmenu_photowait.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c6e13dc7cff95b755a6ec9a74971534cc619b277eb6cb7dd8acf6c94616e2659" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyChainedComparisonsInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Simplify chained comparison", + "markdown": "Simplify chained comparison" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1236, + "startColumn": 8, + "charOffset": 55410, + "charLength": 69, + "snippet": { + "text": "name.replace(\" \", \"\").isalpha() and len(name) < 40 and len(name) >= 5" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1234, + "startColumn": 1, + "charOffset": 55345, + "charLength": 250, + "snippet": { + "text": " if FIO[word][0].istitle():\r\n cnt += 1\r\n if name.replace(\" \", \"\").isalpha() and len(name) < 40 and len(name) >= 5 and detector(name) == False and cnt == len(FIO):\r\n user = users.get(chat_id)\r\n user.full_name = name\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4e0b9620b9370a101facde56954713963d77ac58d4bf8802329dc50883796e73" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyChainedComparisonsInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Simplify chained comparison", + "markdown": "Simplify chained comparison" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 585, + "startColumn": 8, + "charOffset": 25941, + "charLength": 93, + "snippet": { + "text": "new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 583, + "startColumn": 1, + "charOffset": 25876, + "charLength": 349, + "snippet": { + "text": " if FIO[word][0].istitle():\r\n cnt += 1\r\n if new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO):\r\n data = await state.get_data()\r\n username = data.get(\"username\") # получаем сохраненный username из данных состояния\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "58396f53e4287e3119f1be6c17de21cba55455ff4b76546e7b4939db336a92d7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyChainedComparisonsInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Simplify chained comparison", + "markdown": "Simplify chained comparison" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1338, + "startColumn": 8, + "charOffset": 60711, + "charLength": 93, + "snippet": { + "text": "new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1336, + "startColumn": 1, + "charOffset": 60646, + "charLength": 290, + "snippet": { + "text": " if FIO[word][0].istitle():\r\n cnt += 1\r\n if new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO):\r\n user = users.get(chat_id)\r\n user.full_name = new_fullname\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5fb7c929e7247caf2b0893e03497ee1cfea8d7ac0bd097d40c7008ecd4806c03" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1542, + "startColumn": 10, + "charOffset": 70233, + "charLength": 14, + "snippet": { + "text": "tgname != None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1540, + "startColumn": 1, + "charOffset": 70084, + "charLength": 355, + "snippet": { + "text": " await bot.send_message(chat_id, \"Ваш профиль был удален!\", reply_markup=types.ReplyKeyboardRemove())\r\n await state.finish()\r\n elif tgname != None and select == \"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\":\r\n tgname = \"@\" + tgname\r\n user = users.get(tgname)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "13713db500a615d2fee8d2ebfbf4613d77d4113e432d1f51bfab64bec23f6b84" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 304, + "startColumn": 8, + "charOffset": 11826, + "charLength": 20, + "snippet": { + "text": "numberPoints == None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 302, + "startColumn": 1, + "charOffset": 11768, + "charLength": 143, + "snippet": { + "text": " if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r\n numberPoints: dict = {}\r\n if rightAnswers == None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "137b7169b52171d1ca2ffbdf38fe588c9eec40af143c20086365606e4de267f7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1099, + "startColumn": 8, + "charOffset": 49190, + "charLength": 20, + "snippet": { + "text": "rightAnswers == None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1097, + "startColumn": 1, + "charOffset": 49121, + "charLength": 180, + "snippet": { + "text": " if numberPoints == None:\r\n numberPoints:dict = {}\r\n if rightAnswers == None:\r\n rightAnswers:dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "360e1b40e9aa1ee4d5ae6c862a2dd22373d4ad00ef446594e219a88f4e89d563" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 22, + "startColumn": 32, + "charOffset": 795, + "charLength": 14, + "snippet": { + "text": "gender != None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 20, + "startColumn": 1, + "charOffset": 658, + "charLength": 262, + "snippet": { + "text": " pseudo = user_data.get('full_name', 'Unknown')\r\n gender = user_data.get('gender')\r\n gender = gender if gender != None else False\r\n age = user_data.get('age', 'Unknown')\r\n balance = user_data.get('balance')\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "420d12f3b172619a823d386380a3fa977ade5fed62716439c743d0d4f2773628" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1097, + "startColumn": 8, + "charOffset": 49128, + "charLength": 20, + "snippet": { + "text": "numberPoints == None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1095, + "startColumn": 1, + "charOffset": 49070, + "charLength": 142, + "snippet": { + "text": " if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r\n numberPoints:dict = {}\r\n if rightAnswers == None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "647a6df39813714a9789eadedf27ca19fe1d94361f399e7bf812246c14cb17e4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 302, + "startColumn": 8, + "charOffset": 11775, + "charLength": 17, + "snippet": { + "text": "querylist == None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 300, + "startColumn": 1, + "charOffset": 11678, + "charLength": 170, + "snippet": { + "text": " numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6d26fbd04e257569a48bd2ab7e58c5b8e77c9775c9fdf4d525ae5d1dcfcfe0a6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1165, + "startColumn": 12, + "charOffset": 52462, + "charLength": 21, + "snippet": { + "text": "telegram_name == None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1163, + "startColumn": 1, + "charOffset": 52382, + "charLength": 171, + "snippet": { + "text": "\r\n user.user_state = str(RegistrationStates.waiting_for_age)\r\n if telegram_name == None:\r\n user.tgusr = \"У пользователя нет имени\"\r\n else:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "865090002e1d05363e804534aa512ec34a93565f9252349771491ae97fbad93e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1095, + "startColumn": 8, + "charOffset": 49077, + "charLength": 17, + "snippet": { + "text": "querylist == None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1093, + "startColumn": 1, + "charOffset": 48980, + "charLength": 170, + "snippet": { + "text": " numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a3051498134d08f73926c83d0fbf6fb31737c19a1c622b470ec2b77ef2c2e39c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1605, + "startColumn": 8, + "charOffset": 73571, + "charLength": 11, + "snippet": { + "text": "tgu == None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1603, + "startColumn": 1, + "charOffset": 73495, + "charLength": 214, + "snippet": { + "text": " chat_id = message.chat.id\r\n tgu = message.from_user.username\r\n if tgu == None:\r\n nome = 'имени пользователя'\r\n url = 'https://ru.the-hitech.net/7264375-how-to-create-a-username-on-telegram'\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "be2dd6e9860581518c2cadcbc81cce17366d15e57bfe37dc7622b051e2bf36d0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1535, + "startColumn": 8, + "charOffset": 69721, + "charLength": 14, + "snippet": { + "text": "tgname == None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1533, + "startColumn": 1, + "charOffset": 69642, + "charLength": 283, + "snippet": { + "text": " chat_id = message.chat.id\r\n tgname = message.from_user.username\r\n if tgname == None and select == \"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\":\r\n user = users.get(chat_id)\r\n users.delete(user)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c946b27974ccd844279802888b7a7ed2fc6a2bcd480d653ba0ff6ec06f4ced5c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyComparisonWithNoneInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Comparison with None performed with equality operators", + "markdown": "Comparison with None performed with equality operators" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 306, + "startColumn": 8, + "charOffset": 11889, + "charLength": 20, + "snippet": { + "text": "rightAnswers == None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 304, + "startColumn": 1, + "charOffset": 11819, + "charLength": 182, + "snippet": { + "text": " if numberPoints == None:\r\n numberPoints: dict = {}\r\n if rightAnswers == None:\r\n rightAnswers: dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d78a14e14f4fdda93426d27cde4cbc6296df6ebf5677dffdb81dfd664dc6ebf9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 84733, + "snippet": { + "text": "from dotenv import load_dotenv\r\nimport json\r\nimport PIL.Image\r\nimport io\r\nimport pyzbar.pyzbar as pyzbar\r\nfrom aiogram import Bot, types\r\nfrom io import BytesIO\r\nimport qrcode\r\nimport logging\r\nimport random\r\nimport string\r\nimport asyncio\r\nfrom aiogram.utils import executor , markdown\r\nfrom aiogram.utils.markdown import hlink, escape_md , code\r\nfrom aiogram.dispatcher import Dispatcher, FSMContext\r\nfrom aiogram.contrib.fsm_storage.memory import MemoryStorage\r\nimport os\r\nfrom typing import Optional\r\nfrom aiogram.dispatcher.filters import Command\r\nfrom aiogram.dispatcher.filters.state import State, StatesGroup\r\nfrom buttons import *\r\nfrom pydantic import ValidationError\r\nfrom src.models.users import User\r\nfrom src.repository.usersrepository import UserRepository\r\nfrom src.repository.SupabaseUserRepository import SupabaseUserRepository\r\nfrom GoogleSheets.Google_sheets import rating_update_start_thread\r\nfrom supabase import Client, create_client\r\n#from Database.DataUsers import *\r\nfrom codegen import *\r\nfrom funcs import show_rating, show_user_rating, is_dirt, generate_id_for_survey\r\nfrom aiogram.types.web_app_info import WebAppInfo\r\nimport ast\r\nload_dotenv()\r\nlogging.basicConfig(level=logging.INFO)\r\n# Инициализация бота, диспетчера и хранилищаа состояний\r\nbot = Bot(token=os.getenv(\"TOKEN\"))\r\ndp = Dispatcher(bot, storage=MemoryStorage())\r\nrating_update_start_thread()\r\n\r\n# Инициализация подключения к базе данных Supabase\r\nurl: str = os.environ.get(\"SUPABASE_URL\")\r\nkey: str = os.environ.get(\"SUPABASE_KEY\")\r\n\r\nsupabase: Client = create_client(url, key)\r\n\r\n\r\nusers: UserRepository = SupabaseUserRepository(supabase)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Все состояния в которых может пребывать пользователь/админ бота\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\nclass RegistrationStates(StatesGroup):\r\n waiting_for_age = State()\r\n waiting_for_gender = State()\r\n waiting_for_name = State()\r\n final_reg = State()\r\n\r\n# Состояния меню\r\nclass MenuStates(StatesGroup):\r\n waiting_for_profile = State()\r\n profile = State()\r\n tasks = State()\r\n tasks_checking = State()\r\n tasks_checking_question = State()\r\n tasks_solving = State()\r\n calendar = State()\r\n help = State()\r\n help_start = State()\r\n help_end = State()\r\n help_cancel = State()\r\n help_ender = State()\r\n rating = State()\r\n promocode = State()\r\n promocodestart = State()\r\n\r\n# Состояние удаления профиля\r\nclass ProlfileStates(StatesGroup):\r\n profile_menu_main_state = State()\r\n delete_profile = State()\r\n edit_profile = State()\r\n edit_profile_name = State()\r\n edit_profile_age = State()\r\n\r\n# Состояния админ-панели\r\nclass AdminPanel(StatesGroup):\r\n admin_menu = State()\r\n change_user = State()\r\n change_user_end = State()\r\n get_info_about_user_start = State()\r\n get_info_about_user = State()\r\n get_info_about_user_end = State()\r\n change_user_start = State()\r\n change_user_fullname = State()\r\n change_user_fullnamestart = State()\r\n change_user_age = State()\r\n change_user_agestart = State()\r\n change_user_balance = State()\r\n change_user_balancestart = State()\r\n update_users_balance_confirm = State()\r\n update_users_balance = State()\r\n promo_menu = State()\r\n promo_check_promocode = State()\r\n promo_addpromostart = State()\r\n promo_addpromo_naming = State()\r\n promo_addpromo_naming_usages = State()\r\n promo_addpromo_naming_cost = State()\r\n promo_addpromo_naming_end = State()\r\n promo_addpromousages = State()\r\n promo_addpromocost = State()\r\n promo_addpromoend = State()\r\n promo_delpromo = State()\r\n promo_qr = State()\r\n promo_qrstart = State()\r\n promo_qrend = State()\r\n add_event = State()\r\n add_task = State()\r\n backward = State()\r\n rating_board = State()\r\n ticket = State()\r\n ticket_check = State()\r\n ticket_delete = State()\r\n ticket_start = State()\r\n ticket_middle = State()\r\n ticket_end = State()\r\n rules = State()\r\n rules_addmaker = State()\r\n rules_addmaker_start = State()\r\n rules_delmaker = State()\r\n rules_delmaker_start = State()\r\n taskmenu = State()\r\n taskmenu_namewait = State()\r\n taskmenu_descriptionwait = State()\r\n taskmenu_photowait = State()\r\n taskmenu_collection_counterwait = State()\r\n taskmenu_collection_surveywebapp = State()\r\n taskmenu_collection_list = State()\r\n taskmenu_collection_delete_select = State()\r\n taskmenu_collection_delete_confirm = State()\r\n\r\nclass EventMakerPanel(StatesGroup):\r\n menu = State()\r\n taskmenu = State()\r\n taskmenu_namewait = State()\r\n taskmenu_descriptionwait = State()\r\n taskmenu_photowait = State()\r\n taskmenu_collection_counterwait = State()\r\n taskmenu_collection_surveywebapp = State()\r\n taskmenu_collection_list = State()\r\n taskmenu_collection_delete_select = State()\r\n taskmenu_collection_delete_confirm = State()\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Event maker panel\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(commands=['event'], state='*')\r\nasync def event_command(message: types.Message, state: FSMContext):\r\n with open('roles.json') as f:\r\n event_roles = json.load(f)['event_makers']\r\n\r\n if str(message.from_user.id) not in event_roles:\r\n await message.reply(\"У вас нет прав event maker'а!\", reply_markup=rkbm)\r\n return\r\n\r\n await EventMakerPanel.menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(EventMakerPanel.menu)\r\n users.set(user)\r\n await message.reply(\"Вы вошли в панель event maker`a!\", reply_markup=usermakerkbm)\r\n\r\n@dp.message_handler(text=\"📝Создать задание\", state=EventMakerPanel.menu)\r\nasync def go_event_menu(message: types.Message, state: FSMContext):\r\n await EventMakerPanel.taskmenu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(EventMakerPanel.taskmenu)\r\n users.set(user)\r\n await message.reply(\"Вы вошли в панель создания заданий.\", reply_markup=eventtasks)\r\n\r\n\r\n\r\n@dp.message_handler(text='Удалить коллекцию', state=EventMakerPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите пожалуйста имя коллекции для её удаления\", reply_markup=types.ReplyKeyboardRemove())\r\n await EventMakerPanel.taskmenu_collection_delete_select.set()\r\n\r\n\r\n@dp.message_handler(state=EventMakerPanel.taskmenu_collection_delete_select)\r\nasync def delete_survey_handler(message: types.Message, state: FSMContext):\r\n codee = message.text\r\n deleted = supabase.table('TaskCollection').delete().match({'name': codee}).execute()\r\n\r\n if not deleted.data:\r\n # ничего не удалено\r\n await message.reply(\"Такой коллекции нет\", reply_markup=eventtasks)\r\n await state.finish()\r\n await EventMakerPanel.taskmenu.set()\r\n return\r\n\r\n # удаление прошло успешно\r\n codee_code = code(codee)\r\n await message.reply(f\"Коллекция {codee_code} удалена\", reply_markup=eventtasks, parse_mode='MarkdownV2')\r\n await EventMakerPanel.taskmenu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(EventMakerPanel)\r\n\r\n\r\n@dp.message_handler(text='Список коллекций', state=EventMakerPanel)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await EventMakerPanel.taskmenu_collection_list.set()\r\n chat_id = message.chat.id\r\n user = users.get(message.chat.id)\r\n user.user_state = str(EventMakerPanel.taskmenu_collection_list)\r\n\r\n promos = supabase.table('TaskCollection').select('name', 'url').filter('name', 'gt', 0).order('name',\r\n desc=True).execute()\r\n\r\n promo_text = \"📝 Действующие формы опросов:\\n\\n\"\r\n\r\n for promo in promos.data:\r\n name = promo['name']\r\n url = promo['url']\r\n\r\n name_parsed = f'{name}'\r\n url_parsed = f'Ссылка'\r\n promo_text += (name_parsed + f\" {url_parsed} \\n\")\r\n\r\n await bot.send_message(chat_id, promo_text, parse_mode=types.ParseMode.HTML, reply_markup=eventtasks,\r\n disable_web_page_preview=True)\r\n await state.finish()\r\n await EventMakerPanel.taskmenu.set()\r\n user.user_state = str(EventMakerPanel.taskmenu)\r\n\r\n\r\n@dp.message_handler(text=\"Создать коллекцию\", state=EventMakerPanel.taskmenu)\r\nasync def admin_make(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, f\"Введите название коллекции заданий:\", reply_markup=types.ReplyKeyboardRemove())\r\n await EventMakerPanel.taskmenu_namewait.set()\r\n\r\n\r\n@dp.message_handler(state=EventMakerPanel.taskmenu_namewait)\r\nasync def admin_taskmenu_namewait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n name = message.text\r\n await bot.send_message(chat_id, \"Введите описание коллекции заданий:\")\r\n await state.update_data(name=name)\r\n await EventMakerPanel.taskmenu_descriptionwait.set()\r\n\r\n\r\n@dp.message_handler(state=EventMakerPanel.taskmenu_descriptionwait)\r\nasync def admin_taskmenu_descriptionwait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n description = message.text\r\n await bot.send_message(chat_id, \"Отправте фотографию мероприятия:\")\r\n await state.update_data(description=description)\r\n await EventMakerPanel.taskmenu_photowait.set()\r\n\r\n\r\n@dp.message_handler(content_types=types.ContentType.PHOTO, state=EventMakerPanel.taskmenu_photowait)\r\nasync def admin_taskmenu_photowait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n photo = message\r\n try:\r\n await state.update_data(photo=photo.photo[2].file_id)\r\n await bot.send_message(chat_id, \"Введите количество вопросов в коллекции:\")\r\n await EventMakerPanel.taskmenu_collection_counterwait.set()\r\n except Exception as e:\r\n await bot.send_message(chat_id, \"Произошла ошибка, отправьте пожалуйста фотографию в хорошем качестве.\")\r\n await EventMakerPanel.taskmenu_photowait.set()\r\n\r\n\r\n@dp.message_handler(state=EventMakerPanel.taskmenu_collection_counterwait)\r\nasync def admin_taskmenu_collection_counterwait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n try:\r\n counter = int(message.text)\r\n except ValueError:\r\n await bot.send_message(chat_id, \"Введенное значение должно быть числом > 0\")\r\n await EventMakerPanel.taskmenu_collection_counterwait.set()\r\n if counter <= 0:\r\n await bot.send_message(chat_id, \"Введенное значение должно быть числом > 0\")\r\n await EventMakerPanel.taskmenu_collection_counterwait.set()\r\n else:\r\n await state.update_data(counter=counter)\r\n await bot.send_message(chat_id, \"Коллекция создана успешно! Перейдите пожалуйста, к составлению заданий!⬇️\",\r\n reply_markup=surveywebapp)\r\n await EventMakerPanel.taskmenu_collection_surveywebapp.set()\r\n\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=EventMakerPanel.taskmenu_collection_surveywebapp)\r\nasync def survey_web_app(message: types.ContentType.WEB_APP_DATA, state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n counter = data.get(\"counter\")\r\n querylist = data.get(\"querylist\")\r\n numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r\n numberPoints: dict = {}\r\n if rightAnswers == None:\r\n rightAnswers: dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r\n message.text = message.web_app_data.data\r\n data = json.loads(message.text)\r\n data['questionId'] = await generate_id_for_survey(10)\r\n new_json_data = json.dumps(data)\r\n new_json_data = ast.literal_eval(new_json_data)\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r\n numberPoints.update({new_json_data[\"questionId\"]: new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']: new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints=numberPoints)\r\n await state.update_data(rightAnswers=rightAnswers)\r\n querylist.append(new_json_data)\r\n await state.update_data(querylist=querylist)\r\n if counter > 1:\r\n await bot.send_message(chat_id, \"Пожалуйста, заполните следующий вопрос\", reply_markup=surveywebapp)\r\n await EventMakerPanel.taskmenu_collection_surveywebapp.set()\r\n counter -= 1\r\n await state.update_data(counter=counter)\r\n else:\r\n await EventMakerPanel.taskmenu.set()\r\n await bot.send_message(chat_id, \"Опрос успешно создан!\", reply_markup=eventtasks)\r\n querydict = {\"surveyData\": querylist}\r\n querydict_dump: str = json.dumps(querydict)\r\n url = url + querydict_dump\r\n url = url.replace(' ', '%20')\r\n url = url.replace('\"', '%22')\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r\n description = data.get(\"description\")\r\n photo = data.get(\"photo\")\r\n supabase.table('TaskCollection').insert(\r\n {'name': name, 'description': description, 'photo': photo, 'counter': counter, 'url': url,\r\n 'numberPoints': numberPoints, 'rightAnswers': rightAnswers}).execute()\r\n await state.finish()\r\n await EventMakerPanel.taskmenu.set()\r\n\r\n@dp.message_handler(text='⬅️Назад в меню', state=EventMakerPanel.taskmenu)\r\nasync def back_to_event_main_menu(message: types.Message, state: FSMContext):\r\n await EventMakerPanel.menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(EventMakerPanel.menu)\r\n users.set(user)\r\n await message.reply(\"Вы вышли из панели создания заданий\", reply_markup=usermakerkbm)\r\n\r\n\r\n@dp.message_handler(text = \"⬅️Меню\", state=EventMakerPanel.menu)\r\nasync def back_from_event(message: types.Message, state:FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(MenuStates.waiting_for_profile)\r\n users.set(user)\r\n await message.reply(\"Вы вышли из панели event maker`a\", reply_markup=rkbm)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Event maker panel\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n# Хендлер отмены действия через кнопку\r\n@dp.callback_query_handler(text=\"cancel\", state=[AdminPanel.change_user_balance,AdminPanel.change_user_fullname,AdminPanel.change_user_agestart,AdminPanel.get_info_about_user])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню админ-панели.\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r\n\r\n@dp.message_handler(commands=['admin'], state='*')\r\nasync def admin_command(message: types.Message, state: FSMContext):\r\n # Проверка, что пользователь в списке админов\r\n with open('roles.json') as f:\r\n admin_roles = json.load(f)['admins']\r\n\r\n if str(message.from_user.id) not in admin_roles:\r\n await message.reply(\"У вас нет прав администратора!\", reply_markup=rkbm)\r\n return\r\n\r\n # Установка состояния и вывод кнопок админки\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n await message.reply(\"Вы вошли в панель администратора\", reply_markup=admrkbm)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система обнуления баланса пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"❗Обнулить баланс всех пользователей❗\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def update_users_balance_confirm(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance_confirm.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.update_users_balance)\r\n users.set(user)\r\n await bot.send_message(message.chat.id, '❗Внимание❗ Вы действительно хотите обнулить баланс ВСЕХ пользователей? Данное действие ОТМЕНИТЬ будет НЕВОЗМОЖНО', reply_markup=updatebalanceusers)\r\n await AdminPanel.update_users_balance.set()\r\n\r\n@dp.message_handler(state=AdminPanel.update_users_balance)\r\nasync def update_users_balance(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance.set()\r\n select = message.text\r\n if select == '❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗':\r\n supabase.table('UsersData_duplicate').update({'balance': 0}).neq('balance',0).execute()\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n await message.reply(\"Баланс всех пользователей равен 0!\", reply_markup=admrkbm)\r\n elif select == '⬅️Назад в меню':\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n await message.reply(\"Вы вернулись в панель администратора\", reply_markup=admrkbm)\r\n else:\r\n await message.reply(\"Нет такого варианта, ошибка!\")\r\n \r\n\r\n\r\n# Хендлер для кнопки ️Изменить пользователя\r\n@dp.message_handler(text=\"⚙️Изменить пользователя\", state=AdminPanel.admin_menu)\r\nasync def admin_change_user(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_start.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.change_user_start)\r\n users.set(user)\r\n await message.reply(\r\n \"Вы попали в меню редактирования пользователя, нажмите нужную вам кнопку чтобы изменить параметры пользователя. После нажатия на кнопку введите @username человека в телеграм чтобы поменять его параметры.\",\r\n reply_markup=admue)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система получения информации о пользователе\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"Получить информацию о пользователе\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_get_user_info(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user = users.get(chat_id) \r\n user.user_state = str(AdminPanel.get_info_about_user)\r\n await message.reply(\"Введите @username пользователя о котором хотите получить информацию\", reply_markup=types.ReplyKeyboardRemove())\r\n await message.reply(\"Для отмены действия, нажмите кнопку отмена\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n await AdminPanel.get_info_about_user.set()\r\n users.set(user)\r\n\r\n\r\n@dp.message_handler(state=AdminPanel.get_info_about_user)\r\nasync def admin_get_user_info_start(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n username = message.text\r\n user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.get_info_about_user_start)\r\n try:\r\n userinfo = users.get(username)\r\n userlist = supabase.table('UsersData').select('chat_id').order('balance', desc=True).execute().data\r\n counter = 0\r\n while userlist[counter]['chat_id'] != userinfo.chat_id:\r\n counter += 1\r\n pseudo = userinfo.full_name\r\n gender = userinfo.gender\r\n age = userinfo.age\r\n balance = userinfo.balance\r\n if gender:\r\n gender = \"🙋‍♂️\"\r\n image = os.environ.get(\"MALE\")\r\n else:\r\n gender = \"🙋‍♀️\"\r\n image = os.environ.get(\"FEMALE\")\r\n # Формирование сообщения профиля пользователя\r\n profile_message = f\"Профиль пользователя {username}:\\n\\n\" \\\r\n f\"{gender}{pseudo}, {age} лет\\n└Место в топе: {counter+1}\\n\\n\" \\\r\n f\"💰Баланс: {balance}🔘 поинтов\\n└Мероприятий посещено: ?\"\r\n await bot.send_photo(chat_id=chat_id, photo=image, caption=profile_message, reply_markup=admue)\r\n await AdminPanel.get_info_about_user_end.set()\r\n user.user_state = str(AdminPanel.get_info_about_user_end)\r\n users.set(user)\r\n await state.finish()\r\n await AdminPanel.change_user_start.set()\r\n except IndexError:\r\n await message.reply(\"Такого пользователя не существует. \", reply_markup=admue)\r\n await AdminPanel.change_user_start.set()\r\n user.user_state = str(AdminPanel.change_user_start)\r\n users.set(user)\r\n \r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования баланса пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"Изменить баланс\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_change_user_balance(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_balancestart.set()\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_balancestart)\r\n users.set(admin)\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_balancestart)\r\nasync def admin_change_user_balance_handler(message: types.Message, state: FSMContext):\r\n username = message.text # получаем username\r\n try:\r\n userinfo = users.get(username)\r\n await state.update_data(username=username)\r\n await AdminPanel.change_user_balance.set()\r\n await message.reply(\"Введите новый баланс пользователя\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_balance)\r\n users.set(admin)\r\n except IndexError:\r\n await message.reply(\"Такого пользователя нет в базе данных\", reply_markup=admue)\r\n await state.finish()\r\n await AdminPanel.change_user_start.set()\r\n return\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_balance)\r\nasync def admin_change_user_balance_handler(message: types.Message, state: FSMContext):\r\n new_balance = message.text\r\n data = await state.get_data()\r\n username = data.get(\"username\")\r\n userinfo = users.get(username)\r\n userinfo.balance = new_balance\r\n users.set(userinfo)\r\n # Отправляем сообщение об успешном обновлении\r\n await state.finish()\r\n await AdminPanel.change_user_end.set()\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_end)\r\n users.set(admin)\r\n new_code_balance = code(new_balance)\r\n await message.reply(f\"Баланс пользователя {username} успешно обновлен на {new_code_balance}🔘\", reply_markup=admue, parse_mode=\"MarkdownV2\")\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования ФИО пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"Изменить ФИО\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_change_user_fullname(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_fullnamestart.set()\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_fullnamestart)\r\n users.set(admin)\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_fullnamestart)\r\nasync def admin_change_user_fullname_handler(message: types.Message, state: FSMContext):\r\n username = message.text # получаем username\r\n try:\r\n userinfo = users.get(username)\r\n await state.update_data(username=username) # сохраняем username в данных состояния\r\n await AdminPanel.change_user_fullname.set() # переходим к следующему состоянию\r\n await message.reply(\"Введите новое ФИО пользователя\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.change_user_fullname)\r\n users.set(user)\r\n except IndexError:\r\n await message.reply(\"Такого пользователя нет в базе данных\", reply_markup=admue)\r\n await state.finish()\r\n await AdminPanel.change_user_start.set()\r\n return\r\n # Проверяем, есть ли такой пользователь\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_fullname)\r\nasync def admin_change_user_fullname_handler(message: types.Message, state: FSMContext):\r\n new_fullname = message.text # получаем новое ФИО\r\n chat_id = message.chat.id\r\n admin = users.get(chat_id)\r\n detector = is_dirt()\r\n cnt = 0\r\n FIO = new_fullname.split()\r\n for word in range(len(FIO)):\r\n if FIO[word][0].istitle():\r\n cnt += 1\r\n if new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO):\r\n data = await state.get_data()\r\n username = data.get(\"username\") # получаем сохраненный username из данных состояния\r\n userinfo = users.get(username)\r\n userinfo.full_name = new_fullname\r\n admin.user_state = str(AdminPanel.change_user_end)\r\n users.set(admin)\r\n users.set(userinfo)\r\n # Отправляем сообщение об успешном обновлении\r\n new_code_fullname = code(new_fullname)\r\n await message.reply(f\"ФИО пользователя {username} успешно обновлено на {new_code_fullname}\", reply_markup=admue, parse_mode='MarkdownV2')\r\n await state.finish()\r\n await AdminPanel.change_user_end.set()\r\n else:\r\n await message.reply(\"Неккоректное ФИО\")\r\n await AdminPanel.change_user_fullname.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.change_user_fullname)\r\n users.set(user)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования возраста пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"Изменить возраст\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_change_user_age(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_age.set()\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_age)\r\n users.set(admin)\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_age)\r\nasync def admin_change_user_age_handler(message: types.Message, state: FSMContext):\r\n username = message.text # получаем username\r\n try:\r\n userinfo = users.get(username)\r\n await state.update_data(username=username) # сохраняем username в данных состояния\r\n await AdminPanel.change_user_agestart.set() # переходим к следующему состоянию\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_agestart)\r\n users.set(admin)\r\n await message.reply(\"Введите новый возраст пользователя\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n \r\n # Проверяем, есть ли такой пользователь\r\n except IndexError:\r\n await message.reply(\"Такого пользователя нет в базе данных\", reply_markup=admue)\r\n await state.finish()\r\n await AdminPanel.change_user_start.set()\r\n return\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_agestart)\r\nasync def admin_change_user_age_handler(message: types.Message, state: FSMContext):\r\n new_age = message.text # получаем новый возраст\r\n try:\r\n new_age = int(new_age)\r\n except ValueError as e:\r\n await message.reply(\"Ваш возраст неккоректен. Возраст не должен содержать буквы!\")\r\n print(f\"Error validation age{e}\")\r\n if new_age < 12 or new_age > 122:\r\n await message.reply(\"Ваш возраст неккоректен. Возраст должен лежать в диапазоне от 12 - 122\")\r\n await AdminPanel.change_user_agestart.set()\r\n else:\r\n data = await state.get_data()\r\n username = data.get(\"username\") # получаем сохраненный username из данных состояния\r\n user = users.get(username)\r\n user.age = new_age\r\n user.user_state = str(AdminPanel.change_user_end)\r\n users.set(user)\r\n # Отправляем сообщение об успешном обновлении\r\n new_code_age = code(new_age)\r\n await message.reply(f\"Возраст пользователя {username} успешно обновлен на {new_code_age}\", reply_markup=admue, parse_mode='MarkdownV2')\r\n await state.finish()\r\n await AdminPanel.change_user_end.set()\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система промокодов\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"🗝️Промокоды\", state=AdminPanel.admin_menu)\r\nasync def admin_promocodes(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_menu)\r\n users.set(user)\r\n await message.reply(\"Вы вошли в меню промокодов\", reply_markup=admpromo)\r\n\r\n@dp.message_handler(text=\"Добавить QR\", state=AdminPanel.promo_menu)\r\nasync def admin_promocodes_addqr(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_qrstart.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_qrstart)\r\n users.set(user)\r\n await message.reply(\"Введите промокод, который хотите помстить в QR-код\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.promo_qrstart)\r\nasync def admin_promocodes_add_qr_set(message: types.Message, state: FSMContext):\r\n promo_code = message.text\r\n promocode_data = supabase.table('Promocode').select('cost').eq('promo', promo_code).execute()\r\n\r\n if not promocode_data.data or promocode_data.data[0]['cost'] == 0:\r\n await message.reply(\"Такого промокода не существует или лимит его использования исчерпан\", reply_markup=admpromo)\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n return\r\n\r\n qr = qrcode.make(promo_code)\r\n\r\n byte_io = BytesIO()\r\n qr.save(byte_io, 'PNG')\r\n byte_io.seek(0)\r\n\r\n await message.reply_photo(byte_io, caption=\"Вот QR\\\\-код для промокода \" + code(promo_code) , reply_markup=admpromo, parse_mode=\"MarkdownV2\")\r\n\r\n byte_io.close()\r\n\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text=\"Действующие промокоды\", state=AdminPanel.promo_menu)\r\nasync def admin_promocodes_check(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_check_promocode.set()\r\n chat_id = message.chat.id\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_check_promocode)\r\n\r\n promos = supabase.table('Promocode').select('promo', 'last', 'cost').filter('last', 'gt', 0).order('cost', desc=True).execute()\r\n\r\n promo_text = \"📝 Действующие промокоды:\\n\\n\"\r\n\r\n for promo in promos.data:\r\n codee = promo['promo']\r\n uses_left = promo['last']\r\n cost = promo['cost']\r\n\r\n promo_text += (code(f\"{codee}\") + f\" \\\\- {uses_left} исп\\\\.\\\\, {cost} поинтов\\n\")\r\n\r\n await bot.send_message(chat_id, promo_text, parse_mode=\"MarkdownV2\", reply_markup=admpromo)\r\n supabase.table('Promocode').delete().eq('last', 0).execute()\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text='Нэйминг-промо', state=AdminPanel.promo_menu)\r\nasync def get_naming_promo(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите имя промокода\", reply_markup=types.ReplyKeyboardRemove())\r\n user = users.get(message.chat.id)\r\n await AdminPanel.promo_addpromo_naming.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming)\r\nasync def get_naming_promo_usages(message: types.Message, state:FSMContext):\r\n name = str(message.text)\r\n await message.reply(\"Введите количество использований:\")\r\n await state.update_data(name=name)\r\n await AdminPanel.promo_addpromo_naming_cost.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming_cost)\r\nasync def get_naming_promo_cost(message: types.Message, state:FSMContext):\r\n usages = int(message.text)\r\n await message.reply(\"Введите цену промокода:\")\r\n await state.update_data(usages=usages)\r\n await AdminPanel.promo_addpromo_naming_end.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming_end)\r\nasync def create_naming_promo(message: types.Message, state:FSMContext):\r\n cost = int(message.text)\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r\n usages = data.get(\"usages\")\r\n codee = generate_naming_promo(name, usages, cost)\r\n usages_code = code(usages)\r\n code_cost = code(cost)\r\n texting = (f'Промокод '+ code(f\"{codee}\") + f' с {usages_code} использованиями и ценой {code_cost}🔘 создан')\r\n await message.reply(texting, reply_markup=admpromo, parse_mode= \"MarkdownV2\")\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text ='Добавить промокод',state=AdminPanel.promo_menu)\r\nasync def get_usages(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите количество использований:\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.promo_addpromousages.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromousages)\r\nasync def get_cost(message: types.Message, state: FSMContext):\r\n usages = int(message.text)\r\n await message.reply(\"Введите цену промокода:\")\r\n await state.update_data(usages=usages)\r\n await AdminPanel.promo_addpromocost.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromocost)\r\nasync def create_promo(message: types.Message, state: FSMContext):\r\n data = await state.get_data()\r\n usages = data.get(\"usages\")\r\n cost = int(message.text)\r\n codee = generate_promo(usages, cost)\r\n usages_code = code(usages)\r\n cost_code = code(cost)\r\n texting = (f'Промокод ' + code(f\"{codee}\") + f' с {usages_code} использованиями и ценой {cost_code}🔘 создан')\r\n await message.reply(texting, reply_markup=admpromo, parse_mode=\"MarkdownV2\")\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text=\"Удалить промокод\", state=AdminPanel.promo_menu)\r\nasync def delete_promo(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_delpromo.set()\r\n await message.reply(\"Введите промокод для удаления\", reply_markup=types.ReplyKeyboardRemove())\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_delpromo)\r\n users.set(user)\r\n\r\n\r\n@dp.message_handler(state=AdminPanel.promo_delpromo)\r\nasync def delete_promo_handler(message: types.Message, state: FSMContext):\r\n codee = message.text\r\n deleted = supabase.table('Promocode').delete().match({'promo': codee}).execute()\r\n\r\n if not deleted.data:\r\n # ничего не удалено\r\n await message.reply(\"Промокод не найден\", reply_markup=admpromo)\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n return\r\n\r\n # удаление прошло успешно\r\n codee_code = code(codee)\r\n await message.reply(f\"Промокод {codee_code} удален\", reply_markup=admpromo, parse_mode='MarkdownV2')\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_menu)\r\n\r\n# Хедлер для бека в меню админа\r\n@dp.message_handler(text=\"⬅️Админ меню\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end, AdminPanel.promo_menu])\r\nasync def admin_backtomenu(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система прав\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"👨‍🚀Организаторы\", state=AdminPanel.admin_menu)\r\nasync def give_ruleskbm(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.rules)\r\n users.set(user)\r\n await message.reply(\"Вы попали в раздел для выдачи права создания заданий пользователям. Нажмите на кнопку и следуйте указаниям.\", reply_markup=ruleskbm)\r\n\r\n@dp.message_handler(text=\"Выдать права\",state = AdminPanel.rules)\r\nasync def give_rules(message: types.Message, state: FSMContext):\r\n await AdminPanel.rules_addmaker.set()\r\n await message.reply(\"Введите @username пользователя которому хотите выдать права ивент мейкера\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.rules_addmaker)\r\nasync def give_rules_start(message: types.Message, state: FSMContext):\r\n tgusr = message.text\r\n\r\n user_data = supabase.table('UsersData').select('chat_id').eq('tgusr', tgusr).execute()\r\n\r\n if not user_data.data:\r\n await message.reply(\"Пользователя с таким @username не существует\", reply_markup=ruleskbm)\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n return\r\n\r\n chat_id = user_data.data[0]['chat_id']\r\n\r\n with open('roles.json', 'r') as f:\r\n roles = json.load(f)\r\n\r\n roles['event_makers'].append(str(chat_id))\r\n\r\n with open('roles.json', 'w') as f:\r\n json.dump(roles, f)\r\n\r\n await message.reply(\"Права выданы успешно\", reply_markup=ruleskbm)\r\n\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text=\"Забрать права\", state=AdminPanel.rules)\r\nasync def del_from_eventers(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules_delmaker.set()\r\n await message.reply(\"Введите @username пользователя у котрого хотите забрать права\",reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.rules_delmaker)\r\nasync def del_from_eventers_start(message: types.Message, state: FSMContext):\r\n tgusr = message.text\r\n\r\n user_data = supabase.table('UsersData').select('chat_id').eq('tgusr', tgusr).execute()\r\n\r\n if not user_data.data:\r\n await message.reply(\"Пользователя с таким username не существует\", reply_markup=ruleskbm)\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n return\r\n\r\n chat_id = user_data.data[0]['chat_id']\r\n\r\n with open('roles.json', 'r') as f:\r\n roles = json.load(f)\r\n\r\n if str(chat_id) in roles['event_makers']:\r\n roles['event_makers'].remove(str(chat_id))\r\n\r\n with open('roles.json', 'w') as f:\r\n json.dump(roles, f)\r\n\r\n await message.reply(\"Права успешно удалены\", reply_markup=ruleskbm)\r\n\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text='Действующие права', state=AdminPanel.rules)\r\nasync def show_rules(message: types.Message, state: FSMContext):\r\n\r\n with open('roles.json', 'r') as f:\r\n roles = json.load(f)\r\n\r\n event_makers = roles['event_makers']\r\n\r\n rules_text = \"📝 Пользователи с правами ивент-мейкера:\\n\\n\"\r\n\r\n for chat_id in event_makers:\r\n user_data = supabase.table('UsersData').select('tgusr').eq('chat_id', int(chat_id)).execute()\r\n if user_data.data:\r\n username = user_data.data[0]['tgusr']\r\n rules_text += f\"{username} - {chat_id}\\n\"\r\n\r\n await message.reply(rules_text)\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text=\"⬅️Админ меню\", state=AdminPanel.rules)\r\nasync def back_from_rules(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n\r\n@dp.message_handler(text=\"⬅️Меню\", state=AdminPanel.admin_menu)\r\nasync def admin_menu_back(message: types.Message, state: FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(MenuStates.waiting_for_profile)\r\n users.set(user)\r\n await message.reply(\"Вы вышли из панели администратора\", reply_markup=rkbm)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система админ рейтинга\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"📊Рейтинг\", state=AdminPanel.admin_menu)\r\nasync def admin_rating_board(message: types.Message, state: FSMContext):\r\n await AdminPanel.rating_board.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.rating_board)\r\n users.set(user)\r\n await show_rating(message.chat.id)\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система заданий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text=\"📝Создать задание\", state=AdminPanel.admin_menu)\r\nasync def admin_task_maker(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вошли в редактор заданий\", reply_markup=admtasks)\r\n await AdminPanel.taskmenu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.taskmenu)\r\n users.set(user)\r\n\r\n@dp.message_handler(text='Удалить коллекцию', state=AdminPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите пожалуйста имя коллекции для её удаления\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.taskmenu_collection_delete_select.set()\r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_collection_delete_select)\r\nasync def delete_survey_handler(message: types.Message, state: FSMContext):\r\n codee = message.text\r\n deleted = supabase.table('TaskCollection').delete().match({'name': codee}).execute()\r\n\r\n if not deleted.data:\r\n # ничего не удалено\r\n await message.reply(\"Такой коллекции нет\", reply_markup=admtasks)\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r\n return\r\n\r\n # удаление прошло успешно\r\n codee_code = code(codee)\r\n await message.reply(f\"Коллекция {codee_code} удалена\", reply_markup=admtasks, parse_mode='MarkdownV2')\r\n await AdminPanel.taskmenu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.taskmenu)\r\n\r\n@dp.message_handler(text='Список коллекций', state=AdminPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await AdminPanel.taskmenu_collection_list.set()\r\n chat_id = message.chat.id\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.taskmenu_collection_list)\r\n\r\n promos = supabase.table('TaskCollection').select('name', 'url').filter('name', 'gt', 0).order('name',desc=True).execute()\r\n\r\n promo_text = \"📝 Действующие формы опросов:\\n\\n\"\r\n\r\n for promo in promos.data:\r\n name = promo['name']\r\n url = promo['url']\r\n\r\n name_parsed = f'{name}'\r\n url_parsed = f'Ссылка'\r\n promo_text += (name_parsed + f\" {url_parsed} \\n\")\r\n\r\n await bot.send_message(chat_id, promo_text, parse_mode=types.ParseMode.HTML, reply_markup=admtasks, disable_web_page_preview=True)\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r\n user.user_state = str(AdminPanel.taskmenu)\r\n\r\n\r\n@dp.message_handler(text=\"Создать коллекцию\", state=AdminPanel.taskmenu)\r\nasync def admin_make(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id,f\"Введите название коллекции заданий:\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.taskmenu_namewait.set()\r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_namewait)\r\nasync def admin_taskmenu_namewait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n name = message.text\r\n tasks_name = []\r\n response = supabase.table('TaskCollection').select('*').execute()\r\n for name_table in response.data:\r\n tasks_name.append(name_table['name'])\r\n if name in tasks_name:\r\n await bot.send_message(chat_id,\"Введенное имя уже существует, введите другое\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.AdminPanel.taskmenu.set()\r\n else:\r\n await bot.send_message(chat_id, \"Введите описание коллекции заданий:\")\r\n await state.update_data(name=name)\r\n await AdminPanel.taskmenu_descriptionwait.set()\r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_descriptionwait)\r\nasync def admin_taskmenu_descriptionwait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n description = message.text\r\n await bot.send_message(chat_id, \"Отправте фотографию мероприятия:\")\r\n await state.update_data(description = description)\r\n await AdminPanel.taskmenu_photowait.set()\r\n\r\n@dp.message_handler(content_types= types.ContentType.PHOTO, state = AdminPanel.taskmenu_photowait)\r\nasync def admin_taskmenu_photowait(message: types.Message , state: FSMContext):\r\n chat_id = message.chat.id\r\n photo = message\r\n try:\r\n await state.update_data(photo = photo.photo[2].file_id)\r\n await bot.send_message(chat_id,\"Введите количество вопросов в коллекции:\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n except Exception as e:\r\n await bot.send_message(chat_id,\"Произошла ошибка, отправьте пожалуйста фотографию в хорошем качестве.\")\r\n await AdminPanel.taskmenu_photowait.set()\r\n \r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_collection_counterwait)\r\nasync def admin_taskmenu_collection_counterwait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n try: \r\n counter = int(message.text)\r\n except ValueError:\r\n await bot.send_message(chat_id,\"Введенное значение должно быть числом > 0\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n if counter <= 0:\r\n await bot.send_message(chat_id,\"Введенное значение должно быть числом > 0\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n else:\r\n await state.update_data(counter = counter)\r\n await bot.send_message(chat_id,\"Коллекция создана успешно! Перейдите пожалуйста, к составлению заданий!⬇️\",reply_markup=surveywebapp)\r\n await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=AdminPanel.taskmenu_collection_surveywebapp)\r\nasync def survey_web_app(message: types.ContentType.WEB_APP_DATA , state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n counter = data.get(\"counter\")\r\n querylist = data.get(\"querylist\")\r\n numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r\n numberPoints:dict = {}\r\n if rightAnswers == None:\r\n rightAnswers:dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r\n message.text = message.web_app_data.data\r\n data = json.loads(message.text)\r\n data['questionId'] = await generate_id_for_survey(10)\r\n new_json_data = json.dumps(data)\r\n new_json_data = ast.literal_eval(new_json_data)\r\n data = await state.get_data()\r\n name = data.get(\"name\") \r\n numberPoints.update({new_json_data[\"questionId\"]:new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints = numberPoints)\r\n await state.update_data(rightAnswers = rightAnswers)\r\n querylist.append(new_json_data)\r\n await state.update_data(querylist = querylist)\r\n if counter > 1:\r\n await bot.send_message(chat_id, \"Пожалуйста, заполните следующий вопрос\",reply_markup=surveywebapp)\r\n await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n counter -= 1\r\n await state.update_data(counter = counter)\r\n else:\r\n await AdminPanel.taskmenu.set()\r\n await bot.send_message(chat_id, \"Опрос успешно создан!\", reply_markup=admtasks)\r\n querydict = {\"surveyData\":querylist}\r\n querydict_dump: str = json.dumps(querydict)\r\n url = url + querydict_dump \r\n url = url.replace(' ','%20')\r\n url = url.replace('\"', '%22')\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r\n description = data.get(\"description\")\r\n photo = data.get(\"photo\")\r\n supabase.table('TaskCollection').insert({'name': name, 'description': description, 'photo': photo, 'counter': counter, 'url': url,'numberPoints':numberPoints, 'rightAnswers':rightAnswers}).execute()\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r\n\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=AdminPanel.taskmenu)\r\nasync def back_from_rules(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система регистрации\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r\n@dp.message_handler(Command('start'), state=None)\r\nasync def start_command(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user = users.get(id=chat_id) # Получение состояния пользователя из Supabase\r\n\r\n if user and not (user.full_name == \"\"):\r\n # Пользователь уже зарегистрирован\r\n await MenuStates.waiting_for_profile.set()\r\n await message.reply(\"Чтобы просмотреть свой профиль, нажмите кнопку 'Профиль'.\", reply_markup=rkbm)\r\n else:\r\n user = user if user else User(chat_id=chat_id)\r\n\r\n # Сохранение состояния пользователя\r\n telegram_name = message.from_user.username\r\n\r\n user.user_state = str(RegistrationStates.waiting_for_age)\r\n if telegram_name == None:\r\n user.tgusr = \"У пользователя нет имени\"\r\n else:\r\n user.tgusr = \"@\" + telegram_name\r\n users.set(user)\r\n\r\n # Регистрация нового пользователя\r\n await message.reply(\"Привет! Давай зарегистрируемся! Введите ваш возраст:\")\r\n # Установка состояния \"waiting_for_age\" для пользователя\r\n await RegistrationStates.waiting_for_age.set()\r\n\r\n@dp.message_handler(state=RegistrationStates.waiting_for_age)\r\nasync def handle_age(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user_age = message.text\r\n try:\r\n user_age = int(user_age)\r\n except ValueError as e:\r\n await bot.send_message(chat_id, \"Ваш возраст неккоректен. Возраст не должен содержать буквы!\")\r\n print(f\"Error validation age{e}\")\r\n if int(user_age) < 12 or int(user_age) > 122:\r\n await bot.send_message(chat_id, \"Ваш возраст неккоректен. Попробуйте еще раз\")\r\n await RegistrationStates.waiting_for_age.set()\r\n else:\r\n user = users.get(chat_id)\r\n user.age = user_age\r\n # Сохранение возраста пользователя в DTO\r\n print(f\"Возраст пользователя {chat_id}: {user_age}\")\r\n\r\n # Переход к следующему состоянию \"waiting_for_gender\"\r\n await RegistrationStates.waiting_for_gender.set()\r\n # Сохранение состояния пользователя\r\n user.user_state = str(RegistrationStates.waiting_for_gender)\r\n users.set(user)\r\n\r\n # Запрашиваем пол пользователя\r\n await message.reply(\"Введите ваш пол (Male/Female):\", reply_markup=ikbg)\r\n\r\n@dp.message_handler(state=RegistrationStates.waiting_for_gender)\r\nasync def handle_gender(message: types.Message, state: FSMContext):\r\n gender = message.text.lower()\r\n if gender not in [\"мужской\", \"женский\"]:\r\n await message.reply(\"Пол указан некорректно. Выберите пол кнопками ниже:\", reply_markup=ikbg)\r\n return\r\n\r\n@dp.callback_query_handler(state=RegistrationStates.waiting_for_gender)\r\nasync def handle_gender_callback(query: types.CallbackQuery, state: FSMContext):\r\n chat_id = query.message.chat.id\r\n gender = query.data.lower()\r\n user = users.get(chat_id)\r\n user.gender = bool(int(gender))\r\n print(f\"Пол пользователя {chat_id}: {gender}\")\r\n\r\n # Запрашиваем имя пользователя\r\n await query.message.reply(\"Введите ваше ФИО:\", reply_markup = helpinlinereg)\r\n\r\n # Переход к следующему состоянию \"waiting_for_name\"\r\n await RegistrationStates.waiting_for_name.set()\r\n user.user_state = str(RegistrationStates.waiting_for_name)\r\n users.set(user)\r\n\r\n@dp.message_handler(state=RegistrationStates.waiting_for_name)\r\nasync def handle_name(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n name = message.text\r\n detector = is_dirt()\r\n FIO = name.split()\r\n cnt = 0\r\n for word in range(len(FIO)):\r\n if FIO[word][0].istitle():\r\n cnt += 1\r\n if name.replace(\" \", \"\").isalpha() and len(name) < 40 and len(name) >= 5 and detector(name) == False and cnt == len(FIO):\r\n user = users.get(chat_id)\r\n user.full_name = name\r\n user.user_state = str(RegistrationStates.final_reg) \r\n users.set(user)\r\n\r\n print(f\"Имя пользователя {chat_id}: {name}\")\r\n # Отправка сообщения о успешной регистрации\r\n if str(message.from_user.username) == 'None':\r\n await bot.send_message(chat_id,\r\n f\"Регистрация успешно завершена с неточностями, {user.full_name}!У вас нет имени пользователя Телеграм, связь администрации с вами может быть усложнена, вам необходимо указать в вашем профиле телеграма ваше имя пользователя и перерегистрироваться в боте.\",\r\n reply_markup=rkbm)\r\n else:\r\n await bot.send_message(chat_id, f\"Регистрация успешно завершена, {user.full_name}!\", reply_markup=rkbm)\r\n await state.finish()\r\n await MenuStates.waiting_for_profile.set()\r\n else:\r\n await bot.send_message(chat_id, f\"Пожалуйста, введите корректно свое ФИО\")\r\n await RegistrationStates.waiting_for_name.set()\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Кнопкни главного меню\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r\n@dp.message_handler(state=MenuStates.waiting_for_profile)\r\nasync def handle_waiting_for_profile(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n select = message.text\r\n if select == \"👤Профиль\":\r\n await MenuStates.profile.set()\r\n await handle_profile(message, state)\r\n elif select == \"📊Рейтинг\":\r\n await MenuStates.rating.set()\r\n await user_rating_board(message, state)\r\n elif select ==\"❓Помощь\":\r\n await MenuStates.help.set()\r\n await handle_help(message,state)\r\n elif select == \"📆Календарь событий\":\r\n await MenuStates.calendar.set()\r\n await handle_calendar(message, state)\r\n elif select == \"📝Задания\":\r\n await MenuStates.tasks.set()\r\n counter = 0\r\n await state.update_data(counter=counter)\r\n await handle_tasks(message, state)\r\n elif select == \"🗝️Промокоды\":\r\n await MenuStates.promocode.set()\r\n await bot.send_message(chat_id, \"Вы попали в меню работы с промокодами\", reply_markup=promo_kb)\r\n else:\r\n await message.reply(\"Нет такого варианта выбора!\", reply_markup=rkbm)\r\n\r\n@dp.callback_query_handler(text=\"cancel_user\", state=[ProlfileStates.edit_profile_name, ProlfileStates.edit_profile_age])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню редактирования профиля.\", reply_markup=menuedit)\r\n await ProlfileStates.edit_profile.set()\r\n\r\n@dp.callback_query_handler(text='back_to_menu', state = MenuStates.promocodestart)\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню промокодов.\", reply_markup=promo_kb)\r\n await MenuStates.promocode.set()\r\n\r\n@dp.callback_query_handler(text=\"cancel_user_help\", state=MenuStates.help_end)\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню помощи.\", reply_markup=userhelp)\r\n await MenuStates.help_cancel.set()\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система редактирования профиля\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r\n@dp.message_handler(state=ProlfileStates.edit_profile)\r\nasync def handle_waiting_for_edit_profile(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n select = message.text\r\n if select == \"Изменить ФИО\":\r\n await ProlfileStates.edit_profile_name.set()\r\n await bot.send_message(chat_id, \"Вы выбрали редактирование ФИО\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(chat_id, \"Введите новое ФИО \", reply_markup=cancel_button_for_user)\r\n elif select == \"Изменить возраст\": \r\n await ProlfileStates.edit_profile_age.set()\r\n await bot.send_message(chat_id, \"Вы выбрали редактирование возраста\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(chat_id, \"Введите новый возраст \", reply_markup=cancel_button_for_user)\r\n elif select == \"⬅️Назад в меню\":\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Вы вышли в меню! \", reply_markup=rkbm)\r\n else:\r\n await message.reply(\"Нет такого варианта выбора!\")\r\n\r\n@dp.message_handler(state=ProlfileStates.edit_profile_name)\r\nasync def edit_name_profile(message: types.Message, state:FSMContext):\r\n new_fullname = message.text \r\n chat_id = message.chat.id\r\n detector = is_dirt()\r\n FIO = new_fullname.split()\r\n cnt = 0\r\n for word in range(len(FIO)):\r\n if FIO[word][0].istitle():\r\n cnt += 1\r\n if new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO):\r\n user = users.get(chat_id)\r\n user.full_name = new_fullname\r\n user.user_state = str(ProlfileStates.edit_profile_name)\r\n users.set(user)\r\n await message.reply(f\"Имя успешно обновлено на : {new_fullname}\", reply_markup=rkbm)\r\n await state.finish()\r\n await MenuStates.waiting_for_profile.set()\r\n else:\r\n await bot.send_message(chat_id, f\"Пожалуйста, введите корректно свое ФИО, например: Иванов Иван Иванович\")\r\n await ProlfileStates.edit_profile_name.set()\r\n\r\n@dp.message_handler(state=ProlfileStates.edit_profile_age)\r\nasync def edit_age_profile(message: types.Message, state: FSMContext):\r\n new_age = message.text # получаем новый возраст\r\n try:\r\n new_age = int(new_age)\r\n except ValueError as e:\r\n await message.reply(\"Ваш возраст неккоректен. Возраст не должен содержать буквы!\")\r\n print(f\"Error validation age{e}\")\r\n if new_age < 12 or new_age > 122:\r\n await message.reply(\"Ваш возраст неккоректен. Возраст должен лежать в диапазоне от 12 - 122\")\r\n await ProlfileStates.edit_profile_age.set()\r\n else:\r\n chat_id = message.chat.id\r\n user = users.get(chat_id)\r\n user.age = new_age\r\n user.user_state = str(ProlfileStates.edit_profile_age)\r\n users.set(user)\r\n # Отправляем сообщение об успешном обновлении\r\n await message.reply(f\"Возраст успешно обновлен на {new_age}\", reply_markup=rkbm)\r\n await state.finish()\r\n await MenuStates.waiting_for_profile.set()\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система промокодов\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r\n@dp.message_handler(text=\"🗝️Ввести промокод\", state=MenuStates.promocode)\r\nasync def enter_promocode(message: types.Message):\r\n await bot.send_message(message.chat.id, \"Введите , пожалуйста , ваш промокод сообщением или отправьте боту изображение QR-кода\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(message.chat.id, \"Если хотите вернуться , то нажмите сюда\", reply_markup=cancel_button_to_main)\r\n await MenuStates.promocodestart.set()\r\n\r\n@dp.message_handler(content_types=['photo'], state=MenuStates.promocodestart)\r\nasync def check_qr_code(message: types.Message, state: FSMContext):\r\n\r\n photo_bytes = await message.photo[-1].download(destination=io.BytesIO())\r\n photo_bytes = photo_bytes.getvalue()\r\n\r\n photo_image = PIL.Image.open(io.BytesIO(photo_bytes))\r\n\r\n qr_code = pyzbar.decode(photo_image)\r\n\r\n if qr_code:\r\n qr_code = qr_code[0].data.decode()\r\n\r\n message.text = qr_code\r\n await check_promocode(message, state)\r\n\r\n@dp.message_handler(state=MenuStates.promocodestart)\r\nasync def check_promocode(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n promocode = message.text\r\n poro = promocode\r\n\r\n user = users.get(chat_id)\r\n user_balance = user.balance\r\n\r\n promocode_data = supabase.table('Promocode').select('last', 'cost').eq('promo', promocode).execute()\r\n\r\n if not promocode_data.data:\r\n await message.reply(\"Промокод не найден!\", reply_markup=promo_kb)\r\n await state.finish()\r\n await MenuStates.promocode.set()\r\n user.user_state = str(MenuStates.promocode) # Меню стейт\r\n users.set(user)\r\n return\r\n\r\n promocode = promocode_data.data[0]\r\n\r\n used_promocode_data = supabase.table('UsedPromocode').select('chat_id').eq('promo', poro).eq('chat_id', chat_id).execute()\r\n\r\n if used_promocode_data.data:\r\n # уже использовал\r\n await message.reply(\"Вы уже использовали этот промокод!\", reply_markup=promo_kb)\r\n await state.finish()\r\n await MenuStates.promocode.set()\r\n user.user_state = str(MenuStates.promocode) # Меню стейт\r\n users.set(user)\r\n return\r\n\r\n if promocode['last'] <= 0:\r\n await message.reply(\"Срок действия промокода истек!\", reply_markup=promo_kb)\r\n await state.finish()\r\n await MenuStates.promocode.set()\r\n user.user_state = str(MenuStates.promocode) # Меню стейт\r\n users.set(user)\r\n return\r\n\r\n new_balance = user_balance + promocode['cost']\r\n\r\n new_last = promocode['last'] - 1\r\n \r\n user.balance = new_balance\r\n # Добавим запись о том, что промокод был использован данным пользователем\r\n supabase.table('Promocode').update({'last': new_last}).eq('promo', poro).execute()\r\n expression = ''.join(random.choices(string.ascii_letters, k=8))\r\n supabase.table('UsedPromocode').insert({'id' : expression,'promo': poro, 'chat_id': str(chat_id)}).execute()\r\n\r\n await message.reply(f\"Ваш баланс пополнен на {code(promocode['cost'])}🔘\\\\!\", reply_markup=promo_kb, parse_mode='MarkdownV2')\r\n\r\n await state.finish()\r\n await MenuStates.promocode.set()\r\n user.user_state = str(MenuStates.promocode) # Меню стейт\r\n users.set(user)\r\n\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=MenuStates.promocode)\r\nasync def back_from_promo_menu(message: types.Message, state: FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(message.chat.id, \"Вы вернулись в главное меню\", reply_markup=rkbm)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система рейтинга(Google sheets)\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r\n@dp.message_handler(text =\"📊Рейтинг\", state=MenuStates.waiting_for_profile)\r\nasync def user_rating_board(message: types.Message, state: FSMContext):\r\n await MenuStates.rating.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(MenuStates.rating)\r\n users.set(user)\r\n await show_user_rating(message.chat.id)\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(MenuStates.waiting_for_profile)\r\n users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система отображения профиля\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(state=MenuStates.profile)\r\nasync def handle_profile(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n select = message.text\r\n if select == \"👤Профиль\":\r\n # Запрос данных пользователя из базы данных Supabase\r\n user = users.get(chat_id)\r\n pseudo = user.full_name\r\n gender = user.gender\r\n age = user.age\r\n balance = user.balance\r\n userlist = supabase.table('UsersData').select('chat_id').order('balance', desc=True).execute().data\r\n counter = 0\r\n while userlist[counter]['chat_id'] != chat_id:\r\n counter+=1\r\n if gender:\r\n gender = \"🙋‍♂️\"\r\n image = os.environ.get(\"MALE\")\r\n else:\r\n gender = \"🙋‍♀️\"\r\n image = os.environ.get(\"FEMALE\")\r\n # Формирование сообщения профиля пользователя\r\n profile_message = f\"Добро пожаловать в ваш профиль:\\n\\n\" \\\r\n f\"{gender}{pseudo}, {age} лет\\n└Ваше место в топе: {counter+1}\\n\\n\" \\\r\n f\"💰Баланс: {balance}🔘 поинтов\\n└Мероприятий посещено: ?\"\r\n await bot.send_photo(chat_id=chat_id, photo=image, caption=profile_message, reply_markup=profilebuttons)\r\n # Обработчик нажатия на кнопку удалить профиль\r\n elif select == \"❌Удалить профиль\":\r\n await bot.send_message(chat_id, \"Вы действительно хотите удалить свой профиль?\", reply_markup=confirmbutton)\r\n await ProlfileStates.delete_profile.set()\r\n elif select == \"⚙️Редактировать профиль\":\r\n await ProlfileStates.edit_profile.set()\r\n await bot.send_message(chat_id, \"Выберите какие данные хотите отредактировать! \", reply_markup=menuedit)\r\n elif select == \"⬅️Назад в меню\":\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Вы вернулись в меню!\", reply_markup=rkbm)\r\n \r\n else:\r\n await bot.send_message(chat_id, \"Некорректный выбор.\")\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система удаления профиля\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n \r\n@dp.message_handler(state=ProlfileStates.delete_profile)\r\nasync def del_profile(message: types.Message, state: FSMContext):\r\n select = message.text\r\n chat_id = message.chat.id\r\n tgname = message.from_user.username\r\n if tgname == None and select == \"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\":\r\n user = users.get(chat_id)\r\n users.delete(user)\r\n supabase.table('UsedPromocode').delete().eq('chat_id', chat_id).execute()\r\n supabase.table('Passd').delete().eq('chat_id', chat_id).execute()\r\n await bot.send_message(chat_id, \"Ваш профиль был удален!\", reply_markup=types.ReplyKeyboardRemove())\r\n await state.finish()\r\n elif tgname != None and select == \"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\":\r\n tgname = \"@\" + tgname\r\n user = users.get(tgname)\r\n users.delete(user)\r\n supabase.table('Passd').delete().eq('chat_id', chat_id).execute()\r\n supabase.table('UsedPromocode').delete().eq('chat_id', chat_id).execute()\r\n supabase.table('Report').delete().eq('tgusr',tgname).execute()\r\n await bot.send_message(chat_id, \"Ваш профиль был удален!\", reply_markup=types.ReplyKeyboardRemove())\r\n await state.finish()\r\n elif select == \"⬅️Назад в меню\":\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Вы вернулись в меню!\", reply_markup=rkbm)\r\n else:\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Некорректный выбор, вы вернулись в меню!\", reply_markup=rkbm)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система отображения мероприятий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n \r\n\r\n@dp.message_handler(state=MenuStates.calendar)\r\nasync def handle_calendar(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n response = supabase.table('Event').select('*').limit(5).execute()\r\n events_message = 'Мероприятия:'\r\n for event in response.data:\r\n url = 'https://leader-id.ru/events/'\r\n url = url +str(event['id'])\r\n name = event['full_name']\r\n date_start = event['date_start'][:16]\r\n date_end = event['date_end']\r\n date = date_start + \"-\" + date_end[11:16]\r\n print(date)\r\n events_message += f' \\n' \\\r\n f\"[{name}]({url}) \\n\" \\\r\n f\"⏱{date} \\n\" \\\r\n f'------------------------------'\r\n await bot.send_message(chat_id, events_message,disable_web_page_preview=True,parse_mode=types.ParseMode.MARKDOWN)\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.calendar)\r\n \r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система тикетов для юзера\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(state=MenuStates.help)\r\nasync def handle_help(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, f\"Привет\\\\! Если у тебя есть какие\\\\-то проблемы или пожелания \\\\, то смелее нажимай на кнопку \" + f\"{code('📨Создать заявку')}\" + f\" и администратор с радостью тебе поможет\\\\! \", reply_markup=userhelp, parse_mode = 'MarkdownV2')\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.help)\r\n users.set(user)\r\n await MenuStates.help_start.set()\r\n user.user_state = str(MenuStates.help_start)\r\n\r\n\r\n@dp.message_handler(text=\"📨Создать заявку\", state=MenuStates.help_start)\r\nasync def handle_help_start(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n tgu = message.from_user.username\r\n if tgu == None:\r\n nome = 'имени пользователя'\r\n url = 'https://ru.the-hitech.net/7264375-how-to-create-a-username-on-telegram'\r\n await bot.send_message(chat_id,\r\n f\"У вас нет \" + f\"[{nome}]({url})\" + f\" телеграм!Укажите его в своём профиле и тогда администрация сможет вам помочь.\",\r\n reply_markup=rkbm, disable_web_page_preview=True,\r\n parse_mode=types.ParseMode.MARKDOWN)\r\n await MenuStates.waiting_for_profile.set()\r\n else:\r\n tgus = '@' + tgu\r\n tgus = '@' + tgu\r\n # Проверяем, есть ли у пользователя предыдущие заявки\r\n existing_reports = supabase.table('Report').select('tgusr').eq('tgusr', tgus).execute()\r\n if existing_reports.data:\r\n await message.reply(\"У вас уже есть открытая заявка. Пожалуйста, дождитесь ответа.\", reply_markup=rkbm)\r\n await state.finish()\r\n await MenuStates.waiting_for_profile.set()\r\n\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.help)\r\n users.set(user)\r\n return\r\n\r\n await bot.send_message(chat_id, \"Нажмите сюда чтобы вернуться\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(chat_id, \"Распишите здесь наиподробнейшим образом какой у вас возник вопрос или пожелание!\",reply_markup=cancel_button_for_user_help)\r\n\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.help_end)\r\n await MenuStates.help_end.set()\r\n\r\n@dp.message_handler(state=MenuStates.help_end)\r\nasync def handle_help_end(message: types.Message, state: FSMContext):\r\n try:\r\n Description = message.text\r\n chat_id = message.chat.id\r\n telegram_name = message.from_user.username\r\n tgusr = telegram_name\r\n\r\n tgusr = \"@\" + telegram_name\r\n\r\n # Вставка в БД\r\n supabase.table('Report').insert({'description': Description, 'tgusr': tgusr}).execute()\r\n\r\n # Подтверждающее сообщение\r\n await bot.send_message(chat_id, \"Заявка успешно отправлена! В ближайшее время с вами свяжется администратор.\", reply_markup=userhelp)\r\n\r\n except:\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, \"Извините, произошла ошибка при отправке заявки\", reply_markup=userhelp)\r\n await MenuStates.help_cancel.set()\r\n\r\n # Сброс состояния\r\n await state.finish()\r\n await MenuStates.help_ender.set()\r\n users.user_state=str(MenuStates.help)\r\n\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r\nasync def handle_help_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Вы вернулись в меню!\", reply_markup=rkbm)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система тикетов для админов\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📨Обращения\", state = AdminPanel.admin_menu)\r\nasync def handle_report(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, \"Нажата кнопка обращений, здесь вы можете просмотреть действующие обращения от пользователей или удалить уже решённые. \", reply_markup=admreport)\r\n await AdminPanel.ticket.set()\r\n user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.ticket)\r\n\r\n\r\n@dp.message_handler(text='Действующие обращения', state=AdminPanel.ticket)\r\nasync def check_tickets(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.ticket_check)\r\n\r\n # Запрос обращений из БД\r\n tickets = supabase.table('Report').select('tgusr', 'description').execute().data\r\n\r\n tickets_text = \"📨 Действующие обращения:\\n\\n\"\r\n\r\n for i, ticket in enumerate(tickets, 1):\r\n username = ticket['tgusr']\r\n description = ticket['description']\r\n tickets_text += f\"{i}. {username} - {description}\\n\"\r\n\r\n # Отправка сообщения\r\n await bot.send_message(chat_id, tickets_text)\r\n\r\n # Смена состояния\r\n await AdminPanel.ticket.set()\r\n user.user_state = str(AdminPanel.ticket)\r\n\r\n@dp.message_handler(text = \"Удалить обращение\", state=AdminPanel.ticket)\r\nasync def delete_ticket(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await AdminPanel.ticket_delete.set()\r\n user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.ticket_delete)\r\n await message.reply(\"Введите @username пользователя чтобы удалить его заявку\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.ticket_start.set()\r\n user.user_state = str(AdminPanel.ticket_delete)\r\n\r\n\r\n@dp.message_handler(state=AdminPanel.ticket_start)\r\nasync def handle_ticket_delete(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n username = message.text\r\n\r\n # Проверка, есть ли такой пользователь\r\n user_exists = supabase.table('Report').select('tgusr').eq('tgusr', username).execute()\r\n if not user_exists.data:\r\n await message.reply(\"Такого пользователя нет в базе данных\", reply_markup= admreport)\r\n await state.finish()\r\n await AdminPanel.ticket.set()\r\n return\r\n\r\n # Удаление обращения\r\n delete_query = supabase.table('Report').delete().eq('tgusr', username).execute()\r\n\r\n await message.reply(f\"Обращение пользователя {username} успешно удалено\", reply_markup=admreport)\r\n await AdminPanel.ticket.set()\r\n user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.ticket)\r\n\r\n\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=AdminPanel.ticket)\r\nasync def handle_tickets_back(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система заданий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📝Задания\", state=MenuStates.tasks)\r\nasync def handle_tasks(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n counter = data.get('counter')\r\n await state.update_data(counter = counter)\r\n task = supabase.table('TaskCollection').select('name','description','photo','url').execute().data[int(counter)]\r\n text = f\"{task['name']}\\n{task['description']}\"\r\n await state.update_data(name = task['name'])\r\n ikbmtasks = ReplyKeyboardMarkup(resize_keyboard=True)\r\n ibleft = KeyboardButton(text=\"⬅️\")\r\n ibright = KeyboardButton(text=\"➡️\")\r\n ibback = KeyboardButton(text=\"⬅️Меню\")\r\n print(f\"{task['url']}\")\r\n ibgo = KeyboardButton(text=\"✅\", web_app = WebAppInfo(url = f'{task[\"url\"]}'))\r\n ikbmtasks.row(ibleft, ibgo, ibright)\r\n ikbmtasks.row(ibback)\r\n message_id_data = await bot.send_photo(chat_id, task['photo'] , text, reply_markup= ikbmtasks)\r\n message_id_data = message_id_data['message_id']\r\n await state.update_data(message_id_data=message_id_data)\r\n\r\n@dp.message_handler(text=\"➡️\", state=MenuStates.tasks)\r\nasync def right(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n counter = data.get('counter')+1\r\n if counter>len(supabase.table('TaskCollection').select('name' ).execute().data)-1:\r\n counter = 0\r\n await state.update_data(counter = counter)\r\n await handle_tasks(message, state)\r\n await bot.delete_message(chat_id=chat_id, message_id=data.get('message_id_data'))\r\n await bot.delete_message(chat_id=chat_id, message_id=message.message_id)\r\n\r\n@dp.message_handler(text=\"⬅️\", state=MenuStates.tasks)\r\nasync def left(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n counter = data.get('counter') - 1\r\n if counter < 0:\r\n counter = len(supabase.table('TaskCollection').select('name').execute().data) - 1\r\n await state.update_data(counter=counter)\r\n await handle_tasks(message, state)\r\n await bot.delete_message(chat_id=chat_id, message_id=data.get('message_id_data'))\r\n await bot.delete_message(chat_id=chat_id, message_id=message.message_id)\r\n\r\n@dp.message_handler(text=\"⬅️Меню\", state=MenuStates.tasks)\r\nasync def task_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n await bot.delete_message(chat_id=chat_id, message_id=data.get('message_id_data'))\r\n await bot.delete_message(chat_id=chat_id, message_id=message.message_id)\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Вы вернулись в меню!\", reply_markup=rkbm)\r\n\r\n\r\n\r\n\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=MenuStates.tasks)\r\nasync def handle_test_results(message: types.ContentType.WEB_APP_DATA, state: FSMContext):\r\n message.text = message.web_app_data.data\r\n chat_id = message.chat.id\r\n user_answers = json.loads(message.text)\r\n\r\n data = await state.get_data()\r\n counter = data.get('counter')\r\n name = data.get('name')\r\n task = supabase.table('TaskCollection').select('numberPoints', 'rightAnswers').execute().data[int(counter)]\r\n\r\n # Преобразуем в словарь\r\n right_answers = json.loads(task['rightAnswers'])\r\n points = json.loads(task['numberPoints'])\r\n\r\n\r\n user_answers_dict = {}\r\n\r\n for question_id in user_answers:\r\n user_answers_dict[question_id] = user_answers[question_id]\r\n\r\n num_correct = 0\r\n score = 0\r\n\r\n user = users.get(chat_id)\r\n user_balance = user.balance\r\n\r\n for question_id in user_answers_dict:\r\n if user_answers_dict[question_id] == right_answers[question_id]:\r\n num_correct += 1\r\n score += int(points[question_id])\r\n\r\n used_survey_data = supabase.table('Passd').select('chat_id').eq('name', name).eq('chat_id', chat_id).execute()\r\n\r\n if used_survey_data.data:\r\n\r\n await bot.send_message(\r\n message.chat.id,\r\n text=f\"Вы уже проходили этот опрос.\"\r\n )\r\n return\r\n\r\n ident = generate_code()\r\n supabase.table('Passd').insert({'chat_id':chat_id, 'name':name, 'id': ident}).execute()\r\n new_balance = user_balance + score\r\n user.balance = new_balance\r\n users.set(user)\r\n await bot.send_message(\r\n message.chat.id,\r\n text=f\"Правильных ответов: {num_correct}\\nБаллов: {score}\"\r\n )\r\n\r\n\r\n\r\n# код подсчета результатов\r\n\r\n\r\ndef calculate_score(user_answers, right_answers, points):\r\n score = 0\r\n num_correct = 0\r\n\r\n for question_id in user_answers:\r\n if user_answers[question_id] == right_answers[question_id]:\r\n score += " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 84733, + "snippet": { + "text": "from dotenv import load_dotenv\r\nimport json\r\nimport PIL.Image\r\nimport io\r\nimport pyzbar.pyzbar as pyzbar\r\nfrom aiogram import Bot, types\r\nfrom io import BytesIO\r\nimport qrcode\r\nimport logging\r\nimport random\r\nimport string\r\nimport asyncio\r\nfrom aiogram.utils import executor , markdown\r\nfrom aiogram.utils.markdown import hlink, escape_md , code\r\nfrom aiogram.dispatcher import Dispatcher, FSMContext\r\nfrom aiogram.contrib.fsm_storage.memory import MemoryStorage\r\nimport os\r\nfrom typing import Optional\r\nfrom aiogram.dispatcher.filters import Command\r\nfrom aiogram.dispatcher.filters.state import State, StatesGroup\r\nfrom buttons import *\r\nfrom pydantic import ValidationError\r\nfrom src.models.users import User\r\nfrom src.repository.usersrepository import UserRepository\r\nfrom src.repository.SupabaseUserRepository import SupabaseUserRepository\r\nfrom GoogleSheets.Google_sheets import rating_update_start_thread\r\nfrom supabase import Client, create_client\r\n#from Database.DataUsers import *\r\nfrom codegen import *\r\nfrom funcs import show_rating, show_user_rating, is_dirt, generate_id_for_survey\r\nfrom aiogram.types.web_app_info import WebAppInfo\r\nimport ast\r\nload_dotenv()\r\nlogging.basicConfig(level=logging.INFO)\r\n# Инициализация бота, диспетчера и хранилищаа состояний\r\nbot = Bot(token=os.getenv(\"TOKEN\"))\r\ndp = Dispatcher(bot, storage=MemoryStorage())\r\nrating_update_start_thread()\r\n\r\n# Инициализация подключения к базе данных Supabase\r\nurl: str = os.environ.get(\"SUPABASE_URL\")\r\nkey: str = os.environ.get(\"SUPABASE_KEY\")\r\n\r\nsupabase: Client = create_client(url, key)\r\n\r\n\r\nusers: UserRepository = SupabaseUserRepository(supabase)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Все состояния в которых может пребывать пользователь/админ бота\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\nclass RegistrationStates(StatesGroup):\r\n waiting_for_age = State()\r\n waiting_for_gender = State()\r\n waiting_for_name = State()\r\n final_reg = State()\r\n\r\n# Состояния меню\r\nclass MenuStates(StatesGroup):\r\n waiting_for_profile = State()\r\n profile = State()\r\n tasks = State()\r\n tasks_checking = State()\r\n tasks_checking_question = State()\r\n tasks_solving = State()\r\n calendar = State()\r\n help = State()\r\n help_start = State()\r\n help_end = State()\r\n help_cancel = State()\r\n help_ender = State()\r\n rating = State()\r\n promocode = State()\r\n promocodestart = State()\r\n\r\n# Состояние удаления профиля\r\nclass ProlfileStates(StatesGroup):\r\n profile_menu_main_state = State()\r\n delete_profile = State()\r\n edit_profile = State()\r\n edit_profile_name = State()\r\n edit_profile_age = State()\r\n\r\n# Состояния админ-панели\r\nclass AdminPanel(StatesGroup):\r\n admin_menu = State()\r\n change_user = State()\r\n change_user_end = State()\r\n get_info_about_user_start = State()\r\n get_info_about_user = State()\r\n get_info_about_user_end = State()\r\n change_user_start = State()\r\n change_user_fullname = State()\r\n change_user_fullnamestart = State()\r\n change_user_age = State()\r\n change_user_agestart = State()\r\n change_user_balance = State()\r\n change_user_balancestart = State()\r\n update_users_balance_confirm = State()\r\n update_users_balance = State()\r\n promo_menu = State()\r\n promo_check_promocode = State()\r\n promo_addpromostart = State()\r\n promo_addpromo_naming = State()\r\n promo_addpromo_naming_usages = State()\r\n promo_addpromo_naming_cost = State()\r\n promo_addpromo_naming_end = State()\r\n promo_addpromousages = State()\r\n promo_addpromocost = State()\r\n promo_addpromoend = State()\r\n promo_delpromo = State()\r\n promo_qr = State()\r\n promo_qrstart = State()\r\n promo_qrend = State()\r\n add_event = State()\r\n add_task = State()\r\n backward = State()\r\n rating_board = State()\r\n ticket = State()\r\n ticket_check = State()\r\n ticket_delete = State()\r\n ticket_start = State()\r\n ticket_middle = State()\r\n ticket_end = State()\r\n rules = State()\r\n rules_addmaker = State()\r\n rules_addmaker_start = State()\r\n rules_delmaker = State()\r\n rules_delmaker_start = State()\r\n taskmenu = State()\r\n taskmenu_namewait = State()\r\n taskmenu_descriptionwait = State()\r\n taskmenu_photowait = State()\r\n taskmenu_collection_counterwait = State()\r\n taskmenu_collection_surveywebapp = State()\r\n taskmenu_collection_list = State()\r\n taskmenu_collection_delete_select = State()\r\n taskmenu_collection_delete_confirm = State()\r\n\r\nclass EventMakerPanel(StatesGroup):\r\n menu = State()\r\n taskmenu = State()\r\n taskmenu_namewait = State()\r\n taskmenu_descriptionwait = State()\r\n taskmenu_photowait = State()\r\n taskmenu_collection_counterwait = State()\r\n taskmenu_collection_surveywebapp = State()\r\n taskmenu_collection_list = State()\r\n taskmenu_collection_delete_select = State()\r\n taskmenu_collection_delete_confirm = State()\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Event maker panel\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(commands=['event'], state='*')\r\nasync def event_command(message: types.Message, state: FSMContext):\r\n with open('roles.json') as f:\r\n event_roles = json.load(f)['event_makers']\r\n\r\n if str(message.from_user.id) not in event_roles:\r\n await message.reply(\"У вас нет прав event maker'а!\", reply_markup=rkbm)\r\n return\r\n\r\n await EventMakerPanel.menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(EventMakerPanel.menu)\r\n users.set(user)\r\n await message.reply(\"Вы вошли в панель event maker`a!\", reply_markup=usermakerkbm)\r\n\r\n@dp.message_handler(text=\"📝Создать задание\", state=EventMakerPanel.menu)\r\nasync def go_event_menu(message: types.Message, state: FSMContext):\r\n await EventMakerPanel.taskmenu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(EventMakerPanel.taskmenu)\r\n users.set(user)\r\n await message.reply(\"Вы вошли в панель создания заданий.\", reply_markup=eventtasks)\r\n\r\n\r\n\r\n@dp.message_handler(text='Удалить коллекцию', state=EventMakerPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите пожалуйста имя коллекции для её удаления\", reply_markup=types.ReplyKeyboardRemove())\r\n await EventMakerPanel.taskmenu_collection_delete_select.set()\r\n\r\n\r\n@dp.message_handler(state=EventMakerPanel.taskmenu_collection_delete_select)\r\nasync def delete_survey_handler(message: types.Message, state: FSMContext):\r\n codee = message.text\r\n deleted = supabase.table('TaskCollection').delete().match({'name': codee}).execute()\r\n\r\n if not deleted.data:\r\n # ничего не удалено\r\n await message.reply(\"Такой коллекции нет\", reply_markup=eventtasks)\r\n await state.finish()\r\n await EventMakerPanel.taskmenu.set()\r\n return\r\n\r\n # удаление прошло успешно\r\n codee_code = code(codee)\r\n await message.reply(f\"Коллекция {codee_code} удалена\", reply_markup=eventtasks, parse_mode='MarkdownV2')\r\n await EventMakerPanel.taskmenu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(EventMakerPanel)\r\n\r\n\r\n@dp.message_handler(text='Список коллекций', state=EventMakerPanel)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await EventMakerPanel.taskmenu_collection_list.set()\r\n chat_id = message.chat.id\r\n user = users.get(message.chat.id)\r\n user.user_state = str(EventMakerPanel.taskmenu_collection_list)\r\n\r\n promos = supabase.table('TaskCollection').select('name', 'url').filter('name', 'gt', 0).order('name',\r\n desc=True).execute()\r\n\r\n promo_text = \"📝 Действующие формы опросов:\\n\\n\"\r\n\r\n for promo in promos.data:\r\n name = promo['name']\r\n url = promo['url']\r\n\r\n name_parsed = f'{name}'\r\n url_parsed = f'Ссылка'\r\n promo_text += (name_parsed + f\" {url_parsed} \\n\")\r\n\r\n await bot.send_message(chat_id, promo_text, parse_mode=types.ParseMode.HTML, reply_markup=eventtasks,\r\n disable_web_page_preview=True)\r\n await state.finish()\r\n await EventMakerPanel.taskmenu.set()\r\n user.user_state = str(EventMakerPanel.taskmenu)\r\n\r\n\r\n@dp.message_handler(text=\"Создать коллекцию\", state=EventMakerPanel.taskmenu)\r\nasync def admin_make(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, f\"Введите название коллекции заданий:\", reply_markup=types.ReplyKeyboardRemove())\r\n await EventMakerPanel.taskmenu_namewait.set()\r\n\r\n\r\n@dp.message_handler(state=EventMakerPanel.taskmenu_namewait)\r\nasync def admin_taskmenu_namewait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n name = message.text\r\n await bot.send_message(chat_id, \"Введите описание коллекции заданий:\")\r\n await state.update_data(name=name)\r\n await EventMakerPanel.taskmenu_descriptionwait.set()\r\n\r\n\r\n@dp.message_handler(state=EventMakerPanel.taskmenu_descriptionwait)\r\nasync def admin_taskmenu_descriptionwait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n description = message.text\r\n await bot.send_message(chat_id, \"Отправте фотографию мероприятия:\")\r\n await state.update_data(description=description)\r\n await EventMakerPanel.taskmenu_photowait.set()\r\n\r\n\r\n@dp.message_handler(content_types=types.ContentType.PHOTO, state=EventMakerPanel.taskmenu_photowait)\r\nasync def admin_taskmenu_photowait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n photo = message\r\n try:\r\n await state.update_data(photo=photo.photo[2].file_id)\r\n await bot.send_message(chat_id, \"Введите количество вопросов в коллекции:\")\r\n await EventMakerPanel.taskmenu_collection_counterwait.set()\r\n except Exception as e:\r\n await bot.send_message(chat_id, \"Произошла ошибка, отправьте пожалуйста фотографию в хорошем качестве.\")\r\n await EventMakerPanel.taskmenu_photowait.set()\r\n\r\n\r\n@dp.message_handler(state=EventMakerPanel.taskmenu_collection_counterwait)\r\nasync def admin_taskmenu_collection_counterwait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n try:\r\n counter = int(message.text)\r\n except ValueError:\r\n await bot.send_message(chat_id, \"Введенное значение должно быть числом > 0\")\r\n await EventMakerPanel.taskmenu_collection_counterwait.set()\r\n if counter <= 0:\r\n await bot.send_message(chat_id, \"Введенное значение должно быть числом > 0\")\r\n await EventMakerPanel.taskmenu_collection_counterwait.set()\r\n else:\r\n await state.update_data(counter=counter)\r\n await bot.send_message(chat_id, \"Коллекция создана успешно! Перейдите пожалуйста, к составлению заданий!⬇️\",\r\n reply_markup=surveywebapp)\r\n await EventMakerPanel.taskmenu_collection_surveywebapp.set()\r\n\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=EventMakerPanel.taskmenu_collection_surveywebapp)\r\nasync def survey_web_app(message: types.ContentType.WEB_APP_DATA, state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n counter = data.get(\"counter\")\r\n querylist = data.get(\"querylist\")\r\n numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r\n numberPoints: dict = {}\r\n if rightAnswers == None:\r\n rightAnswers: dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r\n message.text = message.web_app_data.data\r\n data = json.loads(message.text)\r\n data['questionId'] = await generate_id_for_survey(10)\r\n new_json_data = json.dumps(data)\r\n new_json_data = ast.literal_eval(new_json_data)\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r\n numberPoints.update({new_json_data[\"questionId\"]: new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']: new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints=numberPoints)\r\n await state.update_data(rightAnswers=rightAnswers)\r\n querylist.append(new_json_data)\r\n await state.update_data(querylist=querylist)\r\n if counter > 1:\r\n await bot.send_message(chat_id, \"Пожалуйста, заполните следующий вопрос\", reply_markup=surveywebapp)\r\n await EventMakerPanel.taskmenu_collection_surveywebapp.set()\r\n counter -= 1\r\n await state.update_data(counter=counter)\r\n else:\r\n await EventMakerPanel.taskmenu.set()\r\n await bot.send_message(chat_id, \"Опрос успешно создан!\", reply_markup=eventtasks)\r\n querydict = {\"surveyData\": querylist}\r\n querydict_dump: str = json.dumps(querydict)\r\n url = url + querydict_dump\r\n url = url.replace(' ', '%20')\r\n url = url.replace('\"', '%22')\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r\n description = data.get(\"description\")\r\n photo = data.get(\"photo\")\r\n supabase.table('TaskCollection').insert(\r\n {'name': name, 'description': description, 'photo': photo, 'counter': counter, 'url': url,\r\n 'numberPoints': numberPoints, 'rightAnswers': rightAnswers}).execute()\r\n await state.finish()\r\n await EventMakerPanel.taskmenu.set()\r\n\r\n@dp.message_handler(text='⬅️Назад в меню', state=EventMakerPanel.taskmenu)\r\nasync def back_to_event_main_menu(message: types.Message, state: FSMContext):\r\n await EventMakerPanel.menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(EventMakerPanel.menu)\r\n users.set(user)\r\n await message.reply(\"Вы вышли из панели создания заданий\", reply_markup=usermakerkbm)\r\n\r\n\r\n@dp.message_handler(text = \"⬅️Меню\", state=EventMakerPanel.menu)\r\nasync def back_from_event(message: types.Message, state:FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(MenuStates.waiting_for_profile)\r\n users.set(user)\r\n await message.reply(\"Вы вышли из панели event maker`a\", reply_markup=rkbm)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Event maker panel\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n# Хендлер отмены действия через кнопку\r\n@dp.callback_query_handler(text=\"cancel\", state=[AdminPanel.change_user_balance,AdminPanel.change_user_fullname,AdminPanel.change_user_agestart,AdminPanel.get_info_about_user])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню админ-панели.\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r\n\r\n@dp.message_handler(commands=['admin'], state='*')\r\nasync def admin_command(message: types.Message, state: FSMContext):\r\n # Проверка, что пользователь в списке админов\r\n with open('roles.json') as f:\r\n admin_roles = json.load(f)['admins']\r\n\r\n if str(message.from_user.id) not in admin_roles:\r\n await message.reply(\"У вас нет прав администратора!\", reply_markup=rkbm)\r\n return\r\n\r\n # Установка состояния и вывод кнопок админки\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n await message.reply(\"Вы вошли в панель администратора\", reply_markup=admrkbm)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система обнуления баланса пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"❗Обнулить баланс всех пользователей❗\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def update_users_balance_confirm(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance_confirm.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.update_users_balance)\r\n users.set(user)\r\n await bot.send_message(message.chat.id, '❗Внимание❗ Вы действительно хотите обнулить баланс ВСЕХ пользователей? Данное действие ОТМЕНИТЬ будет НЕВОЗМОЖНО', reply_markup=updatebalanceusers)\r\n await AdminPanel.update_users_balance.set()\r\n\r\n@dp.message_handler(state=AdminPanel.update_users_balance)\r\nasync def update_users_balance(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance.set()\r\n select = message.text\r\n if select == '❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗':\r\n supabase.table('UsersData_duplicate').update({'balance': 0}).neq('balance',0).execute()\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n await message.reply(\"Баланс всех пользователей равен 0!\", reply_markup=admrkbm)\r\n elif select == '⬅️Назад в меню':\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n await message.reply(\"Вы вернулись в панель администратора\", reply_markup=admrkbm)\r\n else:\r\n await message.reply(\"Нет такого варианта, ошибка!\")\r\n \r\n\r\n\r\n# Хендлер для кнопки ️Изменить пользователя\r\n@dp.message_handler(text=\"⚙️Изменить пользователя\", state=AdminPanel.admin_menu)\r\nasync def admin_change_user(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_start.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.change_user_start)\r\n users.set(user)\r\n await message.reply(\r\n \"Вы попали в меню редактирования пользователя, нажмите нужную вам кнопку чтобы изменить параметры пользователя. После нажатия на кнопку введите @username человека в телеграм чтобы поменять его параметры.\",\r\n reply_markup=admue)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система получения информации о пользователе\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"Получить информацию о пользователе\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_get_user_info(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user = users.get(chat_id) \r\n user.user_state = str(AdminPanel.get_info_about_user)\r\n await message.reply(\"Введите @username пользователя о котором хотите получить информацию\", reply_markup=types.ReplyKeyboardRemove())\r\n await message.reply(\"Для отмены действия, нажмите кнопку отмена\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n await AdminPanel.get_info_about_user.set()\r\n users.set(user)\r\n\r\n\r\n@dp.message_handler(state=AdminPanel.get_info_about_user)\r\nasync def admin_get_user_info_start(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n username = message.text\r\n user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.get_info_about_user_start)\r\n try:\r\n userinfo = users.get(username)\r\n userlist = supabase.table('UsersData').select('chat_id').order('balance', desc=True).execute().data\r\n counter = 0\r\n while userlist[counter]['chat_id'] != userinfo.chat_id:\r\n counter += 1\r\n pseudo = userinfo.full_name\r\n gender = userinfo.gender\r\n age = userinfo.age\r\n balance = userinfo.balance\r\n if gender:\r\n gender = \"🙋‍♂️\"\r\n image = os.environ.get(\"MALE\")\r\n else:\r\n gender = \"🙋‍♀️\"\r\n image = os.environ.get(\"FEMALE\")\r\n # Формирование сообщения профиля пользователя\r\n profile_message = f\"Профиль пользователя {username}:\\n\\n\" \\\r\n f\"{gender}{pseudo}, {age} лет\\n└Место в топе: {counter+1}\\n\\n\" \\\r\n f\"💰Баланс: {balance}🔘 поинтов\\n└Мероприятий посещено: ?\"\r\n await bot.send_photo(chat_id=chat_id, photo=image, caption=profile_message, reply_markup=admue)\r\n await AdminPanel.get_info_about_user_end.set()\r\n user.user_state = str(AdminPanel.get_info_about_user_end)\r\n users.set(user)\r\n await state.finish()\r\n await AdminPanel.change_user_start.set()\r\n except IndexError:\r\n await message.reply(\"Такого пользователя не существует. \", reply_markup=admue)\r\n await AdminPanel.change_user_start.set()\r\n user.user_state = str(AdminPanel.change_user_start)\r\n users.set(user)\r\n \r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования баланса пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"Изменить баланс\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_change_user_balance(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_balancestart.set()\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_balancestart)\r\n users.set(admin)\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_balancestart)\r\nasync def admin_change_user_balance_handler(message: types.Message, state: FSMContext):\r\n username = message.text # получаем username\r\n try:\r\n userinfo = users.get(username)\r\n await state.update_data(username=username)\r\n await AdminPanel.change_user_balance.set()\r\n await message.reply(\"Введите новый баланс пользователя\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_balance)\r\n users.set(admin)\r\n except IndexError:\r\n await message.reply(\"Такого пользователя нет в базе данных\", reply_markup=admue)\r\n await state.finish()\r\n await AdminPanel.change_user_start.set()\r\n return\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_balance)\r\nasync def admin_change_user_balance_handler(message: types.Message, state: FSMContext):\r\n new_balance = message.text\r\n data = await state.get_data()\r\n username = data.get(\"username\")\r\n userinfo = users.get(username)\r\n userinfo.balance = new_balance\r\n users.set(userinfo)\r\n # Отправляем сообщение об успешном обновлении\r\n await state.finish()\r\n await AdminPanel.change_user_end.set()\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_end)\r\n users.set(admin)\r\n new_code_balance = code(new_balance)\r\n await message.reply(f\"Баланс пользователя {username} успешно обновлен на {new_code_balance}🔘\", reply_markup=admue, parse_mode=\"MarkdownV2\")\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования ФИО пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"Изменить ФИО\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_change_user_fullname(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_fullnamestart.set()\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_fullnamestart)\r\n users.set(admin)\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_fullnamestart)\r\nasync def admin_change_user_fullname_handler(message: types.Message, state: FSMContext):\r\n username = message.text # получаем username\r\n try:\r\n userinfo = users.get(username)\r\n await state.update_data(username=username) # сохраняем username в данных состояния\r\n await AdminPanel.change_user_fullname.set() # переходим к следующему состоянию\r\n await message.reply(\"Введите новое ФИО пользователя\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.change_user_fullname)\r\n users.set(user)\r\n except IndexError:\r\n await message.reply(\"Такого пользователя нет в базе данных\", reply_markup=admue)\r\n await state.finish()\r\n await AdminPanel.change_user_start.set()\r\n return\r\n # Проверяем, есть ли такой пользователь\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_fullname)\r\nasync def admin_change_user_fullname_handler(message: types.Message, state: FSMContext):\r\n new_fullname = message.text # получаем новое ФИО\r\n chat_id = message.chat.id\r\n admin = users.get(chat_id)\r\n detector = is_dirt()\r\n cnt = 0\r\n FIO = new_fullname.split()\r\n for word in range(len(FIO)):\r\n if FIO[word][0].istitle():\r\n cnt += 1\r\n if new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO):\r\n data = await state.get_data()\r\n username = data.get(\"username\") # получаем сохраненный username из данных состояния\r\n userinfo = users.get(username)\r\n userinfo.full_name = new_fullname\r\n admin.user_state = str(AdminPanel.change_user_end)\r\n users.set(admin)\r\n users.set(userinfo)\r\n # Отправляем сообщение об успешном обновлении\r\n new_code_fullname = code(new_fullname)\r\n await message.reply(f\"ФИО пользователя {username} успешно обновлено на {new_code_fullname}\", reply_markup=admue, parse_mode='MarkdownV2')\r\n await state.finish()\r\n await AdminPanel.change_user_end.set()\r\n else:\r\n await message.reply(\"Неккоректное ФИО\")\r\n await AdminPanel.change_user_fullname.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.change_user_fullname)\r\n users.set(user)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования возраста пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"Изменить возраст\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_change_user_age(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_age.set()\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_age)\r\n users.set(admin)\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_age)\r\nasync def admin_change_user_age_handler(message: types.Message, state: FSMContext):\r\n username = message.text # получаем username\r\n try:\r\n userinfo = users.get(username)\r\n await state.update_data(username=username) # сохраняем username в данных состояния\r\n await AdminPanel.change_user_agestart.set() # переходим к следующему состоянию\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_agestart)\r\n users.set(admin)\r\n await message.reply(\"Введите новый возраст пользователя\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n \r\n # Проверяем, есть ли такой пользователь\r\n except IndexError:\r\n await message.reply(\"Такого пользователя нет в базе данных\", reply_markup=admue)\r\n await state.finish()\r\n await AdminPanel.change_user_start.set()\r\n return\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_agestart)\r\nasync def admin_change_user_age_handler(message: types.Message, state: FSMContext):\r\n new_age = message.text # получаем новый возраст\r\n try:\r\n new_age = int(new_age)\r\n except ValueError as e:\r\n await message.reply(\"Ваш возраст неккоректен. Возраст не должен содержать буквы!\")\r\n print(f\"Error validation age{e}\")\r\n if new_age < 12 or new_age > 122:\r\n await message.reply(\"Ваш возраст неккоректен. Возраст должен лежать в диапазоне от 12 - 122\")\r\n await AdminPanel.change_user_agestart.set()\r\n else:\r\n data = await state.get_data()\r\n username = data.get(\"username\") # получаем сохраненный username из данных состояния\r\n user = users.get(username)\r\n user.age = new_age\r\n user.user_state = str(AdminPanel.change_user_end)\r\n users.set(user)\r\n # Отправляем сообщение об успешном обновлении\r\n new_code_age = code(new_age)\r\n await message.reply(f\"Возраст пользователя {username} успешно обновлен на {new_code_age}\", reply_markup=admue, parse_mode='MarkdownV2')\r\n await state.finish()\r\n await AdminPanel.change_user_end.set()\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система промокодов\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"🗝️Промокоды\", state=AdminPanel.admin_menu)\r\nasync def admin_promocodes(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_menu)\r\n users.set(user)\r\n await message.reply(\"Вы вошли в меню промокодов\", reply_markup=admpromo)\r\n\r\n@dp.message_handler(text=\"Добавить QR\", state=AdminPanel.promo_menu)\r\nasync def admin_promocodes_addqr(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_qrstart.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_qrstart)\r\n users.set(user)\r\n await message.reply(\"Введите промокод, который хотите помстить в QR-код\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.promo_qrstart)\r\nasync def admin_promocodes_add_qr_set(message: types.Message, state: FSMContext):\r\n promo_code = message.text\r\n promocode_data = supabase.table('Promocode').select('cost').eq('promo', promo_code).execute()\r\n\r\n if not promocode_data.data or promocode_data.data[0]['cost'] == 0:\r\n await message.reply(\"Такого промокода не существует или лимит его использования исчерпан\", reply_markup=admpromo)\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n return\r\n\r\n qr = qrcode.make(promo_code)\r\n\r\n byte_io = BytesIO()\r\n qr.save(byte_io, 'PNG')\r\n byte_io.seek(0)\r\n\r\n await message.reply_photo(byte_io, caption=\"Вот QR\\\\-код для промокода \" + code(promo_code) , reply_markup=admpromo, parse_mode=\"MarkdownV2\")\r\n\r\n byte_io.close()\r\n\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text=\"Действующие промокоды\", state=AdminPanel.promo_menu)\r\nasync def admin_promocodes_check(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_check_promocode.set()\r\n chat_id = message.chat.id\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_check_promocode)\r\n\r\n promos = supabase.table('Promocode').select('promo', 'last', 'cost').filter('last', 'gt', 0).order('cost', desc=True).execute()\r\n\r\n promo_text = \"📝 Действующие промокоды:\\n\\n\"\r\n\r\n for promo in promos.data:\r\n codee = promo['promo']\r\n uses_left = promo['last']\r\n cost = promo['cost']\r\n\r\n promo_text += (code(f\"{codee}\") + f\" \\\\- {uses_left} исп\\\\.\\\\, {cost} поинтов\\n\")\r\n\r\n await bot.send_message(chat_id, promo_text, parse_mode=\"MarkdownV2\", reply_markup=admpromo)\r\n supabase.table('Promocode').delete().eq('last', 0).execute()\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text='Нэйминг-промо', state=AdminPanel.promo_menu)\r\nasync def get_naming_promo(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите имя промокода\", reply_markup=types.ReplyKeyboardRemove())\r\n user = users.get(message.chat.id)\r\n await AdminPanel.promo_addpromo_naming.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming)\r\nasync def get_naming_promo_usages(message: types.Message, state:FSMContext):\r\n name = str(message.text)\r\n await message.reply(\"Введите количество использований:\")\r\n await state.update_data(name=name)\r\n await AdminPanel.promo_addpromo_naming_cost.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming_cost)\r\nasync def get_naming_promo_cost(message: types.Message, state:FSMContext):\r\n usages = int(message.text)\r\n await message.reply(\"Введите цену промокода:\")\r\n await state.update_data(usages=usages)\r\n await AdminPanel.promo_addpromo_naming_end.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming_end)\r\nasync def create_naming_promo(message: types.Message, state:FSMContext):\r\n cost = int(message.text)\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r\n usages = data.get(\"usages\")\r\n codee = generate_naming_promo(name, usages, cost)\r\n usages_code = code(usages)\r\n code_cost = code(cost)\r\n texting = (f'Промокод '+ code(f\"{codee}\") + f' с {usages_code} использованиями и ценой {code_cost}🔘 создан')\r\n await message.reply(texting, reply_markup=admpromo, parse_mode= \"MarkdownV2\")\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text ='Добавить промокод',state=AdminPanel.promo_menu)\r\nasync def get_usages(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите количество использований:\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.promo_addpromousages.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromousages)\r\nasync def get_cost(message: types.Message, state: FSMContext):\r\n usages = int(message.text)\r\n await message.reply(\"Введите цену промокода:\")\r\n await state.update_data(usages=usages)\r\n await AdminPanel.promo_addpromocost.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromocost)\r\nasync def create_promo(message: types.Message, state: FSMContext):\r\n data = await state.get_data()\r\n usages = data.get(\"usages\")\r\n cost = int(message.text)\r\n codee = generate_promo(usages, cost)\r\n usages_code = code(usages)\r\n cost_code = code(cost)\r\n texting = (f'Промокод ' + code(f\"{codee}\") + f' с {usages_code} использованиями и ценой {cost_code}🔘 создан')\r\n await message.reply(texting, reply_markup=admpromo, parse_mode=\"MarkdownV2\")\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text=\"Удалить промокод\", state=AdminPanel.promo_menu)\r\nasync def delete_promo(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_delpromo.set()\r\n await message.reply(\"Введите промокод для удаления\", reply_markup=types.ReplyKeyboardRemove())\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_delpromo)\r\n users.set(user)\r\n\r\n\r\n@dp.message_handler(state=AdminPanel.promo_delpromo)\r\nasync def delete_promo_handler(message: types.Message, state: FSMContext):\r\n codee = message.text\r\n deleted = supabase.table('Promocode').delete().match({'promo': codee}).execute()\r\n\r\n if not deleted.data:\r\n # ничего не удалено\r\n await message.reply(\"Промокод не найден\", reply_markup=admpromo)\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r\n return\r\n\r\n # удаление прошло успешно\r\n codee_code = code(codee)\r\n await message.reply(f\"Промокод {codee_code} удален\", reply_markup=admpromo, parse_mode='MarkdownV2')\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.promo_menu)\r\n\r\n# Хедлер для бека в меню админа\r\n@dp.message_handler(text=\"⬅️Админ меню\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end, AdminPanel.promo_menu])\r\nasync def admin_backtomenu(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система прав\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"👨‍🚀Организаторы\", state=AdminPanel.admin_menu)\r\nasync def give_ruleskbm(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.rules)\r\n users.set(user)\r\n await message.reply(\"Вы попали в раздел для выдачи права создания заданий пользователям. Нажмите на кнопку и следуйте указаниям.\", reply_markup=ruleskbm)\r\n\r\n@dp.message_handler(text=\"Выдать права\",state = AdminPanel.rules)\r\nasync def give_rules(message: types.Message, state: FSMContext):\r\n await AdminPanel.rules_addmaker.set()\r\n await message.reply(\"Введите @username пользователя которому хотите выдать права ивент мейкера\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.rules_addmaker)\r\nasync def give_rules_start(message: types.Message, state: FSMContext):\r\n tgusr = message.text\r\n\r\n user_data = supabase.table('UsersData').select('chat_id').eq('tgusr', tgusr).execute()\r\n\r\n if not user_data.data:\r\n await message.reply(\"Пользователя с таким @username не существует\", reply_markup=ruleskbm)\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n return\r\n\r\n chat_id = user_data.data[0]['chat_id']\r\n\r\n with open('roles.json', 'r') as f:\r\n roles = json.load(f)\r\n\r\n roles['event_makers'].append(str(chat_id))\r\n\r\n with open('roles.json', 'w') as f:\r\n json.dump(roles, f)\r\n\r\n await message.reply(\"Права выданы успешно\", reply_markup=ruleskbm)\r\n\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text=\"Забрать права\", state=AdminPanel.rules)\r\nasync def del_from_eventers(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules_delmaker.set()\r\n await message.reply(\"Введите @username пользователя у котрого хотите забрать права\",reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.rules_delmaker)\r\nasync def del_from_eventers_start(message: types.Message, state: FSMContext):\r\n tgusr = message.text\r\n\r\n user_data = supabase.table('UsersData').select('chat_id').eq('tgusr', tgusr).execute()\r\n\r\n if not user_data.data:\r\n await message.reply(\"Пользователя с таким username не существует\", reply_markup=ruleskbm)\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n return\r\n\r\n chat_id = user_data.data[0]['chat_id']\r\n\r\n with open('roles.json', 'r') as f:\r\n roles = json.load(f)\r\n\r\n if str(chat_id) in roles['event_makers']:\r\n roles['event_makers'].remove(str(chat_id))\r\n\r\n with open('roles.json', 'w') as f:\r\n json.dump(roles, f)\r\n\r\n await message.reply(\"Права успешно удалены\", reply_markup=ruleskbm)\r\n\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text='Действующие права', state=AdminPanel.rules)\r\nasync def show_rules(message: types.Message, state: FSMContext):\r\n\r\n with open('roles.json', 'r') as f:\r\n roles = json.load(f)\r\n\r\n event_makers = roles['event_makers']\r\n\r\n rules_text = \"📝 Пользователи с правами ивент-мейкера:\\n\\n\"\r\n\r\n for chat_id in event_makers:\r\n user_data = supabase.table('UsersData').select('tgusr').eq('chat_id', int(chat_id)).execute()\r\n if user_data.data:\r\n username = user_data.data[0]['tgusr']\r\n rules_text += f\"{username} - {chat_id}\\n\"\r\n\r\n await message.reply(rules_text)\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text=\"⬅️Админ меню\", state=AdminPanel.rules)\r\nasync def back_from_rules(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n\r\n@dp.message_handler(text=\"⬅️Меню\", state=AdminPanel.admin_menu)\r\nasync def admin_menu_back(message: types.Message, state: FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(MenuStates.waiting_for_profile)\r\n users.set(user)\r\n await message.reply(\"Вы вышли из панели администратора\", reply_markup=rkbm)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система админ рейтинга\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r\n@dp.message_handler(text=\"📊Рейтинг\", state=AdminPanel.admin_menu)\r\nasync def admin_rating_board(message: types.Message, state: FSMContext):\r\n await AdminPanel.rating_board.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.rating_board)\r\n users.set(user)\r\n await show_rating(message.chat.id)\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система заданий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text=\"📝Создать задание\", state=AdminPanel.admin_menu)\r\nasync def admin_task_maker(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вошли в редактор заданий\", reply_markup=admtasks)\r\n await AdminPanel.taskmenu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.taskmenu)\r\n users.set(user)\r\n\r\n@dp.message_handler(text='Удалить коллекцию', state=AdminPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите пожалуйста имя коллекции для её удаления\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.taskmenu_collection_delete_select.set()\r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_collection_delete_select)\r\nasync def delete_survey_handler(message: types.Message, state: FSMContext):\r\n codee = message.text\r\n deleted = supabase.table('TaskCollection').delete().match({'name': codee}).execute()\r\n\r\n if not deleted.data:\r\n # ничего не удалено\r\n await message.reply(\"Такой коллекции нет\", reply_markup=admtasks)\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r\n return\r\n\r\n # удаление прошло успешно\r\n codee_code = code(codee)\r\n await message.reply(f\"Коллекция {codee_code} удалена\", reply_markup=admtasks, parse_mode='MarkdownV2')\r\n await AdminPanel.taskmenu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.taskmenu)\r\n\r\n@dp.message_handler(text='Список коллекций', state=AdminPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await AdminPanel.taskmenu_collection_list.set()\r\n chat_id = message.chat.id\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.taskmenu_collection_list)\r\n\r\n promos = supabase.table('TaskCollection').select('name', 'url').filter('name', 'gt', 0).order('name',desc=True).execute()\r\n\r\n promo_text = \"📝 Действующие формы опросов:\\n\\n\"\r\n\r\n for promo in promos.data:\r\n name = promo['name']\r\n url = promo['url']\r\n\r\n name_parsed = f'{name}'\r\n url_parsed = f'Ссылка'\r\n promo_text += (name_parsed + f\" {url_parsed} \\n\")\r\n\r\n await bot.send_message(chat_id, promo_text, parse_mode=types.ParseMode.HTML, reply_markup=admtasks, disable_web_page_preview=True)\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r\n user.user_state = str(AdminPanel.taskmenu)\r\n\r\n\r\n@dp.message_handler(text=\"Создать коллекцию\", state=AdminPanel.taskmenu)\r\nasync def admin_make(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id,f\"Введите название коллекции заданий:\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.taskmenu_namewait.set()\r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_namewait)\r\nasync def admin_taskmenu_namewait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n name = message.text\r\n tasks_name = []\r\n response = supabase.table('TaskCollection').select('*').execute()\r\n for name_table in response.data:\r\n tasks_name.append(name_table['name'])\r\n if name in tasks_name:\r\n await bot.send_message(chat_id,\"Введенное имя уже существует, введите другое\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.AdminPanel.taskmenu.set()\r\n else:\r\n await bot.send_message(chat_id, \"Введите описание коллекции заданий:\")\r\n await state.update_data(name=name)\r\n await AdminPanel.taskmenu_descriptionwait.set()\r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_descriptionwait)\r\nasync def admin_taskmenu_descriptionwait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n description = message.text\r\n await bot.send_message(chat_id, \"Отправте фотографию мероприятия:\")\r\n await state.update_data(description = description)\r\n await AdminPanel.taskmenu_photowait.set()\r\n\r\n@dp.message_handler(content_types= types.ContentType.PHOTO, state = AdminPanel.taskmenu_photowait)\r\nasync def admin_taskmenu_photowait(message: types.Message , state: FSMContext):\r\n chat_id = message.chat.id\r\n photo = message\r\n try:\r\n await state.update_data(photo = photo.photo[2].file_id)\r\n await bot.send_message(chat_id,\"Введите количество вопросов в коллекции:\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n except Exception as e:\r\n await bot.send_message(chat_id,\"Произошла ошибка, отправьте пожалуйста фотографию в хорошем качестве.\")\r\n await AdminPanel.taskmenu_photowait.set()\r\n \r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_collection_counterwait)\r\nasync def admin_taskmenu_collection_counterwait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n try: \r\n counter = int(message.text)\r\n except ValueError:\r\n await bot.send_message(chat_id,\"Введенное значение должно быть числом > 0\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n if counter <= 0:\r\n await bot.send_message(chat_id,\"Введенное значение должно быть числом > 0\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n else:\r\n await state.update_data(counter = counter)\r\n await bot.send_message(chat_id,\"Коллекция создана успешно! Перейдите пожалуйста, к составлению заданий!⬇️\",reply_markup=surveywebapp)\r\n await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=AdminPanel.taskmenu_collection_surveywebapp)\r\nasync def survey_web_app(message: types.ContentType.WEB_APP_DATA , state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n counter = data.get(\"counter\")\r\n querylist = data.get(\"querylist\")\r\n numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r\n numberPoints:dict = {}\r\n if rightAnswers == None:\r\n rightAnswers:dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r\n message.text = message.web_app_data.data\r\n data = json.loads(message.text)\r\n data['questionId'] = await generate_id_for_survey(10)\r\n new_json_data = json.dumps(data)\r\n new_json_data = ast.literal_eval(new_json_data)\r\n data = await state.get_data()\r\n name = data.get(\"name\") \r\n numberPoints.update({new_json_data[\"questionId\"]:new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints = numberPoints)\r\n await state.update_data(rightAnswers = rightAnswers)\r\n querylist.append(new_json_data)\r\n await state.update_data(querylist = querylist)\r\n if counter > 1:\r\n await bot.send_message(chat_id, \"Пожалуйста, заполните следующий вопрос\",reply_markup=surveywebapp)\r\n await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n counter -= 1\r\n await state.update_data(counter = counter)\r\n else:\r\n await AdminPanel.taskmenu.set()\r\n await bot.send_message(chat_id, \"Опрос успешно создан!\", reply_markup=admtasks)\r\n querydict = {\"surveyData\":querylist}\r\n querydict_dump: str = json.dumps(querydict)\r\n url = url + querydict_dump \r\n url = url.replace(' ','%20')\r\n url = url.replace('\"', '%22')\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r\n description = data.get(\"description\")\r\n photo = data.get(\"photo\")\r\n supabase.table('TaskCollection').insert({'name': name, 'description': description, 'photo': photo, 'counter': counter, 'url': url,'numberPoints':numberPoints, 'rightAnswers':rightAnswers}).execute()\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r\n\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=AdminPanel.taskmenu)\r\nasync def back_from_rules(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система регистрации\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r\n@dp.message_handler(Command('start'), state=None)\r\nasync def start_command(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user = users.get(id=chat_id) # Получение состояния пользователя из Supabase\r\n\r\n if user and not (user.full_name == \"\"):\r\n # Пользователь уже зарегистрирован\r\n await MenuStates.waiting_for_profile.set()\r\n await message.reply(\"Чтобы просмотреть свой профиль, нажмите кнопку 'Профиль'.\", reply_markup=rkbm)\r\n else:\r\n user = user if user else User(chat_id=chat_id)\r\n\r\n # Сохранение состояния пользователя\r\n telegram_name = message.from_user.username\r\n\r\n user.user_state = str(RegistrationStates.waiting_for_age)\r\n if telegram_name == None:\r\n user.tgusr = \"У пользователя нет имени\"\r\n else:\r\n user.tgusr = \"@\" + telegram_name\r\n users.set(user)\r\n\r\n # Регистрация нового пользователя\r\n await message.reply(\"Привет! Давай зарегистрируемся! Введите ваш возраст:\")\r\n # Установка состояния \"waiting_for_age\" для пользователя\r\n await RegistrationStates.waiting_for_age.set()\r\n\r\n@dp.message_handler(state=RegistrationStates.waiting_for_age)\r\nasync def handle_age(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user_age = message.text\r\n try:\r\n user_age = int(user_age)\r\n except ValueError as e:\r\n await bot.send_message(chat_id, \"Ваш возраст неккоректен. Возраст не должен содержать буквы!\")\r\n print(f\"Error validation age{e}\")\r\n if int(user_age) < 12 or int(user_age) > 122:\r\n await bot.send_message(chat_id, \"Ваш возраст неккоректен. Попробуйте еще раз\")\r\n await RegistrationStates.waiting_for_age.set()\r\n else:\r\n user = users.get(chat_id)\r\n user.age = user_age\r\n # Сохранение возраста пользователя в DTO\r\n print(f\"Возраст пользователя {chat_id}: {user_age}\")\r\n\r\n # Переход к следующему состоянию \"waiting_for_gender\"\r\n await RegistrationStates.waiting_for_gender.set()\r\n # Сохранение состояния пользователя\r\n user.user_state = str(RegistrationStates.waiting_for_gender)\r\n users.set(user)\r\n\r\n # Запрашиваем пол пользователя\r\n await message.reply(\"Введите ваш пол (Male/Female):\", reply_markup=ikbg)\r\n\r\n@dp.message_handler(state=RegistrationStates.waiting_for_gender)\r\nasync def handle_gender(message: types.Message, state: FSMContext):\r\n gender = message.text.lower()\r\n if gender not in [\"мужской\", \"женский\"]:\r\n await message.reply(\"Пол указан некорректно. Выберите пол кнопками ниже:\", reply_markup=ikbg)\r\n return\r\n\r\n@dp.callback_query_handler(state=RegistrationStates.waiting_for_gender)\r\nasync def handle_gender_callback(query: types.CallbackQuery, state: FSMContext):\r\n chat_id = query.message.chat.id\r\n gender = query.data.lower()\r\n user = users.get(chat_id)\r\n user.gender = bool(int(gender))\r\n print(f\"Пол пользователя {chat_id}: {gender}\")\r\n\r\n # Запрашиваем имя пользователя\r\n await query.message.reply(\"Введите ваше ФИО:\", reply_markup = helpinlinereg)\r\n\r\n # Переход к следующему состоянию \"waiting_for_name\"\r\n await RegistrationStates.waiting_for_name.set()\r\n user.user_state = str(RegistrationStates.waiting_for_name)\r\n users.set(user)\r\n\r\n@dp.message_handler(state=RegistrationStates.waiting_for_name)\r\nasync def handle_name(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n name = message.text\r\n detector = is_dirt()\r\n FIO = name.split()\r\n cnt = 0\r\n for word in range(len(FIO)):\r\n if FIO[word][0].istitle():\r\n cnt += 1\r\n if name.replace(\" \", \"\").isalpha() and len(name) < 40 and len(name) >= 5 and detector(name) == False and cnt == len(FIO):\r\n user = users.get(chat_id)\r\n user.full_name = name\r\n user.user_state = str(RegistrationStates.final_reg) \r\n users.set(user)\r\n\r\n print(f\"Имя пользователя {chat_id}: {name}\")\r\n # Отправка сообщения о успешной регистрации\r\n if str(message.from_user.username) == 'None':\r\n await bot.send_message(chat_id,\r\n f\"Регистрация успешно завершена с неточностями, {user.full_name}!У вас нет имени пользователя Телеграм, связь администрации с вами может быть усложнена, вам необходимо указать в вашем профиле телеграма ваше имя пользователя и перерегистрироваться в боте.\",\r\n reply_markup=rkbm)\r\n else:\r\n await bot.send_message(chat_id, f\"Регистрация успешно завершена, {user.full_name}!\", reply_markup=rkbm)\r\n await state.finish()\r\n await MenuStates.waiting_for_profile.set()\r\n else:\r\n await bot.send_message(chat_id, f\"Пожалуйста, введите корректно свое ФИО\")\r\n await RegistrationStates.waiting_for_name.set()\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Кнопкни главного меню\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r\n@dp.message_handler(state=MenuStates.waiting_for_profile)\r\nasync def handle_waiting_for_profile(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n select = message.text\r\n if select == \"👤Профиль\":\r\n await MenuStates.profile.set()\r\n await handle_profile(message, state)\r\n elif select == \"📊Рейтинг\":\r\n await MenuStates.rating.set()\r\n await user_rating_board(message, state)\r\n elif select ==\"❓Помощь\":\r\n await MenuStates.help.set()\r\n await handle_help(message,state)\r\n elif select == \"📆Календарь событий\":\r\n await MenuStates.calendar.set()\r\n await handle_calendar(message, state)\r\n elif select == \"📝Задания\":\r\n await MenuStates.tasks.set()\r\n counter = 0\r\n await state.update_data(counter=counter)\r\n await handle_tasks(message, state)\r\n elif select == \"🗝️Промокоды\":\r\n await MenuStates.promocode.set()\r\n await bot.send_message(chat_id, \"Вы попали в меню работы с промокодами\", reply_markup=promo_kb)\r\n else:\r\n await message.reply(\"Нет такого варианта выбора!\", reply_markup=rkbm)\r\n\r\n@dp.callback_query_handler(text=\"cancel_user\", state=[ProlfileStates.edit_profile_name, ProlfileStates.edit_profile_age])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню редактирования профиля.\", reply_markup=menuedit)\r\n await ProlfileStates.edit_profile.set()\r\n\r\n@dp.callback_query_handler(text='back_to_menu', state = MenuStates.promocodestart)\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню промокодов.\", reply_markup=promo_kb)\r\n await MenuStates.promocode.set()\r\n\r\n@dp.callback_query_handler(text=\"cancel_user_help\", state=MenuStates.help_end)\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню помощи.\", reply_markup=userhelp)\r\n await MenuStates.help_cancel.set()\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система редактирования профиля\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r\n@dp.message_handler(state=ProlfileStates.edit_profile)\r\nasync def handle_waiting_for_edit_profile(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n select = message.text\r\n if select == \"Изменить ФИО\":\r\n await ProlfileStates.edit_profile_name.set()\r\n await bot.send_message(chat_id, \"Вы выбрали редактирование ФИО\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(chat_id, \"Введите новое ФИО \", reply_markup=cancel_button_for_user)\r\n elif select == \"Изменить возраст\": \r\n await ProlfileStates.edit_profile_age.set()\r\n await bot.send_message(chat_id, \"Вы выбрали редактирование возраста\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(chat_id, \"Введите новый возраст \", reply_markup=cancel_button_for_user)\r\n elif select == \"⬅️Назад в меню\":\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Вы вышли в меню! \", reply_markup=rkbm)\r\n else:\r\n await message.reply(\"Нет такого варианта выбора!\")\r\n\r\n@dp.message_handler(state=ProlfileStates.edit_profile_name)\r\nasync def edit_name_profile(message: types.Message, state:FSMContext):\r\n new_fullname = message.text \r\n chat_id = message.chat.id\r\n detector = is_dirt()\r\n FIO = new_fullname.split()\r\n cnt = 0\r\n for word in range(len(FIO)):\r\n if FIO[word][0].istitle():\r\n cnt += 1\r\n if new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO):\r\n user = users.get(chat_id)\r\n user.full_name = new_fullname\r\n user.user_state = str(ProlfileStates.edit_profile_name)\r\n users.set(user)\r\n await message.reply(f\"Имя успешно обновлено на : {new_fullname}\", reply_markup=rkbm)\r\n await state.finish()\r\n await MenuStates.waiting_for_profile.set()\r\n else:\r\n await bot.send_message(chat_id, f\"Пожалуйста, введите корректно свое ФИО, например: Иванов Иван Иванович\")\r\n await ProlfileStates.edit_profile_name.set()\r\n\r\n@dp.message_handler(state=ProlfileStates.edit_profile_age)\r\nasync def edit_age_profile(message: types.Message, state: FSMContext):\r\n new_age = message.text # получаем новый возраст\r\n try:\r\n new_age = int(new_age)\r\n except ValueError as e:\r\n await message.reply(\"Ваш возраст неккоректен. Возраст не должен содержать буквы!\")\r\n print(f\"Error validation age{e}\")\r\n if new_age < 12 or new_age > 122:\r\n await message.reply(\"Ваш возраст неккоректен. Возраст должен лежать в диапазоне от 12 - 122\")\r\n await ProlfileStates.edit_profile_age.set()\r\n else:\r\n chat_id = message.chat.id\r\n user = users.get(chat_id)\r\n user.age = new_age\r\n user.user_state = str(ProlfileStates.edit_profile_age)\r\n users.set(user)\r\n # Отправляем сообщение об успешном обновлении\r\n await message.reply(f\"Возраст успешно обновлен на {new_age}\", reply_markup=rkbm)\r\n await state.finish()\r\n await MenuStates.waiting_for_profile.set()\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система промокодов\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r\n@dp.message_handler(text=\"🗝️Ввести промокод\", state=MenuStates.promocode)\r\nasync def enter_promocode(message: types.Message):\r\n await bot.send_message(message.chat.id, \"Введите , пожалуйста , ваш промокод сообщением или отправьте боту изображение QR-кода\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(message.chat.id, \"Если хотите вернуться , то нажмите сюда\", reply_markup=cancel_button_to_main)\r\n await MenuStates.promocodestart.set()\r\n\r\n@dp.message_handler(content_types=['photo'], state=MenuStates.promocodestart)\r\nasync def check_qr_code(message: types.Message, state: FSMContext):\r\n\r\n photo_bytes = await message.photo[-1].download(destination=io.BytesIO())\r\n photo_bytes = photo_bytes.getvalue()\r\n\r\n photo_image = PIL.Image.open(io.BytesIO(photo_bytes))\r\n\r\n qr_code = pyzbar.decode(photo_image)\r\n\r\n if qr_code:\r\n qr_code = qr_code[0].data.decode()\r\n\r\n message.text = qr_code\r\n await check_promocode(message, state)\r\n\r\n@dp.message_handler(state=MenuStates.promocodestart)\r\nasync def check_promocode(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n promocode = message.text\r\n poro = promocode\r\n\r\n user = users.get(chat_id)\r\n user_balance = user.balance\r\n\r\n promocode_data = supabase.table('Promocode').select('last', 'cost').eq('promo', promocode).execute()\r\n\r\n if not promocode_data.data:\r\n await message.reply(\"Промокод не найден!\", reply_markup=promo_kb)\r\n await state.finish()\r\n await MenuStates.promocode.set()\r\n user.user_state = str(MenuStates.promocode) # Меню стейт\r\n users.set(user)\r\n return\r\n\r\n promocode = promocode_data.data[0]\r\n\r\n used_promocode_data = supabase.table('UsedPromocode').select('chat_id').eq('promo', poro).eq('chat_id', chat_id).execute()\r\n\r\n if used_promocode_data.data:\r\n # уже использовал\r\n await message.reply(\"Вы уже использовали этот промокод!\", reply_markup=promo_kb)\r\n await state.finish()\r\n await MenuStates.promocode.set()\r\n user.user_state = str(MenuStates.promocode) # Меню стейт\r\n users.set(user)\r\n return\r\n\r\n if promocode['last'] <= 0:\r\n await message.reply(\"Срок действия промокода истек!\", reply_markup=promo_kb)\r\n await state.finish()\r\n await MenuStates.promocode.set()\r\n user.user_state = str(MenuStates.promocode) # Меню стейт\r\n users.set(user)\r\n return\r\n\r\n new_balance = user_balance + promocode['cost']\r\n\r\n new_last = promocode['last'] - 1\r\n \r\n user.balance = new_balance\r\n # Добавим запись о том, что промокод был использован данным пользователем\r\n supabase.table('Promocode').update({'last': new_last}).eq('promo', poro).execute()\r\n expression = ''.join(random.choices(string.ascii_letters, k=8))\r\n supabase.table('UsedPromocode').insert({'id' : expression,'promo': poro, 'chat_id': str(chat_id)}).execute()\r\n\r\n await message.reply(f\"Ваш баланс пополнен на {code(promocode['cost'])}🔘\\\\!\", reply_markup=promo_kb, parse_mode='MarkdownV2')\r\n\r\n await state.finish()\r\n await MenuStates.promocode.set()\r\n user.user_state = str(MenuStates.promocode) # Меню стейт\r\n users.set(user)\r\n\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=MenuStates.promocode)\r\nasync def back_from_promo_menu(message: types.Message, state: FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(message.chat.id, \"Вы вернулись в главное меню\", reply_markup=rkbm)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система рейтинга(Google sheets)\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r\n@dp.message_handler(text =\"📊Рейтинг\", state=MenuStates.waiting_for_profile)\r\nasync def user_rating_board(message: types.Message, state: FSMContext):\r\n await MenuStates.rating.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(MenuStates.rating)\r\n users.set(user)\r\n await show_user_rating(message.chat.id)\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(MenuStates.waiting_for_profile)\r\n users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система отображения профиля\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(state=MenuStates.profile)\r\nasync def handle_profile(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n select = message.text\r\n if select == \"👤Профиль\":\r\n # Запрос данных пользователя из базы данных Supabase\r\n user = users.get(chat_id)\r\n pseudo = user.full_name\r\n gender = user.gender\r\n age = user.age\r\n balance = user.balance\r\n userlist = supabase.table('UsersData').select('chat_id').order('balance', desc=True).execute().data\r\n counter = 0\r\n while userlist[counter]['chat_id'] != chat_id:\r\n counter+=1\r\n if gender:\r\n gender = \"🙋‍♂️\"\r\n image = os.environ.get(\"MALE\")\r\n else:\r\n gender = \"🙋‍♀️\"\r\n image = os.environ.get(\"FEMALE\")\r\n # Формирование сообщения профиля пользователя\r\n profile_message = f\"Добро пожаловать в ваш профиль:\\n\\n\" \\\r\n f\"{gender}{pseudo}, {age} лет\\n└Ваше место в топе: {counter+1}\\n\\n\" \\\r\n f\"💰Баланс: {balance}🔘 поинтов\\n└Мероприятий посещено: ?\"\r\n await bot.send_photo(chat_id=chat_id, photo=image, caption=profile_message, reply_markup=profilebuttons)\r\n # Обработчик нажатия на кнопку удалить профиль\r\n elif select == \"❌Удалить профиль\":\r\n await bot.send_message(chat_id, \"Вы действительно хотите удалить свой профиль?\", reply_markup=confirmbutton)\r\n await ProlfileStates.delete_profile.set()\r\n elif select == \"⚙️Редактировать профиль\":\r\n await ProlfileStates.edit_profile.set()\r\n await bot.send_message(chat_id, \"Выберите какие данные хотите отредактировать! \", reply_markup=menuedit)\r\n elif select == \"⬅️Назад в меню\":\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Вы вернулись в меню!\", reply_markup=rkbm)\r\n \r\n else:\r\n await bot.send_message(chat_id, \"Некорректный выбор.\")\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система удаления профиля\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n \r\n@dp.message_handler(state=ProlfileStates.delete_profile)\r\nasync def del_profile(message: types.Message, state: FSMContext):\r\n select = message.text\r\n chat_id = message.chat.id\r\n tgname = message.from_user.username\r\n if tgname == None and select == \"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\":\r\n user = users.get(chat_id)\r\n users.delete(user)\r\n supabase.table('UsedPromocode').delete().eq('chat_id', chat_id).execute()\r\n supabase.table('Passd').delete().eq('chat_id', chat_id).execute()\r\n await bot.send_message(chat_id, \"Ваш профиль был удален!\", reply_markup=types.ReplyKeyboardRemove())\r\n await state.finish()\r\n elif tgname != None and select == \"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\":\r\n tgname = \"@\" + tgname\r\n user = users.get(tgname)\r\n users.delete(user)\r\n supabase.table('Passd').delete().eq('chat_id', chat_id).execute()\r\n supabase.table('UsedPromocode').delete().eq('chat_id', chat_id).execute()\r\n supabase.table('Report').delete().eq('tgusr',tgname).execute()\r\n await bot.send_message(chat_id, \"Ваш профиль был удален!\", reply_markup=types.ReplyKeyboardRemove())\r\n await state.finish()\r\n elif select == \"⬅️Назад в меню\":\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Вы вернулись в меню!\", reply_markup=rkbm)\r\n else:\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Некорректный выбор, вы вернулись в меню!\", reply_markup=rkbm)\r\n\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система отображения мероприятий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n \r\n\r\n@dp.message_handler(state=MenuStates.calendar)\r\nasync def handle_calendar(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n response = supabase.table('Event').select('*').limit(5).execute()\r\n events_message = 'Мероприятия:'\r\n for event in response.data:\r\n url = 'https://leader-id.ru/events/'\r\n url = url +str(event['id'])\r\n name = event['full_name']\r\n date_start = event['date_start'][:16]\r\n date_end = event['date_end']\r\n date = date_start + \"-\" + date_end[11:16]\r\n print(date)\r\n events_message += f' \\n' \\\r\n f\"[{name}]({url}) \\n\" \\\r\n f\"⏱{date} \\n\" \\\r\n f'------------------------------'\r\n await bot.send_message(chat_id, events_message,disable_web_page_preview=True,parse_mode=types.ParseMode.MARKDOWN)\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.calendar)\r\n \r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система тикетов для юзера\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(state=MenuStates.help)\r\nasync def handle_help(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, f\"Привет\\\\! Если у тебя есть какие\\\\-то проблемы или пожелания \\\\, то смелее нажимай на кнопку \" + f\"{code('📨Создать заявку')}\" + f\" и администратор с радостью тебе поможет\\\\! \", reply_markup=userhelp, parse_mode = 'MarkdownV2')\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.help)\r\n users.set(user)\r\n await MenuStates.help_start.set()\r\n user.user_state = str(MenuStates.help_start)\r\n\r\n\r\n@dp.message_handler(text=\"📨Создать заявку\", state=MenuStates.help_start)\r\nasync def handle_help_start(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n tgu = message.from_user.username\r\n if tgu == None:\r\n nome = 'имени пользователя'\r\n url = 'https://ru.the-hitech.net/7264375-how-to-create-a-username-on-telegram'\r\n await bot.send_message(chat_id,\r\n f\"У вас нет \" + f\"[{nome}]({url})\" + f\" телеграм!Укажите его в своём профиле и тогда администрация сможет вам помочь.\",\r\n reply_markup=rkbm, disable_web_page_preview=True,\r\n parse_mode=types.ParseMode.MARKDOWN)\r\n await MenuStates.waiting_for_profile.set()\r\n else:\r\n tgus = '@' + tgu\r\n tgus = '@' + tgu\r\n # Проверяем, есть ли у пользователя предыдущие заявки\r\n existing_reports = supabase.table('Report').select('tgusr').eq('tgusr', tgus).execute()\r\n if existing_reports.data:\r\n await message.reply(\"У вас уже есть открытая заявка. Пожалуйста, дождитесь ответа.\", reply_markup=rkbm)\r\n await state.finish()\r\n await MenuStates.waiting_for_profile.set()\r\n\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.help)\r\n users.set(user)\r\n return\r\n\r\n await bot.send_message(chat_id, \"Нажмите сюда чтобы вернуться\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(chat_id, \"Распишите здесь наиподробнейшим образом какой у вас возник вопрос или пожелание!\",reply_markup=cancel_button_for_user_help)\r\n\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.help_end)\r\n await MenuStates.help_end.set()\r\n\r\n@dp.message_handler(state=MenuStates.help_end)\r\nasync def handle_help_end(message: types.Message, state: FSMContext):\r\n try:\r\n Description = message.text\r\n chat_id = message.chat.id\r\n telegram_name = message.from_user.username\r\n tgusr = telegram_name\r\n\r\n tgusr = \"@\" + telegram_name\r\n\r\n # Вставка в БД\r\n supabase.table('Report').insert({'description': Description, 'tgusr': tgusr}).execute()\r\n\r\n # Подтверждающее сообщение\r\n await bot.send_message(chat_id, \"Заявка успешно отправлена! В ближайшее время с вами свяжется администратор.\", reply_markup=userhelp)\r\n\r\n except:\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, \"Извините, произошла ошибка при отправке заявки\", reply_markup=userhelp)\r\n await MenuStates.help_cancel.set()\r\n\r\n # Сброс состояния\r\n await state.finish()\r\n await MenuStates.help_ender.set()\r\n users.user_state=str(MenuStates.help)\r\n\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r\nasync def handle_help_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Вы вернулись в меню!\", reply_markup=rkbm)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система тикетов для админов\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📨Обращения\", state = AdminPanel.admin_menu)\r\nasync def handle_report(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, \"Нажата кнопка обращений, здесь вы можете просмотреть действующие обращения от пользователей или удалить уже решённые. \", reply_markup=admreport)\r\n await AdminPanel.ticket.set()\r\n user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.ticket)\r\n\r\n\r\n@dp.message_handler(text='Действующие обращения', state=AdminPanel.ticket)\r\nasync def check_tickets(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.ticket_check)\r\n\r\n # Запрос обращений из БД\r\n tickets = supabase.table('Report').select('tgusr', 'description').execute().data\r\n\r\n tickets_text = \"📨 Действующие обращения:\\n\\n\"\r\n\r\n for i, ticket in enumerate(tickets, 1):\r\n username = ticket['tgusr']\r\n description = ticket['description']\r\n tickets_text += f\"{i}. {username} - {description}\\n\"\r\n\r\n # Отправка сообщения\r\n await bot.send_message(chat_id, tickets_text)\r\n\r\n # Смена состояния\r\n await AdminPanel.ticket.set()\r\n user.user_state = str(AdminPanel.ticket)\r\n\r\n@dp.message_handler(text = \"Удалить обращение\", state=AdminPanel.ticket)\r\nasync def delete_ticket(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await AdminPanel.ticket_delete.set()\r\n user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.ticket_delete)\r\n await message.reply(\"Введите @username пользователя чтобы удалить его заявку\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.ticket_start.set()\r\n user.user_state = str(AdminPanel.ticket_delete)\r\n\r\n\r\n@dp.message_handler(state=AdminPanel.ticket_start)\r\nasync def handle_ticket_delete(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n username = message.text\r\n\r\n # Проверка, есть ли такой пользователь\r\n user_exists = supabase.table('Report').select('tgusr').eq('tgusr', username).execute()\r\n if not user_exists.data:\r\n await message.reply(\"Такого пользователя нет в базе данных\", reply_markup= admreport)\r\n await state.finish()\r\n await AdminPanel.ticket.set()\r\n return\r\n\r\n # Удаление обращения\r\n delete_query = supabase.table('Report').delete().eq('tgusr', username).execute()\r\n\r\n await message.reply(f\"Обращение пользователя {username} успешно удалено\", reply_markup=admreport)\r\n await AdminPanel.ticket.set()\r\n user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.ticket)\r\n\r\n\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=AdminPanel.ticket)\r\nasync def handle_tickets_back(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r\n user.user_state = str(AdminPanel.admin_menu)\r\n users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система заданий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📝Задания\", state=MenuStates.tasks)\r\nasync def handle_tasks(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n counter = data.get('counter')\r\n await state.update_data(counter = counter)\r\n task = supabase.table('TaskCollection').select('name','description','photo','url').execute().data[int(counter)]\r\n text = f\"{task['name']}\\n{task['description']}\"\r\n await state.update_data(name = task['name'])\r\n ikbmtasks = ReplyKeyboardMarkup(resize_keyboard=True)\r\n ibleft = KeyboardButton(text=\"⬅️\")\r\n ibright = KeyboardButton(text=\"➡️\")\r\n ibback = KeyboardButton(text=\"⬅️Меню\")\r\n print(f\"{task['url']}\")\r\n ibgo = KeyboardButton(text=\"✅\", web_app = WebAppInfo(url = f'{task[\"url\"]}'))\r\n ikbmtasks.row(ibleft, ibgo, ibright)\r\n ikbmtasks.row(ibback)\r\n message_id_data = await bot.send_photo(chat_id, task['photo'] , text, reply_markup= ikbmtasks)\r\n message_id_data = message_id_data['message_id']\r\n await state.update_data(message_id_data=message_id_data)\r\n\r\n@dp.message_handler(text=\"➡️\", state=MenuStates.tasks)\r\nasync def right(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n counter = data.get('counter')+1\r\n if counter>len(supabase.table('TaskCollection').select('name' ).execute().data)-1:\r\n counter = 0\r\n await state.update_data(counter = counter)\r\n await handle_tasks(message, state)\r\n await bot.delete_message(chat_id=chat_id, message_id=data.get('message_id_data'))\r\n await bot.delete_message(chat_id=chat_id, message_id=message.message_id)\r\n\r\n@dp.message_handler(text=\"⬅️\", state=MenuStates.tasks)\r\nasync def left(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n counter = data.get('counter') - 1\r\n if counter < 0:\r\n counter = len(supabase.table('TaskCollection').select('name').execute().data) - 1\r\n await state.update_data(counter=counter)\r\n await handle_tasks(message, state)\r\n await bot.delete_message(chat_id=chat_id, message_id=data.get('message_id_data'))\r\n await bot.delete_message(chat_id=chat_id, message_id=message.message_id)\r\n\r\n@dp.message_handler(text=\"⬅️Меню\", state=MenuStates.tasks)\r\nasync def task_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r\n await bot.delete_message(chat_id=chat_id, message_id=data.get('message_id_data'))\r\n await bot.delete_message(chat_id=chat_id, message_id=message.message_id)\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(chat_id, \"Вы вернулись в меню!\", reply_markup=rkbm)\r\n\r\n\r\n\r\n\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=MenuStates.tasks)\r\nasync def handle_test_results(message: types.ContentType.WEB_APP_DATA, state: FSMContext):\r\n message.text = message.web_app_data.data\r\n chat_id = message.chat.id\r\n user_answers = json.loads(message.text)\r\n\r\n data = await state.get_data()\r\n counter = data.get('counter')\r\n name = data.get('name')\r\n task = supabase.table('TaskCollection').select('numberPoints', 'rightAnswers').execute().data[int(counter)]\r\n\r\n # Преобразуем в словарь\r\n right_answers = json.loads(task['rightAnswers'])\r\n points = json.loads(task['numberPoints'])\r\n\r\n\r\n user_answers_dict = {}\r\n\r\n for question_id in user_answers:\r\n user_answers_dict[question_id] = user_answers[question_id]\r\n\r\n num_correct = 0\r\n score = 0\r\n\r\n user = users.get(chat_id)\r\n user_balance = user.balance\r\n\r\n for question_id in user_answers_dict:\r\n if user_answers_dict[question_id] == right_answers[question_id]:\r\n num_correct += 1\r\n score += int(points[question_id])\r\n\r\n used_survey_data = supabase.table('Passd').select('chat_id').eq('name', name).eq('chat_id', chat_id).execute()\r\n\r\n if used_survey_data.data:\r\n\r\n await bot.send_message(\r\n message.chat.id,\r\n text=f\"Вы уже проходили этот опрос.\"\r\n )\r\n return\r\n\r\n ident = generate_code()\r\n supabase.table('Passd').insert({'chat_id':chat_id, 'name':name, 'id': ident}).execute()\r\n new_balance = user_balance + score\r\n user.balance = new_balance\r\n users.set(user)\r\n await bot.send_message(\r\n message.chat.id,\r\n text=f\"Правильных ответов: {num_correct}\\nБаллов: {score}\"\r\n )\r\n\r\n\r\n\r\n# код подсчета результатов\r\n\r\n\r\ndef calculate_score(user_answers, right_answers, points):\r\n score = 0\r\n num_correct = 0\r\n\r\n for question_id in user_answers:\r\n if user_answers[question_id] == right_answers[question_id]:\r\n score += " + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0a9e284ac4bda6e41a886fe98c10b357cbe3a98c3a2a68bd5a964224a5119a46" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/models/__init__.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 0, + "snippet": { + "text": "" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 0, + "snippet": { + "text": "" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2128a4526ac2765784a1febb98913c0a96d248456068343fe82e99e40ea748e2" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "codegen.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 1268, + "snippet": { + "text": "import random\r\nimport string\r\nimport os\r\nfrom dotenv import load_dotenv\r\nfrom supabase import Client, create_client\r\n\r\nload_dotenv()\r\n\r\n# Инициализация подключения к базе данных Supabase\r\nurl = os.environ.get(\"SUPABASE_URL\")\r\nkey = os.environ.get(\"SUPABASE_KEY\")\r\nsupabase = create_client(url, key)\r\n\r\ntable_name = \"Promocode\"\r\n\r\n\r\ndef generate_code(length=16):\r\n chars = string.ascii_letters + string.digits\r\n code = ''.join(random.choice(chars) for _ in range(length))\r\n return code\r\n\r\n\r\ndef generate_promo(usages, cost):\r\n code = generate_code()\r\n print(f\"Generated promo code: {code}\")\r\n\r\n if cost == 0:\r\n cost = 1\r\n\r\n if usages < 0:\r\n usages = 1\r\n\r\n data = {\r\n 'promo': code,\r\n 'last': usages,\r\n 'cost': cost\r\n }\r\n\r\n supabase.table(table_name).insert(data).execute()\r\n print(f\"Added {code} with {usages} usages and {cost} cost to {table_name} table\")\r\n return code\r\n\r\ndef generate_naming_promo(name, usages, cost):\r\n\r\n if cost == 0:\r\n cost = 1\r\n\r\n if usages < 0:\r\n usages = 1\r\n\r\n data = {\r\n 'promo': name,\r\n 'last': usages,\r\n 'cost': cost\r\n }\r\n\r\n supabase.table(table_name).insert(data).execute()\r\n print(f\"Added {name} with {usages} usage" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 1326, + "snippet": { + "text": "import random\r\nimport string\r\nimport os\r\nfrom dotenv import load_dotenv\r\nfrom supabase import Client, create_client\r\n\r\nload_dotenv()\r\n\r\n# Инициализация подключения к базе данных Supabase\r\nurl = os.environ.get(\"SUPABASE_URL\")\r\nkey = os.environ.get(\"SUPABASE_KEY\")\r\nsupabase = create_client(url, key)\r\n\r\ntable_name = \"Promocode\"\r\n\r\n\r\ndef generate_code(length=16):\r\n chars = string.ascii_letters + string.digits\r\n code = ''.join(random.choice(chars) for _ in range(length))\r\n return code\r\n\r\n\r\ndef generate_promo(usages, cost):\r\n code = generate_code()\r\n print(f\"Generated promo code: {code}\")\r\n\r\n if cost == 0:\r\n cost = 1\r\n\r\n if usages < 0:\r\n usages = 1\r\n\r\n data = {\r\n 'promo': code,\r\n 'last': usages,\r\n 'cost': cost\r\n }\r\n\r\n supabase.table(table_name).insert(data).execute()\r\n print(f\"Added {code} with {usages} usages and {cost} cost to {table_name} table\")\r\n return code\r\n\r\ndef generate_naming_promo(name, usages, cost):\r\n\r\n if cost == 0:\r\n cost = 1\r\n\r\n if usages < 0:\r\n usages = 1\r\n\r\n data = {\r\n 'promo': name,\r\n 'last': usages,\r\n 'cost': cost\r\n }\r\n\r\n supabase.table(table_name).insert(data).execute()\r\n print(f\"Added {name} with {usages} usages and {cost} cost to {table_name} table\")\r\n return name" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3c392565422c10d89814d9403348aaaa66608bb05f0cfd44772c44034553f9d2" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 2904, + "snippet": { + "text": "import os\r\nfrom dotenv import load_dotenv\r\nfrom supabase import Client , create_client\r\n\r\n\r\n\r\nload_dotenv()\r\n\r\n# Инициализация подключения к базе данных Supabase\r\nurl: str = os.environ.get(\"SUPABASE_URL\")\r\nkey: str = os.environ.get(\"SUPABASE_KEY\")\r\nsupabase: Client = create_client(url,key)\r\ntable_name = \"UsersData\"\r\n\r\n\r\ndef get_user_state_by_id(chat_id: int) -> str:\r\n try:\r\n response = supabase.table(table_name).select('user_state').eq('chat_id', chat_id).limit(1).execute()\r\n if len(response.data) > 0:\r\n user_state = response.data[0].get('user_state')\r\n print(f\"Retrieved user state for {chat_id}: {user_state}\")\r\n return user_state\r\n else:\r\n return \"\"\r\n except Exception as e:\r\n print(f\"Error retrieving user state for {chat_id}: {e}\")\r\n return \"\"\r\n\r\ndef update_user_state_by_id(chat_id: int, state: str):\r\n try:\r\n chat_id_str = str(chat_id) # Преобразование chat_id в строку\r\n response = supabase.table(table_name).update({'user_state': state}).eq('chat_id', chat_id_str).execute()\r\n print(f\"Updated user state for {chat_id}: {state}\")\r\n except Exception as e:\r\n print(f\"Error updating user state for {chat_id}: {e}\")\r\n\r\ndef update_user_fullname_by_tgusr(tgusr: str, full_name: str):\r\n try:\r\n response = supabase.table(table_name).update({'full_name': full_name}).eq('tgusr', tgusr).execute()\r\n print(f\"Updated user fullname for {tgusr}: {full_name}\")\r\n except Exception as e:\r\n print(f\"Error updating user fullname for {tgusr}: {e}\")\r\n\r\ndef update_user_age_by_tgusr(tgusr: str, age : int):\r\n try:\r\n response = supabase.table(table_name).update({'age': age}).eq('tgusr', tgusr).execute()\r\n print(f\"Updated user age for {tgusr}: {age}\")\r\n except Exception as e:\r\n print(f\"Error updating user age for {tgusr}: {e}\")\r\n\r\ndef update_user_balance_by_tgusr(tgusr: str, balance : int):\r\n try:\r\n response = supabase.table(table_name).update({'balance': balance}).eq('tgusr', tgusr).execute()\r\n print(f\"Updated user balance for {tgusr}: {balance}\")\r\n except Exception as e:\r\n print(f\"Error updating user balance for {tgusr}: {e}\")\r\n\r\ndef delete_user_data_by_id(chat_id: int) -> str:\r\n try:\r\n chat_id_str = str(chat_id)\r\n result = supabase.table(table_name).delete().eq('chat_id', chat_id_str).execute()\r\n if result[\"error\"]:\r\n print(f\"Error deleting rows: {result['error']}\")\r\n else:\r\n print(f\"{result['count']} rows deleted\")\r\n except Exception as e:\r\n print(f\"Error delete user data: {chat_id}: {e}\")\r\n\r\n\r\ndef get_user_info_by_id(chat_id:int ) -> str:\r\n try:\r\n response = supabase.table('UsersData').select('full_name','gender','age','balance','tgusr').eq('chat_id', chat_id).execute()\r\n return response\r\n except Excepti" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 2904, + "snippet": { + "text": "import os\r\nfrom dotenv import load_dotenv\r\nfrom supabase import Client , create_client\r\n\r\n\r\n\r\nload_dotenv()\r\n\r\n# Инициализация подключения к базе данных Supabase\r\nurl: str = os.environ.get(\"SUPABASE_URL\")\r\nkey: str = os.environ.get(\"SUPABASE_KEY\")\r\nsupabase: Client = create_client(url,key)\r\ntable_name = \"UsersData\"\r\n\r\n\r\ndef get_user_state_by_id(chat_id: int) -> str:\r\n try:\r\n response = supabase.table(table_name).select('user_state').eq('chat_id', chat_id).limit(1).execute()\r\n if len(response.data) > 0:\r\n user_state = response.data[0].get('user_state')\r\n print(f\"Retrieved user state for {chat_id}: {user_state}\")\r\n return user_state\r\n else:\r\n return \"\"\r\n except Exception as e:\r\n print(f\"Error retrieving user state for {chat_id}: {e}\")\r\n return \"\"\r\n\r\ndef update_user_state_by_id(chat_id: int, state: str):\r\n try:\r\n chat_id_str = str(chat_id) # Преобразование chat_id в строку\r\n response = supabase.table(table_name).update({'user_state': state}).eq('chat_id', chat_id_str).execute()\r\n print(f\"Updated user state for {chat_id}: {state}\")\r\n except Exception as e:\r\n print(f\"Error updating user state for {chat_id}: {e}\")\r\n\r\ndef update_user_fullname_by_tgusr(tgusr: str, full_name: str):\r\n try:\r\n response = supabase.table(table_name).update({'full_name': full_name}).eq('tgusr', tgusr).execute()\r\n print(f\"Updated user fullname for {tgusr}: {full_name}\")\r\n except Exception as e:\r\n print(f\"Error updating user fullname for {tgusr}: {e}\")\r\n\r\ndef update_user_age_by_tgusr(tgusr: str, age : int):\r\n try:\r\n response = supabase.table(table_name).update({'age': age}).eq('tgusr', tgusr).execute()\r\n print(f\"Updated user age for {tgusr}: {age}\")\r\n except Exception as e:\r\n print(f\"Error updating user age for {tgusr}: {e}\")\r\n\r\ndef update_user_balance_by_tgusr(tgusr: str, balance : int):\r\n try:\r\n response = supabase.table(table_name).update({'balance': balance}).eq('tgusr', tgusr).execute()\r\n print(f\"Updated user balance for {tgusr}: {balance}\")\r\n except Exception as e:\r\n print(f\"Error updating user balance for {tgusr}: {e}\")\r\n\r\ndef delete_user_data_by_id(chat_id: int) -> str:\r\n try:\r\n chat_id_str = str(chat_id)\r\n result = supabase.table(table_name).delete().eq('chat_id', chat_id_str).execute()\r\n if result[\"error\"]:\r\n print(f\"Error deleting rows: {result['error']}\")\r\n else:\r\n print(f\"{result['count']} rows deleted\")\r\n except Exception as e:\r\n print(f\"Error delete user data: {chat_id}: {e}\")\r\n\r\n\r\ndef get_user_info_by_id(chat_id:int ) -> str:\r\n try:\r\n response = supabase.table('UsersData').select('full_name','gender','age','balance','tgusr').eq('chat_id', chat_id).execute()\r\n return response\r\n except Excepti" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "641a32716e7b755d8210eac5e2b0f571745fc155688955c092a0c6cbc9e0f605" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/models/users.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 233, + "snippet": { + "text": "from pydantic import BaseModel, ValidationError\r\n\r\n\r\nclass User(BaseModel):\r\n\r\n \r\n chat_id: int = 0 \r\n full_name: str = ''\r\n gender: bool = None\r\n user_state: str = ''\r\n age: int = 0\r\n balance: int = 0\r\n tgusr" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 247, + "snippet": { + "text": "from pydantic import BaseModel, ValidationError\r\n\r\n\r\nclass User(BaseModel):\r\n\r\n \r\n chat_id: int = 0 \r\n full_name: str = ''\r\n gender: bool = None\r\n user_state: str = ''\r\n age: int = 0\r\n balance: int = 0\r\n tgusr: str = ''\r\n\r\n" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6db367a27829dc3c0b6e9d942c2887774fcbb75ef02055d4ff5a5e1f23c213db" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/__init__.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 0, + "snippet": { + "text": "" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 0, + "snippet": { + "text": "" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "93d0d80cf19e1b5b44e421a59d4169d91c24bc08243c4d23ae227281ba63b4b9" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/__init__.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 0, + "snippet": { + "text": "" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 0, + "snippet": { + "text": "" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9ce3b4a8bcaaca82054191632afcd8c8449ded0728bb201ad18c26e6ad482835" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 295, + "snippet": { + "text": "from abc import ABC\r\nfrom src.models.users import User\r\nfrom typing import List\r\n\r\nclass UserRepository(ABC):\r\n \r\n def get(self,id : str) -> User:\r\n ...\r\n \r\n def set(self,user : User) -> None:\r\n ...\r\n\r\n def delete(self,id : str) -> None:\r\n ...\r\n\r\n def list(self,**kwargs) -> List[" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 311, + "snippet": { + "text": "from abc import ABC\r\nfrom src.models.users import User\r\nfrom typing import List\r\n\r\nclass UserRepository(ABC):\r\n \r\n def get(self,id : str) -> User:\r\n ...\r\n \r\n def set(self,user : User) -> None:\r\n ...\r\n\r\n def delete(self,id : str) -> None:\r\n ...\r\n\r\n def list(self,**kwargs) -> List[User]: \r\n ..." + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c668e0fbf3d0236e8073a7094180a57a13cd6190357c05dc3227d0e0af4af3fb" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 8996, + "snippet": { + "text": "from aiogram.types import InlineKeyboardMarkup,InlineKeyboardButton, ReplyKeyboardMarkup, KeyboardButton\r\nfrom aiogram.types.web_app_info import WebAppInfo\r\n#gender buttons\r\nikbg = InlineKeyboardMarkup(row_width=2)\r\nibm = InlineKeyboardButton(text=\"🙋‍♂️Мужчина\",callback_data='1')\r\nibf = InlineKeyboardButton(text=\"🙋‍♀️Женщина\",callback_data='0')\r\nikbg.add(ibm,ibf)\r\n\r\n#menu buttons\r\nrkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nkprofile= KeyboardButton(text=\"👤Профиль\")\r\nkliderboard= KeyboardButton(text=\"📊Рейтинг\")\r\nkschedule= KeyboardButton(text=\"📆Календарь событий\")\r\nkhelp= KeyboardButton(text=\"❓Помощь\")\r\nkexercise= KeyboardButton(text=\"📝Задания\")\r\nkpromo = KeyboardButton(text=\"🗝️Промокоды\")\r\nrkbm.row(kprofile,kliderboard)\r\nrkbm.add(kexercise)\r\nrkbm.add(kschedule)\r\nrkbm.row(khelp,kpromo)\r\n\r\n#promo_menuu\r\npromo_kb = ReplyKeyboardMarkup(resize_keyboard=True)\r\npromo_kb_qrscanner = KeyboardButton(text=\"📲QR-код\", web_app=WebAppInfo(url=\"https://bpb-qr.pages.dev/\"))\r\npromo_kb_enter = KeyboardButton(text=\"🗝️Ввести промокод\")\r\npromo_kb_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\npromo_kb.add(promo_kb_enter)\r\npromo_kb.add(promo_kb_qrscanner)\r\npromo_kb.add(promo_kb_back)\r\n\r\n\r\n#profilemenu buttons\r\nprofilebuttons = ReplyKeyboardMarkup(resize_keyboard=True)\r\ndelprofile = KeyboardButton(text=\"❌Удалить профиль\")\r\nprofilebuttons.row(delprofile)\r\neditbutton = ReplyKeyboardMarkup(resize_keyboard=True)\r\nedbutton = KeyboardButton(text=\"⚙️Редактировать профиль\")\r\nprofilebuttons.row(edbutton)\r\nbacktomenubutton = KeyboardButton(text=\"⬅️Назад в меню\")\r\nprofilebuttons.row(backtomenubutton)\r\n#confirm delete button and edit button + back button to profile\r\nback = ReplyKeyboardMarkup(resize_keyboard=True)\r\nbackbutt = KeyboardButton(text=\"⬅️Назад в меню\")\r\nback.row(backbutt)\r\n\r\nmenuedit = ReplyKeyboardMarkup(resize_keyboard=True)\r\neditname = KeyboardButton(text=\"Изменить ФИО\")\r\neditage = KeyboardButton(text=\"Изменить возраст\")\r\nmenuedit.row(editname)\r\nmenuedit.row(editage)\r\nmenuedit.row(backbutt)\r\n\r\nconfirmbutton = ReplyKeyboardMarkup(resize_keyboard=True)\r\nconfbutton = KeyboardButton(text=\"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\")\r\nbackbutton = KeyboardButton(text=\"⬅️Назад в меню\")\r\nconfirmbutton.row(confbutton)\r\nconfirmbutton.row(backbutton)\r\n\r\n#usermaker buttons\r\nusermakerkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nusmkbm_task = KeyboardButton(text=\"📝Создать задание\")\r\nusmkbm_menu = KeyboardButton(text=\"⬅️Меню\")\r\nusermakerkbm.row(usmkbm_task)\r\nusermakerkbm.row(usmkbm_menu)\r\n\r\n\r\n#usermaker add task menu buttons\r\neventtasks = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmcreatetask = KeyboardButton(text=\"Создать коллекцию\")\r\nadmtasklist = KeyboardButton(text=\"Список коллекций\")\r\nadmdeletetask = KeyboardButton(text=\"Удалить коллекцию\")\r\nadmtaskback = KeyboardButton(text=\"⬅️Назад в меню\")\r\neventtasks.row(admcreatetask)\r\neventtasks.row(admdeletetask,admtasklist)\r\neventtasks.row(admtaskback)\r\n\r\n#admin buttons\r\nadmrkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmk_user_editor = KeyboardButton(text=\"⚙️Изменить пользователя\")\r\nadmk_job_creation = KeyboardButton(text=\"📝Создать задание\")\r\nadmk_menu = KeyboardButton(text=\"⬅️Меню\")\r\nadmk_liderboard = KeyboardButton(text=\"📊Рейтинг\")\r\nadmk_promo = KeyboardButton(text=\"🗝️Промокоды\")\r\nadmk_ticket = KeyboardButton(text=\"📨Обращения\")\r\nadmk_rules = KeyboardButton(text=\"👨‍🚀Организаторы\")\r\nadmrkbm.row(admk_user_editor)\r\nadmrkbm.row(admk_job_creation,admk_promo)\r\nadmrkbm.row(admk_liderboard, admk_ticket)\r\nadmrkbm.row(admk_menu,admk_rules)\r\n\r\n#rules keyboard\r\nruleskbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nruleskbm_addmaker = KeyboardButton(text=\"Выдать права\")\r\nruleskbm_delmaker = KeyboardButton(text=\"Забрать права\")\r\nruleskbm_check = KeyboardButton(text=\"Действующие права\")\r\nruleskbm_back = KeyboardButton(text=\"⬅️Админ меню\")\r\nruleskbm.row(ruleskbm_addmaker,ruleskbm_delmaker)\r\nruleskbm.row(ruleskbm_check)\r\nruleskbm.row(ruleskbm_back)\r\n\r\n# admin report keyboard\r\nadmreport = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmreport_check = KeyboardButton(text=\"Действующие обращения\")\r\nadmreport_del = KeyboardButton(text=\"Удалить обращение\")\r\nadmreport_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\nadmreport.row(admreport_check)\r\nadmreport.row(admreport_del)\r\nadmreport.row(admreport_back)\r\n\r\n#User help button\r\nuserhelp = ReplyKeyboardMarkup(resize_keyboard=True)\r\nuserhelp_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\nuserhelp_ticket = KeyboardButton(text=\"📨Создать заявку\")\r\nguide = KeyboardButton(text=\"?📑Руководство пользователя\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/User%20guide/README.md'))\r\nuserhelp.row(userhelp_ticket)\r\nuserhelp.row(guide)\r\nuserhelp.row(userhelp_back)\r\n\r\n# admin user editor button\r\nadmue = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmue_fullname_editor = KeyboardButton(text=\"Изменить ФИО\")\r\nadmue_age_editor = KeyboardButton(text=\"Изменить возраст\")\r\nadmue_balance_editor = KeyboardButton(text=\"Изменить баланс\")\r\nadmue_get_info_user = KeyboardButton(text=\"Получить информацию о пользователе\")\r\nadmue_update_users_balance = KeyboardButton(text=\"❗Обнулить баланс всех пользователей❗\")\r\nadmue_back = KeyboardButton(text=\"⬅️Админ меню\")\r\nadmue.row(admue_get_info_user)\r\nadmue.row(admue_fullname_editor,admue_age_editor,admue_balance_editor)\r\nadmue.row(admue_update_users_balance)\r\nadmue.row(admue_back)\r\nadmui = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmui_back = InlineKeyboardButton(text=\"⬅️Отменить редактирование\")\r\n\r\n#admin promo button\r\nadmpromo = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmpromo_checkpromo = KeyboardButton(text=\"Действующие промокоды\")\r\nadmpromo_addpromo = KeyboardButton(text=\"Добавить промокод\")\r\nadmpromo_namingpromo = KeyboardButton(text=\"Нэйминг-промо\")\r\nadmpromo_delpromo = KeyboardButton(text=\"Удалить промокод\")\r\naddpromo_addqr = KeyboardButton(text=\"Добавить QR\")\r\nadmpromo.row(addpromo_addqr)\r\nadmpromo.row(admpromo_checkpromo)\r\nadmpromo.row(admpromo_addpromo,admpromo_namingpromo,admpromo_delpromo)\r\nadmpromo.row(admue_back)\r\n\r\ncancel_button = InlineKeyboardButton(text=\"❌Отмена\", callback_data=\"cancel\")\r\n\r\n# Отмена редактирования для юзера\r\ncancel_button_for_user = InlineKeyboardMarkup(row_width=1)\r\ncancel_abob = InlineKeyboardButton(text=\"Отмена❌\", callback_data=\"cancel_user\")\r\ncancel_button_for_user.add(cancel_abob)\r\n\r\ncancel_button_to_main = InlineKeyboardMarkup(row_width=1)\r\ncancel_main = InlineKeyboardButton(text=\"Отмена❌\", callback_data=\"back_to_menu\")\r\ncancel_button_to_main.add(cancel_main)\r\n\r\ncancel_button_for_user_help = InlineKeyboardMarkup(row_width=1)\r\ncancel_helper = InlineKeyboardButton(text=\"Отмена❌\", callback_data=\"cancel_user_help\")\r\ncancel_button_for_user_help.add(cancel_helper)\r\n\r\ncancel_button_for_user_promocode = InlineKeyboardMarkup(row_width=1)\r\ncancel_promo = InlineKeyboardButton(text=\"Отмена❌\", callback_data=\"cancel_user_promocode\")\r\ncancel_button_for_user_promocode.add(cancel_promo)\r\n\r\n#remove balance button in admin menu\r\nupdatebalanceusers = ReplyKeyboardMarkup(resize_keyboard=True)\r\nupdatebalanceconfirmbutton= KeyboardButton(text=\"❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗\")\r\nbackbuttontoadminmemubutton = KeyboardButton(text=\"⬅️Назад в меню\")\r\nupdatebalanceusers.row(updatebalanceconfirmbutton)\r\nupdatebalanceusers.row(backbuttontoadminmemubutton)\r\n\r\n\r\n#rating buttons\r\nikbmrating = InlineKeyboardMarkup(row_width=1)\r\nibrating = InlineKeyboardButton(text=\"📊Полный рейтинг\", web_app = WebAppInfo(url ='https://docs.google.com/spreadsheets/d/e/2PACX-1vQFzN5HRvQhS5j4kDcv9wWH3uucCqp1AFmu2ErZYikmmJSshj1f16v7ry013vde0y6OYVWeSsVtgaKT/pubhtml?gid=0&single=true') )\r\nikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r\nibadminrating = InlineKeyboardButton(text=\"📊Админ Рейтинг\",web_app = WebAppInfo(url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vR__0ahX-O5SK3sS7OditV88sjG64duAF6mAW702CT3uM3Yj6z5mwsnxv-lL2vF9-H3YjlD0rtmg84N/pubhtml?gid=0&single=true'))\r\nikbmadminrating.add(ibadminrating)\r\n\r\n#help buttons\r\nhelpinlinereg = InlineKeyboardMarkup(row_width=1)\r\nhelpinlinenaming = InlineKeyboardButton(text=\"Помощь\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/README.md'))\r\nhelpinlinereg.add(helpinlinenaming)\r\n\r\n#admin tasks\r\nadmtasks = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmcreatetask = KeyboardButton(text=\"Создать коллекцию\")\r\nadmtasklist = KeyboardButton(text=\"Список коллекций\")\r\nadmdeletetask = KeyboardButton(text=\"Удалить коллекцию\")\r\nadmtaskback = KeyboardButton(text=\"⬅️Назад в меню\")\r\nadmtasks.row(admcreatetask)\r\nadmtasks.row(admdeletetask,admtasklist)\r\nadmtasks.row(admtaskback)\r\n\r\n#survey web-app\r\nsurveywebapp = ReplyKeyboardMarkup(resize_keyboard=True)\r\nsurvquestcreate = KeyboardButton(text=\"Создать вопрос\",web_app=WebAppInfo(url = 'https://surv" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 8996, + "snippet": { + "text": "from aiogram.types import InlineKeyboardMarkup,InlineKeyboardButton, ReplyKeyboardMarkup, KeyboardButton\r\nfrom aiogram.types.web_app_info import WebAppInfo\r\n#gender buttons\r\nikbg = InlineKeyboardMarkup(row_width=2)\r\nibm = InlineKeyboardButton(text=\"🙋‍♂️Мужчина\",callback_data='1')\r\nibf = InlineKeyboardButton(text=\"🙋‍♀️Женщина\",callback_data='0')\r\nikbg.add(ibm,ibf)\r\n\r\n#menu buttons\r\nrkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nkprofile= KeyboardButton(text=\"👤Профиль\")\r\nkliderboard= KeyboardButton(text=\"📊Рейтинг\")\r\nkschedule= KeyboardButton(text=\"📆Календарь событий\")\r\nkhelp= KeyboardButton(text=\"❓Помощь\")\r\nkexercise= KeyboardButton(text=\"📝Задания\")\r\nkpromo = KeyboardButton(text=\"🗝️Промокоды\")\r\nrkbm.row(kprofile,kliderboard)\r\nrkbm.add(kexercise)\r\nrkbm.add(kschedule)\r\nrkbm.row(khelp,kpromo)\r\n\r\n#promo_menuu\r\npromo_kb = ReplyKeyboardMarkup(resize_keyboard=True)\r\npromo_kb_qrscanner = KeyboardButton(text=\"📲QR-код\", web_app=WebAppInfo(url=\"https://bpb-qr.pages.dev/\"))\r\npromo_kb_enter = KeyboardButton(text=\"🗝️Ввести промокод\")\r\npromo_kb_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\npromo_kb.add(promo_kb_enter)\r\npromo_kb.add(promo_kb_qrscanner)\r\npromo_kb.add(promo_kb_back)\r\n\r\n\r\n#profilemenu buttons\r\nprofilebuttons = ReplyKeyboardMarkup(resize_keyboard=True)\r\ndelprofile = KeyboardButton(text=\"❌Удалить профиль\")\r\nprofilebuttons.row(delprofile)\r\neditbutton = ReplyKeyboardMarkup(resize_keyboard=True)\r\nedbutton = KeyboardButton(text=\"⚙️Редактировать профиль\")\r\nprofilebuttons.row(edbutton)\r\nbacktomenubutton = KeyboardButton(text=\"⬅️Назад в меню\")\r\nprofilebuttons.row(backtomenubutton)\r\n#confirm delete button and edit button + back button to profile\r\nback = ReplyKeyboardMarkup(resize_keyboard=True)\r\nbackbutt = KeyboardButton(text=\"⬅️Назад в меню\")\r\nback.row(backbutt)\r\n\r\nmenuedit = ReplyKeyboardMarkup(resize_keyboard=True)\r\neditname = KeyboardButton(text=\"Изменить ФИО\")\r\neditage = KeyboardButton(text=\"Изменить возраст\")\r\nmenuedit.row(editname)\r\nmenuedit.row(editage)\r\nmenuedit.row(backbutt)\r\n\r\nconfirmbutton = ReplyKeyboardMarkup(resize_keyboard=True)\r\nconfbutton = KeyboardButton(text=\"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\")\r\nbackbutton = KeyboardButton(text=\"⬅️Назад в меню\")\r\nconfirmbutton.row(confbutton)\r\nconfirmbutton.row(backbutton)\r\n\r\n#usermaker buttons\r\nusermakerkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nusmkbm_task = KeyboardButton(text=\"📝Создать задание\")\r\nusmkbm_menu = KeyboardButton(text=\"⬅️Меню\")\r\nusermakerkbm.row(usmkbm_task)\r\nusermakerkbm.row(usmkbm_menu)\r\n\r\n\r\n#usermaker add task menu buttons\r\neventtasks = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmcreatetask = KeyboardButton(text=\"Создать коллекцию\")\r\nadmtasklist = KeyboardButton(text=\"Список коллекций\")\r\nadmdeletetask = KeyboardButton(text=\"Удалить коллекцию\")\r\nadmtaskback = KeyboardButton(text=\"⬅️Назад в меню\")\r\neventtasks.row(admcreatetask)\r\neventtasks.row(admdeletetask,admtasklist)\r\neventtasks.row(admtaskback)\r\n\r\n#admin buttons\r\nadmrkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmk_user_editor = KeyboardButton(text=\"⚙️Изменить пользователя\")\r\nadmk_job_creation = KeyboardButton(text=\"📝Создать задание\")\r\nadmk_menu = KeyboardButton(text=\"⬅️Меню\")\r\nadmk_liderboard = KeyboardButton(text=\"📊Рейтинг\")\r\nadmk_promo = KeyboardButton(text=\"🗝️Промокоды\")\r\nadmk_ticket = KeyboardButton(text=\"📨Обращения\")\r\nadmk_rules = KeyboardButton(text=\"👨‍🚀Организаторы\")\r\nadmrkbm.row(admk_user_editor)\r\nadmrkbm.row(admk_job_creation,admk_promo)\r\nadmrkbm.row(admk_liderboard, admk_ticket)\r\nadmrkbm.row(admk_menu,admk_rules)\r\n\r\n#rules keyboard\r\nruleskbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nruleskbm_addmaker = KeyboardButton(text=\"Выдать права\")\r\nruleskbm_delmaker = KeyboardButton(text=\"Забрать права\")\r\nruleskbm_check = KeyboardButton(text=\"Действующие права\")\r\nruleskbm_back = KeyboardButton(text=\"⬅️Админ меню\")\r\nruleskbm.row(ruleskbm_addmaker,ruleskbm_delmaker)\r\nruleskbm.row(ruleskbm_check)\r\nruleskbm.row(ruleskbm_back)\r\n\r\n# admin report keyboard\r\nadmreport = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmreport_check = KeyboardButton(text=\"Действующие обращения\")\r\nadmreport_del = KeyboardButton(text=\"Удалить обращение\")\r\nadmreport_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\nadmreport.row(admreport_check)\r\nadmreport.row(admreport_del)\r\nadmreport.row(admreport_back)\r\n\r\n#User help button\r\nuserhelp = ReplyKeyboardMarkup(resize_keyboard=True)\r\nuserhelp_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\nuserhelp_ticket = KeyboardButton(text=\"📨Создать заявку\")\r\nguide = KeyboardButton(text=\"?📑Руководство пользователя\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/User%20guide/README.md'))\r\nuserhelp.row(userhelp_ticket)\r\nuserhelp.row(guide)\r\nuserhelp.row(userhelp_back)\r\n\r\n# admin user editor button\r\nadmue = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmue_fullname_editor = KeyboardButton(text=\"Изменить ФИО\")\r\nadmue_age_editor = KeyboardButton(text=\"Изменить возраст\")\r\nadmue_balance_editor = KeyboardButton(text=\"Изменить баланс\")\r\nadmue_get_info_user = KeyboardButton(text=\"Получить информацию о пользователе\")\r\nadmue_update_users_balance = KeyboardButton(text=\"❗Обнулить баланс всех пользователей❗\")\r\nadmue_back = KeyboardButton(text=\"⬅️Админ меню\")\r\nadmue.row(admue_get_info_user)\r\nadmue.row(admue_fullname_editor,admue_age_editor,admue_balance_editor)\r\nadmue.row(admue_update_users_balance)\r\nadmue.row(admue_back)\r\nadmui = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmui_back = InlineKeyboardButton(text=\"⬅️Отменить редактирование\")\r\n\r\n#admin promo button\r\nadmpromo = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmpromo_checkpromo = KeyboardButton(text=\"Действующие промокоды\")\r\nadmpromo_addpromo = KeyboardButton(text=\"Добавить промокод\")\r\nadmpromo_namingpromo = KeyboardButton(text=\"Нэйминг-промо\")\r\nadmpromo_delpromo = KeyboardButton(text=\"Удалить промокод\")\r\naddpromo_addqr = KeyboardButton(text=\"Добавить QR\")\r\nadmpromo.row(addpromo_addqr)\r\nadmpromo.row(admpromo_checkpromo)\r\nadmpromo.row(admpromo_addpromo,admpromo_namingpromo,admpromo_delpromo)\r\nadmpromo.row(admue_back)\r\n\r\ncancel_button = InlineKeyboardButton(text=\"❌Отмена\", callback_data=\"cancel\")\r\n\r\n# Отмена редактирования для юзера\r\ncancel_button_for_user = InlineKeyboardMarkup(row_width=1)\r\ncancel_abob = InlineKeyboardButton(text=\"Отмена❌\", callback_data=\"cancel_user\")\r\ncancel_button_for_user.add(cancel_abob)\r\n\r\ncancel_button_to_main = InlineKeyboardMarkup(row_width=1)\r\ncancel_main = InlineKeyboardButton(text=\"Отмена❌\", callback_data=\"back_to_menu\")\r\ncancel_button_to_main.add(cancel_main)\r\n\r\ncancel_button_for_user_help = InlineKeyboardMarkup(row_width=1)\r\ncancel_helper = InlineKeyboardButton(text=\"Отмена❌\", callback_data=\"cancel_user_help\")\r\ncancel_button_for_user_help.add(cancel_helper)\r\n\r\ncancel_button_for_user_promocode = InlineKeyboardMarkup(row_width=1)\r\ncancel_promo = InlineKeyboardButton(text=\"Отмена❌\", callback_data=\"cancel_user_promocode\")\r\ncancel_button_for_user_promocode.add(cancel_promo)\r\n\r\n#remove balance button in admin menu\r\nupdatebalanceusers = ReplyKeyboardMarkup(resize_keyboard=True)\r\nupdatebalanceconfirmbutton= KeyboardButton(text=\"❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗\")\r\nbackbuttontoadminmemubutton = KeyboardButton(text=\"⬅️Назад в меню\")\r\nupdatebalanceusers.row(updatebalanceconfirmbutton)\r\nupdatebalanceusers.row(backbuttontoadminmemubutton)\r\n\r\n\r\n#rating buttons\r\nikbmrating = InlineKeyboardMarkup(row_width=1)\r\nibrating = InlineKeyboardButton(text=\"📊Полный рейтинг\", web_app = WebAppInfo(url ='https://docs.google.com/spreadsheets/d/e/2PACX-1vQFzN5HRvQhS5j4kDcv9wWH3uucCqp1AFmu2ErZYikmmJSshj1f16v7ry013vde0y6OYVWeSsVtgaKT/pubhtml?gid=0&single=true') )\r\nikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r\nibadminrating = InlineKeyboardButton(text=\"📊Админ Рейтинг\",web_app = WebAppInfo(url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vR__0ahX-O5SK3sS7OditV88sjG64duAF6mAW702CT3uM3Yj6z5mwsnxv-lL2vF9-H3YjlD0rtmg84N/pubhtml?gid=0&single=true'))\r\nikbmadminrating.add(ibadminrating)\r\n\r\n#help buttons\r\nhelpinlinereg = InlineKeyboardMarkup(row_width=1)\r\nhelpinlinenaming = InlineKeyboardButton(text=\"Помощь\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/README.md'))\r\nhelpinlinereg.add(helpinlinenaming)\r\n\r\n#admin tasks\r\nadmtasks = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmcreatetask = KeyboardButton(text=\"Создать коллекцию\")\r\nadmtasklist = KeyboardButton(text=\"Список коллекций\")\r\nadmdeletetask = KeyboardButton(text=\"Удалить коллекцию\")\r\nadmtaskback = KeyboardButton(text=\"⬅️Назад в меню\")\r\nadmtasks.row(admcreatetask)\r\nadmtasks.row(admdeletetask,admtasklist)\r\nadmtasks.row(admtaskback)\r\n\r\n#survey web-app\r\nsurveywebapp = ReplyKeyboardMarkup(resize_keyboard=True)\r\nsurvquestcreate = KeyboardButton(text=\"Создать вопрос\",web_app=WebAppInfo(url = 'https://surv" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d98e7c47e8f78e661f4e4e76a3a6ad9d8937108d123da76f046dc8d928b5f6f6" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 2428, + "snippet": { + "text": "from aiogram import Bot, types\r\nfrom Database.DataUsers import *\r\nfrom buttons import *\r\nfrom dotenv import load_dotenv\r\nimport re\r\nfrom functools import lru_cache\r\nimport string\r\nimport random\r\n\r\nload_dotenv()\r\n\r\nbot = Bot(token=os.getenv(\"TOKEN\"))\r\n\r\nasync def show_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', 'tgusr').order('balance', desc = True).limit(4).execute()\r\n\r\n # Формируем текст рейтинга\r\n rating_text = \"🏆 Рейтинг пользователей 🏆\\n\\n\"\r\n for i, user in enumerate(top_users.data):\r\n position = i + 1\r\n full_name = user['full_name']\r\n balance = user['balance']\r\n tgusr = user['tgusr']\r\n rating_text += f\"{position}. {full_name} ({tgusr}) - {balance} баллов\\n\"\r\n\r\n # Отправляем сообщение\r\n await bot.send_message(chat_id, rating_text, reply_markup=ikbmadminrating)\r\n\r\nasync def show_user_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', ).order('balance', desc = True).limit(4).execute()\r\n\r\n # Формируем текст рейтинга\r\n rating_text = \"🏆 Рейтинг пользователей 🏆\\n\\n\"\r\n for i, user in enumerate(top_users.data):\r\n position = i + 1\r\n full_name = user['full_name']\r\n balance = user['balance']\r\n rating_text += f\"{position}. {full_name} - {balance} баллов\\n\"\r\n\r\n # Отправляем сообщение\r\n await bot.send_message(chat_id, rating_text, reply_markup=ikbmrating)\r\n\r\n# generate id for survey\r\nasync def generate_id_for_survey(length):\r\n characters = string.ascii_letters + string.digits\r\n random_string = ''.join(random.choice(characters) for _ in range(length))\r\n return random_string\r\n\r\n\r\n\r\n\r\n# Validation BAD words\r\n\r\nstandart_dirt = [1093, 1091, 1081, 124, 1073, 1083, 1103, 124, 1077, 1073, 124, \r\n 1087, 1080, 1079, 1076, 124, 1105, 1073, 124, 1079, 1072, 1083, 1091, 1087] # censored\r\n\r\nstandart_dirt = ''.join(chr(n) for n in standart_dirt)\r\n\r\ndef _get_search(pattern: str):\r\n @lru_cache()\r\n def hide_search(word: str) -> bool:\r\n return bool(re.search(pattern, word))\r\n\r\n return hide_search\r\n\r\ndef is_dirt(pattern: str=standart_dirt):\r\n\r\n funk = _get_search(pattern)\r\n\r\n def hide_search(text: str) -> bool:\r\n for word in re.findall(r'\\w+', text):\r\n if funk(word.lower()):\r\n " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 2428, + "snippet": { + "text": "from aiogram import Bot, types\r\nfrom Database.DataUsers import *\r\nfrom buttons import *\r\nfrom dotenv import load_dotenv\r\nimport re\r\nfrom functools import lru_cache\r\nimport string\r\nimport random\r\n\r\nload_dotenv()\r\n\r\nbot = Bot(token=os.getenv(\"TOKEN\"))\r\n\r\nasync def show_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', 'tgusr').order('balance', desc = True).limit(4).execute()\r\n\r\n # Формируем текст рейтинга\r\n rating_text = \"🏆 Рейтинг пользователей 🏆\\n\\n\"\r\n for i, user in enumerate(top_users.data):\r\n position = i + 1\r\n full_name = user['full_name']\r\n balance = user['balance']\r\n tgusr = user['tgusr']\r\n rating_text += f\"{position}. {full_name} ({tgusr}) - {balance} баллов\\n\"\r\n\r\n # Отправляем сообщение\r\n await bot.send_message(chat_id, rating_text, reply_markup=ikbmadminrating)\r\n\r\nasync def show_user_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', ).order('balance', desc = True).limit(4).execute()\r\n\r\n # Формируем текст рейтинга\r\n rating_text = \"🏆 Рейтинг пользователей 🏆\\n\\n\"\r\n for i, user in enumerate(top_users.data):\r\n position = i + 1\r\n full_name = user['full_name']\r\n balance = user['balance']\r\n rating_text += f\"{position}. {full_name} - {balance} баллов\\n\"\r\n\r\n # Отправляем сообщение\r\n await bot.send_message(chat_id, rating_text, reply_markup=ikbmrating)\r\n\r\n# generate id for survey\r\nasync def generate_id_for_survey(length):\r\n characters = string.ascii_letters + string.digits\r\n random_string = ''.join(random.choice(characters) for _ in range(length))\r\n return random_string\r\n\r\n\r\n\r\n\r\n# Validation BAD words\r\n\r\nstandart_dirt = [1093, 1091, 1081, 124, 1073, 1083, 1103, 124, 1077, 1073, 124, \r\n 1087, 1080, 1079, 1076, 124, 1105, 1073, 124, 1079, 1072, 1083, 1091, 1087] # censored\r\n\r\nstandart_dirt = ''.join(chr(n) for n in standart_dirt)\r\n\r\ndef _get_search(pattern: str):\r\n @lru_cache()\r\n def hide_search(word: str) -> bool:\r\n return bool(re.search(pattern, word))\r\n\r\n return hide_search\r\n\r\ndef is_dirt(pattern: str=standart_dirt):\r\n\r\n funk = _get_search(pattern)\r\n\r\n def hide_search(text: str) -> bool:\r\n for word in re.findall(r'\\w+', text):\r\n if funk(word.lower()):\r\n " + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "db9279335fed5a9f2a86a020f48e730d35202d82858d4f9421ebfd3ba47c0125" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 114, + "snippet": { + "text": "import gspread\nfrom gspread import Cell, Client, Spreadsheet, Worksheet\nfrom supabase import Client, create_client" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 140, + "snippet": { + "text": "import gspread\nfrom gspread import Cell, Client, Spreadsheet, Worksheet\nfrom supabase import Client, create_client\nimport schedule\nimport os" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "de299ea2cf60a29dec69e4000ca8077ac2eed394a807dea194bc22c1804de515" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "requirements.txt", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 1104, + "snippet": { + "text": "aiogram==2.25.1\r\naiohttp==3.8.5\r\naiosignal==1.3.1\r\nannotated-types==0.5.0\r\nanyio==3.7.1\r\nasync-timeout==4.0.2\r\nattrs==23.1.0\r\nBabel==2.9.1\r\ncachetools==5.3.1\r\ncertifi==2023.7.22\r\ncharset-normalizer==3.2.0\r\ncolorama==0.4.6\r\ndeprecation==2.1.0\r\nfrozenlist==1.4.0\r\ngoogle-api-core==2.11.1\r\ngoogle-api-python-client==2.96.0\r\ngoogle-auth==2.22.0\r\ngoogle-auth-httplib2==0.1.0\r\ngoogle-auth-oauthlib==1.0.0\r\ngoogleapis-common-protos==1.60.0\r\ngotrue==1.0.3\r\ngspread==5.10.0\r\nh11==0.14.0\r\nhttpcore==0.17.3\r\nhttplib2==0.22.0\r\nhttpx==0.24.1\r\nidna==3.4\r\nmagic-filter==1.0.11\r\nmultidict==6.0.4\r\noauthlib==3.2.2\r\npackaging==23.1\r\nPillow==10.0.0\r\npostgrest==0.10.8\r\nprotobuf==4.24.0\r\npyasn1==0.5.0\r\npyasn1-modules==0.3.0\r\npydantic==2.1.1\r\npydantic_core==2.4.0\r\npyparsing==3.1.1\r\npypng==0.20220715.0\r\npython-dateutil==2.8.2\r\npython-dotenv==1.0.0\r\npytz==2023.3\r\npyzbar==0.1.9\r\nqrcode==7.4.2\r\nrealtime==1.0.0\r\nrequests==2.31.0\r\nrequests-oauthlib==1.3.1\r\nrsa==4.9\r\nschedule==1.2.0\r\nsix==1.16.0\r\nsniffio==1.3.0\r\nstorage3==0.5.4\r\nStrEnum==0.4.15\r\nsupabase==1.0.4\r\nsupafunc==0.2.3\r\ntyping_extensions==4.7.1\r\nuritemplate==4.1.1\r" + }, + "sourceLanguage": "Requirements" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 1140, + "snippet": { + "text": "aiogram==2.25.1\r\naiohttp==3.8.5\r\naiosignal==1.3.1\r\nannotated-types==0.5.0\r\nanyio==3.7.1\r\nasync-timeout==4.0.2\r\nattrs==23.1.0\r\nBabel==2.9.1\r\ncachetools==5.3.1\r\ncertifi==2023.7.22\r\ncharset-normalizer==3.2.0\r\ncolorama==0.4.6\r\ndeprecation==2.1.0\r\nfrozenlist==1.4.0\r\ngoogle-api-core==2.11.1\r\ngoogle-api-python-client==2.96.0\r\ngoogle-auth==2.22.0\r\ngoogle-auth-httplib2==0.1.0\r\ngoogle-auth-oauthlib==1.0.0\r\ngoogleapis-common-protos==1.60.0\r\ngotrue==1.0.3\r\ngspread==5.10.0\r\nh11==0.14.0\r\nhttpcore==0.17.3\r\nhttplib2==0.22.0\r\nhttpx==0.24.1\r\nidna==3.4\r\nmagic-filter==1.0.11\r\nmultidict==6.0.4\r\noauthlib==3.2.2\r\npackaging==23.1\r\nPillow==10.0.0\r\npostgrest==0.10.8\r\nprotobuf==4.24.0\r\npyasn1==0.5.0\r\npyasn1-modules==0.3.0\r\npydantic==2.1.1\r\npydantic_core==2.4.0\r\npyparsing==3.1.1\r\npypng==0.20220715.0\r\npython-dateutil==2.8.2\r\npython-dotenv==1.0.0\r\npytz==2023.3\r\npyzbar==0.1.9\r\nqrcode==7.4.2\r\nrealtime==1.0.0\r\nrequests==2.31.0\r\nrequests-oauthlib==1.3.1\r\nrsa==4.9\r\nschedule==1.2.0\r\nsix==1.16.0\r\nsniffio==1.3.0\r\nstorage3==0.5.4\r\nStrEnum==0.4.15\r\nsupabase==1.0.4\r\nsupafunc==0.2.3\r\ntyping_extensions==4.7.1\r\nuritemplate==4.1.1\r\nurllib3==1.26.16\r\nwebsockets==10.4\r" + }, + "sourceLanguage": "Requirements" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e738e74a2ffbefecd35aa5478ab4e6bd20b173a27f3ff9d73a6d5648c8de2ad7" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Requirements" + ] + } + }, + { + "ruleId": "PyPackageRequirementsInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied", + "markdown": "Package requirements 'aiogram==2.25.1', 'aiohttp==3.8.5', 'aiosignal==1.3.1', 'annotated-types==0.5.0', 'anyio==3.7.1', 'async-timeout==4.0.2', 'attrs==23.1.0', 'Babel==2.9.1', 'cachetools==5.3.1', 'certifi==2023.7.22', 'charset-normalizer==3.2.0', 'deprecation==2.1.0', 'frozenlist==1.4.0', 'google-api-core==2.11.1', 'google-api-python-client==2.96.0', 'google-auth==2.22.0', 'google-auth-httplib2==0.1.0', 'google-auth-oauthlib==1.0.0', 'googleapis-common-protos==1.60.0', 'gotrue==1.0.3', 'gspread==5.10.0', 'h11==0.14.0', 'httpcore==0.17.3', 'httplib2==0.22.0', 'httpx==0.24.1', 'magic-filter==1.0.11', 'multidict==6.0.4', 'oauthlib==3.2.2', 'Pillow==10.0.0', 'postgrest==0.10.8', 'protobuf==4.24.0', 'pyasn1==0.5.0', 'pyasn1-modules==0.3.0', 'pydantic==2.1.1', 'pydantic_core==2.4.0', 'pyparsing==3.1.1', 'pypng==0.20220715.0', 'python-dateutil==2.8.2', 'python-dotenv==1.0.0', 'pytz==2023.3', 'pyzbar==0.1.9', 'qrcode==7.4.2', 'realtime==1.0.0', 'requests-oauthlib==1.3.1', 'rsa==4.9', 'schedule==1.2.0', 'six==1.16.0', 'sniffio==1.3.0', 'storage3==0.5.4', 'StrEnum==0.4.15', 'supabase==1.0.4', 'supafunc==0.2.3', 'typing_extensions==4.7.1', 'uritemplate==4.1.1', 'urllib3==1.26.16', 'websockets==10.4', 'yarl==1.9.2', 'dirt_tongue' are not satisfied" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 2892, + "snippet": { + "text": "from .usersrepository import UserRepository\r\nfrom typing import List\r\nfrom src.models.users import User\r\nfrom supabase import Client, create_client\r\n\r\n\r\n\r\nclass SupabaseUserRepository(UserRepository):\r\n \r\n def __init__(self,client:Client, table_name:str = 'UsersData'):\r\n self.client = client\r\n self.table_name = table_name\r\n\r\n def get(self,id : str) -> User:\r\n try:\r\n chat_id:int = int(id)\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','tgusr','user_state').eq('chat_id', chat_id).execute()\r\n item = response.data[0]\r\n user_data = item\r\n pseudo = user_data.get('full_name', 'Unknown')\r\n gender = user_data.get('gender')\r\n gender = gender if gender != None else False\r\n age = user_data.get('age', 'Unknown')\r\n balance = user_data.get('balance')\r\n user_state = user_data.get('user_state')\r\n tgusr = user_data.get('tgusr')\r\n return User(\r\n chat_id=chat_id,\r\n full_name=pseudo,\r\n gender=gender,\r\n user_state=user_state,\r\n age=age,\r\n balance=balance,\r\n tgusr = tgusr\r\n )\r\n except ValueError:\r\n tgusr:str = id\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','chat_id','user_state').eq('tgusr', tgusr).execute()\r\n item = response.data[0]\r\n user_data = item\r\n chat_id = user_data.get('chat_id')\r\n pseudo = user_data.get('full_name', 'Unknown')\r\n gender = user_data.get('gender', 'Unknown')\r\n age = user_data.get('age', 'Unknown')\r\n balance = user_data.get('balance')\r\n user_state = user_data.get('user_state')\r\n return User(\r\n chat_id = chat_id,\r\n full_name=pseudo,\r\n gender=gender,\r\n user_state=user_state,\r\n age=age,\r\n balance=balance,\r\n tgusr = tgusr\r\n )\r\n except Exception as e:\r\n print(f\"Error get info about user: {chat_id}: {e}\")\r\n return None\r\n \r\n def set(self,user : User) -> None:\r\n if self.get(user.chat_id): \r\n self.client.table(self.table_name).update(user.dict()).eq('chat_id',user.chat_id).execute()\r\n else:\r\n #insert\r\n self.client.table(self.table_name).insert(user.dict()).execute()\r\n \r\n def delete(self,user : User) -> None:\r\n try:\r\n if self.get(user.chat_id):\r\n self.client.table(self.table_name).delete().eq('chat_id',user.chat_id).execute()\r\n except Exception as e:\r\n print(f\"Error delete user {user.chat_id} error : {e}\")" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 2892, + "snippet": { + "text": "from .usersrepository import UserRepository\r\nfrom typing import List\r\nfrom src.models.users import User\r\nfrom supabase import Client, create_client\r\n\r\n\r\n\r\nclass SupabaseUserRepository(UserRepository):\r\n \r\n def __init__(self,client:Client, table_name:str = 'UsersData'):\r\n self.client = client\r\n self.table_name = table_name\r\n\r\n def get(self,id : str) -> User:\r\n try:\r\n chat_id:int = int(id)\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','tgusr','user_state').eq('chat_id', chat_id).execute()\r\n item = response.data[0]\r\n user_data = item\r\n pseudo = user_data.get('full_name', 'Unknown')\r\n gender = user_data.get('gender')\r\n gender = gender if gender != None else False\r\n age = user_data.get('age', 'Unknown')\r\n balance = user_data.get('balance')\r\n user_state = user_data.get('user_state')\r\n tgusr = user_data.get('tgusr')\r\n return User(\r\n chat_id=chat_id,\r\n full_name=pseudo,\r\n gender=gender,\r\n user_state=user_state,\r\n age=age,\r\n balance=balance,\r\n tgusr = tgusr\r\n )\r\n except ValueError:\r\n tgusr:str = id\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','chat_id','user_state').eq('tgusr', tgusr).execute()\r\n item = response.data[0]\r\n user_data = item\r\n chat_id = user_data.get('chat_id')\r\n pseudo = user_data.get('full_name', 'Unknown')\r\n gender = user_data.get('gender', 'Unknown')\r\n age = user_data.get('age', 'Unknown')\r\n balance = user_data.get('balance')\r\n user_state = user_data.get('user_state')\r\n return User(\r\n chat_id = chat_id,\r\n full_name=pseudo,\r\n gender=gender,\r\n user_state=user_state,\r\n age=age,\r\n balance=balance,\r\n tgusr = tgusr\r\n )\r\n except Exception as e:\r\n print(f\"Error get info about user: {chat_id}: {e}\")\r\n return None\r\n \r\n def set(self,user : User) -> None:\r\n if self.get(user.chat_id): \r\n self.client.table(self.table_name).update(user.dict()).eq('chat_id',user.chat_id).execute()\r\n else:\r\n #insert\r\n self.client.table(self.table_name).insert(user.dict()).execute()\r\n \r\n def delete(self,user : User) -> None:\r\n try:\r\n if self.get(user.chat_id):\r\n self.client.table(self.table_name).delete().eq('chat_id',user.chat_id).execute()\r\n except Exception as e:\r\n print(f\"Error delete user {user.chat_id} error : {e}\")" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fa2c8bb36a6807c96e6539aa74de228bf5cdfda687c97d4f3b5438148ed03be4" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 638, + "startColumn": 1, + "charOffset": 28736, + "charLength": 58, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.change_user_agestart)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 636, + "startColumn": 1, + "charOffset": 28718, + "charLength": 216, + "snippet": { + "text": " return\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_agestart)\r\nasync def admin_change_user_age_handler(message: types.Message, state: FSMContext):\r\n new_age = message.text # получаем новый возраст\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "000b494a873a47bf920cd886b14c28e306d59c6e5b162f5561581153ffe33379" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (136 > 120 characters)", + "markdown": "PEP 8: E501 line too long (136 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 617, + "startColumn": 115, + "charOffset": 27762, + "charLength": 19, + "snippet": { + "text": "ReplyKeyboardRemove" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 615, + "startColumn": 1, + "charOffset": 27570, + "charLength": 272, + "snippet": { + "text": " admin.user_state = str(AdminPanel.change_user_age)\r\n users.set(admin)\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_age)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "004c197b5986da49e29034c5d3a9052f9818b2e3e3b5d3f7c891de29db265c91" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1165, + "startColumn": 26, + "charOffset": 52476, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1163, + "startColumn": 1, + "charOffset": 52382, + "charLength": 171, + "snippet": { + "text": "\r\n user.user_state = str(RegistrationStates.waiting_for_age)\r\n if telegram_name == None:\r\n user.tgusr = \"У пользователя нет имени\"\r\n else:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "01198f44a117f6df64ed14998863eff94789ccd56d6a9d59e43a339094624215" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1762, + "startColumn": 61, + "charOffset": 80766, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1760, + "startColumn": 1, + "charOffset": 80633, + "charLength": 224, + "snippet": { + "text": " ibback = KeyboardButton(text=\"⬅️Меню\")\r\n print(f\"{task['url']}\")\r\n ibgo = KeyboardButton(text=\"✅\", web_app = WebAppInfo(url = f'{task[\"url\"]}'))\r\n ikbmtasks.row(ibleft, ibgo, ibright)\r\n ikbmtasks.row(ibback)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0133db6ed8ed3b545f656022fd1e5bfdc982d1702741957adb950ab1c0535161" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1219, + "startColumn": 64, + "charOffset": 54843, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1217, + "startColumn": 1, + "charOffset": 54742, + "charLength": 178, + "snippet": { + "text": "\r\n # Запрашиваем имя пользователя\r\n await query.message.reply(\"Введите ваше ФИО:\", reply_markup = helpinlinereg)\r\n\r\n # Переход к следующему состоянию \"waiting_for_name\"\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0188f6263cc8a46c9ca862a045f28b649ccfa61ca8da57b390008b61972a362d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (309 > 120 characters)", + "markdown": "PEP 8: E501 line too long (309 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 76, + "startColumn": 28, + "charOffset": 4804, + "charLength": 282, + "snippet": { + "text": "\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 74, + "startColumn": 1, + "charOffset": 4724, + "charLength": 698, + "snippet": { + "text": " else:\n if user[\"gender\"]:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"\n else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "01d89200a89f7c75aa41872c61ec29bc920e07ddfbc08c9b89009c02633db877" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ','", + "markdown": "PEP 8: E203 whitespace before ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1897, + "startColumn": 60, + "charOffset": 86112, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1895, + "startColumn": 1, + "charOffset": 85928, + "charLength": 325, + "snippet": { + "text": "\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=[MenuStates.promocode,MenuStates.promocodestart])\r\nasync def handle_qr(message: types.ContentType.WEB_APP_DATA , state: FSMContext):\r\n message.text = message.web_app_data.data\r\n await asyncio.wait_for(check_promocode(message,state),timeout=3.5)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "02ad408f24b464498fafc46fb6c51fed8b802d701050f64c134f10cba5ef45a1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (132 > 120 characters)", + "markdown": "PEP 8: E501 line too long (132 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 16, + "startColumn": 121, + "charOffset": 451, + "charLength": 1, + "snippet": { + "text": "4" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 14, + "startColumn": 1, + "charOffset": 253, + "charLength": 245, + "snippet": { + "text": "async def show_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', 'tgusr').order('balance', desc = True).limit(4).execute()\r\n\r\n # Формируем текст рейтинга\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "031c86d9ec39f87c5b911c79846b0063ab2781ae2fcd973fc33131e43d603c60" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1176, + "startColumn": 1, + "charOffset": 52879, + "charLength": 61, + "snippet": { + "text": "@dp.message_handler(state=RegistrationStates.waiting_for_age)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1174, + "startColumn": 1, + "charOffset": 52821, + "charLength": 217, + "snippet": { + "text": " await RegistrationStates.waiting_for_age.set()\r\n\r\n@dp.message_handler(state=RegistrationStates.waiting_for_age)\r\nasync def handle_age(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0360842bae556ef2fe62639810aa181dd1472f8703e0bfc01d980db993a0a559" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 41, + "startColumn": 1, + "charOffset": 1609, + "charLength": 63, + "snippet": { + "text": "#confirm delete button and edit button + back button to profile" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 39, + "startColumn": 1, + "charOffset": 1513, + "charLength": 260, + "snippet": { + "text": "backtomenubutton = KeyboardButton(text=\"⬅️Назад в меню\")\r\nprofilebuttons.row(backtomenubutton)\r\n#confirm delete button and edit button + back button to profile\r\nback = ReplyKeyboardMarkup(resize_keyboard=True)\r\nbackbutt = KeyboardButton(text=\"⬅️Назад в меню\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "03be2066059efcff459ca83d02b1693674bc6b34878a9b584f0fb52b7270160c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1548, + "startColumn": 53, + "charOffset": 70678, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1546, + "startColumn": 1, + "charOffset": 70468, + "charLength": 369, + "snippet": { + "text": " supabase.table('Passd').delete().eq('chat_id', chat_id).execute()\r\n supabase.table('UsedPromocode').delete().eq('chat_id', chat_id).execute()\r\n supabase.table('Report').delete().eq('tgusr',tgname).execute()\r\n await bot.send_message(chat_id, \"Ваш профиль был удален!\", reply_markup=types.ReplyKeyboardRemove())\r\n await state.finish()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "04b1e0207a8e756ac2b151824e96465a707092b25d69b7c4099cf4677f5eb0e2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 14, + "startColumn": 17, + "charOffset": 363, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 12, + "startColumn": 1, + "charOffset": 307, + "charLength": 125, + "snippet": { + "text": " self.table_name = table_name\r\n\r\n def get(self,id : str) -> User:\r\n try:\r\n chat_id:int = int(id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "05146bf2b07bf453648ac3647d44ec8af0b3d2faaaa929a581d60c6b5a7876fd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 3, + "startColumn": 1, + "charOffset": 157, + "charLength": 15, + "snippet": { + "text": "#gender buttons" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 282, + "snippet": { + "text": "from aiogram.types import InlineKeyboardMarkup,InlineKeyboardButton, ReplyKeyboardMarkup, KeyboardButton\r\nfrom aiogram.types.web_app_info import WebAppInfo\r\n#gender buttons\r\nikbg = InlineKeyboardMarkup(row_width=2)\r\nibm = InlineKeyboardButton(text=\"🙋‍♂️Мужчина\",callback_data='1')\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "074877ecafa0594093a5555492c3ed6bd53699d0ceb96ee88fe7d14efbe60c72" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (141 > 120 characters)", + "markdown": "PEP 8: E501 line too long (141 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1649, + "startColumn": 120, + "charOffset": 75666, + "charLength": 12, + "snippet": { + "text": "reply_markup" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1647, + "startColumn": 1, + "charOffset": 75509, + "charLength": 195, + "snippet": { + "text": "\r\n # Подтверждающее сообщение\r\n await bot.send_message(chat_id, \"Заявка успешно отправлена! В ближайшее время с вами свяжется администратор.\", reply_markup=userhelp)\r\n\r\n except:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "07fdceff98fc2058a3482e907939b7be01a6184456a34056134bf70f2a4083b5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (213 > 120 characters)", + "markdown": "PEP 8: E501 line too long (213 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 436, + "startColumn": 9, + "charOffset": 18394, + "charLength": 204, + "snippet": { + "text": "\"Вы попали в меню редактирования пользователя, нажмите нужную вам кнопку чтобы изменить параметры пользователя. После нажатия на кнопку введите @username человека в телеграм чтобы поменять его параметры.\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 434, + "startColumn": 1, + "charOffset": 18339, + "charLength": 292, + "snippet": { + "text": " users.set(user)\r\n await message.reply(\r\n \"Вы попали в меню редактирования пользователя, нажмите нужную вам кнопку чтобы изменить параметры пользователя. После нажатия на кнопку введите @username человека в телеграм чтобы поменять его параметры.\",\r\n reply_markup=admue)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "09a7eec1c7e54b6cf07829c17ae983eae6f797af489c89774d83332719597f53" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 853, + "startColumn": 1, + "charOffset": 38696, + "charLength": 52, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.rules_addmaker)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 851, + "startColumn": 1, + "charOffset": 38550, + "charLength": 297, + "snippet": { + "text": " await message.reply(\"Введите @username пользователя которому хотите выдать права ивент мейкера\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.rules_addmaker)\r\nasync def give_rules_start(message: types.Message, state: FSMContext):\r\n tgusr = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0a99b0ede0405a39e5b5e18d87e35b0f9290ef0fb350c88280ef50ebe5bc5ce8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 64, + "startColumn": 119, + "charOffset": 4193, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 62, + "startColumn": 1, + "charOffset": 3979, + "charLength": 283, + "snippet": { + "text": " sh: Spreadsheet = gc.open_by_url(SPREADSHEET_URL)\n worksheet = sh.worksheet(\"📊Рейтинг\")\n response = supabase.table('UsersData').select('chat_id','full_name', 'balance', 'gender' ).order('balance', desc = True).execute()\n users_data = response.data\n worksheet.clear()" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0ac49f4631a49ec71beb3474796533a5c87fe1ac7ead4028dfce5ecbf33082b0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1299, + "startColumn": 1, + "charOffset": 58689, + "charLength": 78, + "snippet": { + "text": "@dp.callback_query_handler(text=\"cancel_user_help\", state=MenuStates.help_end)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1297, + "startColumn": 1, + "charOffset": 58649, + "charLength": 295, + "snippet": { + "text": " await MenuStates.promocode.set()\r\n\r\n@dp.callback_query_handler(text=\"cancel_user_help\", state=MenuStates.help_end)\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню помощи.\", reply_markup=userhelp)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0ac7ef6a4274aef58c7dccf9fbdd11417eaea6e80b3e73afe2d9a8b2f15889f7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1294, + "startColumn": 1, + "charOffset": 58385, + "charLength": 82, + "snippet": { + "text": "@dp.callback_query_handler(text='back_to_menu', state = MenuStates.promocodestart)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1292, + "startColumn": 1, + "charOffset": 58338, + "charLength": 310, + "snippet": { + "text": " await ProlfileStates.edit_profile.set()\r\n\r\n@dp.callback_query_handler(text='back_to_menu', state = MenuStates.promocodestart)\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню промокодов.\", reply_markup=promo_kb)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0c0dcea2d68ad810b36d8049a6531dd3d48b7706da5fed18a5de24e63b43a699" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 345, + "startColumn": 1, + "charOffset": 13809, + "charLength": 74, + "snippet": { + "text": "@dp.message_handler(text='⬅️Назад в меню', state=EventMakerPanel.taskmenu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 343, + "startColumn": 1, + "charOffset": 13761, + "charLength": 240, + "snippet": { + "text": " await EventMakerPanel.taskmenu.set()\r\n\r\n@dp.message_handler(text='⬅️Назад в меню', state=EventMakerPanel.taskmenu)\r\nasync def back_to_event_main_menu(message: types.Message, state: FSMContext):\r\n await EventMakerPanel.menu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0c44ae722ee5a1aa34543021ee788339a51aae908ed961db2d70c9e6d3318f74" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1126, + "startColumn": 30, + "charOffset": 50607, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1124, + "startColumn": 1, + "charOffset": 50488, + "charLength": 205, + "snippet": { + "text": " querydict_dump: str = json.dumps(querydict)\r\n url = url + querydict_dump \r\n url = url.replace(' ','%20')\r\n url = url.replace('\"', '%22')\r\n data = await state.get_data()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0c536c8197721b7ddcbe273db388991293eeb73e58e0c979d658150eeb57b418" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1668, + "startColumn": 1, + "charOffset": 76526, + "charLength": 28, + "snippet": { + "text": "#Система тикетов для админов" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1666, + "startColumn": 1, + "charOffset": 76402, + "charLength": 277, + "snippet": { + "text": "\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система тикетов для админов\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0ca768cc2629e0d2896e4d2d7a72d1828c8eee42a051ae68697c5caeb4194a69" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 525, + "startColumn": 1, + "charOffset": 22972, + "charLength": 57, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.change_user_balance)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 523, + "startColumn": 1, + "charOffset": 22954, + "charLength": 197, + "snippet": { + "text": " return\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_balance)\r\nasync def admin_change_user_balance_handler(message: types.Message, state: FSMContext):\r\n new_balance = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0d9a2aebc1973c7c1a800899144d57706d73c4194d14edf674eb2477be93f396" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1667, + "startColumn": 1, + "charOffset": 76404, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1665, + "startColumn": 1, + "charOffset": 76322, + "charLength": 355, + "snippet": { + "text": " await bot.send_message(chat_id, \"Вы вернулись в меню!\", reply_markup=rkbm)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система тикетов для админов\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0dcbbc9f448660caf97a103b2d5bd09b4fe76198967181db6bba73c948ee1e29" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1671, + "startColumn": 49, + "charOffset": 76728, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1669, + "startColumn": 1, + "charOffset": 76556, + "charLength": 297, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📨Обращения\", state = AdminPanel.admin_menu)\r\nasync def handle_report(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0e32540bec3f6ca28083773f04e0930d1710042c53487d23ed60b6547b046cec" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 178, + "startColumn": 61, + "charOffset": 7938, + "charLength": 7, + "snippet": { + "text": "web_app" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 176, + "startColumn": 1, + "charOffset": 7799, + "charLength": 362, + "snippet": { + "text": "ikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r\nibadminrating = InlineKeyboardButton(text=\"📊Админ Рейтинг\",web_app = WebAppInfo(url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vR__0ahX-O5SK3sS7OditV88sjG64duAF6mAW702CT3uM3Yj6z5mwsnxv-lL2vF9-H3YjlD0rtmg84N/pubhtml?gid=0&single=true'))\r\nikbmadminrating.add(ibadminrating)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0f0f2bc8a8aa534d6daf9ce6b9c4ee5e9523a1064af673f2ff88c085e28ac818" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 302, + "startColumn": 18, + "charOffset": 11785, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 300, + "startColumn": 1, + "charOffset": 11678, + "charLength": 170, + "snippet": { + "text": " numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0f3e1862c70ee88557babf4e15d30add8a00ac8b55dc1f1265850291cc8f8f1c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 97, + "startColumn": 31, + "charOffset": 3937, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 95, + "startColumn": 1, + "charOffset": 3795, + "charLength": 221, + "snippet": { + "text": "ruleskbm_check = KeyboardButton(text=\"Действующие права\")\r\nruleskbm_back = KeyboardButton(text=\"⬅️Админ меню\")\r\nruleskbm.row(ruleskbm_addmaker,ruleskbm_delmaker)\r\nruleskbm.row(ruleskbm_check)\r\nruleskbm.row(ruleskbm_back)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0fc139648efd3ae51c8e1613fefbd7994c384e8b52b9c4361f3f4c014964c621" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 175, + "startColumn": 66, + "charOffset": 7621, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 173, + "startColumn": 1, + "charOffset": 7491, + "charLength": 386, + "snippet": { + "text": "#rating buttons\r\nikbmrating = InlineKeyboardMarkup(row_width=1)\r\nibrating = InlineKeyboardButton(text=\"📊Полный рейтинг\", web_app = WebAppInfo(url ='https://docs.google.com/spreadsheets/d/e/2PACX-1vQFzN5HRvQhS5j4kDcv9wWH3uucCqp1AFmu2ErZYikmmJSshj1f16v7ry013vde0y6OYVWeSsVtgaKT/pubhtml?gid=0&single=true') )\r\nikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0fc8b939ccfb765df709db3244741c7c2351c4847b2b908793647948f3bd9167" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1080, + "startColumn": 39, + "charOffset": 48250, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1078, + "startColumn": 1, + "charOffset": 48126, + "charLength": 245, + "snippet": { + "text": " await AdminPanel.taskmenu_collection_counterwait.set()\r\n if counter <= 0:\r\n await bot.send_message(chat_id,\"Введенное значение должно быть числом > 0\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n else:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "10119e49b649831102ecb7e004990d1d946611d85ec050e3192c598743eb5c7d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 665, + "startColumn": 1, + "charOffset": 30092, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 663, + "startColumn": 1, + "charOffset": 29948, + "charLength": 269, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Система промокодов\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "107bbced5e13c945b75bda2e3de5195de5f7befbf7897f0aef88f94b665d2dab" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (126 > 120 characters)", + "markdown": "PEP 8: E501 line too long (126 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1421, + "startColumn": 118, + "charOffset": 64473, + "charLength": 7, + "snippet": { + "text": "execute" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1419, + "startColumn": 1, + "charOffset": 64314, + "charLength": 205, + "snippet": { + "text": " promocode = promocode_data.data[0]\r\n\r\n used_promocode_data = supabase.table('UsedPromocode').select('chat_id').eq('promo', poro).eq('chat_id', chat_id).execute()\r\n\r\n if used_promocode_data.data:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "111677fb79382af7079bbd5b0f7ab0387fe54c424064536efc5a707d34b8eb7e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (121 > 120 characters)", + "markdown": "PEP 8: E501 line too long (121 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1875, + "startColumn": 1, + "charOffset": 84826, + "charLength": 121, + "snippet": { + "text": "#------------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1873, + "startColumn": 1, + "charOffset": 84822, + "charLength": 304, + "snippet": { + "text": "\r\n\r\n#------------------------------------------------------------------------------------------------------------------------\r\n#Система отлова людей без state и обработчик стикеров\r\n#------------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1130653776c4e21c1b7b421943778d727f9276f0d8c4d5a2a47b6b55c7ed33ce" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1095, + "startColumn": 18, + "charOffset": 49087, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1093, + "startColumn": 1, + "charOffset": 48980, + "charLength": 170, + "snippet": { + "text": " numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1167480465b2c72ec3016e00e48b7c73355504f48031ec815924f8df7627a671" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 826, + "startColumn": 1, + "charOffset": 37234, + "charLength": 129, + "snippet": { + "text": "@dp.message_handler(text=\"⬅️Админ меню\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end, AdminPanel.promo_menu])" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 824, + "startColumn": 1, + "charOffset": 37199, + "charLength": 313, + "snippet": { + "text": "\r\n# Хедлер для бека в меню админа\r\n@dp.message_handler(text=\"⬅️Админ меню\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end, AdminPanel.promo_menu])\r\nasync def admin_backtomenu(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "122fca80e4d193f6a223908a3598bfe755f4ba9a36d614d23e6a79f564a96f9d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 710, + "startColumn": 1, + "charOffset": 32011, + "charLength": 78, + "snippet": { + "text": "@dp.message_handler(text=\"Действующие промокоды\", state=AdminPanel.promo_menu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 708, + "startColumn": 1, + "charOffset": 31959, + "charLength": 259, + "snippet": { + "text": " user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text=\"Действующие промокоды\", state=AdminPanel.promo_menu)\r\nasync def admin_promocodes_check(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_check_promocode.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "12950cf0b60428bfca0bbdab10958876bc30a5def9a58286daedf61928b2756a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 198, + "startColumn": 78, + "charOffset": 8980, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 196, + "startColumn": 1, + "charOffset": 8828, + "charLength": 367, + "snippet": { + "text": "#survey web-app\r\nsurveywebapp = ReplyKeyboardMarkup(resize_keyboard=True)\r\nsurvquestcreate = KeyboardButton(text=\"Создать вопрос\",web_app=WebAppInfo(url = 'https://survey-web-app.pages.dev/edit?json=%7B%22surveyData%22%3A%20%5B%7B%22questionId%22%3A%2069%2C%20%22question%22%3A%20%22%22%2C%20%22choices%22%3A%20%5B%5D%7D%5D%7D'))\r\nsurveywebapp.row(survquestcreate)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "138536f162a782dcede68b5508b8407c2f6f46a38f35696304c5fcffb272666e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (264 > 120 characters)", + "markdown": "PEP 8: E501 line too long (264 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1593, + "startColumn": 39, + "charOffset": 72929, + "charLength": 93, + "snippet": { + "text": "Привет\\\\! Если у тебя есть какие\\\\-то проблемы или пожелания \\\\, то смелее нажимай на кнопку " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1591, + "startColumn": 1, + "charOffset": 72793, + "charLength": 439, + "snippet": { + "text": "async def handle_help(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, f\"Привет\\\\! Если у тебя есть какие\\\\-то проблемы или пожелания \\\\, то смелее нажимай на кнопку \" + f\"{code('📨Создать заявку')}\" + f\" и администратор с радостью тебе поможет\\\\! \", reply_markup=userhelp, parse_mode = 'MarkdownV2')\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.help)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "144f37b0846e35d1578b8cb2f33192c34944962b44e1000a1e28d7d1b6190689" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 556, + "startColumn": 1, + "charOffset": 24557, + "charLength": 63, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.change_user_fullnamestart)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 554, + "startColumn": 1, + "charOffset": 24533, + "charLength": 228, + "snippet": { + "text": " users.set(admin)\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_fullnamestart)\r\nasync def admin_change_user_fullname_handler(message: types.Message, state: FSMContext):\r\n username = message.text # получаем username\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "14707342b7adb6cbf73ae66ca5bd73b9f4e1b8bc2def91d4b83d14c8e373b9ee" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1659, + "startColumn": 21, + "charOffset": 76008, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1657, + "startColumn": 1, + "charOffset": 75923, + "charLength": 247, + "snippet": { + "text": " await state.finish()\r\n await MenuStates.help_ender.set()\r\n users.user_state=str(MenuStates.help)\r\n\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "14ac225d2ad3ee53dfd610376608cb6e4f8786a21227efea1156a25fb00333dd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1374, + "startColumn": 1, + "charOffset": 62524, + "charLength": 19, + "snippet": { + "text": "#Система промокодов" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1372, + "startColumn": 1, + "charOffset": 62400, + "charLength": 269, + "snippet": { + "text": "\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система промокодов\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "14c9bac4ee2c514cd6781905fd254edd4b46ea86bdbc57416da6e765ebc93fe5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1765, + "startColumn": 88, + "charOffset": 80945, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1763, + "startColumn": 1, + "charOffset": 80789, + "charLength": 283, + "snippet": { + "text": " ikbmtasks.row(ibleft, ibgo, ibright)\r\n ikbmtasks.row(ibback)\r\n message_id_data = await bot.send_photo(chat_id, task['photo'] , text, reply_markup= ikbmtasks)\r\n message_id_data = message_id_data['message_id']\r\n await state.update_data(message_id_data=message_id_data)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1505dfa13ff94e8efe612615a56db5dd263b44eb0f32ec8374f5a3a4c81e283b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 25, + "startColumn": 1, + "charOffset": 908, + "charLength": 26, + "snippet": { + "text": "def admin_rating_udpate():" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 23, + "startColumn": 1, + "charOffset": 849, + "charLength": 241, + "snippet": { + "text": "users : UserRepository = SupabaseUserRepository(supabase)\n\ndef admin_rating_udpate():\n gc: Client = gspread.service_account(\"./GoogleSheets/boilerpoint-393111-68b01f6645e3.json\")\n sh: Spreadsheet = gc.open_by_url(ADMIN_SPREADSHEET_URL)" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "150a7ba86111b7c63bc74a340ff75dcfcb8735c22380c73d0e0225c2c731e5b2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1050, + "startColumn": 1, + "charOffset": 46727, + "charLength": 62, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.taskmenu_descriptionwait)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1048, + "startColumn": 1, + "charOffset": 46668, + "charLength": 239, + "snippet": { + "text": " await AdminPanel.taskmenu_descriptionwait.set()\r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_descriptionwait)\r\nasync def admin_taskmenu_descriptionwait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1582260897783f6adbb618ad7d30fb8c56849a5e8e72846ca8f935230f265473" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1146, + "startColumn": 1, + "charOffset": 51604, + "charLength": 121, + "snippet": { + "text": "#----------------------------------------------------------------------------------------------------------------------- " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1144, + "startColumn": 1, + "charOffset": 51459, + "charLength": 271, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Система регистрации\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "159f3ed70a95e79ecc0a4dd5b80aba2aaff2dc1870c7fb24a911781278d3ec1c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 143, + "startColumn": 1, + "charOffset": 4647, + "charLength": 35, + "snippet": { + "text": "class EventMakerPanel(StatesGroup):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 141, + "startColumn": 1, + "charOffset": 4595, + "charLength": 132, + "snippet": { + "text": " taskmenu_collection_delete_confirm = State()\r\n\r\nclass EventMakerPanel(StatesGroup):\r\n menu = State()\r\n taskmenu = State()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "15f166c7460317a070379edb74442879e76df40e874f24710ab5a826cd3347f0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E252 missing whitespace around parameter equals", + "markdown": "PEP 8: E252 missing whitespace around parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 68, + "startColumn": 26, + "charOffset": 2249, + "charLength": 13, + "snippet": { + "text": "standart_dirt" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 66, + "startColumn": 1, + "charOffset": 2198, + "charLength": 102, + "snippet": { + "text": " return hide_search\r\n\r\ndef is_dirt(pattern: str=standart_dirt):\r\n\r\n funk = _get_search(pattern)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "16ee435a43a8e4dd7ce6046d54c92863bbf02612261570d3dac7a1598fb7cc55" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 110, + "startColumn": 1, + "charOffset": 4372, + "charLength": 17, + "snippet": { + "text": "#User help button" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 108, + "startColumn": 1, + "charOffset": 4339, + "charLength": 160, + "snippet": { + "text": "admreport.row(admreport_back)\r\n\r\n#User help button\r\nuserhelp = ReplyKeyboardMarkup(resize_keyboard=True)\r\nuserhelp_back = KeyboardButton(text=\"⬅️Назад в меню\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "176a42d392d62c31918c1aabc77a75bba99f4fd3a916e0ea8407ef619a0b3601" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 155, + "startColumn": 1, + "charOffset": 5071, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 153, + "startColumn": 1, + "charOffset": 5019, + "charLength": 316, + "snippet": { + "text": " taskmenu_collection_delete_confirm = State()\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Event maker panel\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "178f6083f029b278ac9b6e38b590a3342cccfab62265c513a09e6f2799809b88" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1031, + "startColumn": 35, + "charOffset": 45822, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1029, + "startColumn": 1, + "charOffset": 45691, + "charLength": 262, + "snippet": { + "text": "async def admin_make(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id,f\"Введите название коллекции заданий:\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.taskmenu_namewait.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1801b1ee65556767a6f48f0cf8d75ae7db3b05241dac991934ae997b4b08c836" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E222 multiple spaces after operator", + "markdown": "PEP 8: E222 multiple spaces after operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 10, + "startColumn": 7, + "charOffset": 392, + "charLength": 2, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 8, + "startColumn": 1, + "charOffset": 369, + "charLength": 158, + "snippet": { + "text": "\r\n#menu buttons\r\nrkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nkprofile= KeyboardButton(text=\"👤Профиль\")\r\nkliderboard= KeyboardButton(text=\"📊Рейтинг\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "18b8aabcbb33e6791f7ff00ab92e600c222bc2c991d0cb3e53632e6947bcd89b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 70, + "startColumn": 32, + "charOffset": 2701, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 68, + "startColumn": 1, + "charOffset": 2666, + "charLength": 194, + "snippet": { + "text": "\r\n\r\ndef get_user_info_by_id(chat_id:int ) -> str:\r\n try:\r\n response = supabase.table('UsersData').select('full_name','gender','age','balance','tgusr').eq('chat_id', chat_id).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "18dfb717594d0d0fa1b5956611b1a36d72efafff162a055bc2b4c95bcd99a95d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (124 > 120 characters)", + "markdown": "PEP 8: E501 line too long (124 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1709, + "startColumn": 103, + "charOffset": 78363, + "charLength": 19, + "snippet": { + "text": "ReplyKeyboardRemove" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1707, + "startColumn": 1, + "charOffset": 78177, + "charLength": 303, + "snippet": { + "text": " user = users.get(chat_id)\r\n user.user_state = str(AdminPanel.ticket_delete)\r\n await message.reply(\"Введите @username пользователя чтобы удалить его заявку\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.ticket_start.set()\r\n user.user_state = str(AdminPanel.ticket_delete)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "19680063f90c92220dd488c485e3e65e7200190e2cf92b86d9951813c4555a82" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1896, + "startColumn": 1, + "charOffset": 85930, + "charLength": 121, + "snippet": { + "text": "@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=[MenuStates.promocode,MenuStates.promocodestart])" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1894, + "startColumn": 1, + "charOffset": 85806, + "charLength": 375, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=[MenuStates.promocode,MenuStates.promocodestart])\r\nasync def handle_qr(message: types.ContentType.WEB_APP_DATA , state: FSMContext):\r\n message.text = message.web_app_data.data\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "197089c614fb451dac5c6ed89c99836d968f6d8e8e3cb1ef63dd2adbcc9c7cb4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 134, + "startColumn": 1, + "charOffset": 5601, + "charLength": 19, + "snippet": { + "text": "#admin promo button" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 132, + "startColumn": 1, + "charOffset": 5530, + "charLength": 213, + "snippet": { + "text": "admui_back = InlineKeyboardButton(text=\"⬅️Отменить редактирование\")\r\n\r\n#admin promo button\r\nadmpromo = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmpromo_checkpromo = KeyboardButton(text=\"Действующие промокоды\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "19cde95a2d9d0ebe1ab74a6a7cadcfa2d40a683e4ccb01c62b8cd38e10508232" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 29, + "startColumn": 1, + "charOffset": 843, + "charLength": 54, + "snippet": { + "text": "def update_user_state_by_id(chat_id: int, state: str):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 27, + "startColumn": 1, + "charOffset": 822, + "charLength": 157, + "snippet": { + "text": " return \"\"\r\n\r\ndef update_user_state_by_id(chat_id: int, state: str):\r\n try:\r\n chat_id_str = str(chat_id) # Преобразование chat_id в строку\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1a326e175151d4d9e2132ab288f5111e260d6273763d34f307089f77a9f71255" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (291 > 120 characters)", + "markdown": "PEP 8: E501 line too long (291 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1246, + "startColumn": 100, + "charOffset": 55992, + "charLength": 190, + "snippet": { + "text": "!У вас нет имени пользователя Телеграм, связь администрации с вами может быть усложнена, вам необходимо указать в вашем профиле телеграма ваше имя пользователя и перерегистрироваться в боте." + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1244, + "startColumn": 1, + "charOffset": 55793, + "charLength": 462, + "snippet": { + "text": " if str(message.from_user.username) == 'None':\r\n await bot.send_message(chat_id,\r\n f\"Регистрация успешно завершена с неточностями, {user.full_name}!У вас нет имени пользователя Телеграм, связь администрации с вами может быть усложнена, вам необходимо указать в вашем профиле телеграма ваше имя пользователя и перерегистрироваться в боте.\",\r\n reply_markup=rkbm)\r\n else:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1a5d82733af38037fa7d127f5be5f00af8466804ffffbd168e1e5ba72e54b954" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 13, + "startColumn": 10, + "charOffset": 537, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 11, + "startColumn": 1, + "charOffset": 437, + "charLength": 229, + "snippet": { + "text": "kprofile= KeyboardButton(text=\"👤Профиль\")\r\nkliderboard= KeyboardButton(text=\"📊Рейтинг\")\r\nkschedule= KeyboardButton(text=\"📆Календарь событий\")\r\nkhelp= KeyboardButton(text=\"❓Помощь\")\r\nkexercise= KeyboardButton(text=\"📝Задания\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1ab811c2d80a3088b2dfd37757deebca522465cbc0dcf0149e4efcb9e93a0c1c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1774, + "startColumn": 15, + "charOffset": 81309, + "charLength": 1, + "snippet": { + "text": ">" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1772, + "startColumn": 1, + "charOffset": 81223, + "charLength": 228, + "snippet": { + "text": " data = await state.get_data()\r\n counter = data.get('counter')+1\r\n if counter>len(supabase.table('TaskCollection').select('name' ).execute().data)-1:\r\n counter = 0\r\n await state.update_data(counter = counter)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1b39bfbaeb68e551c52223fd523aa30855d4ef788541b72a83b55c40cff9ba5f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 406, + "startColumn": 1, + "charOffset": 16923, + "charLength": 58, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.update_users_balance)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 404, + "startColumn": 1, + "charOffset": 16872, + "charLength": 233, + "snippet": { + "text": " await AdminPanel.update_users_balance.set()\r\n\r\n@dp.message_handler(state=AdminPanel.update_users_balance)\r\nasync def update_users_balance(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1b46fffe9ec1151685d1668698fe9b9121cdc9d103c0aa59fcbf9b19ecd1c118" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 14, + "startColumn": 1, + "charOffset": 253, + "charLength": 36, + "snippet": { + "text": "async def show_rating(chat_id: int):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 12, + "startColumn": 1, + "charOffset": 214, + "charLength": 250, + "snippet": { + "text": "bot = Bot(token=os.getenv(\"TOKEN\"))\r\n\r\nasync def show_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', 'tgusr').order('balance', desc = True).limit(4).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1bed7efd5291797e8245f56e2a71fc7e91501963c7ab132c6538683b587759a3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E202 whitespace before ')'", + "markdown": "PEP 8: E202 whitespace before ')'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1774, + "startColumn": 66, + "charOffset": 81360, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1772, + "startColumn": 1, + "charOffset": 81223, + "charLength": 228, + "snippet": { + "text": " data = await state.get_data()\r\n counter = data.get('counter')+1\r\n if counter>len(supabase.table('TaskCollection').select('name' ).execute().data)-1:\r\n counter = 0\r\n await state.update_data(counter = counter)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1c487b3f249461a485b1f6e28625433e2d50a8cd30974d3e1a68092e678a10eb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1526, + "startColumn": 1, + "charOffset": 69333, + "charLength": 25, + "snippet": { + "text": "#Система удаления профиля" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1524, + "startColumn": 1, + "charOffset": 69209, + "charLength": 275, + "snippet": { + "text": "\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система удаления профиля\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1c5273ae24e65f14f2d4aff0b487bfab1804e787fcf3b889d4cebc312be54de1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 30, + "startColumn": 1, + "charOffset": 924, + "charLength": 41, + "snippet": { + "text": "async def show_user_rating(chat_id: int):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 28, + "startColumn": 1, + "charOffset": 842, + "charLength": 291, + "snippet": { + "text": " await bot.send_message(chat_id, rating_text, reply_markup=ikbmadminrating)\r\n\r\nasync def show_user_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', ).order('balance', desc = True).limit(4).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1cc42e2a1a954bd93255f56f09f9c0a3c485bd8decd48f34344678ced9ca4425" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1753, + "startColumn": 36, + "charOffset": 80260, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1751, + "startColumn": 1, + "charOffset": 80155, + "charLength": 287, + "snippet": { + "text": " data = await state.get_data()\r\n counter = data.get('counter')\r\n await state.update_data(counter = counter)\r\n task = supabase.table('TaskCollection').select('name','description','photo','url').execute().data[int(counter)]\r\n text = f\"{task['name']}\\n{task['description']}\"\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1ce36d8721d286907ed4f04918ac953c4f6879d39c5d73831471e32df11cb210" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1671, + "startColumn": 1, + "charOffset": 76680, + "charLength": 72, + "snippet": { + "text": "@dp.message_handler(text = \"📨Обращения\", state = AdminPanel.admin_menu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1669, + "startColumn": 1, + "charOffset": 76556, + "charLength": 297, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📨Обращения\", state = AdminPanel.admin_menu)\r\nasync def handle_report(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1de33eafefada44f945e136d798f1ea598ec9745069311457f3b38c99ba05f91" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 574, + "startColumn": 1, + "charOffset": 25503, + "charLength": 58, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.change_user_fullname)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 572, + "startColumn": 1, + "charOffset": 25455, + "charLength": 252, + "snippet": { + "text": " # Проверяем, есть ли такой пользователь\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_fullname)\r\nasync def admin_change_user_fullname_handler(message: types.Message, state: FSMContext):\r\n new_fullname = message.text # получаем новое ФИО\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1def08d7ef140b928535d67ad119c78db9d5fbb846360dcd053d0369a07e9703" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1560, + "startColumn": 1, + "charOffset": 71305, + "charLength": 32, + "snippet": { + "text": "#Система отображения мероприятий" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1558, + "startColumn": 1, + "charOffset": 71181, + "charLength": 285, + "snippet": { + "text": "\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система отображения мероприятий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1dfeef057c3c650672802590cfde8c6e1866271172d1367c65baed6063441c0b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 181, + "startColumn": 1, + "charOffset": 8162, + "charLength": 13, + "snippet": { + "text": "#help buttons" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 179, + "startColumn": 1, + "charOffset": 8124, + "charLength": 273, + "snippet": { + "text": "ikbmadminrating.add(ibadminrating)\r\n\r\n#help buttons\r\nhelpinlinereg = InlineKeyboardMarkup(row_width=1)\r\nhelpinlinenaming = InlineKeyboardButton(text=\"Помощь\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/README.md'))\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1e11addc9869f3920e3cf3baee2ee04264f7499dfe2373afe201c0d6dab25e5c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1746, + "startColumn": 1, + "charOffset": 79867, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1744, + "startColumn": 1, + "charOffset": 79727, + "charLength": 328, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система заданий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📝Задания\", state=MenuStates.tasks)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1e728869061ca5c40072606386a59343706f48bc6ec07b4d9547e6cf596bd48d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E722 do not use bare 'except'", + "markdown": "PEP 8: E722 do not use bare 'except'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 79, + "startColumn": 9, + "charOffset": 5431, + "charLength": 6, + "snippet": { + "text": "except" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 77, + "startColumn": 1, + "charOffset": 5087, + "charLength": 688, + "snippet": { + "text": " else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"\n except:\n if user[\"gender\"]:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "203a0e7f15cfb1b93f2f18b9d40b307170b270d6e2178f0abc63abac4e8b6fbb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1754, + "startColumn": 58, + "charOffset": 80330, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1752, + "startColumn": 1, + "charOffset": 80190, + "charLength": 302, + "snippet": { + "text": " counter = data.get('counter')\r\n await state.update_data(counter = counter)\r\n task = supabase.table('TaskCollection').select('name','description','photo','url').execute().data[int(counter)]\r\n text = f\"{task['name']}\\n{task['description']}\"\r\n await state.update_data(name = task['name'])\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "208afd212db2ca19b24e04ea005d0e9943fd123df6e3d19271780f060a828235" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 926, + "startColumn": 7, + "charOffset": 41168, + "charLength": 8, + "snippet": { + "text": "username" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 924, + "startColumn": 1, + "charOffset": 41039, + "charLength": 218, + "snippet": { + "text": " user_data = supabase.table('UsersData').select('tgusr').eq('chat_id', int(chat_id)).execute()\r\n if user_data.data:\r\n username = user_data.data[0]['tgusr']\r\n rules_text += f\"{username} - {chat_id}\\n\"\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "212db3f6123400a46dd26443e2f3ba7eadb8187f50e9214f7defd09bb9228c36" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 764, + "startColumn": 68, + "charOffset": 34586, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 762, + "startColumn": 1, + "charOffset": 34376, + "charLength": 290, + "snippet": { + "text": " code_cost = code(cost)\r\n texting = (f'Промокод '+ code(f\"{codee}\") + f' с {usages_code} использованиями и ценой {code_cost}🔘 создан')\r\n await message.reply(texting, reply_markup=admpromo, parse_mode= \"MarkdownV2\")\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "21eff0a5906d5c222c533fdf6561afe43c32d51b3656fe397faf484a9afc1609" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 61, + "startColumn": 1, + "charOffset": 2058, + "charLength": 30, + "snippet": { + "text": "def _get_search(pattern: str):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 59, + "startColumn": 1, + "charOffset": 2000, + "charLength": 148, + "snippet": { + "text": "standart_dirt = ''.join(chr(n) for n in standart_dirt)\r\n\r\ndef _get_search(pattern: str):\r\n @lru_cache()\r\n def hide_search(word: str) -> bool:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "21f751fd72eb57d1e255e4cfcf2e9ab91fffddb58d92a5837857155dd0e249c2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1098, + "startColumn": 21, + "charOffset": 49171, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1096, + "startColumn": 1, + "charOffset": 49097, + "charLength": 147, + "snippet": { + "text": " querylist = []\r\n if numberPoints == None:\r\n numberPoints:dict = {}\r\n if rightAnswers == None:\r\n rightAnswers:dict = {}\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2216b50278baec6096ea9ac913ebb35f274461e830ecb82dfc22995c5e895a99" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1329, + "startColumn": 58, + "charOffset": 60460, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1327, + "startColumn": 1, + "charOffset": 60340, + "charLength": 200, + "snippet": { + "text": "\r\n@dp.message_handler(state=ProlfileStates.edit_profile_name)\r\nasync def edit_name_profile(message: types.Message, state:FSMContext):\r\n new_fullname = message.text \r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "224756af899fc37d1f93bf1eb37e90a365b03909daaba2d36447ac9f45565f13" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E712 comparison to False should be 'if cond is False:' or 'if not cond:'", + "markdown": "PEP 8: E712 comparison to False should be 'if cond is False:' or 'if not cond:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1338, + "startColumn": 129, + "charOffset": 60832, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1336, + "startColumn": 1, + "charOffset": 60646, + "charLength": 290, + "snippet": { + "text": " if FIO[word][0].istitle():\r\n cnt += 1\r\n if new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO):\r\n user = users.get(chat_id)\r\n user.full_name = new_fullname\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2252e94f912f1e63dfca3d1fd28315b2f10a117e977d80f1e06cdb518aa302f5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1111, + "startColumn": 41, + "charOffset": 49867, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1109, + "startColumn": 1, + "charOffset": 49625, + "charLength": 354, + "snippet": { + "text": " numberPoints.update({new_json_data[\"questionId\"]:new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints = numberPoints)\r\n await state.update_data(rightAnswers = rightAnswers)\r\n querylist.append(new_json_data)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "23057d05f13ca4a91fd4ed1bd4890d5f3f3497d69ff1b88873cd92cdeecdf56e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 80, + "startColumn": 1, + "charOffset": 2600, + "charLength": 34, + "snippet": { + "text": "class ProlfileStates(StatesGroup):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 78, + "startColumn": 1, + "charOffset": 2568, + "charLength": 136, + "snippet": { + "text": "\r\n# Состояние удаления профиля\r\nclass ProlfileStates(StatesGroup):\r\n profile_menu_main_state = State()\r\n delete_profile = State()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2328ca501f3e6e5cf414109ef7427e3bba232e2e01e2aef793f6c8ff2235eec9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 891, + "startColumn": 3, + "charOffset": 40101, + "charLength": 2, + "snippet": { + "text": "if" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 889, + "startColumn": 1, + "charOffset": 40007, + "charLength": 238, + "snippet": { + "text": " user_data = supabase.table('UsersData').select('chat_id').eq('tgusr', tgusr).execute()\r\n\r\n if not user_data.data:\r\n await message.reply(\"Пользователя с таким username не существует\", reply_markup=ruleskbm)\r\n await state.finish()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "23ad2dd8588736b38726a6fbc8b12a7df7171aa32214de143ec69af24f5c947b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 198, + "startColumn": 80, + "charOffset": 8982, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 196, + "startColumn": 1, + "charOffset": 8828, + "charLength": 367, + "snippet": { + "text": "#survey web-app\r\nsurveywebapp = ReplyKeyboardMarkup(resize_keyboard=True)\r\nsurvquestcreate = KeyboardButton(text=\"Создать вопрос\",web_app=WebAppInfo(url = 'https://survey-web-app.pages.dev/edit?json=%7B%22surveyData%22%3A%20%5B%7B%22questionId%22%3A%2069%2C%20%22question%22%3A%20%22%22%2C%20%22choices%22%3A%20%5B%5D%7D%5D%7D'))\r\nsurveywebapp.row(survquestcreate)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "23bfb693ca3d622cb06aebe9fc9980831822e4e7fcda5a46215fa7c75d56365c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 10, + "startColumn": 29, + "charOffset": 236, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 8, + "startColumn": 1, + "charOffset": 155, + "charLength": 189, + "snippet": { + "text": "class SupabaseUserRepository(UserRepository):\r\n \r\n def __init__(self,client:Client, table_name:str = 'UsersData'):\r\n self.client = client\r\n self.table_name = table_name\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "23ef4706d09e405556f60122f69f9c4522c0cc1d3ccfa4e5c10df7ab267fc55e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 748, + "startColumn": 62, + "charOffset": 33824, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 746, + "startColumn": 1, + "charOffset": 33695, + "charLength": 227, + "snippet": { + "text": "\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming_cost)\r\nasync def get_naming_promo_cost(message: types.Message, state:FSMContext):\r\n usages = int(message.text)\r\n await message.reply(\"Введите цену промокода:\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "241959fc46ca30051fe3be6dd229af05f5ae3c1dac788b22542c6ca71ee4d7ed" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1397, + "startColumn": 3, + "charOffset": 63573, + "charLength": 7, + "snippet": { + "text": "message" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1395, + "startColumn": 1, + "charOffset": 63529, + "charLength": 110, + "snippet": { + "text": " qr_code = qr_code[0].data.decode()\r\n\r\n message.text = qr_code\r\n await check_promocode(message, state)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2450dae4a189d6208fab0b7e1e0a6c3727bc1c5dcc009119b3f0e4de9a314f8e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 3", + "markdown": "PEP 8: E302 expected 2 blank lines, found 3" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1863, + "startColumn": 1, + "charOffset": 84508, + "charLength": 57, + "snippet": { + "text": "def calculate_score(user_answers, right_answers, points):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1861, + "startColumn": 1, + "charOffset": 84504, + "charLength": 98, + "snippet": { + "text": "\r\n\r\ndef calculate_score(user_answers, right_answers, points):\r\n score = 0\r\n num_correct = 0\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "249eb929dfd07da9969832bc5abbc13533ede0c9eb5f008bf0f4561a1f5eae0d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 32, + "startColumn": 1, + "charOffset": 1200, + "charLength": 20, + "snippet": { + "text": "#profilemenu buttons" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 30, + "startColumn": 1, + "charOffset": 1196, + "charLength": 139, + "snippet": { + "text": "\r\n\r\n#profilemenu buttons\r\nprofilebuttons = ReplyKeyboardMarkup(resize_keyboard=True)\r\ndelprofile = KeyboardButton(text=\"❌Удалить профиль\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "24a5a396e9bb09489d2a788c98cf1cd3bbee5478fc8e4ccb9fbf21dcebf91044" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 10, + "startColumn": 3, + "charOffset": 165, + "charLength": 3, + "snippet": { + "text": "def" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 8, + "startColumn": 1, + "charOffset": 150, + "charLength": 61, + "snippet": { + "text": " ...\r\n \r\n def set(self,user : User) -> None:\r\n ...\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "250b05d5c02a03fcd13a3c8c7dd034024f7890e376a99a602264960cc1fcb4d1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1671, + "startColumn": 27, + "charOffset": 76706, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1669, + "startColumn": 1, + "charOffset": 76556, + "charLength": 297, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📨Обращения\", state = AdminPanel.admin_menu)\r\nasync def handle_report(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2512d372999b910ed71d037af9ee298af1a768fc35a9ba2b4e59737ea78c0da2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1084, + "startColumn": 115, + "charOffset": 48538, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1082, + "startColumn": 1, + "charOffset": 48361, + "charLength": 272, + "snippet": { + "text": " else:\r\n await state.update_data(counter = counter)\r\n await bot.send_message(chat_id,\"Коллекция создана успешно! Перейдите пожалуйста, к составлению заданий!⬇️\",reply_markup=surveywebapp)\r\n await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "25270274df3df221342288f8aa41511bb56d7c2035c36d1cb10b2c0691793ae1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 775, + "startColumn": 1, + "charOffset": 35055, + "charLength": 58, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.promo_addpromousages)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 773, + "startColumn": 1, + "charOffset": 35004, + "charLength": 206, + "snippet": { + "text": " await AdminPanel.promo_addpromousages.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromousages)\r\nasync def get_cost(message: types.Message, state: FSMContext):\r\n usages = int(message.text)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "25af284db4f6aa72a45432fd0fba60ab0509ad735c85e3a105dfdab1b1c16c52" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (254 > 120 characters)", + "markdown": "PEP 8: E501 line too long (254 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 198, + "startColumn": 81, + "charOffset": 8983, + "charLength": 172, + "snippet": { + "text": "'https://survey-web-app.pages.dev/edit?json=%7B%22surveyData%22%3A%20%5B%7B%22questionId%22%3A%2069%2C%20%22question%22%3A%20%22%22%2C%20%22choices%22%3A%20%5B%5D%7D%5D%7D'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 196, + "startColumn": 1, + "charOffset": 8828, + "charLength": 367, + "snippet": { + "text": "#survey web-app\r\nsurveywebapp = ReplyKeyboardMarkup(resize_keyboard=True)\r\nsurvquestcreate = KeyboardButton(text=\"Создать вопрос\",web_app=WebAppInfo(url = 'https://survey-web-app.pages.dev/edit?json=%7B%22surveyData%22%3A%20%5B%7B%22questionId%22%3A%2069%2C%20%22question%22%3A%20%22%22%2C%20%22choices%22%3A%20%5B%5D%7D%5D%7D'))\r\nsurveywebapp.row(survquestcreate)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "25e741b91cca6c2942e04c134161359a4bbbb896d19326b1d617ce5a47469f99" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (125 > 120 characters)", + "markdown": "PEP 8: E501 line too long (125 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 451, + "startColumn": 111, + "charOffset": 19504, + "charLength": 13, + "snippet": { + "text": "cancel_button" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 449, + "startColumn": 1, + "charOffset": 19197, + "charLength": 392, + "snippet": { + "text": " user.user_state = str(AdminPanel.get_info_about_user)\r\n await message.reply(\"Введите @username пользователя о котором хотите получить информацию\", reply_markup=types.ReplyKeyboardRemove())\r\n await message.reply(\"Для отмены действия, нажмите кнопку отмена\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n await AdminPanel.get_info_about_user.set()\r\n users.set(user)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "26ed081af1526cc1ef8449153de32739dffa3c2b4bcf2106edbea4993044b735" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 186, + "startColumn": 1, + "charOffset": 8437, + "charLength": 12, + "snippet": { + "text": "#admin tasks" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 184, + "startColumn": 1, + "charOffset": 8398, + "charLength": 164, + "snippet": { + "text": "helpinlinereg.add(helpinlinenaming)\r\n\r\n#admin tasks\r\nadmtasks = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmcreatetask = KeyboardButton(text=\"Создать коллекцию\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2718d15e6bce6753e8f26c9aa1d5d3db27d5bdaa8f7437fae75a5e4cb09affec" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1661, + "startColumn": 90, + "charOffset": 76122, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1659, + "startColumn": 1, + "charOffset": 75988, + "charLength": 285, + "snippet": { + "text": " users.user_state=str(MenuStates.help)\r\n\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r\nasync def handle_help_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "271d1c6b00e7e0d0112bce7e67790420a851973c6603b128e1f2c78bf7bbf33c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 354, + "startColumn": 25, + "charOffset": 14230, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 352, + "startColumn": 1, + "charOffset": 14202, + "charLength": 187, + "snippet": { + "text": "\r\n\r\n@dp.message_handler(text = \"⬅️Меню\", state=EventMakerPanel.menu)\r\nasync def back_from_event(message: types.Message, state:FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "272dca98be6b7910c8962c9929f4fe5dbceefdb3caaeea9579540300f0a0fd8b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (130 > 120 characters)", + "markdown": "PEP 8: E501 line too long (130 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 397, + "startColumn": 114, + "charOffset": 16400, + "charLength": 15, + "snippet": { + "text": "change_user_end" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 395, + "startColumn": 1, + "charOffset": 16283, + "charLength": 274, + "snippet": { + "text": "\r\n\r\n@dp.message_handler(text=\"❗Обнулить баланс всех пользователей❗\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def update_users_balance_confirm(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance_confirm.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2768375a5d86860f11ce36903b6951ec1d082bdcc33c32a5568d51ab7581a34a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 38, + "startColumn": 92, + "charOffset": 1439, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 36, + "startColumn": 1, + "charOffset": 1292, + "charLength": 278, + "snippet": { + "text": " except ValueError:\r\n tgusr:str = id\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','chat_id','user_state').eq('tgusr', tgusr).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "284c09624c9b1814310ec0adb7c98589cbd13fa3fd632e1ac1815904e97026ef" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1903, + "startColumn": 1, + "charOffset": 86286, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1901, + "startColumn": 1, + "charOffset": 86256, + "charLength": 304, + "snippet": { + "text": " await message.delete()\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система для Telegram Web App\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "28cb1ff8b48f6f8785586e747ae175307e7d52e7b2d0fa907ba66b506296a2cf" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: W292 no newline at end of file", + "markdown": "PEP 8: W292 no newline at end of file" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 106, + "startColumn": 60, + "charOffset": 7525, + "charLength": 1, + "snippet": { + "text": ")" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 104, + "startColumn": 1, + "charOffset": 7431, + "charLength": 95, + "snippet": { + "text": "\ndef rating_update_start_thread():\n threading.Thread(target=rating_update_over_time).start()" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2a2dbfac7ad71505a3c42830aabe55958d236755ebf5feb5aa6a390bfb78033a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 48, + "startColumn": 24, + "charOffset": 1938, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 46, + "startColumn": 1, + "charOffset": 1835, + "charLength": 182, + "snippet": { + "text": " user_state = user_data.get('user_state')\r\n return User(\r\n chat_id = chat_id,\r\n full_name=pseudo,\r\n gender=gender,\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2a78c3efad38ad70c39c5fd61a421c4334e69ab50015a0dcd54c0210bf758022" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1034, + "startColumn": 1, + "charOffset": 45954, + "charLength": 55, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.taskmenu_namewait)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1032, + "startColumn": 1, + "charOffset": 45906, + "charLength": 214, + "snippet": { + "text": " await AdminPanel.taskmenu_namewait.set()\r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_namewait)\r\nasync def admin_taskmenu_namewait(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2b7904f72103912f38c7af13949be628b6d430b86121df1847534bd853f314bb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (243 > 120 characters)", + "markdown": "PEP 8: E501 line too long (243 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 178, + "startColumn": 88, + "charOffset": 7965, + "charLength": 155, + "snippet": { + "text": "'https://docs.google.com/spreadsheets/d/e/2PACX-1vR__0ahX-O5SK3sS7OditV88sjG64duAF6mAW702CT3uM3Yj6z5mwsnxv-lL2vF9-H3YjlD0rtmg84N/pubhtml?gid=0&single=true'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 176, + "startColumn": 1, + "charOffset": 7799, + "charLength": 362, + "snippet": { + "text": "ikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r\nibadminrating = InlineKeyboardButton(text=\"📊Админ Рейтинг\",web_app = WebAppInfo(url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vR__0ahX-O5SK3sS7OditV88sjG64duAF6mAW702CT3uM3Yj6z5mwsnxv-lL2vF9-H3YjlD0rtmg84N/pubhtml?gid=0&single=true'))\r\nikbmadminrating.add(ibadminrating)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2c7dbe2e0b5ce68c17cbae7126ec22d69695141141f03b506b0bedf61101d672" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1132, + "startColumn": 138, + "charOffset": 50946, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1130, + "startColumn": 1, + "charOffset": 50727, + "charLength": 360, + "snippet": { + "text": " description = data.get(\"description\")\r\n photo = data.get(\"photo\")\r\n supabase.table('TaskCollection').insert({'name': name, 'description': description, 'photo': photo, 'counter': counter, 'url': url,'numberPoints':numberPoints, 'rightAnswers':rightAnswers}).execute()\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2d375c9e60692a29eecca837f8328e49cf38721818c4429a8d5e6c5e9f80006b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ':'", + "markdown": "PEP 8: E203 whitespace before ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 23, + "startColumn": 6, + "charOffset": 854, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 21, + "startColumn": 1, + "charOffset": 782, + "charLength": 152, + "snippet": { + "text": "supabase: Client = create_client(url,key)\ntable_name = \"UsersData\"\nusers : UserRepository = SupabaseUserRepository(supabase)\n\ndef admin_rating_udpate():" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2d9e292ff37a37753b88f21b0b7a284e2fa45e070478e420784322d910f091cc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1390, + "startColumn": 3, + "charOffset": 63415, + "charLength": 11, + "snippet": { + "text": "photo_image" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1388, + "startColumn": 1, + "charOffset": 63371, + "charLength": 140, + "snippet": { + "text": " photo_bytes = photo_bytes.getvalue()\r\n\r\n photo_image = PIL.Image.open(io.BytesIO(photo_bytes))\r\n\r\n qr_code = pyzbar.decode(photo_image)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2da89e331d4ae0f59ff269e045254cf89ab00f5b5194c70dd6973671f3b79189" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (181 > 120 characters)", + "markdown": "PEP 8: E501 line too long (181 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1674, + "startColumn": 37, + "charOffset": 76890, + "charLength": 120, + "snippet": { + "text": "\"Нажата кнопка обращений, здесь вы можете просмотреть действующие обращения от пользователей или удалить уже решённые. \"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1672, + "startColumn": 1, + "charOffset": 76754, + "charLength": 348, + "snippet": { + "text": "async def handle_report(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, \"Нажата кнопка обращений, здесь вы можете просмотреть действующие обращения от пользователей или удалить уже решённые. \", reply_markup=admreport)\r\n await AdminPanel.ticket.set()\r\n user = users.get(chat_id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2ddd96d1159eb40f1fecde8c9c667e70e47f302c942bc7ee53dee0dfac77dfbb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ':'", + "markdown": "PEP 8: E203 whitespace before ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 14, + "startColumn": 20, + "charOffset": 366, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 12, + "startColumn": 1, + "charOffset": 307, + "charLength": 125, + "snippet": { + "text": " self.table_name = table_name\r\n\r\n def get(self,id : str) -> User:\r\n try:\r\n chat_id:int = int(id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2f88d52ad2b04e7da44e1777b2d477374a28de2d41a111f73acecd3b13a58576" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E221 multiple spaces before operator", + "markdown": "PEP 8: E221 multiple spaces before operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1103, + "startColumn": 9, + "charOffset": 49356, + "charLength": 2, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1101, + "startColumn": 1, + "charOffset": 49245, + "charLength": 237, + "snippet": { + "text": " url = 'https://survey-web-app.pages.dev/view?json='\r\n message.text = message.web_app_data.data\r\n data = json.loads(message.text)\r\n data['questionId'] = await generate_id_for_survey(10)\r\n new_json_data = json.dumps(data)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "304e31fbf9f4863043e73b20f8fc8e22f6af27830de24a0da30a982775955912" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (136 > 120 characters)", + "markdown": "PEP 8: E501 line too long (136 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 503, + "startColumn": 115, + "charOffset": 21994, + "charLength": 19, + "snippet": { + "text": "ReplyKeyboardRemove" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 501, + "startColumn": 1, + "charOffset": 21746, + "charLength": 376, + "snippet": { + "text": "async def admin_change_user_balance(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_balancestart.set()\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_balancestart)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3076d1e98fb7e26dd645c396ab339923c9bc5f15aaa5966be9188a9747bed0b8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 606, + "startColumn": 1, + "charOffset": 27001, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 604, + "startColumn": 1, + "charOffset": 26997, + "charLength": 295, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования возраста пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "316bd98861ecd88c8ecff86cd7b1e3f8e91daf493040329ea109c79f5822ef4a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 941, + "startColumn": 1, + "charOffset": 41715, + "charLength": 63, + "snippet": { + "text": "@dp.message_handler(text=\"⬅️Меню\", state=AdminPanel.admin_menu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 939, + "startColumn": 1, + "charOffset": 41692, + "charLength": 206, + "snippet": { + "text": " users.set(user)\r\n\r\n@dp.message_handler(text=\"⬅️Меню\", state=AdminPanel.admin_menu)\r\nasync def admin_menu_back(message: types.Message, state: FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "31a57990bc35a8b1435eb09165572808ec39f3ac83a5b43e856b786359583efb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (313 > 120 characters)", + "markdown": "PEP 8: E501 line too long (313 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 43, + "startColumn": 28, + "charOffset": 2229, + "charLength": 286, + "snippet": { + "text": "\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 41, + "startColumn": 1, + "charOffset": 1870, + "charLength": 692, + "snippet": { + "text": " link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"\n else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"\n except:\n if user[\"gender\"]:" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "31f708b492327ef549d11525353f9740bd553e72b04ab810029447a83543e492" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 74, + "startColumn": 29, + "charOffset": 2961, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 72, + "startColumn": 1, + "charOffset": 2849, + "charLength": 157, + "snippet": { + "text": "admtaskback = KeyboardButton(text=\"⬅️Назад в меню\")\r\neventtasks.row(admcreatetask)\r\neventtasks.row(admdeletetask,admtasklist)\r\neventtasks.row(admtaskback)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "333571ba511cee0203a8863e6f223e0b3cc9eb905ec7755cbffe19943090278e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (313 > 120 characters)", + "markdown": "PEP 8: E501 line too long (313 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 78, + "startColumn": 28, + "charOffset": 5136, + "charLength": 286, + "snippet": { + "text": "\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 76, + "startColumn": 1, + "charOffset": 4777, + "charLength": 692, + "snippet": { + "text": " link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"\n else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"\n except:\n if user[\"gender\"]:" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "33de32ec859b70618c105922363c4c729f400d7da2ffeaf2cb02f922d04fc04e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ':'", + "markdown": "PEP 8: E203 whitespace before ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 51, + "startColumn": 53, + "charOffset": 1951, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 49, + "startColumn": 1, + "charOffset": 1837, + "charLength": 238, + "snippet": { + "text": " print(f\"Error updating user age for {tgusr}: {e}\")\r\n\r\ndef update_user_balance_by_tgusr(tgusr: str, balance : int):\r\n try:\r\n response = supabase.table(table_name).update({'balance': balance}).eq('tgusr', tgusr).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "33f375f919a0afbc4140fa11898926d9aa39fcba3736b777a5ee33d747fdf5b6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 881, + "startColumn": 58, + "charOffset": 39657, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 879, + "startColumn": 1, + "charOffset": 39531, + "charLength": 314, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Забрать права\", state=AdminPanel.rules)\r\nasync def del_from_eventers(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules_delmaker.set()\r\n await message.reply(\"Введите @username пользователя у котрого хотите забрать права\",reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "34706a437e7d7a57c96ef22848c830342c878f37263863ed23f74c076a453e25" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 5, + "startColumn": 1, + "charOffset": 83, + "charLength": 26, + "snippet": { + "text": "class UserRepository(ABC):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 3, + "startColumn": 1, + "charOffset": 56, + "charLength": 93, + "snippet": { + "text": "from typing import List\r\n\r\nclass UserRepository(ABC):\r\n \r\n def get(self,id : str) -> User:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "349dd7066f6a5355a23b660eb311a61b9c75e2a3fc522a5341dc3bedf3f04815" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1876, + "startColumn": 1, + "charOffset": 84949, + "charLength": 53, + "snippet": { + "text": "#Система отлова людей без state и обработчик стикеров" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1874, + "startColumn": 1, + "charOffset": 84824, + "charLength": 304, + "snippet": { + "text": "\r\n#------------------------------------------------------------------------------------------------------------------------\r\n#Система отлова людей без state и обработчик стикеров\r\n#------------------------------------------------------------------------------------------------------------------------\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "34c7b951f5da73d4a30a8daca7a186c236b260b714a9a12e074081bf1bedd338" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (145 > 120 characters)", + "markdown": "PEP 8: E501 line too long (145 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 701, + "startColumn": 121, + "charOffset": 31803, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 699, + "startColumn": 1, + "charOffset": 31660, + "charLength": 192, + "snippet": { + "text": " byte_io.seek(0)\r\n\r\n await message.reply_photo(byte_io, caption=\"Вот QR\\\\-код для промокода \" + code(promo_code) , reply_markup=admpromo, parse_mode=\"MarkdownV2\")\r\n\r\n byte_io.close()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "34e01ae939b479ac3ece2ecb9aaa1ba40c29277f29497e6c883b0b68f25991c7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E303 too many blank lines (3)", + "markdown": "PEP 8: E303 too many blank lines (3)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 8, + "startColumn": 1, + "charOffset": 155, + "charLength": 45, + "snippet": { + "text": "class SupabaseUserRepository(UserRepository):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 6, + "startColumn": 1, + "charOffset": 151, + "charLength": 125, + "snippet": { + "text": "\r\n\r\nclass SupabaseUserRepository(UserRepository):\r\n \r\n def __init__(self,client:Client, table_name:str = 'UsersData'):\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "35a387983607bba749cc5f55b0ab5430e41202ae2ebc5aa94fd33ec4fd1da336" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 770, + "startColumn": 25, + "charOffset": 34782, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 768, + "startColumn": 1, + "charOffset": 34706, + "charLength": 297, + "snippet": { + "text": " user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text ='Добавить промокод',state=AdminPanel.promo_menu)\r\nasync def get_usages(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите количество использований:\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "35f1a8250b87647cd51138314556eeef876c89abc505bc0f8fe1d443c576900a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1480, + "startColumn": 1, + "charOffset": 66968, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1478, + "startColumn": 1, + "charOffset": 66945, + "charLength": 296, + "snippet": { + "text": " users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система отображения профиля\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "360096dac2da99f7ba3a7a2c0c092034b32927141e56827a1278331a5d71f575" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (121 > 120 characters)", + "markdown": "PEP 8: E501 line too long (121 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1896, + "startColumn": 121, + "charOffset": 86050, + "charLength": 1, + "snippet": { + "text": ")" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1894, + "startColumn": 1, + "charOffset": 85806, + "charLength": 375, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=[MenuStates.promocode,MenuStates.promocodestart])\r\nasync def handle_qr(message: types.ContentType.WEB_APP_DATA , state: FSMContext):\r\n message.text = message.web_app_data.data\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3607e0461fb89c9c0b1df2a9a980c8704fcc22039d605faa5ba2a33b43ed551d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (121 > 120 characters)", + "markdown": "PEP 8: E501 line too long (121 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1289, + "startColumn": 121, + "charOffset": 58143, + "charLength": 1, + "snippet": { + "text": ")" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1287, + "startColumn": 1, + "charOffset": 57942, + "charLength": 395, + "snippet": { + "text": " await message.reply(\"Нет такого варианта выбора!\", reply_markup=rkbm)\r\n\r\n@dp.callback_query_handler(text=\"cancel_user\", state=[ProlfileStates.edit_profile_name, ProlfileStates.edit_profile_age])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню редактирования профиля.\", reply_markup=menuedit)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "38418ab3076344420fe46d74cd4a6b6fb140843a24d78f78a0ac4f17be5664e0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 114, + "startColumn": 68, + "charOffset": 4626, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 112, + "startColumn": 1, + "charOffset": 4445, + "charLength": 352, + "snippet": { + "text": "userhelp_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\nuserhelp_ticket = KeyboardButton(text=\"📨Создать заявку\")\r\nguide = KeyboardButton(text=\"?📑Руководство пользователя\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/User%20guide/README.md'))\r\nuserhelp.row(userhelp_ticket)\r\nuserhelp.row(guide)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "388e7c3542273ca0a83e6c9b83e79049971a9bc14e5e4c090a3b7abdfa9c1402" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 929, + "startColumn": 3, + "charOffset": 41260, + "charLength": 5, + "snippet": { + "text": "await" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 927, + "startColumn": 1, + "charOffset": 41207, + "charLength": 141, + "snippet": { + "text": " rules_text += f\"{username} - {chat_id}\\n\"\r\n\r\n await message.reply(rules_text)\r\n await state.finish()\r\n await AdminPanel.rules.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "389f6bf6fcc6c8d2c7c5b7150c58b7e3300c361fbfe24082cda40804cb0e3402" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 90, + "startColumn": 53, + "charOffset": 6602, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 88, + "startColumn": 1, + "charOffset": 6182, + "charLength": 532, + "snippet": { + "text": " insert_image = f'=IMAGE(\"{link}\")'\n #insert_image = '=IMAGE(\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\")'\n google_update_list.append([\"=СТРОКА()-1\",insert_image, user['full_name'], user['balance']])\n else:\n insert_image = f'=IMAGE(\"{link}\")'" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "38b39b82d6aa34a2c0a577f440de5fbfd524e6978639af5acdb764bcb1cb59dc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1756, + "startColumn": 35, + "charOffset": 80477, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1754, + "startColumn": 1, + "charOffset": 80273, + "charLength": 318, + "snippet": { + "text": " task = supabase.table('TaskCollection').select('name','description','photo','url').execute().data[int(counter)]\r\n text = f\"{task['name']}\\n{task['description']}\"\r\n await state.update_data(name = task['name'])\r\n ikbmtasks = ReplyKeyboardMarkup(resize_keyboard=True)\r\n ibleft = KeyboardButton(text=\"⬅️\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3989d62debd57d6f3041396d0df440d14f7a6a895631782022d96b2930099ce1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 51, + "startColumn": 1, + "charOffset": 1899, + "charLength": 60, + "snippet": { + "text": "def update_user_balance_by_tgusr(tgusr: str, balance : int):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 49, + "startColumn": 1, + "charOffset": 1837, + "charLength": 238, + "snippet": { + "text": " print(f\"Error updating user age for {tgusr}: {e}\")\r\n\r\ndef update_user_balance_by_tgusr(tgusr: str, balance : int):\r\n try:\r\n response = supabase.table(table_name).update({'balance': balance}).eq('tgusr', tgusr).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3a536089c619b00eead8696bf6ffb55d37c339b40db8aa74b444b3587c6f978a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 883, + "startColumn": 88, + "charOffset": 39802, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 881, + "startColumn": 1, + "charOffset": 39600, + "charLength": 301, + "snippet": { + "text": "async def del_from_eventers(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules_delmaker.set()\r\n await message.reply(\"Введите @username пользователя у котрого хотите забрать права\",reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.rules_delmaker)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3a6fa9b6ff923c634e2f178370dd3c42c807cae729c35e428474c2d18a32d910" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 52, + "startColumn": 1, + "charOffset": 1827, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 50, + "startColumn": 1, + "charOffset": 1638, + "charLength": 314, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Все состояния в которых может пребывать пользователь/админ бота\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3b64d976d6b0c0e1748e1138840d876b9ca8d2fa25e593346fef5f68ad70acd6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E202 whitespace before ')'", + "markdown": "PEP 8: E202 whitespace before ')'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 64, + "startColumn": 93, + "charOffset": 4167, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 62, + "startColumn": 1, + "charOffset": 3979, + "charLength": 283, + "snippet": { + "text": " sh: Spreadsheet = gc.open_by_url(SPREADSHEET_URL)\n worksheet = sh.worksheet(\"📊Рейтинг\")\n response = supabase.table('UsersData').select('chat_id','full_name', 'balance', 'gender' ).order('balance', desc = True).execute()\n users_data = response.data\n worksheet.clear()" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3b72e5032b5373c144ddabf67cfd7d8090627ea6ea0ecada626ed70d1df246f4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 369, + "startColumn": 112, + "charOffset": 15013, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 367, + "startColumn": 1, + "charOffset": 14860, + "charLength": 400, + "snippet": { + "text": "\r\n# Хендлер отмены действия через кнопку\r\n@dp.callback_query_handler(text=\"cancel\", state=[AdminPanel.change_user_balance,AdminPanel.change_user_fullname,AdminPanel.change_user_agestart,AdminPanel.get_info_about_user])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню админ-панели.\", reply_markup=admrkbm)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3b7c5a3de310a0c390e37eb34f9d92d5b9f7e7eec290a343685ee4a024a0bb12" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 93, + "startColumn": 13, + "charOffset": 6727, + "charLength": 312, + "snippet": { + "text": "#insert_image = '=IMAGE(\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\")'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 91, + "startColumn": 1, + "charOffset": 6654, + "charLength": 571, + "snippet": { + "text": " else:\n insert_image = f'=IMAGE(\"{link}\")'\n #insert_image = '=IMAGE(\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\")'\n google_update_list.append([\"=СТРОКА()-1\", insert_image, user['full_name'], user['balance']])\n worksheet.insert_rows(google_update_list, value_input_option=\"USER_ENTERED\")" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3c75b471219bef7ae63dfb89869027516cd81003a222125fb415075abb5b15a9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 12, + "startColumn": 37, + "charOffset": 285, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 10, + "startColumn": 1, + "charOffset": 163, + "charLength": 156, + "snippet": { + "text": "url: str = os.environ.get(\"SUPABASE_URL\")\r\nkey: str = os.environ.get(\"SUPABASE_KEY\")\r\nsupabase: Client = create_client(url,key)\r\ntable_name = \"UsersData\"\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3c8f6523ad8c05d0b0d5abc5f202c3cb6bb7df979d7b5aa093da9fac2d144482" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 7, + "startColumn": 13, + "charOffset": 362, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 5, + "startColumn": 1, + "charOffset": 216, + "charLength": 169, + "snippet": { + "text": "ibm = InlineKeyboardButton(text=\"🙋‍♂️Мужчина\",callback_data='1')\r\nibf = InlineKeyboardButton(text=\"🙋‍♀️Женщина\",callback_data='0')\r\nikbg.add(ibm,ibf)\r\n\r\n#menu buttons\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3ca853e19162018d1dd39a6c9c0fda416aee55c43d06a9134e4908fbeba01ab9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 17, + "startColumn": 77, + "charOffset": 509, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 15, + "startColumn": 1, + "charOffset": 384, + "charLength": 273, + "snippet": { + "text": " try:\r\n chat_id:int = int(id)\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','tgusr','user_state').eq('chat_id', chat_id).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3d9428c7a5ae9ea5acafd5930279409130e206b67af1127f19272bffd8595556" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (121 > 120 characters)", + "markdown": "PEP 8: E501 line too long (121 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 294, + "startColumn": 121, + "charOffset": 11448, + "charLength": 1, + "snippet": { + "text": ")" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 292, + "startColumn": 1, + "charOffset": 11324, + "charLength": 244, + "snippet": { + "text": "\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=EventMakerPanel.taskmenu_collection_surveywebapp)\r\nasync def survey_web_app(message: types.ContentType.WEB_APP_DATA, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3db560c6b2f510f883a54fea5ffe32da7f5bdf3b40d654782919fcccad56b008" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1762, + "startColumn": 44, + "charOffset": 80749, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1760, + "startColumn": 1, + "charOffset": 80633, + "charLength": 224, + "snippet": { + "text": " ibback = KeyboardButton(text=\"⬅️Меню\")\r\n print(f\"{task['url']}\")\r\n ibgo = KeyboardButton(text=\"✅\", web_app = WebAppInfo(url = f'{task[\"url\"]}'))\r\n ikbmtasks.row(ibleft, ibgo, ibright)\r\n ikbmtasks.row(ibback)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3e25cfedb770c0daf2e65427e01c726bfd710efcb5d24ea03324f8c369d37483" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: W292 no newline at end of file", + "markdown": "PEP 8: W292 no newline at end of file" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "codegen.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 59, + "startColumn": 12, + "charOffset": 1322, + "charLength": 4, + "snippet": { + "text": "name" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 57, + "startColumn": 1, + "charOffset": 1169, + "charLength": 157, + "snippet": { + "text": " supabase.table(table_name).insert(data).execute()\r\n print(f\"Added {name} with {usages} usages and {cost} cost to {table_name} table\")\r\n return name" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3ee3b51ef4366cbcc902be2a2c00786447c0001fe37c637ee252b40fdb2b5b3e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1373, + "startColumn": 1, + "charOffset": 62402, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1371, + "startColumn": 1, + "charOffset": 62398, + "charLength": 269, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система промокодов\r\n#----------------------------------------------------------------------------------------------------------------------- \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3f42050552b49c5bff222528665f8e9a4e9128cfeaf4d5986018802e3f5f2585" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 755, + "startColumn": 60, + "charOffset": 34147, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 753, + "startColumn": 1, + "charOffset": 34021, + "charLength": 205, + "snippet": { + "text": "\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming_end)\r\nasync def create_naming_promo(message: types.Message, state:FSMContext):\r\n cost = int(message.text)\r\n data = await state.get_data()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3fd69157b84c1f3466d7eaab47b45a4404ebdacdf788dab9c9c8a0947e03b9bf" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1605, + "startColumn": 12, + "charOffset": 73575, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1603, + "startColumn": 1, + "charOffset": 73495, + "charLength": 214, + "snippet": { + "text": " chat_id = message.chat.id\r\n tgu = message.from_user.username\r\n if tgu == None:\r\n nome = 'имени пользователя'\r\n url = 'https://ru.the-hitech.net/7264375-how-to-create-a-username-on-telegram'\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "40483c77c40922c63edf37cb6791ba3245330dfb9e1f910775162375d7e8df8b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1661, + "startColumn": 68, + "charOffset": 76100, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1659, + "startColumn": 1, + "charOffset": 75988, + "charLength": 285, + "snippet": { + "text": " users.user_state=str(MenuStates.help)\r\n\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r\nasync def handle_help_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "40e5122d30fac6f4b1d3f1444e4e46489c552fe4dc9a6417727813919ec729a2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1274, + "startColumn": 34, + "charOffset": 57422, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1272, + "startColumn": 1, + "charOffset": 57322, + "charLength": 192, + "snippet": { + "text": " elif select ==\"❓Помощь\":\r\n await MenuStates.help.set()\r\n await handle_help(message,state)\r\n elif select == \"📆Календарь событий\":\r\n await MenuStates.calendar.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "41d158bf0a25b608c89f2d80168866b23b96b05d05152415bec7a386a7be3c8d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1581, + "startColumn": 51, + "charOffset": 72273, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1579, + "startColumn": 1, + "charOffset": 72121, + "charLength": 299, + "snippet": { + "text": " f\"⏱{date} \\n\" \\\r\n f'------------------------------'\r\n await bot.send_message(chat_id, events_message,disable_web_page_preview=True,parse_mode=types.ParseMode.MARKDOWN)\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(chat_id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "41f15b71c16cbcdd4a788ed022a0f1de4606c8b28391ff92320b6423fbe99a77" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 114, + "startColumn": 85, + "charOffset": 4643, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 112, + "startColumn": 1, + "charOffset": 4445, + "charLength": 352, + "snippet": { + "text": "userhelp_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\nuserhelp_ticket = KeyboardButton(text=\"📨Создать заявку\")\r\nguide = KeyboardButton(text=\"?📑Руководство пользователя\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/User%20guide/README.md'))\r\nuserhelp.row(userhelp_ticket)\r\nuserhelp.row(guide)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "421aa7ef8a7e8392ae2786440cf1eafe80ae64f07b67cceeff0578b2dcce70cc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1136, + "startColumn": 1, + "charOffset": 51090, + "charLength": 69, + "snippet": { + "text": "@dp.message_handler(text=\"⬅️Назад в меню\", state=AdminPanel.taskmenu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1134, + "startColumn": 1, + "charOffset": 51047, + "charLength": 260, + "snippet": { + "text": " await AdminPanel.taskmenu.set()\r\n\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=AdminPanel.taskmenu)\r\nasync def back_from_rules(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "439ad72a2f1a270d4412d9bcbda4432fdcbb1948f55cf2cb4f310d1e62af711d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1097, + "startColumn": 21, + "charOffset": 49141, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1095, + "startColumn": 1, + "charOffset": 49070, + "charLength": 142, + "snippet": { + "text": " if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r\n numberPoints:dict = {}\r\n if rightAnswers == None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "449cabdb186c155e93d370da47b7fba99f96cbae1c39ec3766e0b53c756ed03f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 392, + "startColumn": 1, + "charOffset": 15997, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 390, + "startColumn": 1, + "charOffset": 15993, + "charLength": 289, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система обнуления баланса пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "45371d257899e788d7ad51c507238934a979c4d6c1f5abf7c0c80331a98b9d3c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 58, + "startColumn": 1, + "charOffset": 2233, + "charLength": 48, + "snippet": { + "text": "def delete_user_data_by_id(chat_id: int) -> str:" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 56, + "startColumn": 1, + "charOffset": 2167, + "charLength": 161, + "snippet": { + "text": " print(f\"Error updating user balance for {tgusr}: {e}\")\r\n\r\ndef delete_user_data_by_id(chat_id: int) -> str:\r\n try:\r\n chat_id_str = str(chat_id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "46026bfdae5dc9ff7f450940697a985c1b403ceb1fd37bee8b81f4b1a3dc6312" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (240 > 120 characters)", + "markdown": "PEP 8: E501 line too long (240 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 175, + "startColumn": 84, + "charOffset": 7639, + "charLength": 155, + "snippet": { + "text": "'https://docs.google.com/spreadsheets/d/e/2PACX-1vQFzN5HRvQhS5j4kDcv9wWH3uucCqp1AFmu2ErZYikmmJSshj1f16v7ry013vde0y6OYVWeSsVtgaKT/pubhtml?gid=0&single=true'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 173, + "startColumn": 1, + "charOffset": 7491, + "charLength": 386, + "snippet": { + "text": "#rating buttons\r\nikbmrating = InlineKeyboardMarkup(row_width=1)\r\nibrating = InlineKeyboardButton(text=\"📊Полный рейтинг\", web_app = WebAppInfo(url ='https://docs.google.com/spreadsheets/d/e/2PACX-1vQFzN5HRvQhS5j4kDcv9wWH3uucCqp1AFmu2ErZYikmmJSshj1f16v7ry013vde0y6OYVWeSsVtgaKT/pubhtml?gid=0&single=true') )\r\nikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "462997f57d57dd67e0bd3699dd260b90d0fb291ffb099fbf08258b9034bd1bf4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1119, + "startColumn": 42, + "charOffset": 50290, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1117, + "startColumn": 1, + "charOffset": 50162, + "charLength": 190, + "snippet": { + "text": " await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n counter -= 1\r\n await state.update_data(counter = counter)\r\n else:\r\n await AdminPanel.taskmenu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "47a8216af44312a6e4567dafa946cd8ca851d6df0e34cfd4bbc6f8179497a11a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1581, + "startColumn": 81, + "charOffset": 72303, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1579, + "startColumn": 1, + "charOffset": 72121, + "charLength": 299, + "snippet": { + "text": " f\"⏱{date} \\n\" \\\r\n f'------------------------------'\r\n await bot.send_message(chat_id, events_message,disable_web_page_preview=True,parse_mode=types.ParseMode.MARKDOWN)\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(chat_id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "47c2b2a08334c9b531c12604c2fa1f0edc4182e62eb24c27224d6ed2853a7799" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1886, + "startColumn": 27, + "charOffset": 85469, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1884, + "startColumn": 1, + "charOffset": 85386, + "charLength": 206, + "snippet": { + "text": "\r\n# ВНИМАНИЕ! Данный handler ловит людей без состояния!\r\n@dp.message_handler(state= None)\r\nasync def handle_The_Last_Frontier(message: types.Message, state: FSMContext):\r\n sost = await state.get_state()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "492096dbaed0c98b45f17fa964a9864aa7cdd0ba5ee7259add68d3eea557bfd6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1058, + "startColumn": 35, + "charOffset": 47152, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1056, + "startColumn": 1, + "charOffset": 47069, + "charLength": 260, + "snippet": { + "text": " await AdminPanel.taskmenu_photowait.set()\r\n\r\n@dp.message_handler(content_types= types.ContentType.PHOTO, state = AdminPanel.taskmenu_photowait)\r\nasync def admin_taskmenu_photowait(message: types.Message , state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "49cf1b6d325fe547e666300a8b25e15e837dc6fbfb79099b2cae4cfb510d60de" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (305 > 120 characters)", + "markdown": "PEP 8: E501 line too long (305 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 81, + "startColumn": 24, + "charOffset": 5493, + "charLength": 282, + "snippet": { + "text": "\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 79, + "startColumn": 1, + "charOffset": 5423, + "charLength": 680, + "snippet": { + "text": " except:\n if user[\"gender\"]:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"\n else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "49e9e796dac3450f7e5e8bb36b10b23e7be6f92904d8d7fe7beba82c2a8091ce" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1259, + "startColumn": 1, + "charOffset": 56758, + "charLength": 121, + "snippet": { + "text": "#----------------------------------------------------------------------------------------------------------------------- " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1257, + "startColumn": 1, + "charOffset": 56611, + "charLength": 273, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Кнопкни главного меню\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4a866d63e3b330615bc9a73f4ed664a28329de1b40e2430c1728a30056ff7742" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1010, + "startColumn": 105, + "charOffset": 45035, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1008, + "startColumn": 1, + "charOffset": 44865, + "charLength": 248, + "snippet": { + "text": " user.user_state = str(AdminPanel.taskmenu_collection_list)\r\n\r\n promos = supabase.table('TaskCollection').select('name', 'url').filter('name', 'gt', 0).order('name',desc=True).execute()\r\n\r\n promo_text = \"📝 Действующие формы опросов:\\n\\n\"\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4ade87e375230555ecb2197aaa63c8272bb0f9da1d1fc7a2bcde109eaacfaba0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 919, + "startColumn": 3, + "charOffset": 40902, + "charLength": 12, + "snippet": { + "text": "event_makers" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 917, + "startColumn": 1, + "charOffset": 40872, + "charLength": 132, + "snippet": { + "text": " roles = json.load(f)\r\n\r\n event_makers = roles['event_makers']\r\n\r\n rules_text = \"📝 Пользователи с правами ивент-мейкера:\\n\\n\"\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4ae378b09e006a5f5b8553f40c54451bbcdc941477db629716ed5327fa8e452e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (129 > 120 characters)", + "markdown": "PEP 8: E501 line too long (129 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 826, + "startColumn": 118, + "charOffset": 37351, + "charLength": 10, + "snippet": { + "text": "promo_menu" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 824, + "startColumn": 1, + "charOffset": 37199, + "charLength": 313, + "snippet": { + "text": "\r\n# Хедлер для бека в меню админа\r\n@dp.message_handler(text=\"⬅️Админ меню\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end, AdminPanel.promo_menu])\r\nasync def admin_backtomenu(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4c6794c126b8bc752b61d5bb2b74ad7976718d553534c60fbb2a755ddee76ede" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 12, + "startColumn": 12, + "charOffset": 492, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 10, + "startColumn": 1, + "charOffset": 386, + "charLength": 235, + "snippet": { + "text": "rkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nkprofile= KeyboardButton(text=\"👤Профиль\")\r\nkliderboard= KeyboardButton(text=\"📊Рейтинг\")\r\nkschedule= KeyboardButton(text=\"📆Календарь событий\")\r\nkhelp= KeyboardButton(text=\"❓Помощь\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4d508e3b20de7aa6b9e49c798cf4164664ac2300298cc9be75d7e64fd7a17d40" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 46, + "startColumn": 1, + "charOffset": 1574, + "charLength": 41, + "snippet": { + "text": "async def generate_id_for_survey(length):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 44, + "startColumn": 1, + "charOffset": 1546, + "charLength": 204, + "snippet": { + "text": "\r\n# generate id for survey\r\nasync def generate_id_for_survey(length):\r\n characters = string.ascii_letters + string.digits\r\n random_string = ''.join(random.choice(characters) for _ in range(length))\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4da3c5163d87cf5fa46dc592c869ffd8b2eb8b8ce47b2d8081139bfd884c78b8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ','", + "markdown": "PEP 8: E203 whitespace before ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 13, + "startColumn": 35, + "charOffset": 273, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 11, + "startColumn": 1, + "charOffset": 208, + "charLength": 192, + "snippet": { + "text": "import string\r\nimport asyncio\r\nfrom aiogram.utils import executor , markdown\r\nfrom aiogram.utils.markdown import hlink, escape_md , code\r\nfrom aiogram.dispatcher import Dispatcher, FSMContext\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4df66aaf24b4430ec9f7d32bc4573075d818cb50812a57962fa658ed7ccb4088" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1629, + "startColumn": 119, + "charOffset": 74900, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1627, + "startColumn": 1, + "charOffset": 74669, + "charLength": 307, + "snippet": { + "text": "\r\n await bot.send_message(chat_id, \"Нажмите сюда чтобы вернуться\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(chat_id, \"Распишите здесь наиподробнейшим образом какой у вас возник вопрос или пожелание!\",reply_markup=cancel_button_for_user_help)\r\n\r\n user = users.get(chat_id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4df82ff84fcaba7b5f3aa822f1e47ba71a678171fb7289ca8089c4193a2dfd2c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1305, + "startColumn": 1, + "charOffset": 58989, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1303, + "startColumn": 1, + "charOffset": 58985, + "charLength": 281, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система редактирования профиля\r\n#----------------------------------------------------------------------------------------------------------------------- \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4e05a7051022d252e769fa64bfb3e61f28a67a16974034a2112ac862d80e7783" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (157 > 120 characters)", + "markdown": "PEP 8: E501 line too long (157 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 585, + "startColumn": 115, + "charOffset": 26048, + "charLength": 12, + "snippet": { + "text": "new_fullname" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 583, + "startColumn": 1, + "charOffset": 25876, + "charLength": 349, + "snippet": { + "text": " if FIO[word][0].istitle():\r\n cnt += 1\r\n if new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO):\r\n data = await state.get_data()\r\n username = data.get(\"username\") # получаем сохраненный username из данных состояния\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4edda6ed3d5acb104f75868cdcd9b0961335a5effbc30a4966c66e8a8cc8fa46" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (128 > 120 characters)", + "markdown": "PEP 8: E501 line too long (128 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 445, + "startColumn": 112, + "charOffset": 19040, + "charLength": 15, + "snippet": { + "text": "change_user_end" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 443, + "startColumn": 1, + "charOffset": 18925, + "charLength": 239, + "snippet": { + "text": "\r\n\r\n@dp.message_handler(text=\"Получить информацию о пользователе\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_get_user_info(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4ede4c2f425057717d54ed90f8919e01202d31f1ea3c8505ae3c50102a245584" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1756, + "startColumn": 33, + "charOffset": 80475, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1754, + "startColumn": 1, + "charOffset": 80273, + "charLength": 318, + "snippet": { + "text": " task = supabase.table('TaskCollection').select('name','description','photo','url').execute().data[int(counter)]\r\n text = f\"{task['name']}\\n{task['description']}\"\r\n await state.update_data(name = task['name'])\r\n ikbmtasks = ReplyKeyboardMarkup(resize_keyboard=True)\r\n ibleft = KeyboardButton(text=\"⬅️\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4f211c1d36fba91ed9b0ff0b44f0dcb61221e49f8b47292128572f8ea11c6d17" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1661, + "startColumn": 1, + "charOffset": 76033, + "charLength": 136, + "snippet": { + "text": "@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1659, + "startColumn": 1, + "charOffset": 75988, + "charLength": 285, + "snippet": { + "text": " users.user_state=str(MenuStates.help)\r\n\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r\nasync def handle_help_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4f4d3dded3d1a1966974a077a035a3b2d29793114e9fb441faa7b36476f0fcd6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1306, + "startColumn": 1, + "charOffset": 59111, + "charLength": 31, + "snippet": { + "text": "#Система редактирования профиля" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1304, + "startColumn": 1, + "charOffset": 58987, + "charLength": 281, + "snippet": { + "text": "\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система редактирования профиля\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4f9d5bb1bd0158a6f998ba34be7c7bf437e82358bbb845ab07a6dd310b89d248" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1748, + "startColumn": 25, + "charOffset": 80015, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1746, + "startColumn": 1, + "charOffset": 79867, + "charLength": 287, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📝Задания\", state=MenuStates.tasks)\r\nasync def handle_tasks(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4fbc4472edadf6b93836d598f24e8a8e4dcced731490e857bcfed0e715c9f5f8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1226, + "startColumn": 1, + "charOffset": 55061, + "charLength": 62, + "snippet": { + "text": "@dp.message_handler(state=RegistrationStates.waiting_for_name)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1224, + "startColumn": 1, + "charOffset": 55038, + "charLength": 184, + "snippet": { + "text": " users.set(user)\r\n\r\n@dp.message_handler(state=RegistrationStates.waiting_for_name)\r\nasync def handle_name(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "507776fd19da4ed0ecb7f61ab36d5d0d9cc3f81d5105cdb6f46f4c68703b044f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 841, + "startColumn": 54, + "charOffset": 38059, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 839, + "startColumn": 1, + "charOffset": 37928, + "charLength": 218, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"👨‍🚀Организаторы\", state=AdminPanel.admin_menu)\r\nasync def give_ruleskbm(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "50848b878945c4fa5cb0f20a0cccda15bb27227acc5bca48c1a655f91e6ae838" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (145 > 120 characters)", + "markdown": "PEP 8: E501 line too long (145 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 595, + "startColumn": 121, + "charOffset": 26647, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 593, + "startColumn": 1, + "charOffset": 26424, + "charLength": 327, + "snippet": { + "text": " # Отправляем сообщение об успешном обновлении\r\n new_code_fullname = code(new_fullname)\r\n await message.reply(f\"ФИО пользователя {username} успешно обновлено на {new_code_fullname}\", reply_markup=admue, parse_mode='MarkdownV2')\r\n await state.finish()\r\n await AdminPanel.change_user_end.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "51481a8df4de889842d25161954c165d9753d6a4cd49efdba85c172d4adf42d1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1744, + "startColumn": 1, + "charOffset": 79727, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1742, + "startColumn": 1, + "charOffset": 79704, + "charLength": 284, + "snippet": { + "text": " users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система заданий\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5159a45e216cfa9437cda4d6d4e8d6d18060251d751fd6524a9f371b7868a680" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1703, + "startColumn": 25, + "charOffset": 77985, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1701, + "startColumn": 1, + "charOffset": 77913, + "charLength": 221, + "snippet": { + "text": " user.user_state = str(AdminPanel.ticket)\r\n\r\n@dp.message_handler(text = \"Удалить обращение\", state=AdminPanel.ticket)\r\nasync def delete_ticket(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "52071f8334d4b3248ae2f6c0f4ba852a8b19ef8e8990daaacb39c31115796f7e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 50, + "startColumn": 1, + "charOffset": 1638, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 48, + "startColumn": 1, + "charOffset": 1634, + "charLength": 314, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Все состояния в которых может пребывать пользователь/админ бота\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "52e1656eee3086868b42f64d4d914c402ac9749d69eb996618af53acd96e1dbf" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1203, + "startColumn": 1, + "charOffset": 54060, + "charLength": 64, + "snippet": { + "text": "@dp.message_handler(state=RegistrationStates.waiting_for_gender)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1201, + "startColumn": 1, + "charOffset": 53976, + "charLength": 253, + "snippet": { + "text": " await message.reply(\"Введите ваш пол (Male/Female):\", reply_markup=ikbg)\r\n\r\n@dp.message_handler(state=RegistrationStates.waiting_for_gender)\r\nasync def handle_gender(message: types.Message, state: FSMContext):\r\n gender = message.text.lower()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "530f8fdae24d8b935ee33f5f4fc741137f4ad8364d53fc79c5b8da545159aebd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 10, + "startColumn": 15, + "charOffset": 177, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 8, + "startColumn": 1, + "charOffset": 150, + "charLength": 61, + "snippet": { + "text": " ...\r\n \r\n def set(self,user : User) -> None:\r\n ...\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "533d7269218648e46771216f089f834e926f22823cb19f23bb35adfc2858d760" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 355, + "startColumn": 56, + "charOffset": 14327, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 353, + "startColumn": 1, + "charOffset": 14204, + "charLength": 224, + "snippet": { + "text": "\r\n@dp.message_handler(text = \"⬅️Меню\", state=EventMakerPanel.menu)\r\nasync def back_from_event(message: types.Message, state:FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "535c02475c792204d0cf4a4f894b360b3ad99d777d28886f8df9c9b4ab49fe0b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 10, + "startColumn": 48, + "charOffset": 255, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 8, + "startColumn": 1, + "charOffset": 155, + "charLength": 189, + "snippet": { + "text": "class SupabaseUserRepository(UserRepository):\r\n \r\n def __init__(self,client:Client, table_name:str = 'UsersData'):\r\n self.client = client\r\n self.table_name = table_name\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "53cce867bf58839b1768d3e96c43c9f4aa9ded85ed792ba19a38bded42ba6a8f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1886, + "startColumn": 1, + "charOffset": 85443, + "charLength": 32, + "snippet": { + "text": "@dp.message_handler(state= None)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1884, + "startColumn": 1, + "charOffset": 85386, + "charLength": 206, + "snippet": { + "text": "\r\n# ВНИМАНИЕ! Данный handler ловит людей без состояния!\r\n@dp.message_handler(state= None)\r\nasync def handle_The_Last_Frontier(message: types.Message, state: FSMContext):\r\n sost = await state.get_state()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "54003c8e31667f548aafb7c98bf87ed748f23e343724a33d0c314a45998ea93d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 54, + "startColumn": 24, + "charOffset": 2141, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 52, + "startColumn": 1, + "charOffset": 2058, + "charLength": 137, + "snippet": { + "text": " age=age,\r\n balance=balance,\r\n tgusr = tgusr\r\n )\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "542939126f1a4749b8fc75f787500645f6c4a37944d99fd683da1bdae6bf24ff" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 369, + "startColumn": 80, + "charOffset": 14981, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 367, + "startColumn": 1, + "charOffset": 14860, + "charLength": 400, + "snippet": { + "text": "\r\n# Хендлер отмены действия через кнопку\r\n@dp.callback_query_handler(text=\"cancel\", state=[AdminPanel.change_user_balance,AdminPanel.change_user_fullname,AdminPanel.change_user_agestart,AdminPanel.get_info_about_user])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню админ-панели.\", reply_markup=admrkbm)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "547296e9885846a6718a4fa7605d7f0d83ecd050029a73fdbc749e9ede78482a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 59, + "startColumn": 1, + "charOffset": 2343, + "charLength": 18, + "snippet": { + "text": "#usermaker buttons" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 57, + "startColumn": 1, + "charOffset": 2310, + "charLength": 166, + "snippet": { + "text": "confirmbutton.row(backbutton)\r\n\r\n#usermaker buttons\r\nusermakerkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nusmkbm_task = KeyboardButton(text=\"📝Создать задание\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "54f61e56cf2b14b15f15a0c3d7ce9c307b4239064d398266ddc4e085004d9836" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 64, + "startColumn": 117, + "charOffset": 4191, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 62, + "startColumn": 1, + "charOffset": 3979, + "charLength": 283, + "snippet": { + "text": " sh: Spreadsheet = gc.open_by_url(SPREADSHEET_URL)\n worksheet = sh.worksheet(\"📊Рейтинг\")\n response = supabase.table('UsersData').select('chat_id','full_name', 'balance', 'gender' ).order('balance', desc = True).execute()\n users_data = response.data\n worksheet.clear()" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "55315cc19dcac740869314f546ec8777c86111b190dfea186117056eda7e154c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (121 > 120 characters)", + "markdown": "PEP 8: E501 line too long (121 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1877, + "startColumn": 1, + "charOffset": 85004, + "charLength": 121, + "snippet": { + "text": "#------------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1875, + "startColumn": 1, + "charOffset": 84826, + "charLength": 331, + "snippet": { + "text": "#------------------------------------------------------------------------------------------------------------------------\r\n#Система отлова людей без state и обработчик стикеров\r\n#------------------------------------------------------------------------------------------------------------------------\r\n\r\n# Ответ на отправку стикера\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5594d5dafc8f9cee27114d0fc84d2a18858c1f24ad759ead726b7fe36a60ad08" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 770, + "startColumn": 46, + "charOffset": 34803, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 768, + "startColumn": 1, + "charOffset": 34706, + "charLength": 297, + "snippet": { + "text": " user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text ='Добавить промокод',state=AdminPanel.promo_menu)\r\nasync def get_usages(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите количество использований:\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "55c71e8288cc4a1a58d3b06a05005bef4f7c8dd7eb23801cbd370b716bd9142c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 72, + "startColumn": 91, + "charOffset": 2817, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 70, + "startColumn": 1, + "charOffset": 2670, + "charLength": 243, + "snippet": { + "text": "def get_user_info_by_id(chat_id:int ) -> str:\r\n try:\r\n response = supabase.table('UsersData').select('full_name','gender','age','balance','tgusr').eq('chat_id', chat_id).execute()\r\n return response\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5632640b7cccc7b90bd1b4a6b5b71c8570cccf326fb6c84d67e28bb57f40e89c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 183, + "startColumn": 63, + "charOffset": 8290, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 181, + "startColumn": 1, + "charOffset": 8162, + "charLength": 274, + "snippet": { + "text": "#help buttons\r\nhelpinlinereg = InlineKeyboardMarkup(row_width=1)\r\nhelpinlinenaming = InlineKeyboardButton(text=\"Помощь\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/README.md'))\r\nhelpinlinereg.add(helpinlinenaming)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "56de7a3cf8275592d86019e2b3ee63b71c53be13453ee48ba0673c4a69e97cfb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (134 > 120 characters)", + "markdown": "PEP 8: E501 line too long (134 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 64, + "startColumn": 120, + "charOffset": 4194, + "charLength": 4, + "snippet": { + "text": "True" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 62, + "startColumn": 1, + "charOffset": 3979, + "charLength": 283, + "snippet": { + "text": " sh: Spreadsheet = gc.open_by_url(SPREADSHEET_URL)\n worksheet = sh.worksheet(\"📊Рейтинг\")\n response = supabase.table('UsersData').select('chat_id','full_name', 'balance', 'gender' ).order('balance', desc = True).execute()\n users_data = response.data\n worksheet.clear()" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "575506513a69557cd84dd02a463453241b10c371f322547b96492439af5c1e4a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E303 too many blank lines (2)", + "markdown": "PEP 8: E303 too many blank lines (2)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1822, + "startColumn": 5, + "charOffset": 83398, + "charLength": 22, + "snippet": { + "text": "user_answers_dict = {}" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1820, + "startColumn": 1, + "charOffset": 83390, + "charLength": 71, + "snippet": { + "text": "\r\n\r\n user_answers_dict = {}\r\n\r\n for question_id in user_answers:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5789712a2b4d90a3da683ee975051cd618826ea914f5dadc78b5bd4ba0d99da3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1392, + "startColumn": 3, + "charOffset": 63474, + "charLength": 7, + "snippet": { + "text": "qr_code" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1390, + "startColumn": 1, + "charOffset": 63413, + "charLength": 115, + "snippet": { + "text": " photo_image = PIL.Image.open(io.BytesIO(photo_bytes))\r\n\r\n qr_code = pyzbar.decode(photo_image)\r\n\r\n if qr_code:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "57e9775b153a3388b44fc812454eb8b78457ad2346bc906ce2f727dfe14ec7d2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 143, + "startColumn": 52, + "charOffset": 6097, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 141, + "startColumn": 1, + "charOffset": 5981, + "charLength": 164, + "snippet": { + "text": "admpromo.row(addpromo_addqr)\r\nadmpromo.row(admpromo_checkpromo)\r\nadmpromo.row(admpromo_addpromo,admpromo_namingpromo,admpromo_delpromo)\r\nadmpromo.row(admue_back)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "585b01c7ff7c6408bb09a37405c8e28bb0c1658354dc12c225ec9bb586e1e3a7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 32, + "startColumn": 99, + "charOffset": 1105, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 30, + "startColumn": 1, + "charOffset": 924, + "charLength": 243, + "snippet": { + "text": "async def show_user_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', ).order('balance', desc = True).limit(4).execute()\r\n\r\n # Формируем текст рейтинга\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "58bfc43313260fff5fa3f59b24eac9ee92ef66d1ca531c1a1ea483118104f4a2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 77, + "startColumn": 1, + "charOffset": 3007, + "charLength": 14, + "snippet": { + "text": "#admin buttons" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 75, + "startColumn": 1, + "charOffset": 2976, + "charLength": 166, + "snippet": { + "text": "eventtasks.row(admtaskback)\r\n\r\n#admin buttons\r\nadmrkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmk_user_editor = KeyboardButton(text=\"⚙️Изменить пользователя\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "59c4b254697c36ba3886734138e6e58c0c4b8979ffe89bbceb47dc3aee13c0ab" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 87, + "startColumn": 30, + "charOffset": 3515, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 85, + "startColumn": 1, + "charOffset": 3400, + "charLength": 206, + "snippet": { + "text": "admk_rules = KeyboardButton(text=\"👨‍🚀Организаторы\")\r\nadmrkbm.row(admk_user_editor)\r\nadmrkbm.row(admk_job_creation,admk_promo)\r\nadmrkbm.row(admk_liderboard, admk_ticket)\r\nadmrkbm.row(admk_menu,admk_rules)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "59f7cc3b35e8d80325881457a2bd2b788ccaa0e0c6618780674b31d24de2b0b2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (136 > 120 characters)", + "markdown": "PEP 8: E501 line too long (136 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 450, + "startColumn": 115, + "charOffset": 19370, + "charLength": 19, + "snippet": { + "text": "ReplyKeyboardRemove" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 448, + "startColumn": 1, + "charOffset": 19165, + "charLength": 403, + "snippet": { + "text": " user = users.get(chat_id) \r\n user.user_state = str(AdminPanel.get_info_about_user)\r\n await message.reply(\"Введите @username пользователя о котором хотите получить информацию\", reply_markup=types.ReplyKeyboardRemove())\r\n await message.reply(\"Для отмены действия, нажмите кнопку отмена\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n await AdminPanel.get_info_about_user.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5a25e78083324333a7951e764e5a1c5becdc174d9e438ebf63bd5ca1e95cce3c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1894, + "startColumn": 1, + "charOffset": 85806, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1892, + "startColumn": 1, + "charOffset": 85653, + "charLength": 399, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система для Telegram Web App\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=[MenuStates.promocode,MenuStates.promocodestart])\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5aade0c93f19d1566d2a4e70bad761b32cd8a579a70a369b3c4047c63827a06c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "codegen.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 43, + "startColumn": 1, + "charOffset": 944, + "charLength": 46, + "snippet": { + "text": "def generate_naming_promo(name, usages, cost):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 41, + "startColumn": 1, + "charOffset": 925, + "charLength": 87, + "snippet": { + "text": " return code\r\n\r\ndef generate_naming_promo(name, usages, cost):\r\n\r\n if cost == 0:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5b1aad008f883c8ebbfdb379c2f2fddb3ce4a1a66abc678031118c6a5d617223" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (154 > 120 characters)", + "markdown": "PEP 8: E501 line too long (154 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 38, + "startColumn": 113, + "charOffset": 1460, + "charLength": 12, + "snippet": { + "text": "'user_state'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 36, + "startColumn": 1, + "charOffset": 1292, + "charLength": 278, + "snippet": { + "text": " except ValueError:\r\n tgusr:str = id\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','chat_id','user_state').eq('tgusr', tgusr).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5b4d8d559445b7c13c684f70dd6bcb5c21c3d64f61257f7f8d2a5aaaf9b57c0e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1753, + "startColumn": 38, + "charOffset": 80262, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1751, + "startColumn": 1, + "charOffset": 80155, + "charLength": 287, + "snippet": { + "text": " data = await state.get_data()\r\n counter = data.get('counter')\r\n await state.update_data(counter = counter)\r\n task = supabase.table('TaskCollection').select('name','description','photo','url').execute().data[int(counter)]\r\n text = f\"{task['name']}\\n{task['description']}\"\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5b6bbd75cd678465a2d49d841f030b66decace795a8317deca8a987b19b2e266" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 971, + "startColumn": 1, + "charOffset": 43128, + "charLength": 74, + "snippet": { + "text": "@dp.message_handler(text=\"📝Создать задание\", state=AdminPanel.admin_menu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 969, + "startColumn": 1, + "charOffset": 43004, + "charLength": 350, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text=\"📝Создать задание\", state=AdminPanel.admin_menu)\r\nasync def admin_task_maker(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вошли в редактор заданий\", reply_markup=admtasks)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5b7c887aaadc6fac9ab4314e7c6acabb254db38e3c5956f7c404a8a53222dd97" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 16, + "startColumn": 16, + "charOffset": 276, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 14, + "startColumn": 1, + "charOffset": 250, + "charLength": 61, + "snippet": { + "text": " ...\r\n\r\n def list(self,**kwargs) -> List[User]: \r\n ..." + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5b99f44540c8cb7c01a8086faee19a3648506d7de508025661b6006119e3df76" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 440, + "startColumn": 1, + "charOffset": 18634, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 438, + "startColumn": 1, + "charOffset": 18630, + "charLength": 294, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система получения информации о пользователе\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5bc361a6e59a80305cb3ba3ad1798f89202141900de3a996b7a9647f10b76fdd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (125 > 120 characters)", + "markdown": "PEP 8: E501 line too long (125 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1010, + "startColumn": 117, + "charOffset": 45047, + "charLength": 7, + "snippet": { + "text": "execute" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1008, + "startColumn": 1, + "charOffset": 44865, + "charLength": 248, + "snippet": { + "text": " user.user_state = str(AdminPanel.taskmenu_collection_list)\r\n\r\n promos = supabase.table('TaskCollection').select('name', 'url').filter('name', 'gt', 0).order('name',desc=True).execute()\r\n\r\n promo_text = \"📝 Действующие формы опросов:\\n\\n\"\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5bf39690c0b36f2291582b6d3a77cc3e8567529b84fe9181948329b7e0af6713" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (320 > 120 characters)", + "markdown": "PEP 8: E501 line too long (320 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 89, + "startColumn": 13, + "charOffset": 6241, + "charLength": 308, + "snippet": { + "text": "#insert_image = '=IMAGE(\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\")'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 87, + "startColumn": 1, + "charOffset": 6155, + "charLength": 512, + "snippet": { + "text": " if user[\"gender\"]:\n insert_image = f'=IMAGE(\"{link}\")'\n #insert_image = '=IMAGE(\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\")'\n google_update_list.append([\"=СТРОКА()-1\",insert_image, user['full_name'], user['balance']])\n else:" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5bf643b6f2cf44ddef335e0017695157a20533f770da5678aa8688978b37df86" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (136 > 120 characters)", + "markdown": "PEP 8: E501 line too long (136 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1661, + "startColumn": 113, + "charOffset": 76145, + "charLength": 10, + "snippet": { + "text": "MenuStates" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1659, + "startColumn": 1, + "charOffset": 75988, + "charLength": 285, + "snippet": { + "text": " users.user_state=str(MenuStates.help)\r\n\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r\nasync def handle_help_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5c26e4757977df738b8e3b1b87e689dca393a1b85f9106464f4fd92d20489ff1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 16, + "startColumn": 106, + "charOffset": 436, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 14, + "startColumn": 1, + "charOffset": 253, + "charLength": 245, + "snippet": { + "text": "async def show_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', 'tgusr').order('balance', desc = True).limit(4).execute()\r\n\r\n # Формируем текст рейтинга\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5d1cab3fd6695c10f0f20bdbf8dbed6222915ffb45f81db179187470e32977c2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 89, + "startColumn": 13, + "charOffset": 6241, + "charLength": 308, + "snippet": { + "text": "#insert_image = '=IMAGE(\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\")'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 87, + "startColumn": 1, + "charOffset": 6155, + "charLength": 512, + "snippet": { + "text": " if user[\"gender\"]:\n insert_image = f'=IMAGE(\"{link}\")'\n #insert_image = '=IMAGE(\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\")'\n google_update_list.append([\"=СТРОКА()-1\",insert_image, user['full_name'], user['balance']])\n else:" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5d4d24f199bfa14618967ae7a5a18186fd51c3f35e2edddee63f99f411e91428" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (309 > 120 characters)", + "markdown": "PEP 8: E501 line too long (309 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 48, + "startColumn": 24, + "charOffset": 2910, + "charLength": 286, + "snippet": { + "text": "\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 46, + "startColumn": 1, + "charOffset": 2563, + "charLength": 683, + "snippet": { + "text": " link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"\n else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"\n if user['balance'] < 1:\n break" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5d6c18cad3065e2fa5859601010a3ca8b491051dfe31b75142cfcdef67687aec" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 763, + "startColumn": 28, + "charOffset": 34431, + "charLength": 1, + "snippet": { + "text": "+" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 761, + "startColumn": 1, + "charOffset": 34344, + "charLength": 283, + "snippet": { + "text": " usages_code = code(usages)\r\n code_cost = code(cost)\r\n texting = (f'Промокод '+ code(f\"{codee}\") + f' с {usages_code} использованиями и ценой {code_cost}🔘 создан')\r\n await message.reply(texting, reply_markup=admpromo, parse_mode= \"MarkdownV2\")\r\n await state.finish()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5dfd4ea0d236f285c9e691dfe24896ccdd83573de92bf64fe8a046efddb3fa06" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (128 > 120 characters)", + "markdown": "PEP 8: E501 line too long (128 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1450, + "startColumn": 117, + "charOffset": 65717, + "charLength": 12, + "snippet": { + "text": "'MarkdownV2'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1448, + "startColumn": 1, + "charOffset": 65485, + "charLength": 274, + "snippet": { + "text": " supabase.table('UsedPromocode').insert({'id' : expression,'promo': poro, 'chat_id': str(chat_id)}).execute()\r\n\r\n await message.reply(f\"Ваш баланс пополнен на {code(promocode['cost'])}🔘\\\\!\", reply_markup=promo_kb, parse_mode='MarkdownV2')\r\n\r\n await state.finish()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5eba4dc46cb976514c668f31a5f4b95ea78afd800118301c03191a6b54ce140a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 927, + "startColumn": 7, + "charOffset": 41213, + "charLength": 10, + "snippet": { + "text": "rules_text" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 925, + "startColumn": 1, + "charOffset": 41138, + "charLength": 154, + "snippet": { + "text": " if user_data.data:\r\n username = user_data.data[0]['tgusr']\r\n rules_text += f\"{username} - {chat_id}\\n\"\r\n\r\n await message.reply(rules_text)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5f592b19d08e2903169f15bea16f7524433bb0010889b6ce24d623a44ba8be56" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1762, + "startColumn": 63, + "charOffset": 80768, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1760, + "startColumn": 1, + "charOffset": 80633, + "charLength": 224, + "snippet": { + "text": " ibback = KeyboardButton(text=\"⬅️Меню\")\r\n print(f\"{task['url']}\")\r\n ibgo = KeyboardButton(text=\"✅\", web_app = WebAppInfo(url = f'{task[\"url\"]}'))\r\n ikbmtasks.row(ibleft, ibgo, ibright)\r\n ikbmtasks.row(ibback)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5fa1211f5d0776ccaa97b8ca35e345d12e5827a277c503cc33718515434ef3e5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1003, + "startColumn": 1, + "charOffset": 44605, + "charLength": 71, + "snippet": { + "text": "@dp.message_handler(text='Список коллекций', state=AdminPanel.taskmenu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1001, + "startColumn": 1, + "charOffset": 44555, + "charLength": 239, + "snippet": { + "text": " user.user_state = str(AdminPanel.taskmenu)\r\n\r\n@dp.message_handler(text='Список коллекций', state=AdminPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await AdminPanel.taskmenu_collection_list.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "60014c963e9dd2b659290968084f9fc3fdd7220bc2fceb01a6e0317576fa5022" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 114, + "startColumn": 81, + "charOffset": 4639, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 112, + "startColumn": 1, + "charOffset": 4445, + "charLength": 352, + "snippet": { + "text": "userhelp_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\nuserhelp_ticket = KeyboardButton(text=\"📨Создать заявку\")\r\nguide = KeyboardButton(text=\"?📑Руководство пользователя\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/User%20guide/README.md'))\r\nuserhelp.row(userhelp_ticket)\r\nuserhelp.row(guide)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6023d4cd86938eec8eaa405fae4308b5bed4a4be2be91b417e80941e7a4c7d47" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E303 too many blank lines (3)", + "markdown": "PEP 8: E303 too many blank lines (3)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1860, + "startColumn": 1, + "charOffset": 84476, + "charLength": 26, + "snippet": { + "text": "# код подсчета результатов" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1858, + "startColumn": 1, + "charOffset": 84472, + "charLength": 35, + "snippet": { + "text": "\r\n\r\n# код подсчета результатов\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "607ddfe249344cc39829d1083d1c768b6811c1008097c7b47f03e2830d6471a5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 950, + "startColumn": 1, + "charOffset": 42103, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 948, + "startColumn": 1, + "charOffset": 42099, + "charLength": 273, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система админ рейтинга\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "60e6275bfc5142d5d24781e2167f9b90e17c1480cad4036b41be90daa315b069" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1457, + "startColumn": 1, + "charOffset": 65884, + "charLength": 70, + "snippet": { + "text": "@dp.message_handler(text=\"⬅️Назад в меню\", state=MenuStates.promocode)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1455, + "startColumn": 1, + "charOffset": 65861, + "charLength": 218, + "snippet": { + "text": " users.set(user)\r\n\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=MenuStates.promocode)\r\nasync def back_from_promo_menu(message: types.Message, state: FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "613c8c01a0d47106efa7fcb8ee8d8df0f186ab175b72b2a1f76ffcfe82bd0548" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 60, + "startColumn": 1, + "charOffset": 3862, + "charLength": 20, + "snippet": { + "text": "def rating_update():" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 58, + "startColumn": 1, + "charOffset": 3830, + "charLength": 202, + "snippet": { + "text": " worksheet.sort((4, 'des'))\n\ndef rating_update():\n gc: Client = gspread.service_account(\"./GoogleSheets/boilerpoint-393111-68b01f6645e3.json\")\n sh: Spreadsheet = gc.open_by_url(SPREADSHEET_URL)" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "61575056ca5731d3d6cef8a338758135653feefadb159c13a2f7646671464046" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 984, + "startColumn": 1, + "charOffset": 43823, + "charLength": 71, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.taskmenu_collection_delete_select)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 982, + "startColumn": 1, + "charOffset": 43759, + "charLength": 239, + "snippet": { + "text": " await AdminPanel.taskmenu_collection_delete_select.set()\r\n\r\n@dp.message_handler(state=AdminPanel.taskmenu_collection_delete_select)\r\nasync def delete_survey_handler(message: types.Message, state: FSMContext):\r\n codee = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "61907c36bdf4ef7ff0116d5cea28b66c99648a6a4b7f888bfd24c7d978c19439" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 89, + "startColumn": 22, + "charOffset": 3593, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 87, + "startColumn": 1, + "charOffset": 3486, + "charLength": 139, + "snippet": { + "text": "admrkbm.row(admk_job_creation,admk_promo)\r\nadmrkbm.row(admk_liderboard, admk_ticket)\r\nadmrkbm.row(admk_menu,admk_rules)\r\n\r\n#rules keyboard\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "641d186745ac9c0f27224282098154617f609bc630f636138550829fb7380a09" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 734, + "startColumn": 1, + "charOffset": 33042, + "charLength": 70, + "snippet": { + "text": "@dp.message_handler(text='Нэйминг-промо', state=AdminPanel.promo_menu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 732, + "startColumn": 1, + "charOffset": 32990, + "charLength": 287, + "snippet": { + "text": " user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text='Нэйминг-промо', state=AdminPanel.promo_menu)\r\nasync def get_naming_promo(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите имя промокода\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "64ceb4acd91bedc5f51cb4bd5ef625874e354f74615374aa2defb25781662dfd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 53, + "startColumn": 119, + "charOffset": 3439, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 51, + "startColumn": 1, + "charOffset": 3247, + "charLength": 317, + "snippet": { + "text": " if user[\"gender\"]:\n insert_image = f'=IMAGE(\"{link}\")'\n google_update_list.append([\"=СТРОКА()-1\", insert_image, user['full_name'], user['balance'],user['chat_id'],f'=ГИПЕРССЫЛКА(\"t.me/{user[\"tgusr\"][1:]}\";\"{user[\"tgusr\"]}\")'])\n else:\n insert_image = f'=IMAGE(\"{link}\")'" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "651bd240d3f7cc2752e3242d55d51f68fe7d7eab1bda177bdcec4d7a217c1f5f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1463, + "startColumn": 1, + "charOffset": 66179, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1461, + "startColumn": 1, + "charOffset": 66175, + "charLength": 282, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система рейтинга(Google sheets)\r\n#----------------------------------------------------------------------------------------------------------------------- \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "655304e76c420206a565181138f7dc3cc660e9803643f7298391316afea3fe4e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 880, + "startColumn": 1, + "charOffset": 39533, + "charLength": 65, + "snippet": { + "text": "@dp.message_handler(text=\"Забрать права\", state=AdminPanel.rules)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 878, + "startColumn": 1, + "charOffset": 39497, + "charLength": 217, + "snippet": { + "text": " await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text=\"Забрать права\", state=AdminPanel.rules)\r\nasync def del_from_eventers(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules_delmaker.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6566ac741df599cd023c539841a2d6f5e6df451d3d79d375086f0aea2b99d131" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 17, + "startColumn": 18, + "charOffset": 730, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 15, + "startColumn": 1, + "charOffset": 622, + "charLength": 164, + "snippet": { + "text": "kexercise= KeyboardButton(text=\"📝Задания\")\r\nkpromo = KeyboardButton(text=\"🗝️Промокоды\")\r\nrkbm.row(kprofile,kliderboard)\r\nrkbm.add(kexercise)\r\nrkbm.add(kschedule)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "65fb4ad2208293e3977d44569032c1ce5c1bbda068ced140079a536174b8c62c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 28, + "startColumn": 1, + "charOffset": 956, + "charLength": 33, + "snippet": { + "text": "#from Database.DataUsers import *" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 26, + "startColumn": 1, + "charOffset": 845, + "charLength": 250, + "snippet": { + "text": "from GoogleSheets.Google_sheets import rating_update_start_thread\r\nfrom supabase import Client, create_client\r\n#from Database.DataUsers import *\r\nfrom codegen import *\r\nfrom funcs import show_rating, show_user_rating, is_dirt, generate_id_for_survey\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "66244791a7b45b583021ed19de640b6571f88770e4232eed79221c90528d1774" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 53, + "startColumn": 103, + "charOffset": 3423, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 51, + "startColumn": 1, + "charOffset": 3247, + "charLength": 317, + "snippet": { + "text": " if user[\"gender\"]:\n insert_image = f'=IMAGE(\"{link}\")'\n google_update_list.append([\"=СТРОКА()-1\", insert_image, user['full_name'], user['balance'],user['chat_id'],f'=ГИПЕРССЫЛКА(\"t.me/{user[\"tgusr\"][1:]}\";\"{user[\"tgusr\"]}\")'])\n else:\n insert_image = f'=IMAGE(\"{link}\")'" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "66bcca317a15f2f5bc8d7cc6249827723f64f88f10477eedc0a0115d33a48fa2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 930, + "startColumn": 3, + "charOffset": 41295, + "charLength": 5, + "snippet": { + "text": "await" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 928, + "startColumn": 1, + "charOffset": 41256, + "charLength": 94, + "snippet": { + "text": "\r\n await message.reply(rules_text)\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "670b1f8ef93760f75a148a945e3d570d384f1482efdad85518c263b28259cfba" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 369, + "startColumn": 144, + "charOffset": 15045, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 367, + "startColumn": 1, + "charOffset": 14860, + "charLength": 400, + "snippet": { + "text": "\r\n# Хендлер отмены действия через кнопку\r\n@dp.callback_query_handler(text=\"cancel\", state=[AdminPanel.change_user_balance,AdminPanel.change_user_fullname,AdminPanel.change_user_agestart,AdminPanel.get_info_about_user])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню админ-панели.\", reply_markup=admrkbm)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "680d75c21060d85a0baab878c9d5ee6b585890bdd18548fd9b064bb4b5d95625" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 21, + "startColumn": 37, + "charOffset": 818, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 19, + "startColumn": 1, + "charOffset": 698, + "charLength": 208, + "snippet": { + "text": "url: str = os.environ.get(\"SUPABASE_URL\")\nkey: str = os.environ.get(\"SUPABASE_KEY\")\nsupabase: Client = create_client(url,key)\ntable_name = \"UsersData\"\nusers : UserRepository = SupabaseUserRepository(supabase)" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6942dce52b46cea6acb707a6904a74a4a5ffd08bfa5b7b092f39f219d1de9154" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 747, + "startColumn": 1, + "charOffset": 33697, + "charLength": 64, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.promo_addpromo_naming_cost)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 745, + "startColumn": 1, + "charOffset": 33640, + "charLength": 230, + "snippet": { + "text": " await AdminPanel.promo_addpromo_naming_cost.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming_cost)\r\nasync def get_naming_promo_cost(message: types.Message, state:FSMContext):\r\n usages = int(message.text)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "695800c35ff6abd223a8ed1465c636ae4b06c6d4183b3f77ebff4b10698e4baf" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1384, + "startColumn": 1, + "charOffset": 63145, + "charLength": 77, + "snippet": { + "text": "@dp.message_handler(content_types=['photo'], state=MenuStates.promocodestart)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1382, + "startColumn": 1, + "charOffset": 63100, + "charLength": 194, + "snippet": { + "text": " await MenuStates.promocodestart.set()\r\n\r\n@dp.message_handler(content_types=['photo'], state=MenuStates.promocodestart)\r\nasync def check_qr_code(message: types.Message, state: FSMContext):\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6ad08c3b14b0ecf06be4e94a4aa9c6037b65d72e835373e87fea3871ad6c2ab5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 67, + "startColumn": 20, + "charOffset": 2618, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 65, + "startColumn": 1, + "charOffset": 2515, + "charLength": 180, + "snippet": { + "text": " self.client.table(self.table_name).insert(user.dict()).execute()\r\n \r\n def delete(self,user : User) -> None:\r\n try:\r\n if self.get(user.chat_id):\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6ae4cf3a74e040634c8d112eba980bd0ded53244ac3b90c801ecd83adbd0ab68" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1748, + "startColumn": 1, + "charOffset": 79991, + "charLength": 63, + "snippet": { + "text": "@dp.message_handler(text = \"📝Задания\", state=MenuStates.tasks)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1746, + "startColumn": 1, + "charOffset": 79867, + "charLength": 287, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📝Задания\", state=MenuStates.tasks)\r\nasync def handle_tasks(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6b92719384e5e40b5a75da4413efff1fd46ca15da7b4c53daba4eef5f5a34994" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 363, + "startColumn": 1, + "charOffset": 14593, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 361, + "startColumn": 1, + "charOffset": 14589, + "charLength": 268, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Event maker panel\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6c10d4622b8a5d6c8f582e4891baf100bb480b64eb7bff748a8454770753ed81" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (131 > 120 characters)", + "markdown": "PEP 8: E501 line too long (131 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 717, + "startColumn": 121, + "charOffset": 32472, + "charLength": 1, + "snippet": { + "text": ")" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 715, + "startColumn": 1, + "charOffset": 32289, + "charLength": 247, + "snippet": { + "text": " user.user_state = str(AdminPanel.promo_check_promocode)\r\n\r\n promos = supabase.table('Promocode').select('promo', 'last', 'cost').filter('last', 'gt', 0).order('cost', desc=True).execute()\r\n\r\n promo_text = \"📝 Действующие промокоды:\\n\\n\"\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6c34fb7e725a22af1c1abc1ebe44099a9e97a58ff0a29bafa0cc235936f12759" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1593, + "startColumn": 240, + "charOffset": 73130, + "charLength": 10, + "snippet": { + "text": "parse_mode" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1591, + "startColumn": 1, + "charOffset": 72793, + "charLength": 439, + "snippet": { + "text": "async def handle_help(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, f\"Привет\\\\! Если у тебя есть какие\\\\-то проблемы или пожелания \\\\, то смелее нажимай на кнопку \" + f\"{code('📨Создать заявку')}\" + f\" и администратор с радостью тебе поможет\\\\! \", reply_markup=userhelp, parse_mode = 'MarkdownV2')\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.help)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6c8be8d17b03c9c5b2ef47f7447db7d8f32c76a03bc01450a092d5476a1f127e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 128, + "startColumn": 49, + "charOffset": 5393, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 126, + "startColumn": 1, + "charOffset": 5263, + "charLength": 215, + "snippet": { + "text": "admue_back = KeyboardButton(text=\"⬅️Админ меню\")\r\nadmue.row(admue_get_info_user)\r\nadmue.row(admue_fullname_editor,admue_age_editor,admue_balance_editor)\r\nadmue.row(admue_update_users_balance)\r\nadmue.row(admue_back)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6e96a8959c827c28d79c642ea5ce42cd1bfce74088a24d2f52dd4269e8518b4e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (144 > 120 characters)", + "markdown": "PEP 8: E501 line too long (144 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 54, + "startColumn": 34, + "charOffset": 2114, + "charLength": 110, + "snippet": { + "text": "\"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 52, + "startColumn": 1, + "charOffset": 2020, + "charLength": 289, + "snippet": { + "text": "\r\nconfirmbutton = ReplyKeyboardMarkup(resize_keyboard=True)\r\nconfbutton = KeyboardButton(text=\"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\")\r\nbackbutton = KeyboardButton(text=\"⬅️Назад в меню\")\r\nconfirmbutton.row(confbutton)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6f373fcf6ed799003b3e38ae415a81e4083c1c28817609853533e1e2a1134e9a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1892, + "startColumn": 1, + "charOffset": 85653, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1890, + "startColumn": 1, + "charOffset": 85610, + "charLength": 317, + "snippet": { + "text": " await start_command(message, state)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система для Telegram Web App\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6f4d03dfb52cbb052d9f7f32ffb7941be3501146f3116c57f1ca9aaa274a2493" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1123, + "startColumn": 34, + "charOffset": 50475, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1121, + "startColumn": 1, + "charOffset": 50312, + "charLength": 265, + "snippet": { + "text": " await AdminPanel.taskmenu.set()\r\n await bot.send_message(chat_id, \"Опрос успешно создан!\", reply_markup=admtasks)\r\n querydict = {\"surveyData\":querylist}\r\n querydict_dump: str = json.dumps(querydict)\r\n url = url + querydict_dump \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6fba55d3d49ed9bdea6c8e886c2289394e83a745e1a23cc38d5bd86084de0e52" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 70, + "startColumn": 73, + "charOffset": 2768, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 68, + "startColumn": 1, + "charOffset": 2642, + "charLength": 251, + "snippet": { + "text": " try:\r\n if self.get(user.chat_id):\r\n self.client.table(self.table_name).delete().eq('chat_id',user.chat_id).execute()\r\n except Exception as e:\r\n print(f\"Error delete user {user.chat_id} error : {e}\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6fde1b8cc3359a0e769e19506fb7425325a4223957d27a77a8c4a673b5780358" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 178, + "startColumn": 82, + "charOffset": 7959, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 176, + "startColumn": 1, + "charOffset": 7799, + "charLength": 362, + "snippet": { + "text": "ikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r\nibadminrating = InlineKeyboardButton(text=\"📊Админ Рейтинг\",web_app = WebAppInfo(url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vR__0ahX-O5SK3sS7OditV88sjG64duAF6mAW702CT3uM3Yj6z5mwsnxv-lL2vF9-H3YjlD0rtmg84N/pubhtml?gid=0&single=true'))\r\nikbmadminrating.add(ibadminrating)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6ffad004939f94dd4e8e4e36da5c9fb54d22aecc67342af24ed3ce8b25d40800" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 88, + "startColumn": 1, + "charOffset": 2826, + "charLength": 30, + "snippet": { + "text": "class AdminPanel(StatesGroup):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 86, + "startColumn": 1, + "charOffset": 2798, + "charLength": 112, + "snippet": { + "text": "\r\n# Состояния админ-панели\r\nclass AdminPanel(StatesGroup):\r\n admin_menu = State()\r\n change_user = State()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "715cb9c2a611cb205049f188db5dc1d05683d2034fe376019026133fcdb06ca2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1669, + "startColumn": 1, + "charOffset": 76556, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1667, + "startColumn": 1, + "charOffset": 76404, + "charLength": 349, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система тикетов для админов\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📨Обращения\", state = AdminPanel.admin_menu)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "71f119ca5b160a19f0a02426086e049a5aaeec38aea6a47db1f2ff075737b1c8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 32, + "startColumn": 101, + "charOffset": 1107, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 30, + "startColumn": 1, + "charOffset": 924, + "charLength": 243, + "snippet": { + "text": "async def show_user_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', ).order('balance', desc = True).limit(4).execute()\r\n\r\n # Формируем текст рейтинга\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "71f27c0704692bec0b9224c548781e5b67bfeb4bc21a7e03e2a03feb39c2e71a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1110, + "startColumn": 53, + "charOffset": 49792, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1108, + "startColumn": 1, + "charOffset": 49571, + "charLength": 371, + "snippet": { + "text": " name = data.get(\"name\") \r\n numberPoints.update({new_json_data[\"questionId\"]:new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints = numberPoints)\r\n await state.update_data(rightAnswers = rightAnswers)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "74267d0ec9bed9ba884314a6b68e3a69dce93ebe047cdc18b284a9085f3c249e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 969, + "startColumn": 1, + "charOffset": 43004, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 967, + "startColumn": 1, + "charOffset": 42863, + "charLength": 340, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Система заданий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text=\"📝Создать задание\", state=AdminPanel.admin_menu)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "74635c8fa40a181c9eb0bb36830573ad0e011ecfa38ad0eec1e40192dfc333f3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 16, + "startColumn": 108, + "charOffset": 438, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 14, + "startColumn": 1, + "charOffset": 253, + "charLength": 245, + "snippet": { + "text": "async def show_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', 'tgusr').order('balance', desc = True).limit(4).execute()\r\n\r\n # Формируем текст рейтинга\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "747b567528158ed692b9f1866360a482c0c325f8b8d00fa339ed66e9eda3e307" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 543, + "startColumn": 1, + "charOffset": 23754, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 541, + "startColumn": 1, + "charOffset": 23750, + "charLength": 290, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования ФИО пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "74ab3f1368fa0a75c5cb88a1a4c2f35192069bfc01f89becf4551f465edd0752" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1077, + "startColumn": 39, + "charOffset": 48079, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1075, + "startColumn": 1, + "charOffset": 47980, + "charLength": 231, + "snippet": { + "text": " counter = int(message.text)\r\n except ValueError:\r\n await bot.send_message(chat_id,\"Введенное значение должно быть числом > 0\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n if counter <= 0:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "751fa6e56aaeb11ce6975972a5cc87729c96303edf1e5c633fd065bcfb717253" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 923, + "startColumn": 3, + "charOffset": 41009, + "charLength": 3, + "snippet": { + "text": "for" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 921, + "startColumn": 1, + "charOffset": 40942, + "charLength": 219, + "snippet": { + "text": " rules_text = \"📝 Пользователи с правами ивент-мейкера:\\n\\n\"\r\n\r\n for chat_id in event_makers:\r\n user_data = supabase.table('UsersData').select('tgusr').eq('chat_id', int(chat_id)).execute()\r\n if user_data.data:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "75852b6309f0d4a86eb1009632bec9ad24c2deae6f87139ff500f5dc277d75b4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 183, + "startColumn": 80, + "charOffset": 8307, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 181, + "startColumn": 1, + "charOffset": 8162, + "charLength": 274, + "snippet": { + "text": "#help buttons\r\nhelpinlinereg = InlineKeyboardMarkup(row_width=1)\r\nhelpinlinenaming = InlineKeyboardButton(text=\"Помощь\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/README.md'))\r\nhelpinlinereg.add(helpinlinenaming)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "75a3c85c5f7d1713f13bc40730ec4c068db2f50193b80e6052a91d5cdad09ccd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 54, + "startColumn": 22, + "charOffset": 2139, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 52, + "startColumn": 1, + "charOffset": 2058, + "charLength": 137, + "snippet": { + "text": " age=age,\r\n balance=balance,\r\n tgusr = tgusr\r\n )\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "75ca262c59eba8a27c60e409f301281531c07beace8df5bc3c62a18ed126a68c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1328, + "startColumn": 1, + "charOffset": 60342, + "charLength": 59, + "snippet": { + "text": "@dp.message_handler(state=ProlfileStates.edit_profile_name)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1326, + "startColumn": 1, + "charOffset": 60280, + "charLength": 229, + "snippet": { + "text": " await message.reply(\"Нет такого варианта выбора!\")\r\n\r\n@dp.message_handler(state=ProlfileStates.edit_profile_name)\r\nasync def edit_name_profile(message: types.Message, state:FSMContext):\r\n new_fullname = message.text \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "76590def7e3e5f946657a077550b09c846ce00d910374875353ef2e49392c005" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (183 > 120 characters)", + "markdown": "PEP 8: E501 line too long (183 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 56, + "startColumn": 121, + "charOffset": 3685, + "charLength": 2, + "snippet": { + "text": "f'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 54, + "startColumn": 1, + "charOffset": 3504, + "charLength": 356, + "snippet": { + "text": " else:\n insert_image = f'=IMAGE(\"{link}\")'\n google_update_list.append([\"=СТРОКА()-1\", insert_image, user['full_name'], user['balance'], user['chat_id'],f'=ГИПЕРССЫЛКА(\"t.me/{user[\"tgusr\"][1:]}\";\"{user[\"tgusr\"]}\")'])\n worksheet.insert_rows(google_update_list, value_input_option=\"USER_ENTERED\")\n worksheet.sort((4, 'des'))" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "766ad6e1f37d88a18dd381c2bd9294d489c5089096c6c4595e34d97609d0b597" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (125 > 120 characters)", + "markdown": "PEP 8: E501 line too long (125 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 32, + "startColumn": 117, + "charOffset": 1123, + "charLength": 7, + "snippet": { + "text": "execute" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 30, + "startColumn": 1, + "charOffset": 924, + "charLength": 243, + "snippet": { + "text": "async def show_user_rating(chat_id: int):\r\n # Запрос топ 4 пользователей из БД\r\n top_users = supabase.table('UsersData').select('full_name', 'balance', ).order('balance', desc = True).limit(4).execute()\r\n\r\n # Формируем текст рейтинга\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "767e95105fff7c273106c263072b1df2d5ad8d7b275a321ccd0c9e713254cbb2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 848, + "startColumn": 1, + "charOffset": 38374, + "charLength": 65, + "snippet": { + "text": "@dp.message_handler(text=\"Выдать права\",state = AdminPanel.rules)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 846, + "startColumn": 1, + "charOffset": 38213, + "charLength": 336, + "snippet": { + "text": " await message.reply(\"Вы попали в раздел для выдачи права создания заданий пользователям. Нажмите на кнопку и следуйте указаниям.\", reply_markup=ruleskbm)\r\n\r\n@dp.message_handler(text=\"Выдать права\",state = AdminPanel.rules)\r\nasync def give_rules(message: types.Message, state: FSMContext):\r\n await AdminPanel.rules_addmaker.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "76891755b779dae9e9e0be7b3561dfa065bd2a9cfb7faac85cb4496d97d452f7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 178, + "startColumn": 86, + "charOffset": 7963, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 176, + "startColumn": 1, + "charOffset": 7799, + "charLength": 362, + "snippet": { + "text": "ikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r\nibadminrating = InlineKeyboardButton(text=\"📊Админ Рейтинг\",web_app = WebAppInfo(url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vR__0ahX-O5SK3sS7OditV88sjG64duAF6mAW702CT3uM3Yj6z5mwsnxv-lL2vF9-H3YjlD0rtmg84N/pubhtml?gid=0&single=true'))\r\nikbmadminrating.add(ibadminrating)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "774694d69ca1822dcce98c9d2647069a619a06936def1db400441d0301823aef" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (140 > 120 characters)", + "markdown": "PEP 8: E501 line too long (140 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 29, + "startColumn": 121, + "charOffset": 1260, + "charLength": 4, + "snippet": { + "text": "desc" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 27, + "startColumn": 1, + "charOffset": 1031, + "charLength": 302, + "snippet": { + "text": " sh: Spreadsheet = gc.open_by_url(ADMIN_SPREADSHEET_URL)\n worksheet = sh.worksheet(\"📊 Админ Рейтинг\")\n response = supabase.table('UsersData').select('full_name', 'chat_id', 'tgusr', 'balance', 'gender').order('balance',desc=True).execute()\n users_data = response.data\n worksheet.clear()" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7762b4dfbe6763f38821d7ed7fbe5b3e8e3f837f029581c6aa49dea41f32757e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E261 at least two spaces before inline comment", + "markdown": "PEP 8: E261 at least two spaces before inline comment" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1109, + "startColumn": 85, + "charOffset": 49709, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1107, + "startColumn": 1, + "charOffset": 49536, + "charLength": 348, + "snippet": { + "text": " data = await state.get_data()\r\n name = data.get(\"name\") \r\n numberPoints.update({new_json_data[\"questionId\"]:new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints = numberPoints)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "777fed91bafc1948c365a0f011422bc8dde5481eb42495e3b6aaa0a800a954c9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 16, + "startColumn": 3, + "charOffset": 263, + "charLength": 3, + "snippet": { + "text": "def" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 14, + "startColumn": 1, + "charOffset": 250, + "charLength": 61, + "snippet": { + "text": " ...\r\n\r\n def list(self,**kwargs) -> List[User]: \r\n ..." + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7781cddefc24417a405260c65a4b4ecf2fccb982b4450fcd59f32eafa01619b8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (136 > 120 characters)", + "markdown": "PEP 8: E501 line too long (136 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 551, + "startColumn": 115, + "charOffset": 24403, + "charLength": 19, + "snippet": { + "text": "ReplyKeyboardRemove" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 549, + "startColumn": 1, + "charOffset": 24153, + "charLength": 379, + "snippet": { + "text": "async def admin_change_user_fullname(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_fullnamestart.set()\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r\n admin = users.get(message.chat.id)\r\n admin.user_state = str(AdminPanel.change_user_fullnamestart)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "77ee0bea16314541f87b61a67496483a26728c4ce8796a43f4d77fa102ff51a8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E261 at least two spaces before inline comment", + "markdown": "PEP 8: E261 at least two spaces before inline comment" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 57, + "startColumn": 93, + "charOffset": 1985, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 55, + "startColumn": 1, + "charOffset": 1809, + "charLength": 246, + "snippet": { + "text": "\r\nstandart_dirt = [1093, 1091, 1081, 124, 1073, 1083, 1103, 124, 1077, 1073, 124, \r\n 1087, 1080, 1079, 1076, 124, 1105, 1073, 124, 1079, 1072, 1083, 1091, 1087] # censored\r\n\r\nstandart_dirt = ''.join(chr(n) for n in standart_dirt)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "787d087176af60ce7d977a8202b0d2aa5ddf429ffc9964510c43015b9ff45d40" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 17, + "startColumn": 110, + "charOffset": 542, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 15, + "startColumn": 1, + "charOffset": 384, + "charLength": 273, + "snippet": { + "text": " try:\r\n chat_id:int = int(id)\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','tgusr','user_state').eq('chat_id', chat_id).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "78b99ef86a3b83a87e41ff82bcdfd54d60984ca3137085332c962027d23d30e7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 64, + "startColumn": 13, + "charOffset": 2506, + "charLength": 7, + "snippet": { + "text": "#insert" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 62, + "startColumn": 1, + "charOffset": 2374, + "charLength": 224, + "snippet": { + "text": " self.client.table(self.table_name).update(user.dict()).eq('chat_id',user.chat_id).execute()\r\n else:\r\n #insert\r\n self.client.table(self.table_name).insert(user.dict()).execute()\r\n \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "78c9df3a052a73d6f5baadf1cc2e6e77f8dc5a49d4f0c6f7de5d36581b361c1f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (184 > 120 characters)", + "markdown": "PEP 8: E501 line too long (184 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 114, + "startColumn": 87, + "charOffset": 4645, + "charLength": 97, + "snippet": { + "text": "'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/User%20guide/README.md'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 112, + "startColumn": 1, + "charOffset": 4445, + "charLength": 352, + "snippet": { + "text": "userhelp_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\nuserhelp_ticket = KeyboardButton(text=\"📨Создать заявку\")\r\nguide = KeyboardButton(text=\"?📑Руководство пользователя\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/User%20guide/README.md'))\r\nuserhelp.row(userhelp_ticket)\r\nuserhelp.row(guide)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "792c3da6428848f2664662936dbef57393858781eb06c7e2ef03cc7d51c8e226" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (143 > 120 characters)", + "markdown": "PEP 8: E501 line too long (143 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 658, + "startColumn": 120, + "charOffset": 29840, + "charLength": 10, + "snippet": { + "text": "parse_mode" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 656, + "startColumn": 1, + "charOffset": 29628, + "charLength": 315, + "snippet": { + "text": " # Отправляем сообщение об успешном обновлении\r\n new_code_age = code(new_age)\r\n await message.reply(f\"Возраст пользователя {username} успешно обновлен на {new_code_age}\", reply_markup=admue, parse_mode='MarkdownV2')\r\n await state.finish()\r\n await AdminPanel.change_user_end.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7acf0ffc2108605d0e6840d6c0b4bb1fdd9c60b01de9536e6ce5a1fc60ad1a83" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 911, + "startColumn": 3, + "charOffset": 40663, + "charLength": 5, + "snippet": { + "text": "await" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 909, + "startColumn": 1, + "charOffset": 40635, + "charLength": 130, + "snippet": { + "text": "\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text='Действующие права', state=AdminPanel.rules)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7b7a97d70c04677da7977b9d26e2a5ab411c97e305a63aec7d31c913ab65b77e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 196, + "startColumn": 1, + "charOffset": 8828, + "charLength": 15, + "snippet": { + "text": "#survey web-app" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 194, + "startColumn": 1, + "charOffset": 8799, + "charLength": 359, + "snippet": { + "text": "admtasks.row(admtaskback)\r\n\r\n#survey web-app\r\nsurveywebapp = ReplyKeyboardMarkup(resize_keyboard=True)\r\nsurvquestcreate = KeyboardButton(text=\"Создать вопрос\",web_app=WebAppInfo(url = 'https://survey-web-app.pages.dev/edit?json=%7B%22surveyData%22%3A%20%5B%7B%22questionId%22%3A%2069%2C%20%22question%22%3A%20%22%22%2C%20%22choices%22%3A%20%5B%5D%7D%5D%7D'))\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7b9b50819f364aa4444338767cbf375166197828cfa770a81ed0cd075830c21f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1132, + "startColumn": 182, + "charOffset": 50990, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1130, + "startColumn": 1, + "charOffset": 50727, + "charLength": 360, + "snippet": { + "text": " description = data.get(\"description\")\r\n photo = data.get(\"photo\")\r\n supabase.table('TaskCollection').insert({'name': name, 'description': description, 'photo': photo, 'counter': counter, 'url': url,'numberPoints':numberPoints, 'rightAnswers':rightAnswers}).execute()\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7c87981fe83c9c747fb9493af830b5101f2e313f4d197b5bdd30674d044c850c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ':'", + "markdown": "PEP 8: E203 whitespace before ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1448, + "startColumn": 49, + "charOffset": 65533, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1446, + "startColumn": 1, + "charOffset": 65328, + "charLength": 403, + "snippet": { + "text": " supabase.table('Promocode').update({'last': new_last}).eq('promo', poro).execute()\r\n expression = ''.join(random.choices(string.ascii_letters, k=8))\r\n supabase.table('UsedPromocode').insert({'id' : expression,'promo': poro, 'chat_id': str(chat_id)}).execute()\r\n\r\n await message.reply(f\"Ваш баланс пополнен на {code(promocode['cost'])}🔘\\\\!\", reply_markup=promo_kb, parse_mode='MarkdownV2')\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7ca29b9ba02157b4df03107873c34a96a8fa58d2251bc19962087a8bd95f722a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ':'", + "markdown": "PEP 8: E203 whitespace before ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 7, + "startColumn": 18, + "charOffset": 132, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 5, + "startColumn": 1, + "charOffset": 83, + "charLength": 79, + "snippet": { + "text": "class UserRepository(ABC):\r\n \r\n def get(self,id : str) -> User:\r\n ...\r\n \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7e6035bbbb64ef7fea85cd5217a9d697ae8400f6be1893c9c707703f970a6506" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 3", + "markdown": "PEP 8: E302 expected 2 blank lines, found 3" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 429, + "startColumn": 1, + "charOffset": 18042, + "charLength": 80, + "snippet": { + "text": "@dp.message_handler(text=\"⚙️Изменить пользователя\", state=AdminPanel.admin_menu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 427, + "startColumn": 1, + "charOffset": 17994, + "charLength": 248, + "snippet": { + "text": "\r\n# Хендлер для кнопки ️Изменить пользователя\r\n@dp.message_handler(text=\"⚙️Изменить пользователя\", state=AdminPanel.admin_menu)\r\nasync def admin_change_user(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_start.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7f499c4a459b0d1eb09bb7f842c896f895cf1b776c13892ff5a7c913fe046c57" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 15, + "startColumn": 10, + "charOffset": 631, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 13, + "startColumn": 1, + "charOffset": 528, + "charLength": 216, + "snippet": { + "text": "kschedule= KeyboardButton(text=\"📆Календарь событий\")\r\nkhelp= KeyboardButton(text=\"❓Помощь\")\r\nkexercise= KeyboardButton(text=\"📝Задания\")\r\nkpromo = KeyboardButton(text=\"🗝️Промокоды\")\r\nrkbm.row(kprofile,kliderboard)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7ffc7ccb5cb9b62228698a8fc408bb634a03a67a9ebaccaea97df999cdefe729" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 38, + "startColumn": 112, + "charOffset": 1459, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 36, + "startColumn": 1, + "charOffset": 1292, + "charLength": 278, + "snippet": { + "text": " except ValueError:\r\n tgusr:str = id\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','chat_id','user_state').eq('tgusr', tgusr).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "805bd793fa077a8b6e282a97ea7c81e73a2c2571d70b474a295b219aca1a54e6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1084, + "startColumn": 39, + "charOffset": 48462, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1082, + "startColumn": 1, + "charOffset": 48361, + "charLength": 272, + "snippet": { + "text": " else:\r\n await state.update_data(counter = counter)\r\n await bot.send_message(chat_id,\"Коллекция создана успешно! Перейдите пожалуйста, к составлению заданий!⬇️\",reply_markup=surveywebapp)\r\n await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "80b42afb758c26e641d970d41afb31036d6e29c24e7560b13c85c26cfa213636" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1058, + "startColumn": 1, + "charOffset": 47118, + "charLength": 98, + "snippet": { + "text": "@dp.message_handler(content_types= types.ContentType.PHOTO, state = AdminPanel.taskmenu_photowait)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1056, + "startColumn": 1, + "charOffset": 47069, + "charLength": 260, + "snippet": { + "text": " await AdminPanel.taskmenu_photowait.set()\r\n\r\n@dp.message_handler(content_types= types.ContentType.PHOTO, state = AdminPanel.taskmenu_photowait)\r\nasync def admin_taskmenu_photowait(message: types.Message , state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "812ab889653e5a43a7e1c39f3fcaf40269642f93d2890054e6bde8538607788a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 16, + "startColumn": 20, + "charOffset": 417, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 14, + "startColumn": 1, + "charOffset": 347, + "charLength": 280, + "snippet": { + "text": " def get(self,id : str) -> User:\r\n try:\r\n chat_id:int = int(id)\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','tgusr','user_state').eq('chat_id', chat_id).execute()\r\n item = response.data[0]\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8176d359a48d856806839c1acc2465dc84540bc90a4170888f52deb4a2bafa4b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (149 > 120 characters)", + "markdown": "PEP 8: E501 line too long (149 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1542, + "startColumn": 39, + "charOffset": 70262, + "charLength": 110, + "snippet": { + "text": "\"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1540, + "startColumn": 1, + "charOffset": 70084, + "charLength": 355, + "snippet": { + "text": " await bot.send_message(chat_id, \"Ваш профиль был удален!\", reply_markup=types.ReplyKeyboardRemove())\r\n await state.finish()\r\n elif tgname != None and select == \"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\":\r\n tgname = \"@\" + tgname\r\n user = users.get(tgname)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8218b0bcbb2ce98ac01401f009859d7a890c3b7774dd31a0d8e7076cac4d2410" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 782, + "startColumn": 1, + "charOffset": 35356, + "charLength": 56, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.promo_addpromocost)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 780, + "startColumn": 1, + "charOffset": 35307, + "charLength": 209, + "snippet": { + "text": " await AdminPanel.promo_addpromocost.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromocost)\r\nasync def create_promo(message: types.Message, state: FSMContext):\r\n data = await state.get_data()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8264bb8192bcf3f9d3821a04ce5ff86c0fca7a1a2ad50ee5147584bc46abb575" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1114, + "startColumn": 38, + "charOffset": 50017, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1112, + "startColumn": 1, + "charOffset": 49885, + "charLength": 276, + "snippet": { + "text": " await state.update_data(rightAnswers = rightAnswers)\r\n querylist.append(new_json_data)\r\n await state.update_data(querylist = querylist)\r\n if counter > 1:\r\n await bot.send_message(chat_id, \"Пожалуйста, заполните следующий вопрос\",reply_markup=surveywebapp)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "82779eca1571b53570245ebb7816cafa076582f8d3882dcc6fa3c084935bd4e7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 13, + "startColumn": 18, + "charOffset": 229, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 11, + "startColumn": 1, + "charOffset": 201, + "charLength": 59, + "snippet": { + "text": " ...\r\n\r\n def delete(self,id : str) -> None:\r\n ...\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8303f8020377f6086399f439ce56e2b36c659bf9477cf78ffa393d9020a871f3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1119, + "startColumn": 40, + "charOffset": 50288, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1117, + "startColumn": 1, + "charOffset": 50162, + "charLength": 190, + "snippet": { + "text": " await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n counter -= 1\r\n await state.update_data(counter = counter)\r\n else:\r\n await AdminPanel.taskmenu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "83c9f54522e34a0523f46f171f9a7097aee523d25482af29df1422603534bb95" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (174 > 120 characters)", + "markdown": "PEP 8: E501 line too long (174 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1380, + "startColumn": 45, + "charOffset": 62844, + "charLength": 87, + "snippet": { + "text": "\"Введите , пожалуйста , ваш промокод сообщением или отправьте боту изображение QR-кода\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1378, + "startColumn": 1, + "charOffset": 62672, + "charLength": 470, + "snippet": { + "text": "@dp.message_handler(text=\"🗝️Ввести промокод\", state=MenuStates.promocode)\r\nasync def enter_promocode(message: types.Message):\r\n await bot.send_message(message.chat.id, \"Введите , пожалуйста , ваш промокод сообщением или отправьте боту изображение QR-кода\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(message.chat.id, \"Если хотите вернуться , то нажмите сюда\", reply_markup=cancel_button_to_main)\r\n await MenuStates.promocodestart.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "853d01729f9f2f4733202f8b3e2db7a9d8752ee08d90e24d04f6ace476027d5f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (324 > 120 characters)", + "markdown": "PEP 8: E501 line too long (324 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 93, + "startColumn": 13, + "charOffset": 6727, + "charLength": 312, + "snippet": { + "text": "#insert_image = '=IMAGE(\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\")'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 91, + "startColumn": 1, + "charOffset": 6654, + "charLength": 571, + "snippet": { + "text": " else:\n insert_image = f'=IMAGE(\"{link}\")'\n #insert_image = '=IMAGE(\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\")'\n google_update_list.append([\"=СТРОКА()-1\", insert_image, user['full_name'], user['balance']])\n worksheet.insert_rows(google_update_list, value_input_option=\"USER_ENTERED\")" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "85db7b763859a98d6a1995a5bc72470a99689cf8b31e1ba8d32448463f3b8fd1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (134 > 120 characters)", + "markdown": "PEP 8: E501 line too long (134 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1022, + "startColumn": 105, + "charOffset": 45470, + "charLength": 24, + "snippet": { + "text": "disable_web_page_preview" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1020, + "startColumn": 1, + "charOffset": 45305, + "charLength": 259, + "snippet": { + "text": " promo_text += (name_parsed + f\" {url_parsed} \\n\")\r\n\r\n await bot.send_message(chat_id, promo_text, parse_mode=types.ParseMode.HTML, reply_markup=admtasks, disable_web_page_preview=True)\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "85e4a2c901612884ffb8f4d0af75f15ea53fe9a64740224fcb44e5e8d87cf1a5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1398, + "startColumn": 3, + "charOffset": 63599, + "charLength": 5, + "snippet": { + "text": "await" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1396, + "startColumn": 1, + "charOffset": 63569, + "charLength": 124, + "snippet": { + "text": "\r\n message.text = qr_code\r\n await check_promocode(message, state)\r\n\r\n@dp.message_handler(state=MenuStates.promocodestart)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "868f5f0a56f4c8b458e221421af3e9a86cda4636f323074ae2218e5cc97572bf" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: W292 no newline at end of file", + "markdown": "PEP 8: W292 no newline at end of file" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 17, + "startColumn": 7, + "charOffset": 310, + "charLength": 1, + "snippet": { + "text": "." + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 15, + "startColumn": 1, + "charOffset": 259, + "charLength": 52, + "snippet": { + "text": "\r\n def list(self,**kwargs) -> List[User]: \r\n ..." + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "871d375b14dfc6712674f730b5f8c1e5168b9952f93872bd8f751a17554fc8a7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 72, + "startColumn": 81, + "charOffset": 2807, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 70, + "startColumn": 1, + "charOffset": 2670, + "charLength": 243, + "snippet": { + "text": "def get_user_info_by_id(chat_id:int ) -> str:\r\n try:\r\n response = supabase.table('UsersData').select('full_name','gender','age','balance','tgusr').eq('chat_id', chat_id).execute()\r\n return response\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8758be270e3d6e259ce5be26ab916ae370f481901df9da459bf2950e2871c8b4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1896, + "startColumn": 94, + "charOffset": 86023, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1894, + "startColumn": 1, + "charOffset": 85806, + "charLength": 375, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=[MenuStates.promocode,MenuStates.promocodestart])\r\nasync def handle_qr(message: types.ContentType.WEB_APP_DATA , state: FSMContext):\r\n message.text = message.web_app_data.data\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8862b04187f9bae150b384c802eb2713734c8ccc08d7bcf27403ea7318c51290" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (129 > 120 characters)", + "markdown": "PEP 8: E501 line too long (129 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 883, + "startColumn": 108, + "charOffset": 39822, + "charLength": 19, + "snippet": { + "text": "ReplyKeyboardRemove" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 881, + "startColumn": 1, + "charOffset": 39600, + "charLength": 301, + "snippet": { + "text": "async def del_from_eventers(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules_delmaker.set()\r\n await message.reply(\"Введите @username пользователя у котрого хотите забрать права\",reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.rules_delmaker)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8867be78fba706d59710661df2db00a712e3c872a841baaa1f6aeaa79b05ada4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 37, + "startColumn": 1, + "charOffset": 1249, + "charLength": 62, + "snippet": { + "text": "def update_user_fullname_by_tgusr(tgusr: str, full_name: str):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 35, + "startColumn": 1, + "charOffset": 1183, + "charLength": 248, + "snippet": { + "text": " print(f\"Error updating user state for {chat_id}: {e}\")\r\n\r\ndef update_user_fullname_by_tgusr(tgusr: str, full_name: str):\r\n try:\r\n response = supabase.table(table_name).update({'full_name': full_name}).eq('tgusr', tgusr).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "88dbe6d73f1e190dbf14af2f2e891b7a8ac16f363a7e2cf47e9e951fe8eade48" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 193, + "startColumn": 27, + "charOffset": 8784, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 191, + "startColumn": 1, + "charOffset": 8676, + "charLength": 151, + "snippet": { + "text": "admtaskback = KeyboardButton(text=\"⬅️Назад в меню\")\r\nadmtasks.row(admcreatetask)\r\nadmtasks.row(admdeletetask,admtasklist)\r\nadmtasks.row(admtaskback)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "88fa14eb2dab401743a072b24b0cb4e5015e960c7e7ce94c26230ae8284d0f72" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1661, + "startColumn": 112, + "charOffset": 76144, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1659, + "startColumn": 1, + "charOffset": 75988, + "charLength": 285, + "snippet": { + "text": " users.user_state=str(MenuStates.help)\r\n\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r\nasync def handle_help_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8913791501fcf7dd42480ec32f16e2ad85463ee44126fea4e0cdc8b91387a187" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 17, + "startColumn": 86, + "charOffset": 518, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 15, + "startColumn": 1, + "charOffset": 384, + "charLength": 273, + "snippet": { + "text": " try:\r\n chat_id:int = int(id)\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','tgusr','user_state').eq('chat_id', chat_id).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8991ceb3ad75049f2050dd064fb5bd6806a806dafbf5c4e9b8c3d9bc0ea62a27" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1083, + "startColumn": 40, + "charOffset": 48411, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1081, + "startColumn": 1, + "charOffset": 48297, + "charLength": 334, + "snippet": { + "text": " await AdminPanel.taskmenu_collection_counterwait.set()\r\n else:\r\n await state.update_data(counter = counter)\r\n await bot.send_message(chat_id,\"Коллекция создана успешно! Перейдите пожалуйста, к составлению заданий!⬇️\",reply_markup=surveywebapp)\r\n await AdminPanel.taskmenu_collection_surveywebapp.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "89d0e29bf6b2a9788999fd31afd54ea39e849dbb6ccf13278bc773b3d8b4801b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (143 > 120 characters)", + "markdown": "PEP 8: E501 line too long (143 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 540, + "startColumn": 121, + "charOffset": 23724, + "charLength": 10, + "snippet": { + "text": "parse_mode" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 538, + "startColumn": 1, + "charOffset": 23540, + "charLength": 213, + "snippet": { + "text": " users.set(admin)\r\n new_code_balance = code(new_balance)\r\n await message.reply(f\"Баланс пользователя {username} успешно обновлен на {new_code_balance}🔘\", reply_markup=admue, parse_mode=\"MarkdownV2\")\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "89e35e5ffbb7d16342f27cdf7f6a0c54238432babd77a563f1f43f0ef81c6bd4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1588, + "startColumn": 1, + "charOffset": 72625, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1586, + "startColumn": 1, + "charOffset": 72475, + "charLength": 317, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система тикетов для юзера\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(state=MenuStates.help)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8a7e40f02c2ab69447eaee144a6a699e11905511a52b1e8864ad1f1d4e40a0b9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ':'", + "markdown": "PEP 8: E203 whitespace before ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 60, + "startColumn": 22, + "charOffset": 2317, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 58, + "startColumn": 1, + "charOffset": 2261, + "charLength": 217, + "snippet": { + "text": " return None\r\n \r\n def set(self,user : User) -> None:\r\n if self.get(user.chat_id): \r\n self.client.table(self.table_name).update(user.dict()).eq('chat_id',user.chat_id).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8b76f058a11dbc52967caf2fb858cf8fdf97c2a8f2852eb6801bff3191292a8e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1448, + "startColumn": 62, + "charOffset": 65546, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1446, + "startColumn": 1, + "charOffset": 65328, + "charLength": 403, + "snippet": { + "text": " supabase.table('Promocode').update({'last': new_last}).eq('promo', poro).execute()\r\n expression = ''.join(random.choices(string.ascii_letters, k=8))\r\n supabase.table('UsedPromocode').insert({'id' : expression,'promo': poro, 'chat_id': str(chat_id)}).execute()\r\n\r\n await message.reply(f\"Ваш баланс пополнен на {code(promocode['cost'])}🔘\\\\!\", reply_markup=promo_kb, parse_mode='MarkdownV2')\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8b9d9bdcefc3f502ccf561b857c7a54a21b763d225a58f9e61547102c3e41adb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1144, + "startColumn": 1, + "charOffset": 51459, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1142, + "startColumn": 1, + "charOffset": 51436, + "charLength": 290, + "snippet": { + "text": " users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система регистрации\r\n#----------------------------------------------------------------------------------------------------------------------- \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8be0fc0200ae970e46fc54970f6a1455a97a9c34e1e8c39fbadeccdcb26788c9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E303 too many blank lines (2)", + "markdown": "PEP 8: E303 too many blank lines (2)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 75, + "startColumn": 5, + "charOffset": 2914, + "charLength": 48, + "snippet": { + "text": "def list(self,**kwargs) -> List[User]: \r\n " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 73, + "startColumn": 1, + "charOffset": 2894, + "charLength": 74, + "snippet": { + "text": "\r\n \r\n def list(self,**kwargs) -> List[User]: \r\n ...\r\n" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8d57f055a47dbc2117de40f9df0ae8e40c2e89ac5cf570e241797b7eeb25c50e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1748, + "startColumn": 27, + "charOffset": 80017, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1746, + "startColumn": 1, + "charOffset": 79867, + "charLength": 287, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📝Задания\", state=MenuStates.tasks)\r\nasync def handle_tasks(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8e4686fb6a2a17423518dd2ee7fe90db765b22a97479129cfd45d0880d876e61" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 885, + "startColumn": 1, + "charOffset": 39848, + "charLength": 52, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.rules_delmaker)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 883, + "startColumn": 1, + "charOffset": 39715, + "charLength": 289, + "snippet": { + "text": " await message.reply(\"Введите @username пользователя у котрого хотите забрать права\",reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.rules_delmaker)\r\nasync def del_from_eventers_start(message: types.Message, state: FSMContext):\r\n tgusr = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8e6dbf4a8abcc2bc1ef67f79614de406b7cfffc896051786de43bcde6f5292ac" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1754, + "startColumn": 72, + "charOffset": 80344, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1752, + "startColumn": 1, + "charOffset": 80190, + "charLength": 302, + "snippet": { + "text": " counter = data.get('counter')\r\n await state.update_data(counter = counter)\r\n task = supabase.table('TaskCollection').select('name','description','photo','url').execute().data[int(counter)]\r\n text = f\"{task['name']}\\n{task['description']}\"\r\n await state.update_data(name = task['name'])\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8f9307815b0f98a79492b1ae12cd739fe9d938ba2504c3a08345b5e7eef5deea" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1067, + "startColumn": 39, + "charOffset": 47640, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1065, + "startColumn": 1, + "charOffset": 47510, + "charLength": 261, + "snippet": { + "text": " await AdminPanel.taskmenu_collection_counterwait.set()\r\n except Exception as e:\r\n await bot.send_message(chat_id,\"Произошла ошибка, отправьте пожалуйста фотографию в хорошем качестве.\")\r\n await AdminPanel.taskmenu_photowait.set()\r\n \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8fcd415a91e0d85f9ec6ae59cc89019725cf656c3e40098c7ddac34fcde2f44c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ','", + "markdown": "PEP 8: E203 whitespace before ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 14, + "startColumn": 52, + "charOffset": 337, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 12, + "startColumn": 1, + "charOffset": 223, + "charLength": 239, + "snippet": { + "text": "import asyncio\r\nfrom aiogram.utils import executor , markdown\r\nfrom aiogram.utils.markdown import hlink, escape_md , code\r\nfrom aiogram.dispatcher import Dispatcher, FSMContext\r\nfrom aiogram.contrib.fsm_storage.memory import MemoryStorage\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8feba485e282e8c96870f0c50fa933377a58b755c63fe97dfcec0a84d44a116e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1535, + "startColumn": 15, + "charOffset": 69728, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1533, + "startColumn": 1, + "charOffset": 69642, + "charLength": 283, + "snippet": { + "text": " chat_id = message.chat.id\r\n tgname = message.from_user.username\r\n if tgname == None and select == \"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\":\r\n user = users.get(chat_id)\r\n users.delete(user)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "902358a62d6c625af6b4a23f111ec28600e2801e8b9e1d5901ecc00664953e19" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1899, + "startColumn": 58, + "charOffset": 86239, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1897, + "startColumn": 1, + "charOffset": 86053, + "charLength": 230, + "snippet": { + "text": "async def handle_qr(message: types.ContentType.WEB_APP_DATA , state: FSMContext):\r\n message.text = message.web_app_data.data\r\n await asyncio.wait_for(check_promocode(message,state),timeout=3.5)\r\n\r\n await message.delete()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "907fb7366cd91b6a43326e92f0540cc9a3c4fb9c1eda2036887146fbc37b239e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 910, + "startColumn": 3, + "charOffset": 40639, + "charLength": 5, + "snippet": { + "text": "await" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 908, + "startColumn": 1, + "charOffset": 40564, + "charLength": 130, + "snippet": { + "text": " await message.reply(\"Права успешно удалены\", reply_markup=ruleskbm)\r\n\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "90b9e25b1779aefe8524d49994d635ea82a6a08d10c1de5d652c80fdadb3d2cb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 306, + "startColumn": 21, + "charOffset": 11902, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 304, + "startColumn": 1, + "charOffset": 11819, + "charLength": 182, + "snippet": { + "text": " if numberPoints == None:\r\n numberPoints: dict = {}\r\n if rightAnswers == None:\r\n rightAnswers: dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9112ab264152bf9e4f8b79930b8112873d83d2b943f84fe4d0619c658dc147d1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1703, + "startColumn": 1, + "charOffset": 77961, + "charLength": 72, + "snippet": { + "text": "@dp.message_handler(text = \"Удалить обращение\", state=AdminPanel.ticket)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1701, + "startColumn": 1, + "charOffset": 77913, + "charLength": 221, + "snippet": { + "text": " user.user_state = str(AdminPanel.ticket)\r\n\r\n@dp.message_handler(text = \"Удалить обращение\", state=AdminPanel.ticket)\r\nasync def delete_ticket(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9278d7f9e3058859682c52205e5e96df28c326dae8126b44b5c81f468a68acc6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 178, + "startColumn": 43, + "charOffset": 7920, + "charLength": 17, + "snippet": { + "text": "\"📊Админ Рейтинг\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 176, + "startColumn": 1, + "charOffset": 7799, + "charLength": 362, + "snippet": { + "text": "ikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r\nibadminrating = InlineKeyboardButton(text=\"📊Админ Рейтинг\",web_app = WebAppInfo(url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vR__0ahX-O5SK3sS7OditV88sjG64duAF6mAW702CT3uM3Yj6z5mwsnxv-lL2vF9-H3YjlD0rtmg84N/pubhtml?gid=0&single=true'))\r\nikbmadminrating.add(ibadminrating)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "92dfa27c9ed18851216d342eb82d4964ed7f8577de32c17165e61177ed68570b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1899, + "startColumn": 51, + "charOffset": 86232, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1897, + "startColumn": 1, + "charOffset": 86053, + "charLength": 230, + "snippet": { + "text": "async def handle_qr(message: types.ContentType.WEB_APP_DATA , state: FSMContext):\r\n message.text = message.web_app_data.data\r\n await asyncio.wait_for(check_promocode(message,state),timeout=3.5)\r\n\r\n await message.delete()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9315ef2771a06699a4ddde7467050a42dddc1ebcc848abbd19f220caa4343822" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 497, + "startColumn": 1, + "charOffset": 21509, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 495, + "startColumn": 1, + "charOffset": 21340, + "charLength": 294, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования баланса пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9386d588bc0bd72cb4ac896c9663b9d66448ad7b41b50083d6cfe77194c276cc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 902, + "startColumn": 3, + "charOffset": 40406, + "charLength": 2, + "snippet": { + "text": "if" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 900, + "startColumn": 1, + "charOffset": 40376, + "charLength": 122, + "snippet": { + "text": " roles = json.load(f)\r\n\r\n if str(chat_id) in roles['event_makers']:\r\n roles['event_makers'].remove(str(chat_id))\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "940be31e9a00603608d3859037ceab95a833f14770923202db207c0d3d9f9a37" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1055, + "startColumn": 40, + "charOffset": 47052, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1053, + "startColumn": 1, + "charOffset": 46908, + "charLength": 209, + "snippet": { + "text": " description = message.text\r\n await bot.send_message(chat_id, \"Отправте фотографию мероприятия:\")\r\n await state.update_data(description = description)\r\n await AdminPanel.taskmenu_photowait.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "942e36fdf884f0a2dc9bc025c7077eca94c2787193af0873cc6dddecd93e2e5f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E712 comparison to False should be 'if cond is False:' or 'if not cond:'", + "markdown": "PEP 8: E712 comparison to False should be 'if cond is False:' or 'if not cond:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 585, + "startColumn": 129, + "charOffset": 26062, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 583, + "startColumn": 1, + "charOffset": 25876, + "charLength": 349, + "snippet": { + "text": " if FIO[word][0].istitle():\r\n cnt += 1\r\n if new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO):\r\n data = await state.get_data()\r\n username = data.get(\"username\") # получаем сохраненный username из данных состояния\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "949af292af09b314784d4c4874b1d7f7e965f589ccc78ea61cc68fac85600aed" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 848, + "startColumn": 40, + "charOffset": 38413, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 846, + "startColumn": 1, + "charOffset": 38213, + "charLength": 336, + "snippet": { + "text": " await message.reply(\"Вы попали в раздел для выдачи права создания заданий пользователям. Нажмите на кнопку и следуйте указаниям.\", reply_markup=ruleskbm)\r\n\r\n@dp.message_handler(text=\"Выдать права\",state = AdminPanel.rules)\r\nasync def give_rules(message: types.Message, state: FSMContext):\r\n await AdminPanel.rules_addmaker.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "960fc988c53bd4f5086971cefaa690f8dabcc8c4b9c5aa4817c04faf91304393" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E202 whitespace before ')'", + "markdown": "PEP 8: E202 whitespace before ')'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 175, + "startColumn": 239, + "charOffset": 7794, + "charLength": 1, + "snippet": { + "text": ")" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 173, + "startColumn": 1, + "charOffset": 7491, + "charLength": 386, + "snippet": { + "text": "#rating buttons\r\nikbmrating = InlineKeyboardMarkup(row_width=1)\r\nibrating = InlineKeyboardButton(text=\"📊Полный рейтинг\", web_app = WebAppInfo(url ='https://docs.google.com/spreadsheets/d/e/2PACX-1vQFzN5HRvQhS5j4kDcv9wWH3uucCqp1AFmu2ErZYikmmJSshj1f16v7ry013vde0y6OYVWeSsVtgaKT/pubhtml?gid=0&single=true') )\r\nikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "962a5638d706a7929412e713d743f4096b3b22f10b4ef925c41be16ae5716169" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ','", + "markdown": "PEP 8: E203 whitespace before ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1088, + "startColumn": 65, + "charOffset": 48816, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1086, + "startColumn": 1, + "charOffset": 48632, + "charLength": 273, + "snippet": { + "text": "\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=AdminPanel.taskmenu_collection_surveywebapp)\r\nasync def survey_web_app(message: types.ContentType.WEB_APP_DATA , state: FSMContext):\r\n chat_id = message.chat.id\r\n data = await state.get_data()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "96b639929146b0e7274bde533d1bdd1f82c2ddcf544953522c79765896632a6b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E252 missing whitespace around parameter equals", + "markdown": "PEP 8: E252 missing whitespace around parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 68, + "startColumn": 25, + "charOffset": 2248, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 66, + "startColumn": 1, + "charOffset": 2198, + "charLength": 102, + "snippet": { + "text": " return hide_search\r\n\r\ndef is_dirt(pattern: str=standart_dirt):\r\n\r\n funk = _get_search(pattern)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "970399cc276dbadc7aba3e8098a09c8453f556a3b971952610d154b3a6febbfa" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 354, + "startColumn": 27, + "charOffset": 14232, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 352, + "startColumn": 1, + "charOffset": 14202, + "charLength": 187, + "snippet": { + "text": "\r\n\r\n@dp.message_handler(text = \"⬅️Меню\", state=EventMakerPanel.menu)\r\nasync def back_from_event(message: types.Message, state:FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "97c3d5323111cd32f3482d3c1754dbb022647701b924f43c042b4a959d1f2630" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1294, + "startColumn": 56, + "charOffset": 58440, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1292, + "startColumn": 1, + "charOffset": 58338, + "charLength": 310, + "snippet": { + "text": " await ProlfileStates.edit_profile.set()\r\n\r\n@dp.callback_query_handler(text='back_to_menu', state = MenuStates.promocodestart)\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню промокодов.\", reply_markup=promo_kb)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "98113480010f6ed01f667954b77ef40c8c2b1d2c56d4e789c550958adb90e8d0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1793, + "startColumn": 1, + "charOffset": 82245, + "charLength": 58, + "snippet": { + "text": "@dp.message_handler(text=\"⬅️Меню\", state=MenuStates.tasks)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1791, + "startColumn": 1, + "charOffset": 82165, + "charLength": 235, + "snippet": { + "text": " await bot.delete_message(chat_id=chat_id, message_id=message.message_id)\r\n\r\n@dp.message_handler(text=\"⬅️Меню\", state=MenuStates.tasks)\r\nasync def task_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "98f75595dfef53c072f1c6d11c4194674c87671646cdd9c9ed9bc56090caa94a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1087, + "startColumn": 1, + "charOffset": 48634, + "charLength": 116, + "snippet": { + "text": "@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=AdminPanel.taskmenu_collection_surveywebapp)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1085, + "startColumn": 1, + "charOffset": 48567, + "charLength": 303, + "snippet": { + "text": " await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=AdminPanel.taskmenu_collection_surveywebapp)\r\nasync def survey_web_app(message: types.ContentType.WEB_APP_DATA , state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9951d37291438bfd699dff4ea300b09607c1a8811a9c3f411f8d60207468f5b9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (132 > 120 characters)", + "markdown": "PEP 8: E501 line too long (132 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 72, + "startColumn": 115, + "charOffset": 2841, + "charLength": 7, + "snippet": { + "text": "chat_id" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 70, + "startColumn": 1, + "charOffset": 2670, + "charLength": 243, + "snippet": { + "text": "def get_user_info_by_id(chat_id:int ) -> str:\r\n try:\r\n response = supabase.table('UsersData').select('full_name','gender','age','balance','tgusr').eq('chat_id', chat_id).execute()\r\n return response\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "99a2a0155837f628af59513ce16c74444dd1c7657eb2303b7b82df9bb336158d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 770, + "startColumn": 1, + "charOffset": 34758, + "charLength": 74, + "snippet": { + "text": "@dp.message_handler(text ='Добавить промокод',state=AdminPanel.promo_menu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 768, + "startColumn": 1, + "charOffset": 34706, + "charLength": 297, + "snippet": { + "text": " user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text ='Добавить промокод',state=AdminPanel.promo_menu)\r\nasync def get_usages(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите количество использований:\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "99d3608b8258feefd1cf57fa6dbb72d95e017b2ee9861bff1556c6e770f68cfc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 952, + "startColumn": 1, + "charOffset": 42251, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 950, + "startColumn": 1, + "charOffset": 42103, + "charLength": 273, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Система админ рейтинга\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9a3b2e49618ea4eb5a00a7c6d9f8147a7812ae54e51ddbc9ecca86913f39f2af" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E303 too many blank lines (3)", + "markdown": "PEP 8: E303 too many blank lines (3)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 185, + "startColumn": 1, + "charOffset": 6334, + "charLength": 77, + "snippet": { + "text": "@dp.message_handler(text='Удалить коллекцию', state=EventMakerPanel.taskmenu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 183, + "startColumn": 1, + "charOffset": 6330, + "charLength": 265, + "snippet": { + "text": "\r\n\r\n@dp.message_handler(text='Удалить коллекцию', state=EventMakerPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите пожалуйста имя коллекции для её удаления\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9a9b99eb6d9009c1a3b869974c592b9c666853b6c9fbbadadc439937879325d0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 897, + "startColumn": 3, + "charOffset": 40296, + "charLength": 7, + "snippet": { + "text": "chat_id" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 895, + "startColumn": 1, + "charOffset": 40280, + "charLength": 95, + "snippet": { + "text": " return\r\n\r\n chat_id = user_data.data[0]['chat_id']\r\n\r\n with open('roles.json', 'r') as f:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9ae40328bbf9b0532ad8dfe9e993d74ab59b6f46d13fde6b6f2bbb203f565860" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 183, + "startColumn": 65, + "charOffset": 8292, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 181, + "startColumn": 1, + "charOffset": 8162, + "charLength": 274, + "snippet": { + "text": "#help buttons\r\nhelpinlinereg = InlineKeyboardMarkup(row_width=1)\r\nhelpinlinenaming = InlineKeyboardButton(text=\"Помощь\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/README.md'))\r\nhelpinlinereg.add(helpinlinenaming)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9afbd492fb5e3d1f3fd40f532f6ff06299210c025846a75e1469687e29a3c336" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 20, + "startColumn": 15, + "charOffset": 801, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 18, + "startColumn": 1, + "charOffset": 745, + "charLength": 81, + "snippet": { + "text": "rkbm.add(kexercise)\r\nrkbm.add(kschedule)\r\nrkbm.row(khelp,kpromo)\r\n\r\n#promo_menuu\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9b959da53c8fbd7318f6042c26d98085392d7cb526ec6058bde2551fe52b7b62" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1100, + "startColumn": 21, + "charOffset": 49233, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1098, + "startColumn": 1, + "charOffset": 49151, + "charLength": 196, + "snippet": { + "text": " numberPoints:dict = {}\r\n if rightAnswers == None:\r\n rightAnswers:dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r\n message.text = message.web_app_data.data\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9ba5c0fbb983889e4b3a1e6deaca40e5ca3e88e509b3b36956eafe5026f2395a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is not None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is not None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 22, + "startColumn": 39, + "charOffset": 802, + "charLength": 2, + "snippet": { + "text": "!=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 20, + "startColumn": 1, + "charOffset": 658, + "charLength": 262, + "snippet": { + "text": " pseudo = user_data.get('full_name', 'Unknown')\r\n gender = user_data.get('gender')\r\n gender = gender if gender != None else False\r\n age = user_data.get('age', 'Unknown')\r\n balance = user_data.get('balance')\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9be9d27c1645b61dce533761b52bdd8fa9a01077714ad103c4236408155cb57b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 887, + "startColumn": 3, + "charOffset": 39983, + "charLength": 5, + "snippet": { + "text": "tgusr" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 885, + "startColumn": 1, + "charOffset": 39848, + "charLength": 248, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.rules_delmaker)\r\nasync def del_from_eventers_start(message: types.Message, state: FSMContext):\r\n tgusr = message.text\r\n\r\n user_data = supabase.table('UsersData').select('chat_id').eq('tgusr', tgusr).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9c893b0356094404639be9c931e63c3c58bb479b2ba8500c30c30bcd0ecbd18d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1661, + "startColumn": 27, + "charOffset": 76059, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1659, + "startColumn": 1, + "charOffset": 75988, + "charLength": 285, + "snippet": { + "text": " users.user_state=str(MenuStates.help)\r\n\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r\nasync def handle_help_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9cab116ca556562972bddfc565b8e25f6413b890660126e9e0c303bc74d7e273" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1571, + "startColumn": 20, + "charOffset": 71825, + "charLength": 3, + "snippet": { + "text": "str" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1569, + "startColumn": 1, + "charOffset": 71727, + "charLength": 197, + "snippet": { + "text": " for event in response.data:\r\n url = 'https://leader-id.ru/events/'\r\n url = url +str(event['id'])\r\n name = event['full_name']\r\n date_start = event['date_start'][:16]\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9cb34b375c45c85951187094bd1ec838d450709bd504bd370d1a94391bad0ade" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1468, + "startColumn": 25, + "charOffset": 66486, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1466, + "startColumn": 1, + "charOffset": 66458, + "charLength": 189, + "snippet": { + "text": "\r\n\r\n@dp.message_handler(text =\"📊Рейтинг\", state=MenuStates.waiting_for_profile)\r\nasync def user_rating_board(message: types.Message, state: FSMContext):\r\n await MenuStates.rating.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9d48c76e318db65272683a4e73b2ebb6cddf10c3cc640a62770d5cd43b8a4c56" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1257, + "startColumn": 1, + "charOffset": 56611, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1255, + "startColumn": 1, + "charOffset": 56607, + "charLength": 273, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Кнопкни главного меню\r\n#----------------------------------------------------------------------------------------------------------------------- \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9e0570af60fe206e5ced4ccdeefc501d40b0a5523162d9c0309fca14858d9e8e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E303 too many blank lines (2)", + "markdown": "PEP 8: E303 too many blank lines (2)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/models/users.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 7, + "startColumn": 5, + "charOffset": 89, + "charLength": 22, + "snippet": { + "text": "chat_id: int = 0 \r\n " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 5, + "startColumn": 1, + "charOffset": 77, + "charLength": 106, + "snippet": { + "text": "\r\n \r\n chat_id: int = 0 \r\n full_name: str = ''\r\n gender: bool = None\r\n user_state: str = ''\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9e05a1d0cdfa754ab0130021445570751434e973fd823777466473d55d980f61" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1272, + "startColumn": 19, + "charOffset": 57340, + "charLength": 9, + "snippet": { + "text": "\"❓Помощь\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1270, + "startColumn": 1, + "charOffset": 57234, + "charLength": 196, + "snippet": { + "text": " await MenuStates.rating.set()\r\n await user_rating_board(message, state)\r\n elif select ==\"❓Помощь\":\r\n await MenuStates.help.set()\r\n await handle_help(message,state)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9e8747feb9c68ae1bda64b3d11dbdad1d1f206d77e720f42b45caa568ae4991a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is not None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is not None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1542, + "startColumn": 17, + "charOffset": 70240, + "charLength": 2, + "snippet": { + "text": "!=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1540, + "startColumn": 1, + "charOffset": 70084, + "charLength": 355, + "snippet": { + "text": " await bot.send_message(chat_id, \"Ваш профиль был удален!\", reply_markup=types.ReplyKeyboardRemove())\r\n await state.finish()\r\n elif tgname != None and select == \"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\":\r\n tgname = \"@\" + tgname\r\n user = users.get(tgname)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9f1c468c905fbb192016d49361e6acbaeca4be3d72c72521372db41bac0d33b3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 143, + "startColumn": 31, + "charOffset": 6076, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 141, + "startColumn": 1, + "charOffset": 5981, + "charLength": 164, + "snippet": { + "text": "admpromo.row(addpromo_addqr)\r\nadmpromo.row(admpromo_checkpromo)\r\nadmpromo.row(admpromo_addpromo,admpromo_namingpromo,admpromo_delpromo)\r\nadmpromo.row(admue_back)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9f4dbc797a614c6f6ff719098921d55f635c9df151f2cc601005cfdf06e1b97c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1745, + "startColumn": 1, + "charOffset": 79849, + "charLength": 16, + "snippet": { + "text": "#Система заданий" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1743, + "startColumn": 1, + "charOffset": 79725, + "charLength": 265, + "snippet": { + "text": "\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система заданий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9f8ff2d2c6b09cf319b9c3eba0d8679cefac0f407cd778853ba59057ffcf7180" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1498, + "startColumn": 20, + "charOffset": 67871, + "charLength": 2, + "snippet": { + "text": "+=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1496, + "startColumn": 1, + "charOffset": 67775, + "charLength": 150, + "snippet": { + "text": " counter = 0\r\n while userlist[counter]['chat_id'] != chat_id:\r\n counter+=1\r\n if gender:\r\n gender = \"🙋‍♂️\"\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a005ff66406bbd72e62fdced6b54c6bf0e170d7f72c57919edfec0a12435e0c8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ','", + "markdown": "PEP 8: E203 whitespace before ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1059, + "startColumn": 58, + "charOffset": 47275, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1057, + "startColumn": 1, + "charOffset": 47116, + "charLength": 234, + "snippet": { + "text": "\r\n@dp.message_handler(content_types= types.ContentType.PHOTO, state = AdminPanel.taskmenu_photowait)\r\nasync def admin_taskmenu_photowait(message: types.Message , state: FSMContext):\r\n chat_id = message.chat.id\r\n photo = message\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a092a0aa0e2c166141461b83b3d91cdf3e89131ecb3a0252d50f24eb752aefd9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1781, + "startColumn": 1, + "charOffset": 81659, + "charLength": 54, + "snippet": { + "text": "@dp.message_handler(text=\"⬅️\", state=MenuStates.tasks)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1779, + "startColumn": 1, + "charOffset": 81579, + "charLength": 226, + "snippet": { + "text": " await bot.delete_message(chat_id=chat_id, message_id=message.message_id)\r\n\r\n@dp.message_handler(text=\"⬅️\", state=MenuStates.tasks)\r\nasync def left(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a0bdaf200534458b334bbacccfcb266f6515fc7137878c4718ad7f190ed4f6a6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 797, + "startColumn": 1, + "charOffset": 36036, + "charLength": 73, + "snippet": { + "text": "@dp.message_handler(text=\"Удалить промокод\", state=AdminPanel.promo_menu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 795, + "startColumn": 1, + "charOffset": 35984, + "charLength": 237, + "snippet": { + "text": " user.user_state = str(AdminPanel.promo_menu)\r\n\r\n@dp.message_handler(text=\"Удалить промокод\", state=AdminPanel.promo_menu)\r\nasync def delete_promo(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_delpromo.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a0d80605ab9c72ade82a24183d4ef415fe8c01b21333aec069c8f8136bacda92" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 91, + "startColumn": 1, + "charOffset": 3609, + "charLength": 15, + "snippet": { + "text": "#rules keyboard" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 89, + "startColumn": 1, + "charOffset": 3572, + "charLength": 164, + "snippet": { + "text": "admrkbm.row(admk_menu,admk_rules)\r\n\r\n#rules keyboard\r\nruleskbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nruleskbm_addmaker = KeyboardButton(text=\"Выдать права\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a209f81c4a0a0abf5de2b1774613d90b2e4b1563cf79b6c0e01d21ee385343a1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (176 > 120 characters)", + "markdown": "PEP 8: E501 line too long (176 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 369, + "startColumn": 113, + "charOffset": 15014, + "charLength": 10, + "snippet": { + "text": "AdminPanel" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 367, + "startColumn": 1, + "charOffset": 14860, + "charLength": 400, + "snippet": { + "text": "\r\n# Хендлер отмены действия через кнопку\r\n@dp.callback_query_handler(text=\"cancel\", state=[AdminPanel.change_user_balance,AdminPanel.change_user_fullname,AdminPanel.change_user_agestart,AdminPanel.get_info_about_user])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню админ-панели.\", reply_markup=admrkbm)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a268ce6665aaca1e374beab6c0ecd6b8170783f46c0f8eec7d16ba2cc1981238" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1527, + "startColumn": 1, + "charOffset": 69360, + "charLength": 121, + "snippet": { + "text": "#----------------------------------------------------------------------------------------------------------------------- " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1525, + "startColumn": 1, + "charOffset": 69211, + "charLength": 278, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система удаления профиля\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a32311ff9778f045082ac18990286e37638826fd9821662edbe9fd01d5d459f5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ','", + "markdown": "PEP 8: E203 whitespace before ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1765, + "startColumn": 66, + "charOffset": 80923, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1763, + "startColumn": 1, + "charOffset": 80789, + "charLength": 283, + "snippet": { + "text": " ikbmtasks.row(ibleft, ibgo, ibright)\r\n ikbmtasks.row(ibback)\r\n message_id_data = await bot.send_photo(chat_id, task['photo'] , text, reply_markup= ikbmtasks)\r\n message_id_data = message_id_data['message_id']\r\n await state.update_data(message_id_data=message_id_data)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a3637ba3d9102a2edf11b25b5bf10ff5ae076e8a85ca0f59171eea3fcf8f1ea8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (160 > 120 characters)", + "markdown": "PEP 8: E501 line too long (160 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1629, + "startColumn": 120, + "charOffset": 74901, + "charLength": 12, + "snippet": { + "text": "reply_markup" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1627, + "startColumn": 1, + "charOffset": 74669, + "charLength": 307, + "snippet": { + "text": "\r\n await bot.send_message(chat_id, \"Нажмите сюда чтобы вернуться\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(chat_id, \"Распишите здесь наиподробнейшим образом какой у вас возник вопрос или пожелание!\",reply_markup=cancel_button_for_user_help)\r\n\r\n user = users.get(chat_id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a37aede4d779b05d6aaffe634b8bd5156470a53b9289bcd9902598436791d0a2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 165, + "startColumn": 1, + "charOffset": 7047, + "charLength": 36, + "snippet": { + "text": "#remove balance button in admin menu" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 163, + "startColumn": 1, + "charOffset": 6993, + "charLength": 319, + "snippet": { + "text": "cancel_button_for_user_promocode.add(cancel_promo)\r\n\r\n#remove balance button in admin menu\r\nupdatebalanceusers = ReplyKeyboardMarkup(resize_keyboard=True)\r\nupdatebalanceconfirmbutton= KeyboardButton(text=\"❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a38f707391fd2a95fcabd0f9bb37c836618299350adf5cda997085f39e5ddffd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 837, + "startColumn": 1, + "charOffset": 37804, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 835, + "startColumn": 1, + "charOffset": 37666, + "charLength": 263, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Система прав\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a404e2e6259e93f7911b413eb3dcccb6952b4a82d73fc0b328d232a06053b400" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (309 > 120 characters)", + "markdown": "PEP 8: E501 line too long (309 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 41, + "startColumn": 28, + "charOffset": 1897, + "charLength": 282, + "snippet": { + "text": "\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 39, + "startColumn": 1, + "charOffset": 1817, + "charLength": 698, + "snippet": { + "text": " else:\n if user[\"gender\"]:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"\n else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a43bc0e4b7d2c9e0ebb00a691acf908de3be14a9d8b2450dd5b22f7bde87eed2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1776, + "startColumn": 38, + "charOffset": 81441, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1774, + "startColumn": 1, + "charOffset": 81295, + "charLength": 283, + "snippet": { + "text": " if counter>len(supabase.table('TaskCollection').select('name' ).execute().data)-1:\r\n counter = 0\r\n await state.update_data(counter = counter)\r\n await handle_tasks(message, state)\r\n await bot.delete_message(chat_id=chat_id, message_id=data.get('message_id_data'))\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a46d70ceec81c89c63d13da7dbb19d574b1569801d9dbc6360649500535aec4b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1586, + "startColumn": 1, + "charOffset": 72475, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1584, + "startColumn": 1, + "charOffset": 72421, + "charLength": 325, + "snippet": { + "text": " user.user_state = str(MenuStates.calendar)\r\n \r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система тикетов для юзера\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a4e43fcab88af71a16c39500ed9925ae2452c23bb762b71d29a9ce8121c3b0a8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 411, + "startColumn": 83, + "charOffset": 17348, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 409, + "startColumn": 1, + "charOffset": 17106, + "charLength": 342, + "snippet": { + "text": " select = message.text\r\n if select == '❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗':\r\n supabase.table('UsersData_duplicate').update({'balance': 0}).neq('balance',0).execute()\r\n await AdminPanel.admin_menu.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a506d68ecbc617c88e072703b444f5e6dc7a5336c2c9d37e18e323536ee7afc4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1590, + "startColumn": 1, + "charOffset": 72749, + "charLength": 42, + "snippet": { + "text": "@dp.message_handler(state=MenuStates.help)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1588, + "startColumn": 1, + "charOffset": 72625, + "charLength": 265, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(state=MenuStates.help)\r\nasync def handle_help(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a5d4bfbe16fdf3a37f3f91256bcd6143f7055d0aab94250cb994fc20c7ce72dc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 47, + "charOffset": 46, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 173, + "snippet": { + "text": "from aiogram.types import InlineKeyboardMarkup,InlineKeyboardButton, ReplyKeyboardMarkup, KeyboardButton\r\nfrom aiogram.types.web_app_info import WebAppInfo\r\n#gender buttons\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a6536e61bd33ff1fd7ae448321919508e4d2d555470940abfcb75cd51e69b5be" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 178, + "startColumn": 69, + "charOffset": 7946, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 176, + "startColumn": 1, + "charOffset": 7799, + "charLength": 362, + "snippet": { + "text": "ikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r\nibadminrating = InlineKeyboardButton(text=\"📊Админ Рейтинг\",web_app = WebAppInfo(url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vR__0ahX-O5SK3sS7OditV88sjG64duAF6mAW702CT3uM3Yj6z5mwsnxv-lL2vF9-H3YjlD0rtmg84N/pubhtml?gid=0&single=true'))\r\nikbmadminrating.add(ibadminrating)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a783c95e1a02214578dc8b6255223d8daabc293a79b0fb519a4d8d2783b809e0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 835, + "startColumn": 1, + "charOffset": 37666, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 833, + "startColumn": 1, + "charOffset": 37662, + "charLength": 263, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система прав\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a99ee72eb9f08e96ffab7ebebba6c2633bed567b77fcf61143a47e8dfadf87f7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (128 > 120 characters)", + "markdown": "PEP 8: E501 line too long (128 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1043, + "startColumn": 107, + "charOffset": 46457, + "charLength": 19, + "snippet": { + "text": "ReplyKeyboardRemove" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1041, + "startColumn": 1, + "charOffset": 46276, + "charLength": 267, + "snippet": { + "text": " tasks_name.append(name_table['name'])\r\n if name in tasks_name:\r\n await bot.send_message(chat_id,\"Введенное имя уже существует, введите другое\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.AdminPanel.taskmenu.set()\r\n else:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a9a29f9231f7a8969a9f7bc5a7b5de7c841f655c05d8f660f122dbd274659d5a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 889, + "startColumn": 3, + "charOffset": 40009, + "charLength": 9, + "snippet": { + "text": "user_data" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 887, + "startColumn": 1, + "charOffset": 39981, + "charLength": 143, + "snippet": { + "text": " tgusr = message.text\r\n\r\n user_data = supabase.table('UsersData').select('chat_id').eq('tgusr', tgusr).execute()\r\n\r\n if not user_data.data:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a9ee5daa41ca736ae0cda1f5c6d487c92c08f8c35d2271f09bd0b1dae558bdce" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 56, + "startColumn": 120, + "charOffset": 3684, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 54, + "startColumn": 1, + "charOffset": 3504, + "charLength": 356, + "snippet": { + "text": " else:\n insert_image = f'=IMAGE(\"{link}\")'\n google_update_list.append([\"=СТРОКА()-1\", insert_image, user['full_name'], user['balance'], user['chat_id'],f'=ГИПЕРССЫЛКА(\"t.me/{user[\"tgusr\"][1:]}\";\"{user[\"tgusr\"]}\")'])\n worksheet.insert_rows(google_update_list, value_input_option=\"USER_ENTERED\")\n worksheet.sort((4, 'des'))" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "aa0896a55b56f8b91109ed3fa36ab94d68c7270915682a707164472e167b354b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1294, + "startColumn": 54, + "charOffset": 58438, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1292, + "startColumn": 1, + "charOffset": 58338, + "charLength": 310, + "snippet": { + "text": " await ProlfileStates.edit_profile.set()\r\n\r\n@dp.callback_query_handler(text='back_to_menu', state = MenuStates.promocodestart)\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню промокодов.\", reply_markup=promo_kb)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "aacdd8848d8c1b1fef602cadf32dc600f13f08a45b559bcf9ad55429283826df" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E303 too many blank lines (3)", + "markdown": "PEP 8: E303 too many blank lines (3)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 7, + "startColumn": 1, + "charOffset": 94, + "charLength": 13, + "snippet": { + "text": "load_dotenv()" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 5, + "startColumn": 1, + "charOffset": 90, + "charLength": 72, + "snippet": { + "text": "\r\n\r\nload_dotenv()\r\n\r\n# Инициализация подключения к базе данных Supabase\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ab3f0ec00fb6f9b4c67eafcdb76603f0f636f23aa3fc1d284a011d1406e140a9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1109, + "startColumn": 53, + "charOffset": 49677, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1107, + "startColumn": 1, + "charOffset": 49536, + "charLength": 348, + "snippet": { + "text": " data = await state.get_data()\r\n name = data.get(\"name\") \r\n numberPoints.update({new_json_data[\"questionId\"]:new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints = numberPoints)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "abd97619ace14b600e13067590d8d3bf9dcd73e47d88b87b3078d8309795adbd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E127 continuation line over-indented for visual indent", + "markdown": "PEP 8: E127 continuation line over-indented for visual indent" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1578, + "startColumn": 26, + "charOffset": 72096, + "charLength": 2, + "snippet": { + "text": "f\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1576, + "startColumn": 1, + "charOffset": 72014, + "charLength": 208, + "snippet": { + "text": " print(date)\r\n events_message += f' \\n' \\\r\n f\"[{name}]({url}) \\n\" \\\r\n f\"⏱{date} \\n\" \\\r\n f'------------------------------'\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ad63fb7303f71fde8958f4706927950226b6b166fa12bc40c8a69ccea22e6d85" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1350, + "startColumn": 1, + "charOffset": 61386, + "charLength": 58, + "snippet": { + "text": "@dp.message_handler(state=ProlfileStates.edit_profile_age)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1348, + "startColumn": 1, + "charOffset": 61330, + "charLength": 241, + "snippet": { + "text": " await ProlfileStates.edit_profile_name.set()\r\n\r\n@dp.message_handler(state=ProlfileStates.edit_profile_age)\r\nasync def edit_age_profile(message: types.Message, state: FSMContext):\r\n new_age = message.text # получаем новый возраст\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "adb7b9b8245bac22f0513e69ab59ee3ad1508908b5f91d714ed7d2380f042ff0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (162 > 120 characters)", + "markdown": "PEP 8: E501 line too long (162 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 167, + "startColumn": 49, + "charOffset": 7197, + "charLength": 113, + "snippet": { + "text": "\"❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 165, + "startColumn": 1, + "charOffset": 7047, + "charLength": 386, + "snippet": { + "text": "#remove balance button in admin menu\r\nupdatebalanceusers = ReplyKeyboardMarkup(resize_keyboard=True)\r\nupdatebalanceconfirmbutton= KeyboardButton(text=\"❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗\")\r\nbackbuttontoadminmemubutton = KeyboardButton(text=\"⬅️Назад в меню\")\r\nupdatebalanceusers.row(updatebalanceconfirmbutton)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "af1c565477202a6752cf1f73ff74fee69b8d6e9d92475c87310696861c527195" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 374, + "startColumn": 1, + "charOffset": 15302, + "charLength": 50, + "snippet": { + "text": "@dp.message_handler(commands=['admin'], state='*')" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 372, + "startColumn": 1, + "charOffset": 15261, + "charLength": 212, + "snippet": { + "text": " await AdminPanel.admin_menu.set()\r\n\r\n@dp.message_handler(commands=['admin'], state='*')\r\nasync def admin_command(message: types.Message, state: FSMContext):\r\n # Проверка, что пользователь в списке админов\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "af9d5dc8f7e3a358ff68c2881ec8ecc7535c335bacc508bee2c876c2e2d1b470" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1063, + "startColumn": 38, + "charOffset": 47398, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1061, + "startColumn": 1, + "charOffset": 47330, + "charLength": 243, + "snippet": { + "text": " photo = message\r\n try:\r\n await state.update_data(photo = photo.photo[2].file_id)\r\n await bot.send_message(chat_id,\"Введите количество вопросов в коллекции:\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b02f8b2f310f4c22c2bde6da1c2316fb33fb321ace6a787eb791fcd5e94db660" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 11, + "startColumn": 9, + "charOffset": 445, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 9, + "startColumn": 1, + "charOffset": 371, + "charLength": 211, + "snippet": { + "text": "#menu buttons\r\nrkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nkprofile= KeyboardButton(text=\"👤Профиль\")\r\nkliderboard= KeyboardButton(text=\"📊Рейтинг\")\r\nkschedule= KeyboardButton(text=\"📆Календарь событий\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b0398984e9a52b3336705334a3f348eff03b9aa6c41403a86a55c7018b268df9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1561, + "startColumn": 1, + "charOffset": 71339, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1559, + "startColumn": 1, + "charOffset": 71183, + "charLength": 285, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система отображения мероприятий\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n \r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b04de1b3b18fb98ce7daa9e81c5d79f98f853871c8fd9476c13fb3d13c73d28c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1112, + "startColumn": 43, + "charOffset": 49927, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1110, + "startColumn": 1, + "charOffset": 49740, + "charLength": 291, + "snippet": { + "text": " rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints = numberPoints)\r\n await state.update_data(rightAnswers = rightAnswers)\r\n querylist.append(new_json_data)\r\n await state.update_data(querylist = querylist)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b2a6f4a8cb9b7a5ed70b1fcb3e46646186eea8747fbdf0bfdde0b3f6d7757dab" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 114, + "startColumn": 60, + "charOffset": 4618, + "charLength": 7, + "snippet": { + "text": "web_app" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 112, + "startColumn": 1, + "charOffset": 4445, + "charLength": 352, + "snippet": { + "text": "userhelp_back = KeyboardButton(text=\"⬅️Назад в меню\")\r\nuserhelp_ticket = KeyboardButton(text=\"📨Создать заявку\")\r\nguide = KeyboardButton(text=\"?📑Руководство пользователя\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/User%20guide/README.md'))\r\nuserhelp.row(userhelp_ticket)\r\nuserhelp.row(guide)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b2be33136d0fa383a3da1ae7352a14c174efaf3438565c2946bd98db0c1db36e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1307, + "startColumn": 1, + "charOffset": 59144, + "charLength": 121, + "snippet": { + "text": "#----------------------------------------------------------------------------------------------------------------------- " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1305, + "startColumn": 1, + "charOffset": 58989, + "charLength": 281, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система редактирования профиля\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b2f2788aa1409064c9b7dc7648e382cf270b522bf720689f374dc61a030aff4d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 64, + "startColumn": 60, + "charOffset": 4134, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 62, + "startColumn": 1, + "charOffset": 3979, + "charLength": 283, + "snippet": { + "text": " sh: Spreadsheet = gc.open_by_url(SPREADSHEET_URL)\n worksheet = sh.worksheet(\"📊Рейтинг\")\n response = supabase.table('UsersData').select('chat_id','full_name', 'balance', 'gender' ).order('balance', desc = True).execute()\n users_data = response.data\n worksheet.clear()" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b34236e6a417b30dd7259acb8d1d19690ce14a1f00f7edc47f96e84196149c2c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 5, + "startColumn": 33, + "charOffset": 248, + "charLength": 14, + "snippet": { + "text": "\"🙋‍♂️Мужчина\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 3, + "startColumn": 1, + "charOffset": 157, + "charLength": 211, + "snippet": { + "text": "#gender buttons\r\nikbg = InlineKeyboardMarkup(row_width=2)\r\nibm = InlineKeyboardButton(text=\"🙋‍♂️Мужчина\",callback_data='1')\r\nibf = InlineKeyboardButton(text=\"🙋‍♀️Женщина\",callback_data='0')\r\nikbg.add(ibm,ibf)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b39613ccbd50045ff014316bee7271887d2594bffa975b1a624ebfcaa6c3b29c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1587, + "startColumn": 1, + "charOffset": 72597, + "charLength": 26, + "snippet": { + "text": "#Система тикетов для юзера" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1585, + "startColumn": 1, + "charOffset": 72469, + "charLength": 279, + "snippet": { + "text": " \r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система тикетов для юзера\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b47f28aa8aaa19114b2eab9bf100bf48eac54aeb1b18738a2eade08cb722a0ec" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 684, + "startColumn": 1, + "charOffset": 31016, + "charLength": 51, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.promo_qrstart)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 682, + "startColumn": 1, + "charOffset": 30893, + "charLength": 289, + "snippet": { + "text": " await message.reply(\"Введите промокод, который хотите помстить в QR-код\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.promo_qrstart)\r\nasync def admin_promocodes_add_qr_set(message: types.Message, state: FSMContext):\r\n promo_code = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b614e422713b1c57f50eb44f2cfbc5f1117de0c1cd58e32d57cc5b791a4f72a0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 848, + "startColumn": 48, + "charOffset": 38421, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 846, + "startColumn": 1, + "charOffset": 38213, + "charLength": 336, + "snippet": { + "text": " await message.reply(\"Вы попали в раздел для выдачи права создания заданий пользователям. Нажмите на кнопку и следуйте указаниям.\", reply_markup=ruleskbm)\r\n\r\n@dp.message_handler(text=\"Выдать права\",state = AdminPanel.rules)\r\nasync def give_rules(message: types.Message, state: FSMContext):\r\n await AdminPanel.rules_addmaker.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b6293c91c906ba2f24944b24022aec22fcc8563988d82a561b41dcc6635cfbad" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1112, + "startColumn": 41, + "charOffset": 49925, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1110, + "startColumn": 1, + "charOffset": 49740, + "charLength": 291, + "snippet": { + "text": " rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints = numberPoints)\r\n await state.update_data(rightAnswers = rightAnswers)\r\n querylist.append(new_json_data)\r\n await state.update_data(querylist = querylist)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b67ffdce617c68cc9ba791129dee2279a401970ad4677ac53ca0773238c059e2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1210, + "startColumn": 1, + "charOffset": 54397, + "charLength": 71, + "snippet": { + "text": "@dp.callback_query_handler(state=RegistrationStates.waiting_for_gender)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1208, + "startColumn": 1, + "charOffset": 54379, + "charLength": 209, + "snippet": { + "text": " return\r\n\r\n@dp.callback_query_handler(state=RegistrationStates.waiting_for_gender)\r\nasync def handle_gender_callback(query: types.CallbackQuery, state: FSMContext):\r\n chat_id = query.message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b6a5f57c96bbbede971fb1529b081286e811642f3e159a6e52f024967e1ee5ec" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 921, + "startColumn": 3, + "charOffset": 40944, + "charLength": 10, + "snippet": { + "text": "rules_text" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 919, + "startColumn": 1, + "charOffset": 40900, + "charLength": 138, + "snippet": { + "text": " event_makers = roles['event_makers']\r\n\r\n rules_text = \"📝 Пользователи с правами ивент-мейкера:\\n\\n\"\r\n\r\n for chat_id in event_makers:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b6c8942107ef1ea1550f93b32358ccfdd3775131cf4f9854c2faf583902bda30" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 75, + "startColumn": 18, + "charOffset": 2927, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 73, + "startColumn": 1, + "charOffset": 2894, + "charLength": 74, + "snippet": { + "text": "\r\n \r\n def list(self,**kwargs) -> List[User]: \r\n ...\r\n" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b6eb65bad97ff43fa5d26b49b1c540fc2d99757536fe60c56dc00687cd6b12c2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (156 > 120 characters)", + "markdown": "PEP 8: E501 line too long (156 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 17, + "startColumn": 111, + "charOffset": 543, + "charLength": 12, + "snippet": { + "text": "'user_state'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 15, + "startColumn": 1, + "charOffset": 384, + "charLength": 273, + "snippet": { + "text": " try:\r\n chat_id:int = int(id)\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','tgusr','user_state').eq('chat_id', chat_id).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b6f0ecb120405d260fdc378cffc27e62af0730d7ecdc8e386c1473b196d5b915" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ':'", + "markdown": "PEP 8: E203 whitespace before ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 10, + "startColumn": 20, + "charOffset": 182, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 8, + "startColumn": 1, + "charOffset": 150, + "charLength": 61, + "snippet": { + "text": " ...\r\n \r\n def set(self,user : User) -> None:\r\n ...\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b78750fb05c9db541a0ef2199df10859fa1173e8852969234ede4cf1d45dd011" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 29, + "startColumn": 120, + "charOffset": 1259, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 27, + "startColumn": 1, + "charOffset": 1031, + "charLength": 302, + "snippet": { + "text": " sh: Spreadsheet = gc.open_by_url(ADMIN_SPREADSHEET_URL)\n worksheet = sh.worksheet(\"📊 Админ Рейтинг\")\n response = supabase.table('UsersData').select('full_name', 'chat_id', 'tgusr', 'balance', 'gender').order('balance',desc=True).execute()\n users_data = response.data\n worksheet.clear()" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b7d452700bd634f538cffbc670f048a3c31d63e32c235714c63add48ac58544d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1559, + "startColumn": 1, + "charOffset": 71183, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1557, + "startColumn": 1, + "charOffset": 71179, + "charLength": 281, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система отображения мероприятий\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b8063692ef4ad0186841a57896b3da3e8f3dfdd67a4fa04db28690cb6424959d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1905, + "startColumn": 1, + "charOffset": 86439, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1903, + "startColumn": 1, + "charOffset": 86286, + "charLength": 304, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система для Telegram Web App\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\nif __name__ == '__main__':\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b9eb0753a8f0e86c819d08d30a621d245a700f1f99a1c7fdaf5a75c55a3a199c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1877, + "startColumn": 1, + "charOffset": 85004, + "charLength": 121, + "snippet": { + "text": "#------------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1875, + "startColumn": 1, + "charOffset": 84826, + "charLength": 331, + "snippet": { + "text": "#------------------------------------------------------------------------------------------------------------------------\r\n#Система отлова людей без state и обработчик стикеров\r\n#------------------------------------------------------------------------------------------------------------------------\r\n\r\n# Ответ на отправку стикера\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ba29f8c334ca1989fbdf6df2a0a01408dfeb2a531927b730f26e8ee664d4ce19" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 619, + "startColumn": 1, + "charOffset": 27788, + "charLength": 53, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.change_user_age)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 617, + "startColumn": 1, + "charOffset": 27648, + "charLength": 329, + "snippet": { + "text": " await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_age)\r\nasync def admin_change_user_age_handler(message: types.Message, state: FSMContext):\r\n username = message.text # получаем username\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "bab312fb4f58a687160602cd4386715095a95f45834c842d8f3616ce6a020eb3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 304, + "startColumn": 21, + "charOffset": 11839, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 302, + "startColumn": 1, + "charOffset": 11768, + "charLength": 143, + "snippet": { + "text": " if querylist == None:\r\n querylist = []\r\n if numberPoints == None:\r\n numberPoints: dict = {}\r\n if rightAnswers == None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "bc7fff169f9f5bd09a762635ef6aac31f07460e0d96ebbfc4fd5ef2b5423979b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 394, + "startColumn": 1, + "charOffset": 16161, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 392, + "startColumn": 1, + "charOffset": 15997, + "charLength": 289, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Система обнуления баланса пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "bd0ca0c4dbde9b3bf48dc4fde37d90319f427a54fdbb9a67320932d31d07beea" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1111, + "startColumn": 43, + "charOffset": 49869, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1109, + "startColumn": 1, + "charOffset": 49625, + "charLength": 354, + "snippet": { + "text": " numberPoints.update({new_json_data[\"questionId\"]:new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']})\r\n await state.update_data(numberPoints = numberPoints)\r\n await state.update_data(rightAnswers = rightAnswers)\r\n querylist.append(new_json_data)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "bd2ff038abd8c63ce1feb11cc3c2ca7787b9696fef4589191d95e15dc46d6aef" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 183, + "startColumn": 82, + "charOffset": 8309, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 181, + "startColumn": 1, + "charOffset": 8162, + "charLength": 274, + "snippet": { + "text": "#help buttons\r\nhelpinlinereg = InlineKeyboardMarkup(row_width=1)\r\nhelpinlinenaming = InlineKeyboardButton(text=\"Помощь\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/README.md'))\r\nhelpinlinereg.add(helpinlinenaming)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "bdbeb7cf94f9adb0864db00e9ac4030743c6eb242114d871ed26cde87470c5c4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 175, + "startColumn": 58, + "charOffset": 7613, + "charLength": 7, + "snippet": { + "text": "web_app" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 173, + "startColumn": 1, + "charOffset": 7491, + "charLength": 386, + "snippet": { + "text": "#rating buttons\r\nikbmrating = InlineKeyboardMarkup(row_width=1)\r\nibrating = InlineKeyboardButton(text=\"📊Полный рейтинг\", web_app = WebAppInfo(url ='https://docs.google.com/spreadsheets/d/e/2PACX-1vQFzN5HRvQhS5j4kDcv9wWH3uucCqp1AFmu2ErZYikmmJSshj1f16v7ry013vde0y6OYVWeSsVtgaKT/pubhtml?gid=0&single=true') )\r\nikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "be1561453e9171d53954229a1396fcbc6bb03ef7a916d5f004095e63737a9d6c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1132, + "startColumn": 153, + "charOffset": 50961, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1130, + "startColumn": 1, + "charOffset": 50727, + "charLength": 360, + "snippet": { + "text": " description = data.get(\"description\")\r\n photo = data.get(\"photo\")\r\n supabase.table('TaskCollection').insert({'name': name, 'description': description, 'photo': photo, 'counter': counter, 'url': url,'numberPoints':numberPoints, 'rightAnswers':rightAnswers}).execute()\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "be1d901d52f0fdb5c6c5a42c5af141333038b31e25710a5b41096ef11d65cec5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 13, + "startColumn": 3, + "charOffset": 214, + "charLength": 3, + "snippet": { + "text": "def" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 11, + "startColumn": 1, + "charOffset": 201, + "charLength": 59, + "snippet": { + "text": " ...\r\n\r\n def delete(self,id : str) -> None:\r\n ...\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "be329b5596f8675421f52496616b7bfd97d53e30d82736c5cfa5368c89356d2f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1394, + "startColumn": 3, + "charOffset": 63516, + "charLength": 2, + "snippet": { + "text": "if" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1392, + "startColumn": 1, + "charOffset": 63472, + "charLength": 98, + "snippet": { + "text": " qr_code = pyzbar.decode(photo_image)\r\n\r\n if qr_code:\r\n qr_code = qr_code[0].data.decode()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "bf21967e7b9c9f7f141e6f74c1fc18dc0b9f5d6edaf0e751d185f7a260aefe20" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1465, + "startColumn": 1, + "charOffset": 66335, + "charLength": 121, + "snippet": { + "text": "#----------------------------------------------------------------------------------------------------------------------- " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1463, + "startColumn": 1, + "charOffset": 66179, + "charLength": 282, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система рейтинга(Google sheets)\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c15e14cb25a7a392450f0603b1e327949a43ccc3738472e8896ebf3259ee3268" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 365, + "startColumn": 1, + "charOffset": 14736, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 363, + "startColumn": 1, + "charOffset": 14593, + "charLength": 268, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Event maker panel\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c215d51103611b0d998a18e58fb0a4a02a384817f1a7eedb117a5f8db02ec2ee" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (121 > 120 characters)", + "markdown": "PEP 8: E501 line too long (121 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 629, + "startColumn": 121, + "charOffset": 28465, + "charLength": 1, + "snippet": { + "text": ")" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 627, + "startColumn": 1, + "charOffset": 28254, + "charLength": 269, + "snippet": { + "text": " admin.user_state = str(AdminPanel.change_user_agestart)\r\n users.set(admin)\r\n await message.reply(\"Введите новый возраст пользователя\", reply_markup=InlineKeyboardMarkup().add(cancel_button))\r\n \r\n # Проверяем, есть ли такой пользователь\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c2950f9490233cdeedd4bcc9eacd642309c9e20b85526a6a5b94412cabf49cde" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 10, + "startColumn": 22, + "charOffset": 229, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 8, + "startColumn": 1, + "charOffset": 155, + "charLength": 189, + "snippet": { + "text": "class SupabaseUserRepository(UserRepository):\r\n \r\n def __init__(self,client:Client, table_name:str = 'UsersData'):\r\n self.client = client\r\n self.table_name = table_name\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c2a43f5e2c2e6ad0eb820c0f251a04b44bd0a8d575829c1bcef3508e83ef4cfe" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 175, + "startColumn": 79, + "charOffset": 7634, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 173, + "startColumn": 1, + "charOffset": 7491, + "charLength": 386, + "snippet": { + "text": "#rating buttons\r\nikbmrating = InlineKeyboardMarkup(row_width=1)\r\nibrating = InlineKeyboardButton(text=\"📊Полный рейтинг\", web_app = WebAppInfo(url ='https://docs.google.com/spreadsheets/d/e/2PACX-1vQFzN5HRvQhS5j4kDcv9wWH3uucCqp1AFmu2ErZYikmmJSshj1f16v7ry013vde0y6OYVWeSsVtgaKT/pubhtml?gid=0&single=true') )\r\nikbmrating.add(ibrating)\r\nikbmadminrating = InlineKeyboardMarkup(row_width=1)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c3a010bb9e1fb0f250318715b36f97a893d65e03d8926e8c31dcf615798efd19" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (309 > 120 characters)", + "markdown": "PEP 8: E501 line too long (309 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 83, + "startColumn": 24, + "charOffset": 5817, + "charLength": 286, + "snippet": { + "text": "\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 81, + "startColumn": 1, + "charOffset": 5470, + "charLength": 666, + "snippet": { + "text": " link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"\n else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"\n\n if user['balance'] < 1:" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c3a2eacc8b7ab04eb77d3090d58cbff6cc1baab1f086d33f5605f90d09aef390" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 848, + "startColumn": 46, + "charOffset": 38419, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 846, + "startColumn": 1, + "charOffset": 38213, + "charLength": 336, + "snippet": { + "text": " await message.reply(\"Вы попали в раздел для выдачи права создания заданий пользователям. Нажмите на кнопку и следуйте указаниям.\", reply_markup=ruleskbm)\r\n\r\n@dp.message_handler(text=\"Выдать права\",state = AdminPanel.rules)\r\nasync def give_rules(message: types.Message, state: FSMContext):\r\n await AdminPanel.rules_addmaker.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c423a0d36dca61ddaaea95e7550bf35568160bfae10c5dbab5976d51665a943a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 967, + "startColumn": 1, + "charOffset": 42863, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 965, + "startColumn": 1, + "charOffset": 42840, + "charLength": 285, + "snippet": { + "text": " users.set(user)\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система заданий\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c58da02042953ced9c42ab94c9fa696ba441ecba8d9a1a7df4c70bf7e2b84b4b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 398, + "startColumn": 68, + "charOffset": 16486, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 396, + "startColumn": 1, + "charOffset": 16285, + "charLength": 311, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"❗Обнулить баланс всех пользователей❗\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def update_users_balance_confirm(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance_confirm.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c6bcaeaddb7dea33dd4a6624b85293dc5be028a347f07bae83ed6a44f5de9253" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 99, + "startColumn": 1, + "charOffset": 7284, + "charLength": 30, + "snippet": { + "text": "def rating_update_over_time():" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 97, + "startColumn": 1, + "charOffset": 7257, + "charLength": 126, + "snippet": { + "text": " admin_rating_udpate()\n\ndef rating_update_over_time():\n rating_update()\n schedule.every(10).minutes.do(rating_update)" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c6d542b71deaa14f9306d455e53970c2b91c613bd6ae3657cfdc434a60e5e5b0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 899, + "startColumn": 3, + "charOffset": 40340, + "charLength": 4, + "snippet": { + "text": "with" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 897, + "startColumn": 1, + "charOffset": 40294, + "charLength": 109, + "snippet": { + "text": " chat_id = user_data.data[0]['chat_id']\r\n\r\n with open('roles.json', 'r') as f:\r\n roles = json.load(f)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c7a30e736f8417e9cf00d2baadc88cd24d81fbe2f12cce5cd875155d1e227fe0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 72, + "startColumn": 75, + "charOffset": 2801, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 70, + "startColumn": 1, + "charOffset": 2670, + "charLength": 243, + "snippet": { + "text": "def get_user_info_by_id(chat_id:int ) -> str:\r\n try:\r\n response = supabase.table('UsersData').select('full_name','gender','age','balance','tgusr').eq('chat_id', chat_id).execute()\r\n return response\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c828afd6edfb98c6d49dea3aeca9f57bb3dfcfeb26d1919186eb0941aee058d9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1063, + "startColumn": 40, + "charOffset": 47400, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1061, + "startColumn": 1, + "charOffset": 47330, + "charLength": 243, + "snippet": { + "text": " photo = message\r\n try:\r\n await state.update_data(photo = photo.photo[2].file_id)\r\n await bot.send_message(chat_id,\"Введите количество вопросов в коллекции:\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c91b34071bce79e857d2ab4b1c176603a0324ab57017935e70d3757f7ddd7d4a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 508, + "startColumn": 1, + "charOffset": 22147, + "charLength": 62, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.change_user_balancestart)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 506, + "startColumn": 1, + "charOffset": 22123, + "charLength": 226, + "snippet": { + "text": " users.set(admin)\r\n\r\n@dp.message_handler(state=AdminPanel.change_user_balancestart)\r\nasync def admin_change_user_balance_handler(message: types.Message, state: FSMContext):\r\n username = message.text # получаем username\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c99d16ac7901fb14ce6935d674f4c59ae9e9a141ad2db3ca20e5ea898d13e7fc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 72, + "startColumn": 66, + "charOffset": 2792, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 70, + "startColumn": 1, + "charOffset": 2670, + "charLength": 243, + "snippet": { + "text": "def get_user_info_by_id(chat_id:int ) -> str:\r\n try:\r\n response = supabase.table('UsersData').select('full_name','gender','age','balance','tgusr').eq('chat_id', chat_id).execute()\r\n return response\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ca00a037600faced8f5c607b4ea61b99a77aa38d8e25797f5eadad2d7244d6d6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1754, + "startColumn": 80, + "charOffset": 80352, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1752, + "startColumn": 1, + "charOffset": 80190, + "charLength": 302, + "snippet": { + "text": " counter = data.get('counter')\r\n await state.update_data(counter = counter)\r\n task = supabase.table('TaskCollection').select('name','description','photo','url').execute().data[int(counter)]\r\n text = f\"{task['name']}\\n{task['description']}\"\r\n await state.update_data(name = task['name'])\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cb18183f91e690332e201e1fb2060cf7366a0e701ee3c2fe30e1bb09c8675cd4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1058, + "startColumn": 68, + "charOffset": 47185, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1056, + "startColumn": 1, + "charOffset": 47069, + "charLength": 260, + "snippet": { + "text": " await AdminPanel.taskmenu_photowait.set()\r\n\r\n@dp.message_handler(content_types= types.ContentType.PHOTO, state = AdminPanel.taskmenu_photowait)\r\nasync def admin_taskmenu_photowait(message: types.Message , state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cc41f2d07c86473c40850e0dbaf4253838bf2ae91929674fe95d108a21c1928d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (150 > 120 characters)", + "markdown": "PEP 8: E501 line too long (150 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1609, + "startColumn": 71, + "charOffset": 73821, + "charLength": 78, + "snippet": { + "text": " телеграм!Укажите его в своём профиле и тогда администрация сможет вам помочь." + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1607, + "startColumn": 1, + "charOffset": 73622, + "charLength": 431, + "snippet": { + "text": " url = 'https://ru.the-hitech.net/7264375-how-to-create-a-username-on-telegram'\r\n await bot.send_message(chat_id,\r\n f\"У вас нет \" + f\"[{nome}]({url})\" + f\" телеграм!Укажите его в своём профиле и тогда администрация сможет вам помочь.\",\r\n reply_markup=rkbm, disable_web_page_preview=True,\r\n parse_mode=types.ParseMode.MARKDOWN)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cc79bb02f43dcad57cabee628c3f0bbcd09a5fa83a082459539afa0e0e05ca46" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (157 > 120 characters)", + "markdown": "PEP 8: E501 line too long (157 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1338, + "startColumn": 115, + "charOffset": 60818, + "charLength": 12, + "snippet": { + "text": "new_fullname" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1336, + "startColumn": 1, + "charOffset": 60646, + "charLength": 290, + "snippet": { + "text": " if FIO[word][0].istitle():\r\n cnt += 1\r\n if new_fullname.replace(\" \", \"\").isalpha() and len(new_fullname) < 40 and len(new_fullname) >= 5 and detector(new_fullname) == False and cnt == len(FIO):\r\n user = users.get(chat_id)\r\n user.full_name = new_fullname\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ccf56e259c2c11f2db33c5b42a049d4c47b73318623a8f658267b5871fe679bf" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ','", + "markdown": "PEP 8: E203 whitespace before ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 701, + "startColumn": 96, + "charOffset": 31778, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 699, + "startColumn": 1, + "charOffset": 31660, + "charLength": 192, + "snippet": { + "text": " byte_io.seek(0)\r\n\r\n await message.reply_photo(byte_io, caption=\"Вот QR\\\\-код для промокода \" + code(promo_code) , reply_markup=admpromo, parse_mode=\"MarkdownV2\")\r\n\r\n byte_io.close()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cd59b06db0f9d54998a11c2f072a288a9b91149943359c3ea77bc8bdab5cc7ce" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 908, + "startColumn": 3, + "charOffset": 40566, + "charLength": 5, + "snippet": { + "text": "await" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 906, + "startColumn": 1, + "charOffset": 40537, + "charLength": 123, + "snippet": { + "text": " json.dump(roles, f)\r\n\r\n await message.reply(\"Права успешно удалены\", reply_markup=ruleskbm)\r\n\r\n await state.finish()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cdcf931653e55239760ad20d1f7a9d3fcaa8e1075f4ada9d057261e89ad5cc2c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 916, + "startColumn": 3, + "charOffset": 40836, + "charLength": 4, + "snippet": { + "text": "with" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 914, + "startColumn": 1, + "charOffset": 40766, + "charLength": 133, + "snippet": { + "text": "async def show_rules(message: types.Message, state: FSMContext):\r\n\r\n with open('roles.json', 'r') as f:\r\n roles = json.load(f)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cf2fca36ae001f62ccc61f8132744550f48fdc78404f315cb8d46b2ddcfe006d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E303 too many blank lines (4)", + "markdown": "PEP 8: E303 too many blank lines (4)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 54, + "startColumn": 1, + "charOffset": 1785, + "charLength": 22, + "snippet": { + "text": "# Validation BAD words" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 52, + "startColumn": 1, + "charOffset": 1781, + "charLength": 111, + "snippet": { + "text": "\r\n\r\n# Validation BAD words\r\n\r\nstandart_dirt = [1093, 1091, 1081, 124, 1073, 1083, 1103, 124, 1077, 1073, 124, \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cf8a1f2da13396b5a257bdb91d5594b037f981c00944c5b8b11566bf69a486ef" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (168 > 120 characters)", + "markdown": "PEP 8: E501 line too long (168 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 183, + "startColumn": 83, + "charOffset": 8310, + "charLength": 84, + "snippet": { + "text": "'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/README.md'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 181, + "startColumn": 1, + "charOffset": 8162, + "charLength": 274, + "snippet": { + "text": "#help buttons\r\nhelpinlinereg = InlineKeyboardMarkup(row_width=1)\r\nhelpinlinenaming = InlineKeyboardButton(text=\"Помощь\", web_app = WebAppInfo(url = 'https://github.com/Student-Labs-2023/BoilerPoint/blob/main/Documentation/README.md'))\r\nhelpinlinereg.add(helpinlinenaming)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cf91124fe0e5d397832f1f25a4ccd0d8ef581fc776831cd0e50a02acaaab34a7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 62, + "startColumn": 80, + "charOffset": 2453, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 60, + "startColumn": 1, + "charOffset": 2296, + "charLength": 218, + "snippet": { + "text": " def set(self,user : User) -> None:\r\n if self.get(user.chat_id): \r\n self.client.table(self.table_name).update(user.dict()).eq('chat_id',user.chat_id).execute()\r\n else:\r\n #insert\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cff540a920453d10387dd76e6296d3756eae49e78fd98f2809388f8499c4ecf9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E122 continuation line missing indentation or outdented", + "markdown": "PEP 8: E122 continuation line missing indentation or outdented" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 481, + "startColumn": 9, + "charOffset": 20691, + "charLength": 2, + "snippet": { + "text": "f\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 479, + "startColumn": 1, + "charOffset": 20540, + "charLength": 371, + "snippet": { + "text": " profile_message = f\"Профиль пользователя {username}:\\n\\n\" \\\r\n f\"{gender}{pseudo}, {age} лет\\n└Место в топе: {counter+1}\\n\\n\" \\\r\n f\"💰Баланс: {balance}🔘 поинтов\\n└Мероприятий посещено: ?\"\r\n await bot.send_photo(chat_id=chat_id, photo=image, caption=profile_message, reply_markup=admue)\r\n await AdminPanel.get_info_about_user_end.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cffb3f84999ea913dee5d9a3bf5c0c91f9b79a3733a26c196ced2269ab56a2fd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (141 > 120 characters)", + "markdown": "PEP 8: E501 line too long (141 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1084, + "startColumn": 116, + "charOffset": 48539, + "charLength": 12, + "snippet": { + "text": "reply_markup" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1082, + "startColumn": 1, + "charOffset": 48361, + "charLength": 272, + "snippet": { + "text": " else:\r\n await state.update_data(counter = counter)\r\n await bot.send_message(chat_id,\"Коллекция создана успешно! Перейдите пожалуйста, к составлению заданий!⬇️\",reply_markup=surveywebapp)\r\n await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d0657a69ef15d6f9c11746b4245b71248ff7be5f3b3fc91c84ba2c5702f8555e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E722 do not use bare 'except'", + "markdown": "PEP 8: E722 do not use bare 'except'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1651, + "startColumn": 5, + "charOffset": 75696, + "charLength": 6, + "snippet": { + "text": "except" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1649, + "startColumn": 1, + "charOffset": 75547, + "charLength": 306, + "snippet": { + "text": " await bot.send_message(chat_id, \"Заявка успешно отправлена! В ближайшее время с вами свяжется администратор.\", reply_markup=userhelp)\r\n\r\n except:\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, \"Извините, произошла ошибка при отправке заявки\", reply_markup=userhelp)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d178991cee3d33fc4b4a7807b5991ad5717f5d4eda8ffd54a59aa0fce02f9f17" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 905, + "startColumn": 3, + "charOffset": 40501, + "charLength": 4, + "snippet": { + "text": "with" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 903, + "startColumn": 1, + "charOffset": 40449, + "charLength": 114, + "snippet": { + "text": " roles['event_makers'].remove(str(chat_id))\r\n\r\n with open('roles.json', 'w') as f:\r\n json.dump(roles, f)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d1cd29f6687d755b88abad9511203049ed49f4dffa85d9f5cd9e7e677bf6dcc4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 22, + "startColumn": 1, + "charOffset": 813, + "charLength": 12, + "snippet": { + "text": "#promo_menuu" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 20, + "startColumn": 1, + "charOffset": 787, + "charLength": 200, + "snippet": { + "text": "rkbm.row(khelp,kpromo)\r\n\r\n#promo_menuu\r\npromo_kb = ReplyKeyboardMarkup(resize_keyboard=True)\r\npromo_kb_qrscanner = KeyboardButton(text=\"📲QR-код\", web_app=WebAppInfo(url=\"https://bpb-qr.pages.dev/\"))\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d45da06ac6981e33de86644d4c9a75d6309f32be6e7d6613c12b7b51d942887f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (121 > 120 characters)", + "markdown": "PEP 8: E501 line too long (121 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 690, + "startColumn": 121, + "charOffset": 31476, + "charLength": 1, + "snippet": { + "text": ")" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 688, + "startColumn": 1, + "charOffset": 31282, + "charLength": 269, + "snippet": { + "text": "\r\n if not promocode_data.data or promocode_data.data[0]['cost'] == 0:\r\n await message.reply(\"Такого промокода не существует или лимит его использования исчерпан\", reply_markup=admpromo)\r\n await state.finish()\r\n await AdminPanel.promo_menu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d4c8eebb7d9da892fbfbeb211fcda92168334f8117c0812f6e5744a7fbb4ff56" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1116, + "startColumn": 81, + "charOffset": 50133, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1114, + "startColumn": 1, + "charOffset": 49980, + "charLength": 268, + "snippet": { + "text": " await state.update_data(querylist = querylist)\r\n if counter > 1:\r\n await bot.send_message(chat_id, \"Пожалуйста, заполните следующий вопрос\",reply_markup=surveywebapp)\r\n await AdminPanel.taskmenu_collection_surveywebapp.set()\r\n counter -= 1\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d57b2c597405edd78080c7e4b01086f13a52254e28e9391fb911378a0e016e36" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 545, + "startColumn": 1, + "charOffset": 23919, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 543, + "startColumn": 1, + "charOffset": 23754, + "charLength": 290, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования ФИО пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d58babf4629d6e3e3702ca6faebfdb6d1c85665e47690f975feaf2618c90efdd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1043, + "startColumn": 39, + "charOffset": 46389, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1041, + "startColumn": 1, + "charOffset": 46276, + "charLength": 267, + "snippet": { + "text": " tasks_name.append(name_table['name'])\r\n if name in tasks_name:\r\n await bot.send_message(chat_id,\"Введенное имя уже существует, введите другое\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.AdminPanel.taskmenu.set()\r\n else:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d58e263b21ca1e3afdbe68d68eb25feb69b82215fa5e3c2ff7bd69d3f66ad623" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 38, + "startColumn": 102, + "charOffset": 1449, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 36, + "startColumn": 1, + "charOffset": 1292, + "charLength": 278, + "snippet": { + "text": " except ValueError:\r\n tgusr:str = id\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','chat_id','user_state').eq('tgusr', tgusr).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d5d98285bfbe0dfc1d1fb19e3e8f192b3ecdcd7162cecfcdc343a2f24a9a528a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 37, + "startColumn": 18, + "charOffset": 1337, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 35, + "startColumn": 1, + "charOffset": 1277, + "charLength": 263, + "snippet": { + "text": " )\r\n except ValueError:\r\n tgusr:str = id\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','chat_id','user_state').eq('tgusr', tgusr).execute()\r\n item = response.data[0]\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d65614ef439aece76a98bdf987d14688870b9b69fabc02a5287e44923105008e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 198, + "startColumn": 55, + "charOffset": 8957, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 196, + "startColumn": 1, + "charOffset": 8828, + "charLength": 367, + "snippet": { + "text": "#survey web-app\r\nsurveywebapp = ReplyKeyboardMarkup(resize_keyboard=True)\r\nsurvquestcreate = KeyboardButton(text=\"Создать вопрос\",web_app=WebAppInfo(url = 'https://survey-web-app.pages.dev/edit?json=%7B%22surveyData%22%3A%20%5B%7B%22questionId%22%3A%2069%2C%20%22question%22%3A%20%22%22%2C%20%22choices%22%3A%20%5B%5D%7D%5D%7D'))\r\nsurveywebapp.row(survquestcreate)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d75a933ea69096140fabad4af6053167afdac718a48bf63b5411849c0baff2d8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ':'", + "markdown": "PEP 8: E203 whitespace before ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 44, + "startColumn": 45, + "charOffset": 1637, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 42, + "startColumn": 1, + "charOffset": 1526, + "charLength": 227, + "snippet": { + "text": " print(f\"Error updating user fullname for {tgusr}: {e}\")\r\n\r\ndef update_user_age_by_tgusr(tgusr: str, age : int):\r\n try:\r\n response = supabase.table(table_name).update({'age': age}).eq('tgusr', tgusr).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d81b7c5c1ef2835e64303eb73137bbbac9e18a801303271c5995f9965556a68f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1388, + "startColumn": 3, + "charOffset": 63373, + "charLength": 11, + "snippet": { + "text": "photo_bytes" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1386, + "startColumn": 1, + "charOffset": 63293, + "charLength": 176, + "snippet": { + "text": "\r\n photo_bytes = await message.photo[-1].download(destination=io.BytesIO())\r\n photo_bytes = photo_bytes.getvalue()\r\n\r\n photo_image = PIL.Image.open(io.BytesIO(photo_bytes))\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d90fa2b9fbf60f73330431a7e3787b56c374b60bd572f6ee3eb5099e5f7dc036" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1893, + "startColumn": 1, + "charOffset": 85775, + "charLength": 29, + "snippet": { + "text": "#Система для Telegram Web App" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1891, + "startColumn": 1, + "charOffset": 85651, + "charLength": 278, + "snippet": { + "text": "\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система для Telegram Web App\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "da3f4ef95808ccf9b16e25454e3c59e1282138fd79df3fdbda73e0ade1cdc497" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 398, + "startColumn": 62, + "charOffset": 16480, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 396, + "startColumn": 1, + "charOffset": 16285, + "charLength": 311, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"❗Обнулить баланс всех пользователей❗\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def update_users_balance_confirm(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance_confirm.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "da6653bedb99fe37175023fd3d56b25e95f37e614bf933d155ded319d2f392b4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 608, + "startColumn": 1, + "charOffset": 27171, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 606, + "startColumn": 1, + "charOffset": 27001, + "charLength": 295, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования возраста пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "daf595a889435ec174bcda03e77d8769ffd717138f2e37100c1cbca18c0d173c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1083, + "startColumn": 42, + "charOffset": 48413, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1081, + "startColumn": 1, + "charOffset": 48297, + "charLength": 334, + "snippet": { + "text": " await AdminPanel.taskmenu_collection_counterwait.set()\r\n else:\r\n await state.update_data(counter = counter)\r\n await bot.send_message(chat_id,\"Коллекция создана успешно! Перейдите пожалуйста, к составлению заданий!⬇️\",reply_markup=surveywebapp)\r\n await AdminPanel.taskmenu_collection_surveywebapp.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "db162cf8149f3bd0b93779004cc1367337433eeb503ec3ce8117119962227645" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1849, + "startColumn": 46, + "charOffset": 84199, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1847, + "startColumn": 1, + "charOffset": 84123, + "charLength": 195, + "snippet": { + "text": "\r\n ident = generate_code()\r\n supabase.table('Passd').insert({'chat_id':chat_id, 'name':name, 'id': ident}).execute()\r\n new_balance = user_balance + score\r\n user.balance = new_balance\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "db5d7188b600ae2f9f30ff9e13b28f110da93da31e3cc6e7f85d34a113d03f33" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 62, + "startColumn": 1, + "charOffset": 2135, + "charLength": 30, + "snippet": { + "text": "class MenuStates(StatesGroup):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 60, + "startColumn": 1, + "charOffset": 2115, + "charLength": 109, + "snippet": { + "text": "\r\n# Состояния меню\r\nclass MenuStates(StatesGroup):\r\n waiting_for_profile = State()\r\n profile = State()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "dc86805650f51e209cd9dca7289286a2e12a3d48708060e63f25e6b004630434" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E712 comparison to False should be 'if cond is False:' or 'if not cond:'", + "markdown": "PEP 8: E712 comparison to False should be 'if cond is False:' or 'if not cond:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1236, + "startColumn": 97, + "charOffset": 55499, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1234, + "startColumn": 1, + "charOffset": 55345, + "charLength": 250, + "snippet": { + "text": " if FIO[word][0].istitle():\r\n cnt += 1\r\n if name.replace(\" \", \"\").isalpha() and len(name) < 40 and len(name) >= 5 and detector(name) == False and cnt == len(FIO):\r\n user = users.get(chat_id)\r\n user.full_name = name\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "dc9c2d165ed56a88b7a4f5135b95b11caca36e912ec9a11ac47c4b8c6c2f10f8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 67, + "startColumn": 1, + "charOffset": 2588, + "charLength": 32, + "snippet": { + "text": "#usermaker add task menu buttons" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 65, + "startColumn": 1, + "charOffset": 2584, + "charLength": 151, + "snippet": { + "text": "\r\n\r\n#usermaker add task menu buttons\r\neventtasks = ReplyKeyboardMarkup(resize_keyboard=True)\r\nadmcreatetask = KeyboardButton(text=\"Создать коллекцию\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "dcc4cb046558a36d00f51340272c2431215b7ef701ee00353bf703739506d50e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 442, + "startColumn": 1, + "charOffset": 18803, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 440, + "startColumn": 1, + "charOffset": 18634, + "charLength": 294, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Система получения информации о пользователе\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "dcf1cc807144e3dd8409edbeef5e58146fddcd6b70ea5c651570728535c10923" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1904, + "startColumn": 1, + "charOffset": 86408, + "charLength": 29, + "snippet": { + "text": "#Система для Telegram Web App" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1902, + "startColumn": 1, + "charOffset": 86284, + "charLength": 278, + "snippet": { + "text": "\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система для Telegram Web App\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "dd70ae67faef81cf2d1f5d40a119a5b144a71745ed4f0bcd5715315d6a1cab4d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (147 > 120 characters)", + "markdown": "PEP 8: E501 line too long (147 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1535, + "startColumn": 37, + "charOffset": 69750, + "charLength": 110, + "snippet": { + "text": "\"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1533, + "startColumn": 1, + "charOffset": 69642, + "charLength": 283, + "snippet": { + "text": " chat_id = message.chat.id\r\n tgname = message.from_user.username\r\n if tgname == None and select == \"❗Я действительно хочу удалить свой профиль и понимаю, что все мои данные будут удалены в том числе и баланс.\":\r\n user = users.get(chat_id)\r\n users.delete(user)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ddad46863ade31a4c84d446b6a726a91d7db0816ce0c4b676f33e151e24535e0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1525, + "startColumn": 1, + "charOffset": 69211, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1523, + "startColumn": 1, + "charOffset": 69207, + "charLength": 275, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система удаления профиля\r\n#----------------------------------------------------------------------------------------------------------------------- \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ddba986137e8dcf7262e6bd39228a3e7ef44beb78cca72028f5bf1f4f63477ff" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 495, + "startColumn": 1, + "charOffset": 21340, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 493, + "startColumn": 1, + "charOffset": 21332, + "charLength": 298, + "snippet": { + "text": " \r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система редактирования баланса пользователя\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "de1c167c1fdc5705428d9e172af166d5b72f8ccb722e2ed6d982012449729fdb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 6, + "startColumn": 33, + "charOffset": 315, + "charLength": 14, + "snippet": { + "text": "\"🙋‍♀️Женщина\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 4, + "startColumn": 1, + "charOffset": 174, + "charLength": 196, + "snippet": { + "text": "ikbg = InlineKeyboardMarkup(row_width=2)\r\nibm = InlineKeyboardButton(text=\"🙋‍♂️Мужчина\",callback_data='1')\r\nibf = InlineKeyboardButton(text=\"🙋‍♀️Женщина\",callback_data='0')\r\nikbg.add(ibm,ibf)\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "de9812f837a0b17549d8d4f48a9e1f47a4fcb66fa866d2970b55b04873c648ec" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (122 > 120 characters)", + "markdown": "PEP 8: E501 line too long (122 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1381, + "startColumn": 101, + "charOffset": 63076, + "charLength": 21, + "snippet": { + "text": "cancel_button_to_main" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1379, + "startColumn": 1, + "charOffset": 62748, + "charLength": 396, + "snippet": { + "text": "async def enter_promocode(message: types.Message):\r\n await bot.send_message(message.chat.id, \"Введите , пожалуйста , ваш промокод сообщением или отправьте боту изображение QR-кода\", reply_markup=types.ReplyKeyboardRemove())\r\n await bot.send_message(message.chat.id, \"Если хотите вернуться , то нажмите сюда\", reply_markup=cancel_button_to_main)\r\n await MenuStates.promocodestart.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "dfd8cc540c942879af872b93ed19eca42b571bd3db5459f08ea690068f87bc75" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1058, + "startColumn": 66, + "charOffset": 47183, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1056, + "startColumn": 1, + "charOffset": 47069, + "charLength": 260, + "snippet": { + "text": " await AdminPanel.taskmenu_photowait.set()\r\n\r\n@dp.message_handler(content_types= types.ContentType.PHOTO, state = AdminPanel.taskmenu_photowait)\r\nasync def admin_taskmenu_photowait(message: types.Message , state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "dfe19ddfbdb9367abf1646b554e38646b4c53a3f4151f2745720214f6987d92a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (142 > 120 characters)", + "markdown": "PEP 8: E501 line too long (142 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 851, + "startColumn": 121, + "charOffset": 38670, + "charLength": 19, + "snippet": { + "text": "ReplyKeyboardRemove" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 849, + "startColumn": 1, + "charOffset": 38441, + "charLength": 308, + "snippet": { + "text": "async def give_rules(message: types.Message, state: FSMContext):\r\n await AdminPanel.rules_addmaker.set()\r\n await message.reply(\"Введите @username пользователя которому хотите выдать права ивент мейкера\", reply_markup=types.ReplyKeyboardRemove())\r\n\r\n@dp.message_handler(state=AdminPanel.rules_addmaker)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e038ea109be002550cbf398db4625e7da393d3ee9d0469bd6aa24d8e59578cad" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 128, + "startColumn": 32, + "charOffset": 5376, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 126, + "startColumn": 1, + "charOffset": 5263, + "charLength": 215, + "snippet": { + "text": "admue_back = KeyboardButton(text=\"⬅️Админ меню\")\r\nadmue.row(admue_get_info_user)\r\nadmue.row(admue_fullname_editor,admue_age_editor,admue_balance_editor)\r\nadmue.row(admue_update_users_balance)\r\nadmue.row(admue_back)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e046afc6502a7a59c7ff4cee3952604054e851bd9fd28b1215fb880ffc3fe4ef" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 7, + "startColumn": 3, + "charOffset": 117, + "charLength": 3, + "snippet": { + "text": "def" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 5, + "startColumn": 1, + "charOffset": 83, + "charLength": 79, + "snippet": { + "text": "class UserRepository(ABC):\r\n \r\n def get(self,id : str) -> User:\r\n ...\r\n \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e0f88ac1869f5dfb41016539ffc4d2ea003fef869729ed01f8eb3baec6aa63db" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 175, + "startColumn": 1, + "charOffset": 5940, + "charLength": 73, + "snippet": { + "text": "@dp.message_handler(text=\"📝Создать задание\", state=EventMakerPanel.menu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 173, + "startColumn": 1, + "charOffset": 5850, + "charLength": 275, + "snippet": { + "text": " await message.reply(\"Вы вошли в панель event maker`a!\", reply_markup=usermakerkbm)\r\n\r\n@dp.message_handler(text=\"📝Создать задание\", state=EventMakerPanel.menu)\r\nasync def go_event_menu(message: types.Message, state: FSMContext):\r\n await EventMakerPanel.taskmenu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e1092197b655cfaf3b3b1e3a2932c6b4c94c31104e537267ff00ea55457e9587" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1482, + "startColumn": 1, + "charOffset": 67120, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1480, + "startColumn": 1, + "charOffset": 66968, + "charLength": 322, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система отображения профиля\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(state=MenuStates.profile)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e12dfb60642c6eeeb54cfd08ac875b952b7274699fe13f4e794468f7c8e3a157" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1661, + "startColumn": 25, + "charOffset": 76057, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1659, + "startColumn": 1, + "charOffset": 75988, + "charLength": 285, + "snippet": { + "text": " users.user_state=str(MenuStates.help)\r\n\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r\nasync def handle_help_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e1707229a544c9eedd30228abe53cc0763275b6d8f6b50bf989cfa76181ad374" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 14, + "startColumn": 6, + "charOffset": 588, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 12, + "startColumn": 1, + "charOffset": 481, + "charLength": 231, + "snippet": { + "text": "kliderboard= KeyboardButton(text=\"📊Рейтинг\")\r\nkschedule= KeyboardButton(text=\"📆Календарь событий\")\r\nkhelp= KeyboardButton(text=\"❓Помощь\")\r\nkexercise= KeyboardButton(text=\"📝Задания\")\r\nkpromo = KeyboardButton(text=\"🗝️Промокоды\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e1a3d2bf25dae9f374dc1a1402123dcc88941d520e4939f6aa326cb805614134" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 34, + "startColumn": 22, + "charOffset": 1267, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 32, + "startColumn": 1, + "charOffset": 1186, + "charLength": 133, + "snippet": { + "text": " age=age,\r\n balance=balance,\r\n tgusr = tgusr\r\n )\r\n except ValueError:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e21c211df30141247344fa595e26e0dd64e176dae901bb221b51cfe2766c304d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (206 > 120 characters)", + "markdown": "PEP 8: E501 line too long (206 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1132, + "startColumn": 119, + "charOffset": 50927, + "charLength": 7, + "snippet": { + "text": "counter" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1130, + "startColumn": 1, + "charOffset": 50727, + "charLength": 360, + "snippet": { + "text": " description = data.get(\"description\")\r\n photo = data.get(\"photo\")\r\n supabase.table('TaskCollection').insert({'name': name, 'description': description, 'photo': photo, 'counter': counter, 'url': url,'numberPoints':numberPoints, 'rightAnswers':rightAnswers}).execute()\r\n await state.finish()\r\n await AdminPanel.taskmenu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e2401315bf0577f6c658644c65afeb0227557e41541ef74f88a4d1dc0f02baa2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1387, + "startColumn": 3, + "charOffset": 63297, + "charLength": 11, + "snippet": { + "text": "photo_bytes" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1385, + "startColumn": 1, + "charOffset": 63224, + "charLength": 188, + "snippet": { + "text": "async def check_qr_code(message: types.Message, state: FSMContext):\r\n\r\n photo_bytes = await message.photo[-1].download(destination=io.BytesIO())\r\n photo_bytes = photo_bytes.getvalue()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e24c137525352b454b74c43cfb56939dc6887999a2c244405f06280565025e88" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 407, + "startColumn": 60, + "charOffset": 17042, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 405, + "startColumn": 1, + "charOffset": 16921, + "charLength": 211, + "snippet": { + "text": "\r\n@dp.message_handler(state=AdminPanel.update_users_balance)\r\nasync def update_users_balance(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance.set()\r\n select = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e3875620e4ebf696935dc8d6e121a425becfbd1f4b7577723bae320e20511b35" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ','", + "markdown": "PEP 8: E203 whitespace before ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 3, + "startColumn": 28, + "charOffset": 70, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 91, + "snippet": { + "text": "import os\r\nfrom dotenv import load_dotenv\r\nfrom supabase import Client , create_client\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e3e19c811305d5162d9f4ec5d7a6aa8f4a6e429c0a670e7ffd574ff51266afd8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 38, + "startColumn": 86, + "charOffset": 1433, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 36, + "startColumn": 1, + "charOffset": 1292, + "charLength": 278, + "snippet": { + "text": " except ValueError:\r\n tgusr:str = id\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','chat_id','user_state').eq('tgusr', tgusr).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e3f0098b934b88435398c2dbdd44aa2ddd89e4d5ddbd126a61ab75dcf64ce9bb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 741, + "startColumn": 64, + "charOffset": 33493, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 739, + "startColumn": 1, + "charOffset": 33367, + "charLength": 232, + "snippet": { + "text": "\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming)\r\nasync def get_naming_promo_usages(message: types.Message, state:FSMContext):\r\n name = str(message.text)\r\n await message.reply(\"Введите количество использований:\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e3f8232a31cfd140d795d1c437129d70547e7934df9729682058074729d2d413" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (131 > 120 characters)", + "markdown": "PEP 8: E501 line too long (131 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 410, + "startColumn": 18, + "charOffset": 17150, + "charLength": 113, + "snippet": { + "text": "'❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 408, + "startColumn": 1, + "charOffset": 17057, + "charLength": 348, + "snippet": { + "text": " await AdminPanel.update_users_balance.set()\r\n select = message.text\r\n if select == '❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗':\r\n supabase.table('UsersData_duplicate').update({'balance': 0}).neq('balance',0).execute()\r\n await AdminPanel.admin_menu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e4366c3186e2cf6afa2d5fb7dc7681f785ba687945410e809a6a62824f4e7a9e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 34, + "startColumn": 24, + "charOffset": 1269, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 32, + "startColumn": 1, + "charOffset": 1186, + "charLength": 133, + "snippet": { + "text": " age=age,\r\n balance=balance,\r\n tgusr = tgusr\r\n )\r\n except ValueError:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e46d77a714bfd873f4eae00abc5470fe37e84e04bd966b592f134b895d90abb0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (305 > 120 characters)", + "markdown": "PEP 8: E501 line too long (305 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 46, + "startColumn": 24, + "charOffset": 2586, + "charLength": 282, + "snippet": { + "text": "\"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 44, + "startColumn": 1, + "charOffset": 2516, + "charLength": 680, + "snippet": { + "text": " except:\n if user[\"gender\"]:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"\n else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e4aaf0a719c0f0302b3f4b652b0b75ffc69ee6b28b8414d50a2306543bea1419" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E111 indentation is not a multiple of 4", + "markdown": "PEP 8: E111 indentation is not a multiple of 4" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 931, + "startColumn": 3, + "charOffset": 41319, + "charLength": 5, + "snippet": { + "text": "await" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 929, + "startColumn": 1, + "charOffset": 41258, + "charLength": 158, + "snippet": { + "text": " await message.reply(rules_text)\r\n await state.finish()\r\n await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text=\"⬅️Админ меню\", state=AdminPanel.rules)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e4e827ae55748c3257797f7214018ff2741b6b94ef86f4269dd60d77e465528c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1593, + "startColumn": 251, + "charOffset": 73141, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1591, + "startColumn": 1, + "charOffset": 72793, + "charLength": 439, + "snippet": { + "text": "async def handle_help(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, f\"Привет\\\\! Если у тебя есть какие\\\\-то проблемы или пожелания \\\\, то смелее нажимай на кнопку \" + f\"{code('📨Создать заявку')}\" + f\" и администратор с радостью тебе поможет\\\\! \", reply_markup=userhelp, parse_mode = 'MarkdownV2')\r\n user = users.get(chat_id)\r\n user.user_state = str(MenuStates.help)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e51744bde274bdaff46b3e009b41a38dd79ef24f656c45a1afe11d94b857334f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1219, + "startColumn": 66, + "charOffset": 54845, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1217, + "startColumn": 1, + "charOffset": 54742, + "charLength": 178, + "snippet": { + "text": "\r\n # Запрашиваем имя пользователя\r\n await query.message.reply(\"Введите ваше ФИО:\", reply_markup = helpinlinereg)\r\n\r\n # Переход к следующему состоянию \"waiting_for_name\"\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e5525b562f2a01dbe02584234175e9933cf762999d48b391139cf9cb5d884dd4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1289, + "startColumn": 1, + "charOffset": 58023, + "charLength": 121, + "snippet": { + "text": "@dp.callback_query_handler(text=\"cancel_user\", state=[ProlfileStates.edit_profile_name, ProlfileStates.edit_profile_age])" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1287, + "startColumn": 1, + "charOffset": 57942, + "charLength": 395, + "snippet": { + "text": " await message.reply(\"Нет такого варианта выбора!\", reply_markup=rkbm)\r\n\r\n@dp.callback_query_handler(text=\"cancel_user\", state=[ProlfileStates.edit_profile_name, ProlfileStates.edit_profile_age])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню редактирования профиля.\", reply_markup=menuedit)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e5daf7caec10bcb997e092adfb89b601bf5e834d7b6b81a6fd623f578f4dfed3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1400, + "startColumn": 1, + "charOffset": 63640, + "charLength": 52, + "snippet": { + "text": "@dp.message_handler(state=MenuStates.promocodestart)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1398, + "startColumn": 1, + "charOffset": 63597, + "charLength": 198, + "snippet": { + "text": " await check_promocode(message, state)\r\n\r\n@dp.message_handler(state=MenuStates.promocodestart)\r\nasync def check_promocode(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e6af7d4dc3253dbb961d11b57654cfa97da2b87594a78c5a7758a9e4317ffc06" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 7, + "startColumn": 15, + "charOffset": 129, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 5, + "startColumn": 1, + "charOffset": 83, + "charLength": 79, + "snippet": { + "text": "class UserRepository(ABC):\r\n \r\n def get(self,id : str) -> User:\r\n ...\r\n \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e6c11cc762a709e394d3685fcdba2bbf920616826ea459224ac637199e90e974" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (192 > 120 characters)", + "markdown": "PEP 8: E501 line too long (192 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 403, + "startColumn": 45, + "charOffset": 16722, + "charLength": 114, + "snippet": { + "text": "'❗Внимание❗ Вы действительно хотите обнулить баланс ВСЕХ пользователей? Данное действие ОТМЕНИТЬ будет НЕВОЗМОЖНО'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 401, + "startColumn": 1, + "charOffset": 16597, + "charLength": 325, + "snippet": { + "text": " user.user_state = str(AdminPanel.update_users_balance)\r\n users.set(user)\r\n await bot.send_message(message.chat.id, '❗Внимание❗ Вы действительно хотите обнулить баланс ВСЕХ пользователей? Данное действие ОТМЕНИТЬ будет НЕВОЗМОЖНО', reply_markup=updatebalanceusers)\r\n await AdminPanel.update_users_balance.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e878508cf0a3693218fe177c83b8547276e8c752cecf1329a2fd7f3fbe65342e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 17, + "startColumn": 92, + "charOffset": 524, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 15, + "startColumn": 1, + "charOffset": 384, + "charLength": 273, + "snippet": { + "text": " try:\r\n chat_id:int = int(id)\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','tgusr','user_state').eq('chat_id', chat_id).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e9ff3dd398ef341f7667e5970b0c8e88e3264298fc1094abb2aa4ec89abb3759" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E711 comparison to None should be 'if cond is None:'", + "markdown": "PEP 8: E711 comparison to None should be 'if cond is None:'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1099, + "startColumn": 21, + "charOffset": 49203, + "charLength": 2, + "snippet": { + "text": "==" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1097, + "startColumn": 1, + "charOffset": 49121, + "charLength": 180, + "snippet": { + "text": " if numberPoints == None:\r\n numberPoints:dict = {}\r\n if rightAnswers == None:\r\n rightAnswers:dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "eaea9ccfddbe2c8f1eef0c8ea7caf23774004952c5907d4403ce36b03780cca3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 48, + "startColumn": 26, + "charOffset": 1940, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 46, + "startColumn": 1, + "charOffset": 1835, + "charLength": 182, + "snippet": { + "text": " user_state = user_data.get('user_state')\r\n return User(\r\n chat_id = chat_id,\r\n full_name=pseudo,\r\n gender=gender,\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "eb064201a538febe4a5532f0ea462d4fc8805c61edef7e02118dbcdf704974ae" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E225 missing whitespace around operator", + "markdown": "PEP 8: E225 missing whitespace around operator" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 167, + "startColumn": 27, + "charOffset": 7175, + "charLength": 1, + "snippet": { + "text": "=" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 165, + "startColumn": 1, + "charOffset": 7047, + "charLength": 386, + "snippet": { + "text": "#remove balance button in admin menu\r\nupdatebalanceusers = ReplyKeyboardMarkup(resize_keyboard=True)\r\nupdatebalanceconfirmbutton= KeyboardButton(text=\"❗Я действительно хочу обнулить баланс всех пользователей!❗ ВНИМАНИЕ❗Отменить данное действие будет НЕВОЗМОЖНО.❗\")\r\nbackbuttontoadminmemubutton = KeyboardButton(text=\"⬅️Назад в меню\")\r\nupdatebalanceusers.row(updatebalanceconfirmbutton)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ec2c599b67fde63301e08c94ff9c2bd1a3605b76800fc20a5700d8d094a8ae54" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 17, + "startColumn": 102, + "charOffset": 534, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 15, + "startColumn": 1, + "charOffset": 384, + "charLength": 273, + "snippet": { + "text": " try:\r\n chat_id:int = int(id)\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','tgusr','user_state').eq('chat_id', chat_id).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ec3601be026b1af27fe60e0743b3151bed454fc715d5343f1bb193da3c164f03" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 740, + "startColumn": 1, + "charOffset": 33369, + "charLength": 59, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.promo_addpromo_naming)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 738, + "startColumn": 1, + "charOffset": 33317, + "charLength": 220, + "snippet": { + "text": " await AdminPanel.promo_addpromo_naming.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming)\r\nasync def get_naming_promo_usages(message: types.Message, state:FSMContext):\r\n name = str(message.text)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ec86e472905af383d7d5b9cdc750922b12f311917d3888b89a6309b03474ccf4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 44, + "startColumn": 1, + "charOffset": 1593, + "charLength": 52, + "snippet": { + "text": "def update_user_age_by_tgusr(tgusr: str, age : int):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 42, + "startColumn": 1, + "charOffset": 1526, + "charLength": 227, + "snippet": { + "text": " print(f\"Error updating user fullname for {tgusr}: {e}\")\r\n\r\ndef update_user_age_by_tgusr(tgusr: str, age : int):\r\n try:\r\n response = supabase.table(table_name).update({'age': age}).eq('tgusr', tgusr).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ecc1a5848324b722906a3a5c6e5af4f8211cfe3a470ce6bd06ba44efe7c9e9ae" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 9, + "startColumn": 1, + "charOffset": 371, + "charLength": 13, + "snippet": { + "text": "#menu buttons" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 7, + "startColumn": 1, + "charOffset": 350, + "charLength": 130, + "snippet": { + "text": "ikbg.add(ibm,ibf)\r\n\r\n#menu buttons\r\nrkbm = ReplyKeyboardMarkup(resize_keyboard=True)\r\nkprofile= KeyboardButton(text=\"👤Профиль\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ecf419a796739583d847821875ba2e35e571baae3753bf7d252b39a77859e219" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: W292 no newline at end of file", + "markdown": "PEP 8: W292 no newline at end of file" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1908, + "startColumn": 49, + "charOffset": 86639, + "charLength": 1, + "snippet": { + "text": ")" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1906, + "startColumn": 1, + "charOffset": 86561, + "charLength": 79, + "snippet": { + "text": "\r\nif __name__ == '__main__':\r\n executor.start_polling(dp, skip_updates=True)" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ee7a92329d274515f403a05925a82d4f749f1199f5c978e6d5860d698f7e9767" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1722, + "startColumn": 83, + "charOffset": 78923, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1720, + "startColumn": 1, + "charOffset": 78719, + "charLength": 285, + "snippet": { + "text": " user_exists = supabase.table('Report').select('tgusr').eq('tgusr', username).execute()\r\n if not user_exists.data:\r\n await message.reply(\"Такого пользователя нет в базе данных\", reply_markup= admreport)\r\n await state.finish()\r\n await AdminPanel.ticket.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "eed6e482d20cb9301bc907a3e5358caf2976035f3e3881f35e37c04e1f155c3c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 157, + "startColumn": 1, + "charOffset": 5214, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 155, + "startColumn": 1, + "charOffset": 5071, + "charLength": 268, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n# Event maker panel\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f024e3dd954fd4f8e60a2eb1130e002abcecbd1df7567e9663521d19a28fa34f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1703, + "startColumn": 27, + "charOffset": 77987, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1701, + "startColumn": 1, + "charOffset": 77913, + "charLength": 221, + "snippet": { + "text": " user.user_state = str(AdminPanel.ticket)\r\n\r\n@dp.message_handler(text = \"Удалить обращение\", state=AdminPanel.ticket)\r\nasync def delete_ticket(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f0b12dc0b5efc78af0d5e0a26db406fe23a4361f12d64b0a4506357ec8186fa0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 60, + "startColumn": 17, + "charOffset": 2312, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 58, + "startColumn": 1, + "charOffset": 2261, + "charLength": 217, + "snippet": { + "text": " return None\r\n \r\n def set(self,user : User) -> None:\r\n if self.get(user.chat_id): \r\n self.client.table(self.table_name).update(user.dict()).eq('chat_id',user.chat_id).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f0e7695476eb6200d0466c57acaa8a0d3093ff70f08dae12c2805ff46b7371d5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (157 > 120 characters)", + "markdown": "PEP 8: E501 line too long (157 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 846, + "startColumn": 25, + "charOffset": 38237, + "charLength": 109, + "snippet": { + "text": "\"Вы попали в раздел для выдачи права создания заданий пользователям. Нажмите на кнопку и следуйте указаниям.\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 844, + "startColumn": 1, + "charOffset": 38147, + "charLength": 293, + "snippet": { + "text": " user.user_state = str(AdminPanel.rules)\r\n users.set(user)\r\n await message.reply(\"Вы попали в раздел для выдачи права создания заданий пользователям. Нажмите на кнопку и следуйте указаниям.\", reply_markup=ruleskbm)\r\n\r\n@dp.message_handler(text=\"Выдать права\",state = AdminPanel.rules)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f2ac13be09ec541ab3d8a440d5975e6dd7f9c4059100d9b4e85c273eeb1e9f8e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 663, + "startColumn": 1, + "charOffset": 29948, + "charLength": 120, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 661, + "startColumn": 1, + "charOffset": 29944, + "charLength": 269, + "snippet": { + "text": "\r\n\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n# Система промокодов\r\n#-----------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f30f9b05ff3546ccac6e88200be1c5393832e1f4267625e3574c95e742f2316e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E722 do not use bare 'except'", + "markdown": "PEP 8: E722 do not use bare 'except'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 44, + "startColumn": 9, + "charOffset": 2524, + "charLength": 6, + "snippet": { + "text": "except" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 42, + "startColumn": 1, + "charOffset": 2180, + "charLength": 688, + "snippet": { + "text": " else:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/female.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L2ZlbWFsZS5qcGciLCJpYXQiOjE2OTEzMTkxNjMsImV4cCI6MWUrOTJ9.1LZXigPR8SlPd9Iuyy9ndoSqjbqQQmxiMES5YDu75VQ&t=2023-08-06T10%3A52%3A44.214Z\"\n except:\n if user[\"gender\"]:\n link = \"https://qdsibpkizystoiqpvoxo.supabase.co/storage/v1/object/sign/static/bot/male.jpg?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJzdGF0aWMvYm90L21hbGUuanBnIiwiaWF0IjoxNjkxMzE5MjA5LCJleHAiOjFlKzg1fQ.YCDwpTAqL97mzSWMoPdC88KquegMuO1HPRVhUUXh3iM&t=2023-08-06T10%3A53%3A30.430Z\"" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f320f3c9cbbaf875c081c4736e78d8756224b11d085b6e0f2ee57c9eed0c487b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1114, + "startColumn": 40, + "charOffset": 50019, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1112, + "startColumn": 1, + "charOffset": 49885, + "charLength": 276, + "snippet": { + "text": " await state.update_data(rightAnswers = rightAnswers)\r\n querylist.append(new_json_data)\r\n await state.update_data(querylist = querylist)\r\n if counter > 1:\r\n await bot.send_message(chat_id, \"Пожалуйста, заполните следующий вопрос\",reply_markup=surveywebapp)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f559b3b73540291e74a20c2c7ab15cd4bd9f77ce1f5b97acb02f7c95eb0e3180" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1481, + "startColumn": 1, + "charOffset": 67090, + "charLength": 28, + "snippet": { + "text": "#Система отображения профиля" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1479, + "startColumn": 1, + "charOffset": 66966, + "charLength": 277, + "snippet": { + "text": "\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система отображения профиля\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f58c5c956e74f3e1581b1ef6a255d5a5dd70020ef86b92f13005494cd134f2f7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E202 whitespace before ')'", + "markdown": "PEP 8: E202 whitespace before ')'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 70, + "startColumn": 36, + "charOffset": 2705, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 68, + "startColumn": 1, + "charOffset": 2666, + "charLength": 194, + "snippet": { + "text": "\r\n\r\ndef get_user_info_by_id(chat_id:int ) -> str:\r\n try:\r\n response = supabase.table('UsersData').select('full_name','gender','age','balance','tgusr').eq('chat_id', chat_id).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f5a8efc6349ac296bcbbc9b6b455149b99946042c2d0de8d48e08c448d59e800" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1484, + "startColumn": 1, + "charOffset": 67244, + "charLength": 45, + "snippet": { + "text": "@dp.message_handler(state=MenuStates.profile)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1482, + "startColumn": 1, + "charOffset": 67120, + "charLength": 271, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(state=MenuStates.profile)\r\nasync def handle_profile(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f5c62fd9c1c41d87fe553b6363e9fba15f2703b4a437a55e0d40456c57ee41f8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 676, + "startColumn": 1, + "charOffset": 30590, + "charLength": 68, + "snippet": { + "text": "@dp.message_handler(text=\"Добавить QR\", state=AdminPanel.promo_menu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 674, + "startColumn": 1, + "charOffset": 30510, + "charLength": 269, + "snippet": { + "text": " await message.reply(\"Вы вошли в меню промокодов\", reply_markup=admpromo)\r\n\r\n@dp.message_handler(text=\"Добавить QR\", state=AdminPanel.promo_menu)\r\nasync def admin_promocodes_addqr(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_qrstart.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f6429ea1de9aab6c352960f8e1eefa99265648854988699b12aa042481b4f13d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 933, + "startColumn": 1, + "charOffset": 41351, + "charLength": 64, + "snippet": { + "text": "@dp.message_handler(text=\"⬅️Админ меню\", state=AdminPanel.rules)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 931, + "startColumn": 1, + "charOffset": 41317, + "charLength": 246, + "snippet": { + "text": " await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text=\"⬅️Админ меню\", state=AdminPanel.rules)\r\nasync def back_from_rules(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f714e7fd6d7f8ef475ed55e0d24e7f2ebb0ecaa88d181cf0b3152295bb8588b1" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1769, + "startColumn": 1, + "charOffset": 81075, + "charLength": 54, + "snippet": { + "text": "@dp.message_handler(text=\"➡️\", state=MenuStates.tasks)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1767, + "startColumn": 1, + "charOffset": 81011, + "charLength": 211, + "snippet": { + "text": " await state.update_data(message_id_data=message_id_data)\r\n\r\n@dp.message_handler(text=\"➡️\", state=MenuStates.tasks)\r\nasync def right(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f74e61a2027833a1e9e27ff20b05017f180dd8d772de9ab2efd7cd8bda93f372" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 105, + "startColumn": 1, + "charOffset": 7432, + "charLength": 33, + "snippet": { + "text": "def rating_update_start_thread():" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 103, + "startColumn": 1, + "charOffset": 7400, + "charLength": 126, + "snippet": { + "text": " schedule.run_pending()\n\ndef rating_update_start_thread():\n threading.Thread(target=rating_update_over_time).start()" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f77cc150221a9c10ead4ab549edbfaa417d91b40b15f040ddde4ac1f5c8cb3d5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1055, + "startColumn": 42, + "charOffset": 47054, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1053, + "startColumn": 1, + "charOffset": 46908, + "charLength": 209, + "snippet": { + "text": " description = message.text\r\n await bot.send_message(chat_id, \"Отправте фотографию мероприятия:\")\r\n await state.update_data(description = description)\r\n await AdminPanel.taskmenu_photowait.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f7d0f6f63b41694f0d1975eb5b10e570340400b86863759d2bffffe6e560b82d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ':'", + "markdown": "PEP 8: E203 whitespace before ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 13, + "startColumn": 21, + "charOffset": 232, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 11, + "startColumn": 1, + "charOffset": 201, + "charLength": 59, + "snippet": { + "text": " ...\r\n\r\n def delete(self,id : str) -> None:\r\n ...\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f7fbc4b910941e12b2d0fa2226e5ed50d2d73342de645fa6202af68b94770896" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 407, + "startColumn": 54, + "charOffset": 17036, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 405, + "startColumn": 1, + "charOffset": 16921, + "charLength": 211, + "snippet": { + "text": "\r\n@dp.message_handler(state=AdminPanel.update_users_balance)\r\nasync def update_users_balance(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance.set()\r\n select = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f8ee37bddcd95446a5496f3dbb9eb6894785291d2355e162f01651583bcaf5f9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (182 > 120 characters)", + "markdown": "PEP 8: E501 line too long (182 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 53, + "startColumn": 120, + "charOffset": 3440, + "charLength": 2, + "snippet": { + "text": "f'" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 51, + "startColumn": 1, + "charOffset": 3247, + "charLength": 317, + "snippet": { + "text": " if user[\"gender\"]:\n insert_image = f'=IMAGE(\"{link}\")'\n google_update_list.append([\"=СТРОКА()-1\", insert_image, user['full_name'], user['balance'],user['chat_id'],f'=ГИПЕРССЫЛКА(\"t.me/{user[\"tgusr\"][1:]}\";\"{user[\"tgusr\"]}\")'])\n else:\n insert_image = f'=IMAGE(\"{link}\")'" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f99324942623f705d320b555c456767999378f366cbadb293d3b085eae904c89" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 913, + "startColumn": 1, + "charOffset": 40695, + "charLength": 69, + "snippet": { + "text": "@dp.message_handler(text='Действующие права', state=AdminPanel.rules)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 911, + "startColumn": 1, + "charOffset": 40661, + "charLength": 172, + "snippet": { + "text": " await AdminPanel.rules.set()\r\n\r\n@dp.message_handler(text='Действующие права', state=AdminPanel.rules)\r\nasync def show_rules(message: types.Message, state: FSMContext):\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f9bdf099775a4612fadab47de0dd38bcca56cd54c17afd128beb1afb6413c816" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E303 too many blank lines (5)", + "markdown": "PEP 8: E303 too many blank lines (5)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1806, + "startColumn": 1, + "charOffset": 82739, + "charLength": 89, + "snippet": { + "text": "@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=MenuStates.tasks)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1804, + "startColumn": 1, + "charOffset": 82735, + "charLength": 232, + "snippet": { + "text": "\r\n\r\n@dp.message_handler(content_types=types.ContentType.WEB_APP_DATA, state=MenuStates.tasks)\r\nasync def handle_test_results(message: types.ContentType.WEB_APP_DATA, state: FSMContext):\r\n message.text = message.web_app_data.data\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f9c1e838a86743558c459fdb5c488b984987c8b6da5ff0cfe497b15311f171fd" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 979, + "startColumn": 1, + "charOffset": 43502, + "charLength": 72, + "snippet": { + "text": "@dp.message_handler(text='Удалить коллекцию', state=AdminPanel.taskmenu)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 977, + "startColumn": 1, + "charOffset": 43479, + "charLength": 279, + "snippet": { + "text": " users.set(user)\r\n\r\n@dp.message_handler(text='Удалить коллекцию', state=AdminPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите пожалуйста имя коллекции для её удаления\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fa0e836e6f2be0e3b380c2bd32d911a62ac71a707ddb9dd6b7613d041e4d5adf" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E501 line too long (125 > 120 characters)", + "markdown": "PEP 8: E501 line too long (125 \\> 120 characters)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1236, + "startColumn": 121, + "charOffset": 55523, + "charLength": 3, + "snippet": { + "text": "FIO" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1234, + "startColumn": 1, + "charOffset": 55345, + "charLength": 250, + "snippet": { + "text": " if FIO[word][0].istitle():\r\n cnt += 1\r\n if name.replace(\" \", \"\").isalpha() and len(name) < 40 and len(name) >= 5 and detector(name) == False and cnt == len(FIO):\r\n user = users.get(chat_id)\r\n user.full_name = name\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fa32a5b90870634993c97e5141e3b9eb1a8c54be282ae5f3ecebb43eda7491a6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1776, + "startColumn": 36, + "charOffset": 81439, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1774, + "startColumn": 1, + "charOffset": 81295, + "charLength": 283, + "snippet": { + "text": " if counter>len(supabase.table('TaskCollection').select('name' ).execute().data)-1:\r\n counter = 0\r\n await state.update_data(counter = counter)\r\n await handle_tasks(message, state)\r\n await bot.delete_message(chat_id=chat_id, message_id=data.get('message_id_data'))\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fa8bbb906451e59e159689ad4d23e7dab722000012fbb0915b9f253774aad926" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E122 continuation line missing indentation or outdented", + "markdown": "PEP 8: E122 continuation line missing indentation or outdented" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 480, + "startColumn": 9, + "charOffset": 20617, + "charLength": 2, + "snippet": { + "text": "f\"" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 478, + "startColumn": 1, + "charOffset": 20481, + "charLength": 374, + "snippet": { + "text": " # Формирование сообщения профиля пользователя\r\n profile_message = f\"Профиль пользователя {username}:\\n\\n\" \\\r\n f\"{gender}{pseudo}, {age} лет\\n└Место в топе: {counter+1}\\n\\n\" \\\r\n f\"💰Баланс: {balance}🔘 поинтов\\n└Мероприятий посещено: ?\"\r\n await bot.send_photo(chat_id=chat_id, photo=image, caption=profile_message, reply_markup=admue)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fad56b6f36255fbc41af524bbcc10db2b6a901394fcddf54ff2b17809f4188e4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E303 too many blank lines (3)", + "markdown": "PEP 8: E303 too many blank lines (3)" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 428, + "startColumn": 1, + "charOffset": 17996, + "charLength": 44, + "snippet": { + "text": "# Хендлер для кнопки ️Изменить пользователя" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 426, + "startColumn": 1, + "charOffset": 17992, + "charLength": 204, + "snippet": { + "text": "\r\n\r\n# Хендлер для кнопки ️Изменить пользователя\r\n@dp.message_handler(text=\"⚙️Изменить пользователя\", state=AdminPanel.admin_menu)\r\nasync def admin_change_user(message: types.Message, state: FSMContext):\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fafaa572a726a75aa28725e732aa144041581cabf682681571239eab86c0972e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1464, + "startColumn": 1, + "charOffset": 66301, + "charLength": 32, + "snippet": { + "text": "#Система рейтинга(Google sheets)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1462, + "startColumn": 1, + "charOffset": 66177, + "charLength": 282, + "snippet": { + "text": "\r\n#-----------------------------------------------------------------------------------------------------------------------\r\n#Система рейтинга(Google sheets)\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fb14cc942f9adccde03275c2fa8edb7eb7e13b211692e3ab0f4c153b94d0e50c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1064, + "startColumn": 39, + "charOffset": 47464, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1062, + "startColumn": 1, + "charOffset": 47351, + "charLength": 250, + "snippet": { + "text": " try:\r\n await state.update_data(photo = photo.photo[2].file_id)\r\n await bot.send_message(chat_id,\"Введите количество вопросов в коллекции:\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fb89f37fe0b3aa6f9c253db8a9f97e966b270c0411d150ae41b5b79811d3893b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ','", + "markdown": "PEP 8: E231 missing whitespace after ','" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 38, + "startColumn": 77, + "charOffset": 1424, + "charLength": 1, + "snippet": { + "text": "," + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 36, + "startColumn": 1, + "charOffset": 1292, + "charLength": 278, + "snippet": { + "text": " except ValueError:\r\n tgusr:str = id\r\n response = self.client.table(self.table_name).select('full_name','gender','age','balance','chat_id','user_state').eq('tgusr', tgusr).execute()\r\n item = response.data[0]\r\n user_data = item\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fb8d406933dd423f6fb9972484b6cde5faed88527e707f184a779a265088adc2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E231 missing whitespace after ':'", + "markdown": "PEP 8: E231 missing whitespace after ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1849, + "startColumn": 62, + "charOffset": 84215, + "charLength": 1, + "snippet": { + "text": ":" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1847, + "startColumn": 1, + "charOffset": 84123, + "charLength": 195, + "snippet": { + "text": "\r\n ident = generate_code()\r\n supabase.table('Passd').insert({'chat_id':chat_id, 'name':name, 'id': ident}).execute()\r\n new_balance = user_balance + score\r\n user.balance = new_balance\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fbb5dd65a55264495a1e3b4e995590cb233a838a010f0486fec02b4f03511b3e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1875, + "startColumn": 1, + "charOffset": 84826, + "charLength": 121, + "snippet": { + "text": "#------------------------------------------------------------------------------------------------------------------------" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1873, + "startColumn": 1, + "charOffset": 84822, + "charLength": 304, + "snippet": { + "text": "\r\n\r\n#------------------------------------------------------------------------------------------------------------------------\r\n#Система отлова людей без state и обработчик стикеров\r\n#------------------------------------------------------------------------------------------------------------------------\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fbd5cad48791167889663d7a34f2c498d3f883df4dc468c17e4b79169a33aee0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1671, + "startColumn": 43, + "charOffset": 76722, + "charLength": 5, + "snippet": { + "text": "state" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1669, + "startColumn": 1, + "charOffset": 76556, + "charLength": 297, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📨Обращения\", state = AdminPanel.admin_menu)\r\nasync def handle_report(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fc343a5d71499feb42b4d40d38dcbf836c48de29e1859d4300cbbf5eae45532f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 173, + "startColumn": 1, + "charOffset": 7491, + "charLength": 15, + "snippet": { + "text": "#rating buttons" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 171, + "startColumn": 1, + "charOffset": 7487, + "charLength": 311, + "snippet": { + "text": "\r\n\r\n#rating buttons\r\nikbmrating = InlineKeyboardMarkup(row_width=1)\r\nibrating = InlineKeyboardButton(text=\"📊Полный рейтинг\", web_app = WebAppInfo(url ='https://docs.google.com/spreadsheets/d/e/2PACX-1vQFzN5HRvQhS5j4kDcv9wWH3uucCqp1AFmu2ErZYikmmJSshj1f16v7ry013vde0y6OYVWeSsVtgaKT/pubhtml?gid=0&single=true') )\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fcebaca98a7bd90aa0a424d272acdbcbd7ae5097370751ec7fba30c4f26a9229" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 68, + "startColumn": 1, + "charOffset": 2224, + "charLength": 40, + "snippet": { + "text": "def is_dirt(pattern: str=standart_dirt):" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 66, + "startColumn": 1, + "charOffset": 2198, + "charLength": 102, + "snippet": { + "text": " return hide_search\r\n\r\ndef is_dirt(pattern: str=standart_dirt):\r\n\r\n funk = _get_search(pattern)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fd0ff0566f48037b4f9dd938125a3e1395ebaa2395c7e640577193ee128370b0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 754, + "startColumn": 1, + "charOffset": 34023, + "charLength": 63, + "snippet": { + "text": "@dp.message_handler(state=AdminPanel.promo_addpromo_naming_end)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 752, + "startColumn": 1, + "charOffset": 33967, + "charLength": 224, + "snippet": { + "text": " await AdminPanel.promo_addpromo_naming_end.set()\r\n\r\n@dp.message_handler(state=AdminPanel.promo_addpromo_naming_end)\r\nasync def create_naming_promo(message: types.Message, state:FSMContext):\r\n cost = int(message.text)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fde5054a3d3ea1e09005d40171aabadcce200404334a6c2e48a9f738ef49b106" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E302 expected 2 blank lines, found 1", + "markdown": "PEP 8: E302 expected 2 blank lines, found 1" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1635, + "startColumn": 1, + "charOffset": 75064, + "charLength": 46, + "snippet": { + "text": "@dp.message_handler(state=MenuStates.help_end)" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1633, + "startColumn": 1, + "charOffset": 75025, + "charLength": 167, + "snippet": { + "text": " await MenuStates.help_end.set()\r\n\r\n@dp.message_handler(state=MenuStates.help_end)\r\nasync def handle_help_end(message: types.Message, state: FSMContext):\r\n try:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fde919700e365197adedbe6a9f1b60657a3c0f46b24e56003cdf7416f718254a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E203 whitespace before ':'", + "markdown": "PEP 8: E203 whitespace before ':'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 67, + "startColumn": 25, + "charOffset": 2623, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 65, + "startColumn": 1, + "charOffset": 2515, + "charLength": 180, + "snippet": { + "text": " self.client.table(self.table_name).insert(user.dict()).execute()\r\n \r\n def delete(self,user : User) -> None:\r\n try:\r\n if self.get(user.chat_id):\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fdeff09318d5b46684e994fb969be5b913b13bea48807c5e3cd32dd7e93194d8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1671, + "startColumn": 25, + "charOffset": 76704, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1669, + "startColumn": 1, + "charOffset": 76556, + "charLength": 297, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n\r\n@dp.message_handler(text = \"📨Обращения\", state = AdminPanel.admin_menu)\r\nasync def handle_report(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ff444c416a00d3b6f5726d65210cd22e2d5d657c9af0078f79649eb6903f5fcc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E265 block comment should start with '# '", + "markdown": "PEP 8: E265 block comment should start with '# '" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1375, + "startColumn": 1, + "charOffset": 62545, + "charLength": 121, + "snippet": { + "text": "#----------------------------------------------------------------------------------------------------------------------- " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1373, + "startColumn": 1, + "charOffset": 62402, + "charLength": 269, + "snippet": { + "text": "#-----------------------------------------------------------------------------------------------------------------------\r\n#Система промокодов\r\n#----------------------------------------------------------------------------------------------------------------------- \r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ff71140f3f9d7eacac26a436d41582fa8c14225b923c2293cfed15cf724fea55" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8Inspection", + "kind": "fail", + "level": "note", + "message": { + "text": "PEP 8: E251 unexpected spaces around keyword / parameter equals", + "markdown": "PEP 8: E251 unexpected spaces around keyword / parameter equals" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1762, + "startColumn": 46, + "charOffset": 80751, + "charLength": 1, + "snippet": { + "text": " " + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1760, + "startColumn": 1, + "charOffset": 80633, + "charLength": 224, + "snippet": { + "text": " ibback = KeyboardButton(text=\"⬅️Меню\")\r\n print(f\"{task['url']}\")\r\n ibgo = KeyboardButton(text=\"✅\", web_app = WebAppInfo(url = f'{task[\"url\"]}'))\r\n ikbmtasks.row(ibleft, ibgo, ibright)\r\n ikbmtasks.row(ibback)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fffe4e0f1be3ea48f2ccb9f6f8be6fcea3c9798d7dc0d588758996b57962f442" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 307, + "startColumn": 9, + "charOffset": 11920, + "charLength": 12, + "snippet": { + "text": "rightAnswers" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 305, + "startColumn": 1, + "charOffset": 11849, + "charLength": 198, + "snippet": { + "text": " numberPoints: dict = {}\r\n if rightAnswers == None:\r\n rightAnswers: dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r\n message.text = message.web_app_data.data\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1100b80a957495a7aedff9a482273dd112c3bf3f3bbc5eb3d18d50f38cdfcc08" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1638, + "startColumn": 9, + "charOffset": 75201, + "charLength": 11, + "snippet": { + "text": "Description" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1636, + "startColumn": 1, + "charOffset": 75112, + "charLength": 203, + "snippet": { + "text": "async def handle_help_end(message: types.Message, state: FSMContext):\r\n try:\r\n Description = message.text\r\n chat_id = message.chat.id\r\n telegram_name = message.from_user.username\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "43b1f4dc9a5232f4ed25cce17d96257a6188c1eecdc0fad75a1f8b792cf0820a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1093, + "startColumn": 5, + "charOffset": 48984, + "charLength": 12, + "snippet": { + "text": "numberPoints" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1091, + "startColumn": 1, + "charOffset": 48906, + "charLength": 190, + "snippet": { + "text": " counter = data.get(\"counter\")\r\n querylist = data.get(\"querylist\")\r\n numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5681fe341c3b9fcbd922c3d7dbcb6b7fd849c4a3e66e4eca8b4a239be1d3afed" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 581, + "startColumn": 5, + "charOffset": 25814, + "charLength": 3, + "snippet": { + "text": "FIO" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 579, + "startColumn": 1, + "charOffset": 25771, + "charLength": 140, + "snippet": { + "text": " detector = is_dirt()\r\n cnt = 0\r\n FIO = new_fullname.split()\r\n for word in range(len(FIO)):\r\n if FIO[word][0].istitle():\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "587fe0d6abe6cf0402736c8d9e22172010a1eaad4f4cc9db437b59d28d101842" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 301, + "startColumn": 5, + "charOffset": 11727, + "charLength": 12, + "snippet": { + "text": "rightAnswers" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 299, + "startColumn": 1, + "charOffset": 11639, + "charLength": 179, + "snippet": { + "text": " querylist = data.get(\"querylist\")\r\n numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r\n querylist = []\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "65cb6825563c00f1b6e808d6167a85e1a3343eb302279212053cf570f5ae49b6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 300, + "startColumn": 5, + "charOffset": 11682, + "charLength": 12, + "snippet": { + "text": "numberPoints" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 298, + "startColumn": 1, + "charOffset": 11604, + "charLength": 190, + "snippet": { + "text": " counter = data.get(\"counter\")\r\n querylist = data.get(\"querylist\")\r\n numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "91aed61b7f5c3d44e25c8c5f096d8bc0d2108d5b438e6772f48ec60596166509" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Function name should be lowercase", + "markdown": "Function name should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1887, + "startColumn": 11, + "charOffset": 85487, + "charLength": 24, + "snippet": { + "text": "handle_The_Last_Frontier" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1885, + "startColumn": 1, + "charOffset": 85388, + "charLength": 221, + "snippet": { + "text": "# ВНИМАНИЕ! Данный handler ловит людей без состояния!\r\n@dp.message_handler(state= None)\r\nasync def handle_The_Last_Frontier(message: types.Message, state: FSMContext):\r\n sost = await state.get_state()\r\n print(sost)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c37d140c8a512e3d31182f3fb9564f1a8a84af095e0e77f76191438865ab5271" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1100, + "startColumn": 9, + "charOffset": 49221, + "charLength": 12, + "snippet": { + "text": "rightAnswers" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1098, + "startColumn": 1, + "charOffset": 49151, + "charLength": 196, + "snippet": { + "text": " numberPoints:dict = {}\r\n if rightAnswers == None:\r\n rightAnswers:dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r\n message.text = message.web_app_data.data\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d039c6f0b49de9d7a4d889bcc0f49ab69f05ce2d68517368d4b6945eed33625e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1231, + "startColumn": 5, + "charOffset": 55278, + "charLength": 3, + "snippet": { + "text": "FIO" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1229, + "startColumn": 1, + "charOffset": 55223, + "charLength": 121, + "snippet": { + "text": " name = message.text\r\n detector = is_dirt()\r\n FIO = name.split()\r\n cnt = 0\r\n for word in range(len(FIO)):\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d8761514863cb728bbadc51e14177e4764e202a56100117ead10afff9871b479" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1094, + "startColumn": 5, + "charOffset": 49029, + "charLength": 12, + "snippet": { + "text": "rightAnswers" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1092, + "startColumn": 1, + "charOffset": 48941, + "charLength": 179, + "snippet": { + "text": " querylist = data.get(\"querylist\")\r\n numberPoints = data.get(\"numberPoints\")\r\n rightAnswers = data.get(\"rightAnswers\")\r\n if querylist == None:\r\n querylist = []\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ddeb8a7d96a3a3e80bed3ea94be226f6fa33a330772d4530bced8e93572204b6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 305, + "startColumn": 9, + "charOffset": 11857, + "charLength": 12, + "snippet": { + "text": "numberPoints" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 303, + "startColumn": 1, + "charOffset": 11795, + "charLength": 149, + "snippet": { + "text": " querylist = []\r\n if numberPoints == None:\r\n numberPoints: dict = {}\r\n if rightAnswers == None:\r\n rightAnswers: dict = {}\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "de2b34670ae0efe71e36e64834db8824ff6d24923c0c7281c91ea51885c847f4" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1333, + "startColumn": 5, + "charOffset": 60571, + "charLength": 3, + "snippet": { + "text": "FIO" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1331, + "startColumn": 1, + "charOffset": 60510, + "charLength": 135, + "snippet": { + "text": " chat_id = message.chat.id\r\n detector = is_dirt()\r\n FIO = new_fullname.split()\r\n cnt = 0\r\n for word in range(len(FIO)):\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e08a5651cf6aa5976566994733d3037da24bb4a54a6b1230eca045488b12eb15" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyPep8NamingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Variable in function should be lowercase", + "markdown": "Variable in function should be lowercase" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1098, + "startColumn": 9, + "charOffset": 49159, + "charLength": 12, + "snippet": { + "text": "numberPoints" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1096, + "startColumn": 1, + "charOffset": 49097, + "charLength": 147, + "snippet": { + "text": " querylist = []\r\n if numberPoints == None:\r\n numberPoints:dict = {}\r\n if rightAnswers == None:\r\n rightAnswers:dict = {}\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fbe3a6ac3e7f045612001f6110bb40e28483f11b27ece9843a87cee656f33954" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingBuiltinsInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows built-in name 'id'", + "markdown": "Shadows built-in name 'id'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 7, + "startColumn": 16, + "charOffset": 130, + "charLength": 2, + "snippet": { + "text": "id" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 5, + "startColumn": 1, + "charOffset": 83, + "charLength": 79, + "snippet": { + "text": "class UserRepository(ABC):\r\n \r\n def get(self,id : str) -> User:\r\n ...\r\n \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "30d0c64f288af9ac517e6cb8255915346988b216c9e8052615d71815baa8d37c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingBuiltinsInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows built-in name 'id'", + "markdown": "Shadows built-in name 'id'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 14, + "startColumn": 18, + "charOffset": 364, + "charLength": 2, + "snippet": { + "text": "id" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 12, + "startColumn": 1, + "charOffset": 307, + "charLength": 125, + "snippet": { + "text": " self.table_name = table_name\r\n\r\n def get(self,id : str) -> User:\r\n try:\r\n chat_id:int = int(id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3e865bbe821993e1f79346b8f47af1b27cc469a3cdd80b20c479f3b9f57e7a77" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingBuiltinsInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows built-in name 'id'", + "markdown": "Shadows built-in name 'id'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/usersrepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 13, + "startColumn": 19, + "charOffset": 230, + "charLength": 2, + "snippet": { + "text": "id" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 11, + "startColumn": 1, + "charOffset": 201, + "charLength": 59, + "snippet": { + "text": " ...\r\n\r\n def delete(self,id : str) -> None:\r\n ...\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3f17f8a37373df79f3893f19c5a8c1e4354e432a41b1224bf807da20bd52753c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1607, + "startColumn": 9, + "charOffset": 73630, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1605, + "startColumn": 1, + "charOffset": 73564, + "charLength": 338, + "snippet": { + "text": " if tgu == None:\r\n nome = 'имени пользователя'\r\n url = 'https://ru.the-hitech.net/7264375-how-to-create-a-username-on-telegram'\r\n await bot.send_message(chat_id,\r\n f\"У вас нет \" + f\"[{nome}]({url})\" + f\" телеграм!Укажите его в своём профиле и тогда администрация сможет вам помочь.\",\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1773fe4cded7960c0357923e0b5014c36f3d9b3221ffdbfa439420bf61fd0662" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1570, + "startColumn": 9, + "charOffset": 71768, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1568, + "startColumn": 1, + "charOffset": 71690, + "charLength": 187, + "snippet": { + "text": " events_message = 'Мероприятия:'\r\n for event in response.data:\r\n url = 'https://leader-id.ru/events/'\r\n url = url +str(event['id'])\r\n name = event['full_name']\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "40c81260e62af0113ed62df94641effa2af7a902df1c67b109cfc5f9cf095756" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1126, + "startColumn": 9, + "charOffset": 50586, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1124, + "startColumn": 1, + "charOffset": 50488, + "charLength": 205, + "snippet": { + "text": " querydict_dump: str = json.dumps(querydict)\r\n url = url + querydict_dump \r\n url = url.replace(' ','%20')\r\n url = url.replace('\"', '%22')\r\n data = await state.get_data()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4bd865c662aaa0f9b5d100572c828781479c74a5740c9e64d7106cb5f449cc25" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1101, + "startColumn": 5, + "charOffset": 49249, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1099, + "startColumn": 1, + "charOffset": 49183, + "charLength": 202, + "snippet": { + "text": " if rightAnswers == None:\r\n rightAnswers:dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r\n message.text = message.web_app_data.data\r\n data = json.loads(message.text)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6eb50b14618d280ba37b65e444d9f39ee6a595ab41609096ae97d0ddf99ada5d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 308, + "startColumn": 5, + "charOffset": 11949, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 306, + "startColumn": 1, + "charOffset": 11882, + "charLength": 202, + "snippet": { + "text": " if rightAnswers == None:\r\n rightAnswers: dict = {}\r\n url = 'https://survey-web-app.pages.dev/view?json='\r\n message.text = message.web_app_data.data\r\n data = json.loads(message.text)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "706ac765e95a95a4deb5ecc7407ed8c3347b48a2d000dab547db00a8563793f8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 332, + "startColumn": 9, + "charOffset": 13232, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 330, + "startColumn": 1, + "charOffset": 13124, + "charLength": 213, + "snippet": { + "text": " querydict = {\"surveyData\": querylist}\r\n querydict_dump: str = json.dumps(querydict)\r\n url = url + querydict_dump\r\n url = url.replace(' ', '%20')\r\n url = url.replace('\"', '%22')\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7d8bdfa447a2f44b298d80588f64dd1ddb83e0b937e3a008aaf9d84d00a68780" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 333, + "startColumn": 9, + "charOffset": 13268, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 331, + "startColumn": 1, + "charOffset": 13171, + "charLength": 205, + "snippet": { + "text": " querydict_dump: str = json.dumps(querydict)\r\n url = url + querydict_dump\r\n url = url.replace(' ', '%20')\r\n url = url.replace('\"', '%22')\r\n data = await state.get_data()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "93b589eb8e02a7fc441c69dc743ce1c702e338f431a93bb24a913e06bf3ba6fa" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1125, + "startColumn": 9, + "charOffset": 50549, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1123, + "startColumn": 1, + "charOffset": 50442, + "charLength": 212, + "snippet": { + "text": " querydict = {\"surveyData\":querylist}\r\n querydict_dump: str = json.dumps(querydict)\r\n url = url + querydict_dump \r\n url = url.replace(' ','%20')\r\n url = url.replace('\"', '%22')\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "adbd3c4b6b746dc231074aed618561688337aa3b303f1bd6036bba07ef358da7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1571, + "startColumn": 9, + "charOffset": 71814, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1569, + "startColumn": 1, + "charOffset": 71727, + "charLength": 197, + "snippet": { + "text": " for event in response.data:\r\n url = 'https://leader-id.ru/events/'\r\n url = url +str(event['id'])\r\n name = event['full_name']\r\n date_start = event['date_start'][:16]\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c9c46418cb19ad3436ff7a01222112f8dd9ad74ab1a71784c9f0ef878a84cf63" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1016, + "startColumn": 9, + "charOffset": 45185, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1014, + "startColumn": 1, + "charOffset": 45116, + "charLength": 136, + "snippet": { + "text": " for promo in promos.data:\r\n name = promo['name']\r\n url = promo['url']\r\n\r\n name_parsed = f'{name}'\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d1231fe4be9d0bf57afe28f081e229d769b92f93822f4aa5405e14eedc410322" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1127, + "startColumn": 9, + "charOffset": 50624, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1125, + "startColumn": 1, + "charOffset": 50541, + "charLength": 185, + "snippet": { + "text": " url = url + querydict_dump \r\n url = url.replace(' ','%20')\r\n url = url.replace('\"', '%22')\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d59fe9a8f6dbd263270b5b2db22df75fd2aa6b8606042aa7e1f4f2e6e16890bc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 334, + "startColumn": 9, + "charOffset": 13307, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 332, + "startColumn": 1, + "charOffset": 13224, + "charLength": 185, + "snippet": { + "text": " url = url + querydict_dump\r\n url = url.replace(' ', '%20')\r\n url = url.replace('\"', '%22')\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d7095b3738a34c5f7537197f55e5199ad18b0274d2af89d9c6c1ff708afe9155" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyShadowingNamesInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Shadows name 'url' from outer scope", + "markdown": "Shadows name 'url' from outer scope" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 225, + "startColumn": 9, + "charOffset": 8152, + "charLength": 3, + "snippet": { + "text": "url" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 223, + "startColumn": 1, + "charOffset": 8083, + "charLength": 136, + "snippet": { + "text": " for promo in promos.data:\r\n name = promo['name']\r\n url = promo['url']\r\n\r\n name_parsed = f'{name}'\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "fddcdc6bad7ce34ab0de6b0cda32604167ada52d09a525ee3471173139be65fa" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyTypeCheckerInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Expected type 'User', got 'None' instead", + "markdown": "Expected type 'User', got 'None' instead" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 58, + "startColumn": 20, + "charOffset": 2280, + "charLength": 4, + "snippet": { + "text": "None" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 56, + "startColumn": 1, + "charOffset": 2164, + "charLength": 171, + "snippet": { + "text": " except Exception as e:\r\n print(f\"Error get info about user: {chat_id}: {e}\")\r\n return None\r\n \r\n def set(self,user : User) -> None:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "15711725dad4de481fc76ce416bceccee4c0d1624e8951abfade7f9d8e1b98f9" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyTypeCheckerInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Expected type 'str', got 'int' instead", + "markdown": "Expected type 'str', got 'int' instead" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 69, + "startColumn": 25, + "charOffset": 2680, + "charLength": 12, + "snippet": { + "text": "user.chat_id" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 67, + "startColumn": 1, + "charOffset": 2599, + "charLength": 226, + "snippet": { + "text": " def delete(self,user : User) -> None:\r\n try:\r\n if self.get(user.chat_id):\r\n self.client.table(self.table_name).delete().eq('chat_id',user.chat_id).execute()\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a2bac809752be795cc73196a9d780ff8eec608ad653e2c7bb1d35345aa49b888" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyTypeCheckerInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Expected type 'str', got 'int' instead", + "markdown": "Expected type 'str', got 'int' instead" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 61, + "startColumn": 21, + "charOffset": 2356, + "charLength": 12, + "snippet": { + "text": "user.chat_id" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 59, + "startColumn": 1, + "charOffset": 2286, + "charLength": 207, + "snippet": { + "text": " \r\n def set(self,user : User) -> None:\r\n if self.get(user.chat_id): \r\n self.client.table(self.table_name).update(user.dict()).eq('chat_id',user.chat_id).execute()\r\n else:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ca315ea4efd979262740fd5b53224ef96db1d483553208c6427cf5fb304d4077" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyTypeCheckerInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Expected to return 'str', got no return", + "markdown": "Expected to return 'str', got no return" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 58, + "startColumn": 45, + "charOffset": 2277, + "charLength": 3, + "snippet": { + "text": "str" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 56, + "startColumn": 1, + "charOffset": 2167, + "charLength": 161, + "snippet": { + "text": " print(f\"Error updating user balance for {tgusr}: {e}\")\r\n\r\ndef delete_user_data_by_id(chat_id: int) -> str:\r\n try:\r\n chat_id_str = str(chat_id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ea8659d8c79becbdd02b8c9a24cfd396c42bb4f75484de1b8e4b82b85b38a257" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnboundLocalVariableInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Local variable 'counter' might be referenced before assignment", + "markdown": "Local variable 'counter' might be referenced before assignment" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 284, + "startColumn": 8, + "charOffset": 10846, + "charLength": 7, + "snippet": { + "text": "counter" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 282, + "startColumn": 1, + "charOffset": 10684, + "charLength": 331, + "snippet": { + "text": " await bot.send_message(chat_id, \"Введенное значение должно быть числом > 0\")\r\n await EventMakerPanel.taskmenu_collection_counterwait.set()\r\n if counter <= 0:\r\n await bot.send_message(chat_id, \"Введенное значение должно быть числом > 0\")\r\n await EventMakerPanel.taskmenu_collection_counterwait.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3b429aac6b59475117ad6fc25f9074184570b2f8d1d530dffa69e9447755f68b" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnboundLocalVariableInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Local variable 'counter' might be referenced before assignment", + "markdown": "Local variable 'counter' might be referenced before assignment" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1079, + "startColumn": 8, + "charOffset": 48197, + "charLength": 7, + "snippet": { + "text": "counter" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1077, + "startColumn": 1, + "charOffset": 48041, + "charLength": 319, + "snippet": { + "text": " await bot.send_message(chat_id,\"Введенное значение должно быть числом > 0\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n if counter <= 0:\r\n await bot.send_message(chat_id,\"Введенное значение должно быть числом > 0\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "44b3fd93d6bbf33fe8531037979452b21f0ddbc115da61a275cc3385ed27545a" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnboundLocalVariableInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Local variable 'chat_id' might be referenced before assignment", + "markdown": "Local variable 'chat_id' might be referenced before assignment" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/repository/SupabaseUserRepository.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 57, + "startColumn": 49, + "charOffset": 2244, + "charLength": 7, + "snippet": { + "text": "chat_id" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 55, + "startColumn": 1, + "charOffset": 2149, + "charLength": 146, + "snippet": { + "text": " )\r\n except Exception as e:\r\n print(f\"Error get info about user: {chat_id}: {e}\")\r\n return None\r\n \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ef267900fc0a9983bd182f036e0030c4188b18aedddf9daca73ce1c2e84f808c" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'name' value is not used", + "markdown": "Local variable 'name' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1108, + "startColumn": 5, + "charOffset": 49575, + "charLength": 4, + "snippet": { + "text": "name" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1106, + "startColumn": 1, + "charOffset": 49483, + "charLength": 343, + "snippet": { + "text": " new_json_data = ast.literal_eval(new_json_data)\r\n data = await state.get_data()\r\n name = data.get(\"name\") \r\n numberPoints.update({new_json_data[\"questionId\"]:new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']:new_json_data['correctAnswer']})\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "056b465ffd6602e0ef04d3b51149147ae9d383d681a7c7a2d65d36cbbfb00108" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 669, + "startColumn": 52, + "charOffset": 30340, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 667, + "startColumn": 1, + "charOffset": 30216, + "charLength": 222, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"🗝️Промокоды\", state=AdminPanel.admin_menu)\r\nasync def admin_promocodes(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_menu.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "069d841d7dfc87257c93e4ce6495546185801be01c5098f6642a6c20ba19bbeb" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 398, + "startColumn": 63, + "charOffset": 16481, + "charLength": 16, + "snippet": { + "text": "state:FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 396, + "startColumn": 1, + "charOffset": 16285, + "charLength": 311, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"❗Обнулить баланс всех пользователей❗\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def update_users_balance_confirm(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance_confirm.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0c0dbedc36c55789e748608e640094cad4e6a0ff60fa6dfff3778d9dd94ea735" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1704, + "startColumn": 49, + "charOffset": 78083, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1702, + "startColumn": 1, + "charOffset": 77959, + "charLength": 217, + "snippet": { + "text": "\r\n@dp.message_handler(text = \"Удалить обращение\", state=AdminPanel.ticket)\r\nasync def delete_ticket(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await AdminPanel.ticket_delete.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "105a881cfed75f5909119c40dce97b562ebf9d1fd958278e2833955ecdf931ea" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 446, + "startColumn": 55, + "charOffset": 19113, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 444, + "startColumn": 1, + "charOffset": 18927, + "charLength": 269, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Получить информацию о пользователе\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_get_user_info(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user = users.get(chat_id) \r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1338379f4cad2076586acd27bc46c95e5445c954132893c0735e358e9ce90594" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1681, + "startColumn": 49, + "charOffset": 77277, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1679, + "startColumn": 1, + "charOffset": 77151, + "charLength": 208, + "snippet": { + "text": "\r\n@dp.message_handler(text='Действующие обращения', state=AdminPanel.ticket)\r\nasync def check_tickets(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user = users.get(chat_id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1539e178176ad140c2e8ea677f5cc498862104fa818891beb866a1372d8ce13d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 956, + "startColumn": 54, + "charOffset": 42498, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 954, + "startColumn": 1, + "charOffset": 42375, + "charLength": 223, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"📊Рейтинг\", state=AdminPanel.admin_menu)\r\nasync def admin_rating_board(message: types.Message, state: FSMContext):\r\n await AdminPanel.rating_board.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "1fbe96f7c57a3965ced230e4fb8b748ffa20d4c307a8f4b807cd53176ae11f12" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'e' value is not used", + "markdown": "Local variable 'e' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 271, + "startColumn": 25, + "charOffset": 10235, + "charLength": 1, + "snippet": { + "text": "e" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 269, + "startColumn": 1, + "charOffset": 10057, + "charLength": 351, + "snippet": { + "text": " await bot.send_message(chat_id, \"Введите количество вопросов в коллекции:\")\r\n await EventMakerPanel.taskmenu_collection_counterwait.set()\r\n except Exception as e:\r\n await bot.send_message(chat_id, \"Произошла ошибка, отправьте пожалуйста фотографию в хорошем качестве.\")\r\n await EventMakerPanel.taskmenu_photowait.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "20b5bdf43f66707ae68f4faf65b0a564141b6970193d4484639ee0ca93d82b29" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'user' value is not used", + "markdown": "Local variable 'user' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 737, + "startColumn": 5, + "charOffset": 33282, + "charLength": 4, + "snippet": { + "text": "user" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 735, + "startColumn": 1, + "charOffset": 33114, + "charLength": 254, + "snippet": { + "text": "async def get_naming_promo(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите имя промокода\", reply_markup=types.ReplyKeyboardRemove())\r\n user = users.get(message.chat.id)\r\n await AdminPanel.promo_addpromo_naming.set()\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "24203bb150b5ef324cbec058cb9a6ff9b7fcbaa234575ae16445080e41a73ee3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1150, + "startColumn": 49, + "charOffset": 51830, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1148, + "startColumn": 1, + "charOffset": 51729, + "charLength": 234, + "snippet": { + "text": "\r\n@dp.message_handler(Command('start'), state=None)\r\nasync def start_command(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user = users.get(id=chat_id) # Получение состояния пользователя из Supabase\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "25d2055a464abda2d1b8108c566b62c2f5fb0321cf62602ce37def3929c28f69" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'response' value is not used", + "markdown": "Local variable 'response' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 39, + "startColumn": 9, + "charOffset": 1331, + "charLength": 8, + "snippet": { + "text": "response" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 37, + "startColumn": 1, + "charOffset": 1249, + "charLength": 276, + "snippet": { + "text": "def update_user_fullname_by_tgusr(tgusr: str, full_name: str):\r\n try:\r\n response = supabase.table(table_name).update({'full_name': full_name}).eq('tgusr', tgusr).execute()\r\n print(f\"Updated user fullname for {tgusr}: {full_name}\")\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2b853433106ba491171ad138044f38fdd09e5fcf0a6116f98a6ef924aab78b01" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1737, + "startColumn": 55, + "charOffset": 79479, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1735, + "startColumn": 1, + "charOffset": 79354, + "charLength": 260, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=AdminPanel.ticket)\r\nasync def handle_tickets_back(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "2f8c75fb9679fed2488c06ff76f9865d5cfdb48b559a8078da739df60f4d99b6" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1591, + "startColumn": 47, + "charOffset": 72839, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1589, + "startColumn": 1, + "charOffset": 72747, + "charLength": 410, + "snippet": { + "text": "\r\n@dp.message_handler(state=MenuStates.help)\r\nasync def handle_help(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, f\"Привет\\\\! Если у тебя есть какие\\\\-то проблемы или пожелания \\\\, то смелее нажимай на кнопку \" + f\"{code('📨Создать заявку')}\" + f\" и администратор с радостью тебе поможет\\\\! \", reply_markup=userhelp, parse_mode = 'MarkdownV2')\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "302491daa99f523f185769ee4885cbfe0dafd52508246ac66bb70db8a6b284f0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'userinfo' value is not used", + "markdown": "Local variable 'userinfo' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 623, + "startColumn": 9, + "charOffset": 27996, + "charLength": 8, + "snippet": { + "text": "userinfo" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 621, + "startColumn": 1, + "charOffset": 27928, + "charLength": 281, + "snippet": { + "text": " username = message.text # получаем username\r\n try:\r\n userinfo = users.get(username)\r\n await state.update_data(username=username) # сохраняем username в данных состояния\r\n await AdminPanel.change_user_agestart.set() # переходим к следующему состоянию\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "30589a5d361961ea18c4ec208995480dd13283f8a2cbd0291b56903c9d308b86" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 355, + "startColumn": 51, + "charOffset": 14322, + "charLength": 16, + "snippet": { + "text": "state:FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 353, + "startColumn": 1, + "charOffset": 14204, + "charLength": 224, + "snippet": { + "text": "\r\n@dp.message_handler(text = \"⬅️Меню\", state=EventMakerPanel.menu)\r\nasync def back_from_event(message: types.Message, state:FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "3326a738833e1d92513fa1c6cc9365f9af6c7868b147495fccace83a138c30de" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1485, + "startColumn": 50, + "charOffset": 67340, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1483, + "startColumn": 1, + "charOffset": 67242, + "charLength": 176, + "snippet": { + "text": "\r\n@dp.message_handler(state=MenuStates.profile)\r\nasync def handle_profile(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n select = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "408caea62d7f3876b7c05c4f3e8e8b505cc48dfd6e64e3bba2667d0068566243" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 407, + "startColumn": 55, + "charOffset": 17037, + "charLength": 16, + "snippet": { + "text": "state:FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 405, + "startColumn": 1, + "charOffset": 16921, + "charLength": 211, + "snippet": { + "text": "\r\n@dp.message_handler(state=AdminPanel.update_users_balance)\r\nasync def update_users_balance(message: types.Message,state:FSMContext):\r\n await AdminPanel.update_users_balance.set()\r\n select = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4465a2c6b3529675f69e2c2937584877d21e42a12cfb381d036236ad63fad921" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 430, + "startColumn": 53, + "charOffset": 18176, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 428, + "startColumn": 1, + "charOffset": 17996, + "charLength": 285, + "snippet": { + "text": "# Хендлер для кнопки ️Изменить пользователя\r\n@dp.message_handler(text=\"⚙️Изменить пользователя\", state=AdminPanel.admin_menu)\r\nasync def admin_change_user(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_start.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4bcb3f412712de5e29d1e4ae65bf9669a7a62fe97c58d6062e8781d872bde4ab" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'name' value is not used", + "markdown": "Local variable 'name' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 315, + "startColumn": 5, + "charOffset": 12274, + "charLength": 4, + "snippet": { + "text": "name" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 313, + "startColumn": 1, + "charOffset": 12182, + "charLength": 321, + "snippet": { + "text": " new_json_data = ast.literal_eval(new_json_data)\r\n data = await state.get_data()\r\n name = data.get(\"name\")\r\n numberPoints.update({new_json_data[\"questionId\"]: new_json_data[\"numberPoints\"]}) # numberPoints:correctAnswer\r\n rightAnswers.update({new_json_data['questionId']: new_json_data['correctAnswer']})\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4f7de69e26f13a6ad8a6b591caca5eb625c8af7fad2e1b3fd1e9d16c6fbde6cc" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 677, + "startColumn": 58, + "charOffset": 30717, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 675, + "startColumn": 1, + "charOffset": 30588, + "charLength": 230, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Добавить QR\", state=AdminPanel.promo_menu)\r\nasync def admin_promocodes_addqr(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_qrstart.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "502c37f38d595e9824e2c84fa37574a64797e21a00430611aa70b3bdc1551274" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 186, + "startColumn": 44, + "charOffset": 6456, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 184, + "startColumn": 1, + "charOffset": 6332, + "charLength": 330, + "snippet": { + "text": "\r\n@dp.message_handler(text='Удалить коллекцию', state=EventMakerPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите пожалуйста имя коллекции для её удаления\", reply_markup=types.ReplyKeyboardRemove())\r\n await EventMakerPanel.taskmenu_collection_delete_select.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6145c356cfb0b0461ab964e263577566309405427d7ac0dd7ff84384d3326675" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'e' value is not used", + "markdown": "Local variable 'e' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1066, + "startColumn": 25, + "charOffset": 47598, + "charLength": 1, + "snippet": { + "text": "e" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1064, + "startColumn": 1, + "charOffset": 47426, + "charLength": 339, + "snippet": { + "text": " await bot.send_message(chat_id,\"Введите количество вопросов в коллекции:\")\r\n await AdminPanel.taskmenu_collection_counterwait.set()\r\n except Exception as e:\r\n await bot.send_message(chat_id,\"Произошла ошибка, отправьте пожалуйста фотографию в хорошем качестве.\")\r\n await AdminPanel.taskmenu_photowait.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "63c4d36b1c863e05230ac446d5487a0fbce666e712ee3163fc859735a1da0c1c" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'response' value is not used", + "markdown": "Local variable 'response' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 53, + "startColumn": 9, + "charOffset": 1979, + "charLength": 8, + "snippet": { + "text": "response" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 51, + "startColumn": 1, + "charOffset": 1899, + "charLength": 267, + "snippet": { + "text": "def update_user_balance_by_tgusr(tgusr: str, balance : int):\r\n try:\r\n response = supabase.table(table_name).update({'balance': balance}).eq('tgusr', tgusr).execute()\r\n print(f\"Updated user balance for {tgusr}: {balance}\")\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "668bc15ccf1562aa64ee6a4e8d2cbbda83975957cb104f2c5a8713e8fdfa7777" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 980, + "startColumn": 44, + "charOffset": 43619, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 978, + "startColumn": 1, + "charOffset": 43500, + "charLength": 320, + "snippet": { + "text": "\r\n@dp.message_handler(text='Удалить коллекцию', state=AdminPanel.taskmenu)\r\nasync def del_coll(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите пожалуйста имя коллекции для её удаления\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.taskmenu_collection_delete_select.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6c02a233fd67bdaf5cba9286c2051fa8241f168e11c74b7b920f394375675be0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 972, + "startColumn": 52, + "charOffset": 43255, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 970, + "startColumn": 1, + "charOffset": 43126, + "charLength": 265, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"📝Создать задание\", state=AdminPanel.admin_menu)\r\nasync def admin_task_maker(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вошли в редактор заданий\", reply_markup=admtasks)\r\n await AdminPanel.taskmenu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6cf3700282e473830672b70b7c2c28ddb8d519211f3d3cb27d068e3abbceb252" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1295, + "startColumn": 52, + "charOffset": 58520, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1293, + "startColumn": 1, + "charOffset": 58383, + "charLength": 303, + "snippet": { + "text": "\r\n@dp.callback_query_handler(text='back_to_menu', state = MenuStates.promocodestart)\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню промокодов.\", reply_markup=promo_kb)\r\n await MenuStates.promocode.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "6eacd0d8e20b36696033781be06b29416833dbf8669d6ee316b2e58b79bfdcda" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1211, + "startColumn": 62, + "charOffset": 54531, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1209, + "startColumn": 1, + "charOffset": 54395, + "charLength": 226, + "snippet": { + "text": "\r\n@dp.callback_query_handler(state=RegistrationStates.waiting_for_gender)\r\nasync def handle_gender_callback(query: types.CallbackQuery, state: FSMContext):\r\n chat_id = query.message.chat.id\r\n gender = query.data.lower()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "70806aa4c59bb1ee33e7757b353b47bba39c7c02a389b840c3d3b6478c4b3824" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 612, + "startColumn": 57, + "charOffset": 27465, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 610, + "startColumn": 1, + "charOffset": 27295, + "charLength": 274, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Изменить возраст\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_change_user_age(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_age.set()\r\n admin = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "70e865be408e6ac2a3945d09211de83d8a8f49e7ee0c812c33650fa9e66f46ec" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1177, + "startColumn": 46, + "charOffset": 52987, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1175, + "startColumn": 1, + "charOffset": 52877, + "charLength": 190, + "snippet": { + "text": "\r\n@dp.message_handler(state=RegistrationStates.waiting_for_age)\r\nasync def handle_age(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n user_age = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7a8ce72628ff6cc6a355e41666a4d0a7a0cee5e8d55fc12b2f66367fec4cbd4d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 849, + "startColumn": 46, + "charOffset": 38486, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 847, + "startColumn": 1, + "charOffset": 38372, + "charLength": 321, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Выдать права\",state = AdminPanel.rules)\r\nasync def give_rules(message: types.Message, state: FSMContext):\r\n await AdminPanel.rules_addmaker.set()\r\n await message.reply(\"Введите @username пользователя которому хотите выдать права ивент мейкера\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7c85fdcb52a536ff4af73d8121f5c9e67dc5845e561eba71f091f1777fa86097" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1458, + "startColumn": 56, + "charOffset": 66011, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1456, + "startColumn": 1, + "charOffset": 65882, + "charLength": 292, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=MenuStates.promocode)\r\nasync def back_from_promo_menu(message: types.Message, state: FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r\n await bot.send_message(message.chat.id, \"Вы вернулись в главное меню\", reply_markup=rkbm)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7f87e60b9d954e68348854957a7f9a1025ac88501e6a7e84126ca28a0e52ece0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1672, + "startColumn": 49, + "charOffset": 76802, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1670, + "startColumn": 1, + "charOffset": 76678, + "charLength": 358, + "snippet": { + "text": "\r\n@dp.message_handler(text = \"📨Обращения\", state = AdminPanel.admin_menu)\r\nasync def handle_report(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, \"Нажата кнопка обращений, здесь вы можете просмотреть действующие обращения от пользователей или удалить уже решённые. \", reply_markup=admreport)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "80b9de60e528dff45e3615f3b66f0405b1db1a6e46b0b764c539fd832366baa9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 798, + "startColumn": 48, + "charOffset": 36158, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 796, + "startColumn": 1, + "charOffset": 36034, + "charLength": 287, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Удалить промокод\", state=AdminPanel.promo_menu)\r\nasync def delete_promo(message: types.Message, state: FSMContext):\r\n await AdminPanel.promo_delpromo.set()\r\n await message.reply(\"Введите промокод для удаления\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "83eb76d41a5e38755873fc544abccb2a9efb0aa3506c09ea008078af02066973" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1137, + "startColumn": 51, + "charOffset": 51211, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1135, + "startColumn": 1, + "charOffset": 51088, + "charLength": 258, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"⬅️Назад в меню\", state=AdminPanel.taskmenu)\r\nasync def back_from_rules(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "8fb3802011942d1c09be85f74d7297aff5172e4e7fcf6d01d6a84ed61cf1e27f" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1469, + "startColumn": 53, + "charOffset": 66592, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1467, + "startColumn": 1, + "charOffset": 66460, + "charLength": 226, + "snippet": { + "text": "\r\n@dp.message_handler(text =\"📊Рейтинг\", state=MenuStates.waiting_for_profile)\r\nasync def user_rating_board(message: types.Message, state: FSMContext):\r\n await MenuStates.rating.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9256ce6c6ee7eaa26cdceda55a8a11e10290ba323e710b45212be58353bd05d2" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'tgus' value is not used", + "markdown": "Local variable 'tgus' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1614, + "startColumn": 9, + "charOffset": 74125, + "charLength": 4, + "snippet": { + "text": "tgus" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1612, + "startColumn": 1, + "charOffset": 74054, + "charLength": 169, + "snippet": { + "text": " await MenuStates.waiting_for_profile.set()\r\n else:\r\n tgus = '@' + tgu\r\n tgus = '@' + tgu\r\n # Проверяем, есть ли у пользователя предыдущие заявки\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "92e4184fde41d24ad508dee73d4ac58af0ac34f90acad32432e4d4cea0c446b5" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1204, + "startColumn": 49, + "charOffset": 54174, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1202, + "startColumn": 1, + "charOffset": 54058, + "charLength": 217, + "snippet": { + "text": "\r\n@dp.message_handler(state=RegistrationStates.waiting_for_gender)\r\nasync def handle_gender(message: types.Message, state: FSMContext):\r\n gender = message.text.lower()\r\n if gender not in [\"мужской\", \"женский\"]:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "92f4146badd06ca21f53779c8f87fc7335a6faa05db76bd2d8cc9ee68fbf78d3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1311, + "startColumn": 67, + "charOffset": 59393, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1309, + "startColumn": 1, + "charOffset": 59269, + "charLength": 202, + "snippet": { + "text": "\r\n@dp.message_handler(state=ProlfileStates.edit_profile)\r\nasync def handle_waiting_for_edit_profile(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n select = message.text\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9467926ea5d92e6ae77d8aa185eb7c268fb84701808b6cce9f27dd6aa7d5ae68" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'response' value is not used", + "markdown": "Local variable 'response' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 32, + "startColumn": 9, + "charOffset": 988, + "charLength": 8, + "snippet": { + "text": "response" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 30, + "startColumn": 1, + "charOffset": 899, + "charLength": 283, + "snippet": { + "text": " try:\r\n chat_id_str = str(chat_id) # Преобразование chat_id в строку\r\n response = supabase.table(table_name).update({'user_state': state}).eq('chat_id', chat_id_str).execute()\r\n print(f\"Updated user state for {chat_id}: {state}\")\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "94b186c99f2b6599655c9c8018ecd272edb87d031ea33414d4ed81a22df2a155" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 161, + "startColumn": 49, + "charOffset": 5440, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 159, + "startColumn": 1, + "charOffset": 5338, + "charLength": 209, + "snippet": { + "text": "\r\n@dp.message_handler(commands=['event'], state='*')\r\nasync def event_command(message: types.Message, state: FSMContext):\r\n with open('roles.json') as f:\r\n event_roles = json.load(f)['event_makers']\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9646be1d11ae1185b2eae30995df4bf8cf7ec3a2e72bae30f3c750850720b9c0" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 942, + "startColumn": 51, + "charOffset": 41830, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 940, + "startColumn": 1, + "charOffset": 41713, + "charLength": 224, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"⬅️Меню\", state=AdminPanel.admin_menu)\r\nasync def admin_menu_back(message: types.Message, state: FSMContext):\r\n await MenuStates.waiting_for_profile.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "97684a45d8f542544b572775cf67b3d2416c61a53fe0f8ec70ed28e01485fab7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1662, + "startColumn": 52, + "charOffset": 76222, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1660, + "startColumn": 1, + "charOffset": 76031, + "charLength": 290, + "snippet": { + "text": "\r\n@dp.message_handler(text = \"⬅️Назад в меню\", state=[MenuStates.help,MenuStates.help_start,MenuStates.help_ender,MenuStates.help_cancel])\r\nasync def handle_help_back(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await MenuStates.waiting_for_profile.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "984c8e368c38ad7cc438866b7dcc26eaad813dd18e77e064717ae54cf4fad8a8" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 841, + "startColumn": 49, + "charOffset": 38054, + "charLength": 16, + "snippet": { + "text": "state:FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 839, + "startColumn": 1, + "charOffset": 37928, + "charLength": 218, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"👨‍🚀Организаторы\", state=AdminPanel.admin_menu)\r\nasync def give_ruleskbm(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "9b3aca32c35526285b03419c7540d4a0a5c9c4078f30c88dca86631afbb3f527" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 827, + "startColumn": 52, + "charOffset": 37416, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 825, + "startColumn": 1, + "charOffset": 37201, + "charLength": 350, + "snippet": { + "text": "# Хедлер для бека в меню админа\r\n@dp.message_handler(text=\"⬅️Админ меню\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end, AdminPanel.promo_menu])\r\nasync def admin_backtomenu(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a290d7f64733565db3037b5b35961ee446889c6064b7b35a4058609f5aa3aaf7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1029, + "startColumn": 46, + "charOffset": 45736, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1027, + "startColumn": 1, + "charOffset": 45615, + "charLength": 290, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Создать коллекцию\", state=AdminPanel.taskmenu)\r\nasync def admin_make(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id,f\"Введите название коллекции заданий:\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "af824c5041a21aee459983d02554a08453124ae5d3f28059330305369b50f003" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'tgusr' value is not used", + "markdown": "Local variable 'tgusr' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1641, + "startColumn": 9, + "charOffset": 75324, + "charLength": 5, + "snippet": { + "text": "tgusr" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1639, + "startColumn": 1, + "charOffset": 75229, + "charLength": 156, + "snippet": { + "text": " chat_id = message.chat.id\r\n telegram_name = message.from_user.username\r\n tgusr = telegram_name\r\n\r\n tgusr = \"@\" + telegram_name\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b224ab24e63454ef4ff334809f9ed0c8de0dc583e40017d43b35e7e492f64a6b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 771, + "startColumn": 46, + "charOffset": 34879, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 769, + "startColumn": 1, + "charOffset": 34756, + "charLength": 296, + "snippet": { + "text": "\r\n@dp.message_handler(text ='Добавить промокод',state=AdminPanel.promo_menu)\r\nasync def get_usages(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите количество использований:\", reply_markup=types.ReplyKeyboardRemove())\r\n await AdminPanel.promo_addpromousages.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b94a4ecd0dbf3f6e8e443ac297b9f1569b44275db8ab4c58db34c2d25ee6af6e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 501, + "startColumn": 61, + "charOffset": 21806, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 499, + "startColumn": 1, + "charOffset": 21633, + "charLength": 384, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Изменить баланс\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_change_user_balance(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_balancestart.set()\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "bac33b3925f4642babd98655393acffde7cbfe8ccba8dfcffc15caa3c31fe10e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 934, + "startColumn": 51, + "charOffset": 41467, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 932, + "startColumn": 1, + "charOffset": 41349, + "charLength": 253, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"⬅️Админ меню\", state=AdminPanel.rules)\r\nasync def back_from_rules(message: types.Message, state: FSMContext):\r\n await message.reply(\"Вы вернулись в админ меню\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "bf006dbc742ee8cbc2cd7cecd4c4f4e3f2c274696f9b58b0fab49af8d36bd14d" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'userinfo' value is not used", + "markdown": "Local variable 'userinfo' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 512, + "startColumn": 9, + "charOffset": 22368, + "charLength": 8, + "snippet": { + "text": "userinfo" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 510, + "startColumn": 1, + "charOffset": 22300, + "charLength": 203, + "snippet": { + "text": " username = message.text # получаем username\r\n try:\r\n userinfo = users.get(username)\r\n await state.update_data(username=username)\r\n await AdminPanel.change_user_balance.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c0d4ee5945e43cb757d279ddbfb327da00358aaf95b06bf9d8ca2ac4571e5ad9" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 375, + "startColumn": 49, + "charOffset": 15402, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 373, + "startColumn": 1, + "charOffset": 15300, + "charLength": 208, + "snippet": { + "text": "\r\n@dp.message_handler(commands=['admin'], state='*')\r\nasync def admin_command(message: types.Message, state: FSMContext):\r\n # Проверка, что пользователь в списке админов\r\n with open('roles.json') as f:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c3e6b50802fc6e156b978f93b150cf9fdfbbb9abfd94783a702739e59d2d0dd3" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'delete_query' value is not used", + "markdown": "Local variable 'delete_query' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1728, + "startColumn": 5, + "charOffset": 79053, + "charLength": 12, + "snippet": { + "text": "delete_query" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1726, + "startColumn": 1, + "charOffset": 79021, + "charLength": 218, + "snippet": { + "text": "\r\n # Удаление обращения\r\n delete_query = supabase.table('Report').delete().eq('tgusr', username).execute()\r\n\r\n await message.reply(f\"Обращение пользователя {username} успешно удалено\", reply_markup=admreport)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c484efbedce7a56e8bb08a4cafd812a7d61f228b8d7ad3964fa3d348ee48a833" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 881, + "startColumn": 53, + "charOffset": 39652, + "charLength": 16, + "snippet": { + "text": "state:FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 879, + "startColumn": 1, + "charOffset": 39531, + "charLength": 314, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Забрать права\", state=AdminPanel.rules)\r\nasync def del_from_eventers(message: types.Message, state:FSMContext):\r\n await AdminPanel.rules_delmaker.set()\r\n await message.reply(\"Введите @username пользователя у котрого хотите забрать права\",reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c6080c1e4be402a471ac2df6ce173102941597cdb1552094b096ec67dd8d3e1b" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1290, + "startColumn": 52, + "charOffset": 58197, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1288, + "startColumn": 1, + "charOffset": 58021, + "charLength": 361, + "snippet": { + "text": "\r\n@dp.callback_query_handler(text=\"cancel_user\", state=[ProlfileStates.edit_profile_name, ProlfileStates.edit_profile_age])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню редактирования профиля.\", reply_markup=menuedit)\r\n await ProlfileStates.edit_profile.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cd0c08edb0946925eb9645794eb953627f6fe0372117ad40280a526d51ffce0a" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 239, + "startColumn": 46, + "charOffset": 8748, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 237, + "startColumn": 1, + "charOffset": 8622, + "charLength": 296, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Создать коллекцию\", state=EventMakerPanel.taskmenu)\r\nasync def admin_make(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n await bot.send_message(chat_id, f\"Введите название коллекции заданий:\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "cf15efd86c36b68c127b316573e26ddff1b89eab65f78f0dc31ee87e3bea3337" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 176, + "startColumn": 49, + "charOffset": 6063, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 174, + "startColumn": 1, + "charOffset": 5938, + "charLength": 226, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"📝Создать задание\", state=EventMakerPanel.menu)\r\nasync def go_event_menu(message: types.Message, state: FSMContext):\r\n await EventMakerPanel.taskmenu.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d884de07b61b89285ac5d706b994d650eda8705c8a7e1c8074f2ebf74f704ae7" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 370, + "startColumn": 52, + "charOffset": 15131, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 368, + "startColumn": 1, + "charOffset": 14862, + "charLength": 437, + "snippet": { + "text": "# Хендлер отмены действия через кнопку\r\n@dp.callback_query_handler(text=\"cancel\", state=[AdminPanel.change_user_balance,AdminPanel.change_user_fullname,AdminPanel.change_user_agestart,AdminPanel.get_info_about_user])\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню админ-панели.\", reply_markup=admrkbm)\r\n await AdminPanel.admin_menu.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d8bee3224b89c94a0dacda99d094087f14180d5cf09fd9e479f8882d518de8bf" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 549, + "startColumn": 62, + "charOffset": 24214, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 547, + "startColumn": 1, + "charOffset": 24043, + "charLength": 383, + "snippet": { + "text": "\r\n@dp.message_handler(text=\"Изменить ФИО\", state=[AdminPanel.change_user_start, AdminPanel.change_user_end])\r\nasync def admin_change_user_fullname(message: types.Message, state: FSMContext):\r\n await AdminPanel.change_user_fullnamestart.set()\r\n await message.reply(\"Введите @username пользователя, которого необходимо отредактировать\", reply_markup=types.ReplyKeyboardRemove())\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d9e740d48ff6bb981375062e08d55e1509d865dd144b7f37bca2e47ea70fd5ce" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1300, + "startColumn": 52, + "charOffset": 58820, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1298, + "startColumn": 1, + "charOffset": 58687, + "charLength": 297, + "snippet": { + "text": "\r\n@dp.callback_query_handler(text=\"cancel_user_help\", state=MenuStates.help_end)\r\nasync def cancel_action(call: types.CallbackQuery, state: FSMContext):\r\n await call.message.answer(\"Действие отменено, вы вернулись в меню помощи.\", reply_markup=userhelp)\r\n await MenuStates.help_cancel.set()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e0fe336544bddabc1a060fe3547ae2a1e1eb1bccf0f39e3d4ba22a26f6bbb925" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'response' value is not used", + "markdown": "Local variable 'response' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 46, + "startColumn": 9, + "charOffset": 1665, + "charLength": 8, + "snippet": { + "text": "response" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 44, + "startColumn": 1, + "charOffset": 1593, + "charLength": 243, + "snippet": { + "text": "def update_user_age_by_tgusr(tgusr: str, age : int):\r\n try:\r\n response = supabase.table(table_name).update({'age': age}).eq('tgusr', tgusr).execute()\r\n print(f\"Updated user age for {tgusr}: {age}\")\r\n except Exception as e:\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e67d9b13c224cd63efbd6d81d533208057927c81194c9926847cae220b0edf57" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Local variable 'userinfo' value is not used", + "markdown": "Local variable 'userinfo' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 560, + "startColumn": 9, + "charOffset": 24780, + "charLength": 8, + "snippet": { + "text": "userinfo" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 558, + "startColumn": 1, + "charOffset": 24712, + "charLength": 281, + "snippet": { + "text": " username = message.text # получаем username\r\n try:\r\n userinfo = users.get(username)\r\n await state.update_data(username=username) # сохраняем username в данных состояния\r\n await AdminPanel.change_user_fullname.set() # переходим к следующему состоянию\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e84d5931d48032d156be10034c71e7d861137746412db8271b8f358ae9357612" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 735, + "startColumn": 52, + "charOffset": 33165, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 733, + "startColumn": 1, + "charOffset": 33040, + "charLength": 276, + "snippet": { + "text": "\r\n@dp.message_handler(text='Нэйминг-промо', state=AdminPanel.promo_menu)\r\nasync def get_naming_promo(message: types.Message, state: FSMContext):\r\n await message.reply(\"Введите имя промокода\", reply_markup=types.ReplyKeyboardRemove())\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ecb61bc2c6881c93261a9dd3668e8814d7df47084941e5937d70f585f426518e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1565, + "startColumn": 51, + "charOffset": 71567, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1563, + "startColumn": 1, + "charOffset": 71467, + "charLength": 222, + "snippet": { + "text": "\r\n@dp.message_handler(state=MenuStates.calendar)\r\nasync def handle_calendar(message: types.Message, state: FSMContext):\r\n chat_id = message.chat.id\r\n response = supabase.table('Event').select('*').limit(5).execute()\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "ecdbe02f1fca27752f53078d59999690ae115e0862daafd22f25a8d28c759120" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + }, + { + "ruleId": "PyUnusedLocalInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Parameter 'state' value is not used", + "markdown": "Parameter 'state' value is not used" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "main.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 346, + "startColumn": 59, + "charOffset": 13943, + "charLength": 17, + "snippet": { + "text": "state: FSMContext" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 344, + "startColumn": 1, + "charOffset": 13807, + "charLength": 233, + "snippet": { + "text": "\r\n@dp.message_handler(text='⬅️Назад в меню', state=EventMakerPanel.taskmenu)\r\nasync def back_to_event_main_menu(message: types.Message, state: FSMContext):\r\n await EventMakerPanel.menu.set()\r\n user = users.get(message.chat.id)\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f9fbf2876be1a95de3af1ba0312e7926a80d170968671bc05844bf3e41f9806e" + }, + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "Python" + ] + } + } + ], + "automationDetails": { + "id": "project/qodana/2024-01-30", + "guid": "45974875-8be7-41f7-ad90-0a1c788e6518", + "properties": { + "jobUrl": "https://github.com/Student-Labs-2023/BoilerPoint/actions/runs/7706546158" + } + }, + "newlineSequences": [ + "\r\n", + "\n" + ], + "properties": { + "qodana.sanity.results": [ + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'ValidationError'", + "markdown": "Unresolved reference 'ValidationError'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/models/users.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 33, + "charOffset": 32, + "charLength": 15, + "snippet": { + "text": "ValidationError" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 52, + "snippet": { + "text": "from pydantic import BaseModel, ValidationError\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0c2fe2c1e25c29179a5fab900a4d49b6f90b0554b6b17c4809a97b6ceb0fc212" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'ReplyKeyboardMarkup'", + "markdown": "Unresolved reference 'ReplyKeyboardMarkup'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 70, + "charOffset": 69, + "charLength": 19, + "snippet": { + "text": "ReplyKeyboardMarkup" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 173, + "snippet": { + "text": "from aiogram.types import InlineKeyboardMarkup,InlineKeyboardButton, ReplyKeyboardMarkup, KeyboardButton\r\nfrom aiogram.types.web_app_info import WebAppInfo\r\n#gender buttons\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "0f0996642f50f8974ac8210b312844b7211bbe6d5be4926347e3e1087cac721d" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'aiogram'", + "markdown": "Unresolved reference 'aiogram'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 6, + "charOffset": 5, + "charLength": 7, + "snippet": { + "text": "aiogram" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 88, + "snippet": { + "text": "from aiogram import Bot, types\r\nfrom Database.DataUsers import *\r\nfrom buttons import *\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "22125fe1302db9d68540e734877a48821cf29767438c97360a122c4acca06959" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "No module named 'gspread'", + "markdown": "No module named 'gspread'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 8, + "charOffset": 7, + "charLength": 7, + "snippet": { + "text": "gspread" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 114, + "snippet": { + "text": "import gspread\nfrom gspread import Cell, Client, Spreadsheet, Worksheet\nfrom supabase import Client, create_client" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "274c1b42b1e3778b9f1e70205c26a374d518acdaf62389601b86085bcd8e808d" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'types'", + "markdown": "Unresolved reference 'types'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 26, + "charOffset": 25, + "charLength": 5, + "snippet": { + "text": "types" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 88, + "snippet": { + "text": "from aiogram import Bot, types\r\nfrom Database.DataUsers import *\r\nfrom buttons import *\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "27e6f5d9fd16ac7bdbf1bde762b5fe29e9a1dd17ad656074e418777a14e0da07" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'gspread'", + "markdown": "Unresolved reference 'gspread'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 2, + "startColumn": 6, + "charOffset": 20, + "charLength": 7, + "snippet": { + "text": "gspread" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 130, + "snippet": { + "text": "import gspread\nfrom gspread import Cell, Client, Spreadsheet, Worksheet\nfrom supabase import Client, create_client\nimport schedule" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "4b271ea587d1c1a2fd9f0fae889d0ebe9d06defcea2270d2e66de898883e69c3" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'pydantic'", + "markdown": "Unresolved reference 'pydantic'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/models/users.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 6, + "charOffset": 5, + "charLength": 8, + "snippet": { + "text": "pydantic" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 52, + "snippet": { + "text": "from pydantic import BaseModel, ValidationError\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "5007533137c3a2dff61a34d5d6ce4245497f40a9ddade2e77e18113d9a036f6e" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'Client'", + "markdown": "Unresolved reference 'Client'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 3, + "startColumn": 22, + "charOffset": 64, + "charLength": 6, + "snippet": { + "text": "Client" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 91, + "snippet": { + "text": "import os\r\nfrom dotenv import load_dotenv\r\nfrom supabase import Client , create_client\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "75b1b9cdf02a980fb7e76da6bb64cea304e52e615c0886781bafca411e4d8025" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'BaseModel'", + "markdown": "Unresolved reference 'BaseModel'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/models/users.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 22, + "charOffset": 21, + "charLength": 9, + "snippet": { + "text": "BaseModel" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 52, + "snippet": { + "text": "from pydantic import BaseModel, ValidationError\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "7d892af0a92f891af1d7aa481ad8d3d36b5bca537dc7c4003a21a05465d5c78b" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'aiogram'", + "markdown": "Unresolved reference 'aiogram'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 6, + "charOffset": 5, + "charLength": 7, + "snippet": { + "text": "aiogram" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 173, + "snippet": { + "text": "from aiogram.types import InlineKeyboardMarkup,InlineKeyboardButton, ReplyKeyboardMarkup, KeyboardButton\r\nfrom aiogram.types.web_app_info import WebAppInfo\r\n#gender buttons\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "874c3e366dd35a3c7d28d217291bb6796ba91fbc0f396a5ed8e897247fa2bf20" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'Cell'", + "markdown": "Unresolved reference 'Cell'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 2, + "startColumn": 21, + "charOffset": 35, + "charLength": 4, + "snippet": { + "text": "Cell" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 130, + "snippet": { + "text": "import gspread\nfrom gspread import Cell, Client, Spreadsheet, Worksheet\nfrom supabase import Client, create_client\nimport schedule" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "94b74117687be51e4dabba521a8d8d1af8087bfa81911c8e7d2bff769afff489" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'load_dotenv'", + "markdown": "Unresolved reference 'load_dotenv'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 2, + "startColumn": 20, + "charOffset": 30, + "charLength": 11, + "snippet": { + "text": "load_dotenv" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 89, + "snippet": { + "text": "import os\r\nfrom dotenv import load_dotenv\r\nfrom supabase import Client , create_client\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a3701fe4785e6547a5be504b5a92b01d124abf775a9f5109c5c6f88fec840bc1" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused import statement 'Cell'", + "markdown": "Unused import statement `Cell`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "GoogleSheets/Google_sheets.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 2, + "startColumn": 21, + "charOffset": 35, + "charLength": 4, + "snippet": { + "text": "Cell" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 130, + "snippet": { + "text": "import gspread\nfrom gspread import Cell, Client, Spreadsheet, Worksheet\nfrom supabase import Client, create_client\nimport schedule" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "a44cd16d98d558745013117051f3e0dc55e513e60d7c6be29b3ea7bf0b3eb12e" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'InlineKeyboardMarkup'", + "markdown": "Unresolved reference 'InlineKeyboardMarkup'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 27, + "charOffset": 26, + "charLength": 20, + "snippet": { + "text": "InlineKeyboardMarkup" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 173, + "snippet": { + "text": "from aiogram.types import InlineKeyboardMarkup,InlineKeyboardButton, ReplyKeyboardMarkup, KeyboardButton\r\nfrom aiogram.types.web_app_info import WebAppInfo\r\n#gender buttons\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "b72f7a133887a80d04dd1b02d6e0747b90c9947146b14fc52c70e43bcaafad4e" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused import statement 'ValidationError'", + "markdown": "Unused import statement `ValidationError`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/models/users.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 33, + "charOffset": 32, + "charLength": 15, + "snippet": { + "text": "ValidationError" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 52, + "snippet": { + "text": "from pydantic import BaseModel, ValidationError\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c3e7b17eec00181d35ab4e60bb823ac8399532d2e371ae082ce885f469697f5a" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'Bot'", + "markdown": "Unresolved reference 'Bot'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 21, + "charOffset": 20, + "charLength": 3, + "snippet": { + "text": "Bot" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 88, + "snippet": { + "text": "from aiogram import Bot, types\r\nfrom Database.DataUsers import *\r\nfrom buttons import *\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "c743cfc30e33a9433b282807a950ad9a588f1c154658da810bcd99014652a2ad" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "warning", + "message": { + "text": "Unused import statement 'types'", + "markdown": "Unused import statement `types`" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "funcs.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 26, + "charOffset": 25, + "charLength": 5, + "snippet": { + "text": "types" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 88, + "snippet": { + "text": "from aiogram import Bot, types\r\nfrom Database.DataUsers import *\r\nfrom buttons import *\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "d042b9e7a55f6e14bf0cea175839220303ddfbf5765d90bca770050d5bb82ee0" + }, + "properties": { + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'supabase'", + "markdown": "Unresolved reference 'supabase'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 3, + "startColumn": 6, + "charOffset": 48, + "charLength": 8, + "snippet": { + "text": "supabase" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 91, + "snippet": { + "text": "import os\r\nfrom dotenv import load_dotenv\r\nfrom supabase import Client , create_client\r\n\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "dc6abac050449f31a4623088adb01e7176fb19f32862ae8dc34af887c3cff258" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'InlineKeyboardButton'", + "markdown": "Unresolved reference 'InlineKeyboardButton'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "buttons.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 1, + "startColumn": 48, + "charOffset": 47, + "charLength": 20, + "snippet": { + "text": "InlineKeyboardButton" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 173, + "snippet": { + "text": "from aiogram.types import InlineKeyboardMarkup,InlineKeyboardButton, ReplyKeyboardMarkup, KeyboardButton\r\nfrom aiogram.types.web_app_info import WebAppInfo\r\n#gender buttons\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "e52a3f58d0f4847fb7b3a3b39dd1c90bb785af007b49035c561c823ca28ceb29" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + { + "ruleId": "PyUnresolvedReferencesInspection", + "kind": "fail", + "level": "error", + "message": { + "text": "Unresolved reference 'dotenv'", + "markdown": "Unresolved reference 'dotenv'" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "Database/DataUsers.py", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 2, + "startColumn": 6, + "charOffset": 16, + "charLength": 6, + "snippet": { + "text": "dotenv" + }, + "sourceLanguage": "Python" + }, + "contextRegion": { + "startLine": 1, + "startColumn": 1, + "charOffset": 0, + "charLength": 89, + "snippet": { + "text": "import os\r\nfrom dotenv import load_dotenv\r\nfrom supabase import Client , create_client\r\n\r" + }, + "sourceLanguage": "Python" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v1": "f5129ef3d86298dd931d20a604df7af63b2ddc5e529d9553a8324d23fd259159" + }, + "properties": { + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + } + ], + "configProfile": "absent", + "deviceId": "200820300000000-3c3f-adba-b6ad-f53bc8911872", + "qodanaNewResultSummary": { + "moderate": 650, + "high": 20, + "total": 670 + } + } + } + ] +} \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index b8a5911..0f1814f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,62 @@ -aiogram -python-dotenv -ydb -boto3 -sqlite3 -pymongo \ No newline at end of file +aiogram==2.25.1 +aiohttp==3.8.5 +aiosignal==1.3.1 +annotated-types==0.5.0 +anyio==3.7.1 +async-timeout==4.0.2 +attrs==23.1.0 +Babel==2.9.1 +cachetools==5.3.1 +certifi==2023.7.22 +charset-normalizer==3.2.0 +colorama==0.4.6 +deprecation==2.1.0 +frozenlist==1.4.0 +google-api-core==2.11.1 +google-api-python-client==2.96.0 +google-auth==2.22.0 +google-auth-httplib2==0.1.0 +google-auth-oauthlib==1.0.0 +googleapis-common-protos==1.60.0 +gotrue==1.0.3 +gspread==5.10.0 +h11==0.14.0 +httpcore==0.17.3 +httplib2==0.22.0 +httpx==0.24.1 +idna==3.4 +magic-filter==1.0.11 +multidict==6.0.4 +oauthlib==3.2.2 +packaging==23.1 +Pillow==10.0.0 +postgrest==0.10.8 +protobuf==4.24.0 +pyasn1==0.5.0 +pyasn1-modules==0.3.0 +pydantic==2.1.1 +pydantic_core==2.4.0 +pyparsing==3.1.1 +pypng==0.20220715.0 +python-dateutil==2.8.2 +python-dotenv==1.0.0 +pytz==2023.3 +pyzbar==0.1.9 +qrcode==7.4.2 +realtime==1.0.0 +requests==2.31.0 +requests-oauthlib==1.3.1 +rsa==4.9 +schedule==1.2.0 +six==1.16.0 +sniffio==1.3.0 +storage3==0.5.4 +StrEnum==0.4.15 +supabase==1.0.4 +supafunc==0.2.3 +typing_extensions==4.7.1 +uritemplate==4.1.1 +urllib3==1.26.16 +websockets==10.4 +yarl==1.9.2 +dirt_tongue \ No newline at end of file diff --git a/roles.json b/roles.json new file mode 100644 index 0000000..c75460d --- /dev/null +++ b/roles.json @@ -0,0 +1 @@ +{"admins": ["5617565289", "415378656", "551929814", "390483228", "5141764938"], "event_makers": ["5617565289", "551929814", "390483228", "415378656"]} \ No newline at end of file diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/models/__init__.py b/src/models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/models/users.py b/src/models/users.py new file mode 100644 index 0000000..37a9a1c --- /dev/null +++ b/src/models/users.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel, ValidationError + + +class User(BaseModel): + + + chat_id: int = 0 + full_name: str = '' + gender: bool = None + user_state: str = '' + age: int = 0 + balance: int = 0 + tgusr: str = '' + diff --git a/src/repository/SupabaseUserRepository.py b/src/repository/SupabaseUserRepository.py new file mode 100644 index 0000000..0bdd34f --- /dev/null +++ b/src/repository/SupabaseUserRepository.py @@ -0,0 +1,76 @@ +from .usersrepository import UserRepository +from typing import List +from src.models.users import User +from supabase import Client, create_client + + + +class SupabaseUserRepository(UserRepository): + + def __init__(self,client:Client, table_name:str = 'UsersData'): + self.client = client + self.table_name = table_name + + def get(self,id : str) -> User: + try: + chat_id:int = int(id) + response = self.client.table(self.table_name).select('full_name','gender','age','balance','tgusr','user_state').eq('chat_id', chat_id).execute() + item = response.data[0] + user_data = item + pseudo = user_data.get('full_name', 'Unknown') + gender = user_data.get('gender') + gender = gender if gender != None else False + age = user_data.get('age', 'Unknown') + balance = user_data.get('balance') + user_state = user_data.get('user_state') + tgusr = user_data.get('tgusr') + return User( + chat_id=chat_id, + full_name=pseudo, + gender=gender, + user_state=user_state, + age=age, + balance=balance, + tgusr = tgusr + ) + except ValueError: + tgusr:str = id + response = self.client.table(self.table_name).select('full_name','gender','age','balance','chat_id','user_state').eq('tgusr', tgusr).execute() + item = response.data[0] + user_data = item + chat_id = user_data.get('chat_id') + pseudo = user_data.get('full_name', 'Unknown') + gender = user_data.get('gender', 'Unknown') + age = user_data.get('age', 'Unknown') + balance = user_data.get('balance') + user_state = user_data.get('user_state') + return User( + chat_id = chat_id, + full_name=pseudo, + gender=gender, + user_state=user_state, + age=age, + balance=balance, + tgusr = tgusr + ) + except Exception as e: + print(f"Error get info about user: {chat_id}: {e}") + return None + + def set(self,user : User) -> None: + if self.get(user.chat_id): + self.client.table(self.table_name).update(user.dict()).eq('chat_id',user.chat_id).execute() + else: + #insert + self.client.table(self.table_name).insert(user.dict()).execute() + + def delete(self,user : User) -> None: + try: + if self.get(user.chat_id): + self.client.table(self.table_name).delete().eq('chat_id',user.chat_id).execute() + except Exception as e: + print(f"Error delete user {user.chat_id} error : {e}") + + + def list(self,**kwargs) -> List[User]: + ... diff --git a/src/repository/__init__.py b/src/repository/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/repository/usersrepository.py b/src/repository/usersrepository.py new file mode 100644 index 0000000..cebbdd3 --- /dev/null +++ b/src/repository/usersrepository.py @@ -0,0 +1,17 @@ +from abc import ABC +from src.models.users import User +from typing import List + +class UserRepository(ABC): + + def get(self,id : str) -> User: + ... + + def set(self,user : User) -> None: + ... + + def delete(self,id : str) -> None: + ... + + def list(self,**kwargs) -> List[User]: + ... \ No newline at end of file diff --git a/state.py b/state.py deleted file mode 100644 index 3f165cd..0000000 --- a/state.py +++ /dev/null @@ -1,42 +0,0 @@ -from pymongo import MongoClient - -# Подключение к серверу MongoDB -client = MongoClient('mongodb://localhost:27017/') - -# Выбор базы данных -db = client['FSM'] - -# Выбор коллекции -collection = db['FSMDB'] - -# Создание индекса по полю 'chatid' для обеспечения уникальности значений -collection.create_index('chatid', unique=True) - - -def update_user_state(chat_id: str, state: str) -> None: - try: - # Обновление состояния пользователя в коллекции - collection.update_one({'chatid': chat_id}, {'$set': {'user_state': state}}, upsert=True) - print(f"User state updated for {chat_id}") - except Exception as e: - print(f"Error updating user state for {chat_id}: {e}") - - -def get_user_state(chat_id: str) -> str: - try: - # Получение состояния пользователя из коллекции - document = collection.find_one({'chatid': chat_id}) - if document: - user_state = document['user_state'] - print(f"Retrieved user state for {chat_id}: {user_state}") - return user_state - else: - return "" - except Exception as e: - print(f"Error retrieving user state for {chat_id}: {e}") - return "" - - -# Закрытие подключения к базе данных -def close_connection(): - client.close() diff --git a/survey-web-app-main/README.md b/survey-web-app-main/README.md new file mode 100644 index 0000000..6af8739 --- /dev/null +++ b/survey-web-app-main/README.md @@ -0,0 +1,52 @@ +# /view/?... - просмотр опроса + +## Пример: +``` +/view?question=Кто лучше? Выбери один из ответов&choices=Котики|Собачки|Антилопы ньялы&imageURL=https://cdn.quasar.dev/img/parallax2.jpg +``` +![изображение](https://github.com/dudava/survey-web-app/assets/121783360/fad8f2d9-ca1a-4b05-82a4-fa804ae7eb7a) + +## Параметры: +**question** - вопрос
+**choices** - варианты ответов через | без пробелов
+**imageURL** - URL изображения для опроса
+ +# /edit/?... - просмотр и редактирование + +## Пример: +``` +/edit?question=Что с тобой делать?&choices=Дать леща|Сломать колени&correctAnswer=1 +``` +![2023-08-14 00-30-15 (online-video-cutter com)](https://github.com/dudava/survey-web-app/assets/121783360/4ff24e3d-1a87-42c4-b5eb-2be45df11543) + +## Параметры: +**question** - вопрос
+**choices** - варианты ответов через | без пробелов
+**correctAnswer** - индекс правильного ответа (среди choices) начиная с нуля
+... и т.д + +## Создание нового опроса: +![2023-08-14 00-44-11 (online-video-cutter com)](https://github.com/dudava/survey-web-app/assets/121783360/87ac8bc5-af83-4fb6-9020-bf55879aec2d) + +# Survey Web App Vue JS + Quasar (survey-standalone) + +## Install the dependencies +```bash +yarn +# or +npm install +``` + +### Start the app in development mode (hot-code reloading, error reporting, etc.) +```bash +quasar dev +``` + + +### Build the app for production +```bash +quasar build +``` + +### Customize the configuration +See [Configuring quasar.config.js](https://v2.quasar.dev/quasar-cli-vite/quasar-config-js). diff --git a/survey-web-app-main/index.html b/survey-web-app-main/index.html new file mode 100644 index 0000000..44e0ffd --- /dev/null +++ b/survey-web-app-main/index.html @@ -0,0 +1,25 @@ + + + + <%= productName %> + + + + + + + + + + + + + + + + + + + diff --git a/survey-web-app-main/jsconfig.json b/survey-web-app-main/jsconfig.json new file mode 100644 index 0000000..456944a --- /dev/null +++ b/survey-web-app-main/jsconfig.json @@ -0,0 +1,39 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "src/*": [ + "src/*" + ], + "app/*": [ + "*" + ], + "components/*": [ + "src/components/*" + ], + "layouts/*": [ + "src/layouts/*" + ], + "pages/*": [ + "src/pages/*" + ], + "assets/*": [ + "src/assets/*" + ], + "boot/*": [ + "src/boot/*" + ], + "stores/*": [ + "src/stores/*" + ], + "vue$": [ + "node_modules/vue/dist/vue.runtime.esm-bundler.js" + ] + } + }, + "exclude": [ + "dist", + ".quasar", + "node_modules" + ] +} \ No newline at end of file diff --git a/survey-web-app-main/package-lock.json b/survey-web-app-main/package-lock.json new file mode 100644 index 0000000..193b6cc --- /dev/null +++ b/survey-web-app-main/package-lock.json @@ -0,0 +1,5896 @@ +{ + "name": "survey-standalone", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "survey-standalone", + "version": "0.0.1", + "dependencies": { + "@grammyjs/web-app": "^1.3.0", + "@quasar/extras": "^1.16.4", + "@supabase/supabase-js": "^2.32.0", + "quasar": "^2.6.0", + "vue": "^3.0.0", + "vue-router": "^4.0.0", + "wrangler": "^3.5.0" + }, + "devDependencies": { + "@quasar/app-vite": "^1.3.0", + "autoprefixer": "^10.4.2", + "postcss": "^8.4.14" + }, + "engines": { + "node": "^18 || ^16 || ^14.19", + "npm": ">= 6.13.4", + "yarn": ">= 1.21.1" + } + }, + "node_modules/@babel/parser": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.10.tgz", + "integrity": "sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ==", + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@cloudflare/kv-asset-handler": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.2.0.tgz", + "integrity": "sha512-MVbXLbTcAotOPUj0pAMhVtJ+3/kFkwJqc5qNOleOZTv6QkZZABDMS21dSrSlVswEHwrpWC03e4fWytjqKvuE2A==", + "dependencies": { + "mime": "^3.0.0" + } + }, + "node_modules/@cloudflare/kv-asset-handler/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@cloudflare/workerd-darwin-64": { + "version": "1.20230814.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20230814.0.tgz", + "integrity": "sha512-KLBJcsoQakDf3cN5vY4aYJZbYL62GHrHtAsojmtXfUT1dRY0h1JxPe6eyZ9AoMR0OYdGGIIVXFKtJR/w2H+9Uw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workerd-darwin-arm64": { + "version": "1.20230814.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20230814.0.tgz", + "integrity": "sha512-r0DC4oAA+ml+lyP7Ys/waVvaqIyAIphytAXbPOyW0yYCY2NnLpCWGO/eGrs0iMuAfGilXdRNP9m1SoEPvHLsLQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workerd-linux-64": { + "version": "1.20230814.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20230814.0.tgz", + "integrity": "sha512-1/y2KHQroshBpCLGX0B+qGdNeXtsAEnMHHhFVWfqdVzUh8DxlpI1Z7II+J6+8a4z8aR/RZnjw+P8ZguECMB/qw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workerd-linux-arm64": { + "version": "1.20230814.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20230814.0.tgz", + "integrity": "sha512-DEmGpMgqYaGzWBx/wHypjaFhtucUC3F/hkvSzKGhmvVBR2AiAq+Cw7P8WE6DO58tCF3V9ALuLe6gGhUCkHxMBw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@cloudflare/workerd-windows-64": { + "version": "1.20230814.0", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20230814.0.tgz", + "integrity": "sha512-ZQJAtJ9P1Z6FUDljQHYmo1uuDi7mbbGoZYWiS8wq17pKAVoCPjmGqkrylwg0ipoLhqSb0bDb/ww3MwqX2xX/jA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=16" + } + }, + "node_modules/@esbuild-plugins/node-globals-polyfill": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.1.1.tgz", + "integrity": "sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg==", + "peerDependencies": { + "esbuild": "*" + } + }, + "node_modules/@esbuild-plugins/node-modules-polyfill": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.1.4.tgz", + "integrity": "sha512-uZbcXi0zbmKC/050p3gJnne5Qdzw8vkXIv+c2BW0Lsc1ji1SkrxbKPUy5Efr0blbTu1SL8w4eyfpnSdPg3G0Qg==", + "dependencies": { + "escape-string-regexp": "^4.0.0", + "rollup-plugin-node-polyfills": "^0.2.1" + }, + "peerDependencies": { + "esbuild": "*" + } + }, + "node_modules/@esbuild-plugins/node-modules-polyfill/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.3.tgz", + "integrity": "sha512-mueuEoh+s1eRbSJqq9KNBQwI4QhQV6sRXIfTyLXSHGMpyew61rOK4qY21uKbXl1iBoMb0AdL1deWFCQVlN2qHA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.3.tgz", + "integrity": "sha512-RolFVeinkeraDvN/OoRf1F/lP0KUfGNb5jxy/vkIMeRRChkrX/HTYN6TYZosRJs3a1+8wqpxAo5PI5hFmxyPRg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.3.tgz", + "integrity": "sha512-SFpTUcIT1bIJuCCBMCQWq1bL2gPTjWoLZdjmIhjdcQHaUfV41OQfho6Ici5uvvkMmZRXIUGpM3GxysP/EU7ifQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.3.tgz", + "integrity": "sha512-DO8WykMyB+N9mIDfI/Hug70Dk1KipavlGAecxS3jDUwAbTpDXj0Lcwzw9svkhxfpCagDmpaTMgxWK8/C/XcXvw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.3.tgz", + "integrity": "sha512-uEqZQ2omc6BvWqdCiyZ5+XmxuHEi1SPzpVxXCSSV2+Sh7sbXbpeNhHIeFrIpRjAs0lI1FmA1iIOxFozKBhKgRQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.3.tgz", + "integrity": "sha512-nJansp3sSXakNkOD5i5mIz2Is/HjzIhFs49b1tjrPrpCmwgBmH9SSzhC/Z1UqlkivqMYkhfPwMw1dGFUuwmXhw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.3.tgz", + "integrity": "sha512-TfoDzLw+QHfc4a8aKtGSQ96Wa+6eimljjkq9HKR0rHlU83vw8aldMOUSJTUDxbcUdcgnJzPaX8/vGWm7vyV7ug==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.3.tgz", + "integrity": "sha512-VwswmSYwVAAq6LysV59Fyqk3UIjbhuc6wb3vEcJ7HEJUtFuLK9uXWuFoH1lulEbE4+5GjtHi3MHX+w1gNHdOWQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.3.tgz", + "integrity": "sha512-7I3RlsnxEFCHVZNBLb2w7unamgZ5sVwO0/ikE2GaYvYuUQs9Qte/w7TqWcXHtCwxvZx/2+F97ndiUQAWs47ZfQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.3.tgz", + "integrity": "sha512-X8FDDxM9cqda2rJE+iblQhIMYY49LfvW4kaEjoFbTTQ4Go8G96Smj2w3BRTwA8IHGoi9dPOPGAX63dhuv19UqA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.3.tgz", + "integrity": "sha512-hIbeejCOyO0X9ujfIIOKjBjNAs9XD/YdJ9JXAy1lHA+8UXuOqbFe4ErMCqMr8dhlMGBuvcQYGF7+kO7waj2KHw==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.3.tgz", + "integrity": "sha512-znFRzICT/V8VZQMt6rjb21MtAVJv/3dmKRMlohlShrbVXdBuOdDrGb+C2cZGQAR8RFyRe7HS6klmHq103WpmVw==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.3.tgz", + "integrity": "sha512-EV7LuEybxhXrVTDpbqWF2yehYRNz5e5p+u3oQUS2+ZFpknyi1NXxr8URk4ykR8Efm7iu04//4sBg249yNOwy5Q==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.3.tgz", + "integrity": "sha512-uDxqFOcLzFIJ+r/pkTTSE9lsCEaV/Y6rMlQjUI9BkzASEChYL/aSQjZjchtEmdnVxDKETnUAmsaZ4pqK1eE5BQ==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.3.tgz", + "integrity": "sha512-NbeREhzSxYwFhnCAQOQZmajsPYtX71Ufej3IQ8W2Gxskfz9DK58ENEju4SbpIj48VenktRASC52N5Fhyf/aliQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.3.tgz", + "integrity": "sha512-SDiG0nCixYO9JgpehoKgScwic7vXXndfasjnD5DLbp1xltANzqZ425l7LSdHynt19UWOcDjG9wJJzSElsPvk0w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.3.tgz", + "integrity": "sha512-AzbsJqiHEq1I/tUvOfAzCY15h4/7Ivp3ff/o1GpP16n48JMNAtbW0qui2WCgoIZArEHD0SUQ95gvR0oSO7ZbdA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.3.tgz", + "integrity": "sha512-gSABi8qHl8k3Cbi/4toAzHiykuBuWLZs43JomTcXkjMZVkp0gj3gg9mO+9HJW/8GB5H89RX/V0QP4JGL7YEEVg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.3.tgz", + "integrity": "sha512-SF9Kch5Ete4reovvRO6yNjMxrvlfT0F0Flm+NPoUw5Z4Q3r1d23LFTgaLwm3Cp0iGbrU/MoUI+ZqwCv5XJijCw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.3.tgz", + "integrity": "sha512-u5aBonZIyGopAZyOnoPAA6fGsDeHByZ9CnEzyML9NqntK6D/xl5jteZUKm/p6nD09+v3pTM6TuUIqSPcChk5gg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.3.tgz", + "integrity": "sha512-GlgVq1WpvOEhNioh74TKelwla9KDuAaLZrdxuuUgsP2vayxeLgVc+rbpIv0IYF4+tlIzq2vRhofV+KGLD+37EQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.3.tgz", + "integrity": "sha512-5/JuTd8OWW8UzEtyf19fbrtMJENza+C9JoPIkvItgTBQ1FO2ZLvjbPO6Xs54vk0s5JB5QsfieUEshRQfu7ZHow==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@grammyjs/web-app": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@grammyjs/web-app/-/web-app-1.3.0.tgz", + "integrity": "sha512-wQgKFNVcgBPiJLu6LoPM3OGy61JY16qo7v9X7/E4DImob0MFh/873GaZ/7yFHP7PpxCTBXEUwiJ6DlSuYbzyCA==", + "dependencies": { + "@types/telegram-web-app": "^6.4.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "license": "MIT" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@quasar/app-vite": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@quasar/app-vite/-/app-vite-1.4.3.tgz", + "integrity": "sha512-5iMs1sk6fyYTFoRVySwFXWL/PS23UEsdk+YSFejhXnSs5fVDmb2GQMguCHwDl3jPIHjZ7A+XKkb2iWx9pjiPXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@quasar/render-ssr-error": "^1.0.1", + "@quasar/vite-plugin": "^1.3.3", + "@rollup/pluginutils": "^4.1.2", + "@types/chrome": "^0.0.208", + "@types/compression": "^1.7.2", + "@types/cordova": "0.0.34", + "@types/express": "^4.17.13", + "@vitejs/plugin-vue": "^2.2.0", + "archiver": "^5.3.0", + "chokidar": "^3.5.3", + "ci-info": "^3.7.1", + "compression": "^1.7.4", + "cross-spawn": "^7.0.3", + "dot-prop": "6.0.1", + "elementtree": "0.1.7", + "esbuild": "0.14.51", + "express": "^4.17.3", + "fast-glob": "3.2.12", + "fs-extra": "^11.1.0", + "html-minifier": "^4.0.0", + "inquirer": "^8.2.1", + "isbinaryfile": "^5.0.0", + "kolorist": "^1.5.1", + "lodash": "^4.17.21", + "minimist": "^1.2.6", + "open": "^8.4.0", + "register-service-worker": "^1.7.2", + "rollup-plugin-visualizer": "^5.5.4", + "sass": "1.32.12", + "semver": "^7.3.5", + "serialize-javascript": "^6.0.0", + "table": "^6.8.0", + "vite": "^2.9.13", + "webpack-merge": "^5.8.0" + }, + "bin": { + "quasar": "bin/quasar" + }, + "engines": { + "node": "^24 || ^22 || ^20 || ^18 || ^16 || ^14.19", + "npm": ">= 6.14.12", + "yarn": ">= 1.17.3" + }, + "funding": { + "type": "github", + "url": "https://donate.quasar.dev" + }, + "peerDependencies": { + "electron-builder": ">= 22", + "electron-packager": ">= 15", + "eslint": "^8.11.0", + "pinia": "^2.0.0", + "quasar": "^2.8.0", + "vue": "^3.2.29", + "vue-router": "^4.0.12", + "vuex": "^4.0.0", + "workbox-build": "^6.5.0" + }, + "peerDependenciesMeta": { + "electron-builder": { + "optional": true + }, + "electron-packager": { + "optional": true + }, + "eslint": { + "optional": true + }, + "pinia": { + "optional": true + }, + "vuex": { + "optional": true + }, + "workbox-build": { + "optional": true + } + } + }, + "node_modules/@quasar/extras": { + "version": "1.16.5", + "resolved": "https://registry.npmjs.org/@quasar/extras/-/extras-1.16.5.tgz", + "integrity": "sha512-3VAJS9NECr1OSHX674+3YvEMIlHclr81aZrEkoBtVqr+sX4In22Up44toua+qNFsxnoATPqzpwKOJxA3iAF71Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://donate.quasar.dev" + } + }, + "node_modules/@quasar/render-ssr-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@quasar/render-ssr-error/-/render-ssr-error-1.0.2.tgz", + "integrity": "sha512-Y0wyqYHVxc1IOBH6pRiKMSWDqO1mwQu11Zo8rw4cBdclPOQqFb7f65UuRbk5LfbqlXV2hYvklNcy0SBAOiAQnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "stack-trace": "^1.0.0-pre2" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "type": "github", + "url": "https://donate.quasar.dev" + } + }, + "node_modules/@quasar/vite-plugin": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@quasar/vite-plugin/-/vite-plugin-1.4.1.tgz", + "integrity": "sha512-lLw7j1A7viLQ6++p29NuYUdfjpaWctRi6tRhMYm8VPumXs8enGeV59JEJ+1tJR2FcQUMYsGOoyHHcQrsakXIkA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://donate.quasar.dev" + }, + "peerDependencies": { + "@vitejs/plugin-vue": "^2.0.0 || ^3.0.0 || ^4.0.0", + "quasar": "^2.8.0", + "vite": "^2.0.0 || ^3.0.0 || ^4.0.0", + "vue": "^3.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@supabase/functions-js": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.1.2.tgz", + "integrity": "sha512-QCR6pwJs9exCl37bmpMisUd6mf+0SUBJ6mUpiAjEkSJ/+xW8TCuO14bvkWHADd5hElJK9MxNlMQXxSA4DRz9nQ==", + "dependencies": { + "cross-fetch": "^3.1.5" + } + }, + "node_modules/@supabase/gotrue-js": { + "version": "2.47.0", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.47.0.tgz", + "integrity": "sha512-3e34/vsKH/DoSZCpB85UZpFWSJ2p4GRUUlqgAgeTPagPlx4xS+Nc5v7g7ic7vp3gK0J5PsYVCn9Qu2JQUp4vXg==", + "dependencies": { + "cross-fetch": "^3.1.5" + } + }, + "node_modules/@supabase/postgrest-js": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.8.0.tgz", + "integrity": "sha512-R6leDIC92NgjyG2/tCRJ42rWN7+fZY6ulTEE+c00tcnghn6cX4IYUlnTNMtrdfYC2JYNOTyM+rWj63Wdhr7Zig==", + "dependencies": { + "cross-fetch": "^3.1.5" + } + }, + "node_modules/@supabase/realtime-js": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.7.3.tgz", + "integrity": "sha512-c7TzL81sx2kqyxsxcDduJcHL9KJdCOoKimGP6lQSqiZKX42ATlBZpWbyy9KFGFBjAP4nyopMf5JhPi2ZH9jyNw==", + "dependencies": { + "@types/phoenix": "^1.5.4", + "@types/websocket": "^1.0.3", + "websocket": "^1.0.34" + } + }, + "node_modules/@supabase/storage-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.5.1.tgz", + "integrity": "sha512-nkR0fQA9ScAtIKA3vNoPEqbZv1k5B5HVRYEvRWdlP6mUpFphM9TwPL2jZ/ztNGMTG5xT6SrHr+H7Ykz8qzbhjw==", + "dependencies": { + "cross-fetch": "^3.1.5" + } + }, + "node_modules/@supabase/supabase-js": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.32.0.tgz", + "integrity": "sha512-1ShFhuOI5Du7604nlCelBsRD61daXk2O0qwjumoz35bqrYThnSPPtpJqZOHw6Mg6o7mLjIInYLh/DBlh8UvzRg==", + "dependencies": { + "@supabase/functions-js": "^2.1.0", + "@supabase/gotrue-js": "^2.46.1", + "@supabase/postgrest-js": "^1.8.0", + "@supabase/realtime-js": "^2.7.3", + "@supabase/storage-js": "^2.5.1", + "cross-fetch": "^3.1.5" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/chrome": { + "version": "0.0.208", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.208.tgz", + "integrity": "sha512-VDU/JnXkF5qaI7WBz14Azpa2VseZTgML0ia/g/B1sr9OfdOnHiH/zZ7P7qCDqxSlkqJh76/bPc8jLFcx8rHJmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/filesystem": "*", + "@types/har-format": "*" + } + }, + "node_modules/@types/compression": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.7.2.tgz", + "integrity": "sha512-lwEL4M/uAGWngWFLSG87ZDr2kLrbuR8p7X+QZB1OQlT+qkHsCPDVFnHPyXf4Vyl4yDDorNY+mAhosxkCvppatg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cordova": { + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz", + "integrity": "sha512-rkiiTuf/z2wTd4RxFOb+clE7PF4AEJU0hsczbUdkHHBtkUmpWQpEddynNfJYKYtZFJKbq4F+brfekt1kx85IZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.35", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", + "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/filesystem": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.32.tgz", + "integrity": "sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/filewriter": "*" + } + }, + "node_modules/@types/filewriter": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.29.tgz", + "integrity": "sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/har-format": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.11.tgz", + "integrity": "sha512-T232/TneofqK30AD1LRrrf8KnjLvzrjWDp7eWST5KoiSzrBfRsLrWDPk4STQPW4NZG6v2MltnduBVmakbZOBIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.4.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.10.tgz", + "integrity": "sha512-vwzFiiy8Rn6E0MtA13/Cxxgpan/N6UeNYR9oUu6kuJWxu6zCk98trcDp8CBhbtaeuq9SykCmXkFr2lWLoPcvLg==", + "license": "MIT" + }, + "node_modules/@types/phoenix": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.0.tgz", + "integrity": "sha512-qwfpsHmFuhAS/dVd4uBIraMxRd56vwBUYQGZ6GpXnFuM2XMRFJbIyruFKKlW2daQliuYZwe0qfn/UjFCDKic5g==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/send/node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/serve-static": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/telegram-web-app": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@types/telegram-web-app/-/telegram-web-app-6.7.0.tgz", + "integrity": "sha512-ill31jBCQW6bo4k0GjsUVNKP0MY336p7ZUxmMi+WofAbO7Reb366jsnqNIrqNtxcIB4kKEpMUHVniArcXSML6g==" + }, + "node_modules/@types/websocket": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz", + "integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.4.tgz", + "integrity": "sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "vite": "^2.5.10", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz", + "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.21.3", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", + "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", + "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-ssr": "3.3.4", + "@vue/reactivity-transform": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0", + "postcss": "^8.1.10", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", + "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz", + "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==", + "license": "MIT" + }, + "node_modules/@vue/reactivity": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz", + "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", + "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz", + "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", + "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", + "license": "MIT", + "dependencies": { + "@vue/runtime-core": "3.3.4", + "@vue/shared": "3.3.4", + "csstype": "^3.1.1" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz", + "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.3.4", + "@vue/shared": "3.3.4" + }, + "peerDependencies": { + "vue": "3.3.4" + } + }, + "node_modules/@vue/shared": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", + "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==", + "license": "MIT" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/archiver": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", + "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.3", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.0.0", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/archiver-utils/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/archiver-utils/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/as-table": { + "version": "1.0.55", + "resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz", + "integrity": "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==", + "dependencies": { + "printable-characters": "^1.0.42" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/autoprefixer": { + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/better-sqlite3": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.5.0.tgz", + "integrity": "sha512-vbPcv/Hx5WYdyNg/NbcfyaBZyv9s/NVbxb7yCeC5Bq1pVocNxeL2tZmSu3Rlm4IEOTjYdGyzWQgyx0OSdORBzw==", + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.5.0", + "prebuild-install": "^7.1.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/blake3-wasm": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz", + "integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==" + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/bufferutil": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001519", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz", + "integrity": "sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/capnp-ts": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/capnp-ts/-/capnp-ts-0.7.0.tgz", + "integrity": "sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==", + "dependencies": { + "debug": "^4.3.1", + "tslib": "^2.2.0" + } + }, + "node_modules/capnp-ts/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/capnp-ts/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true, + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz", + "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/compress-commons": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", + "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "license": "MIT" + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz", + "integrity": "sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==" + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.490", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.490.tgz", + "integrity": "sha512-6s7NVJz+sATdYnIwhdshx/N/9O6rvMxmhVoDSDFdj6iA45gHR8EQje70+RYsF4GeB+k0IeNSBnP7yG9ZXJFr7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/elementtree": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz", + "integrity": "sha512-wkgGT6kugeQk/P6VZ/f4T+4HB41BVgNBq5CDIZVbQ02nvTVqAiVTbskxxu3eA/X96lMlfYOwnLQpN2v5E1zDEg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "sax": "1.1.4" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/esbuild": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.51.tgz", + "integrity": "sha512-+CvnDitD7Q5sT7F+FM65sWkF8wJRf+j9fPcprxYV4j+ohmzVj2W7caUqH2s5kCaCJAfcAICjSlKhDCcvDpU7nw==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "esbuild-android-64": "0.14.51", + "esbuild-android-arm64": "0.14.51", + "esbuild-darwin-64": "0.14.51", + "esbuild-darwin-arm64": "0.14.51", + "esbuild-freebsd-64": "0.14.51", + "esbuild-freebsd-arm64": "0.14.51", + "esbuild-linux-32": "0.14.51", + "esbuild-linux-64": "0.14.51", + "esbuild-linux-arm": "0.14.51", + "esbuild-linux-arm64": "0.14.51", + "esbuild-linux-mips64le": "0.14.51", + "esbuild-linux-ppc64le": "0.14.51", + "esbuild-linux-riscv64": "0.14.51", + "esbuild-linux-s390x": "0.14.51", + "esbuild-netbsd-64": "0.14.51", + "esbuild-openbsd-64": "0.14.51", + "esbuild-sunos-64": "0.14.51", + "esbuild-windows-32": "0.14.51", + "esbuild-windows-64": "0.14.51", + "esbuild-windows-arm64": "0.14.51" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.51.tgz", + "integrity": "sha512-dxjhrqo5i7Rq6DXwz5v+MEHVs9VNFItJmHBe1CxROWNf4miOGoQhqSG8StStbDkQ1Mtobg6ng+4fwByOhoQoeA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-android-64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.51.tgz", + "integrity": "sha512-6FOuKTHnC86dtrKDmdSj2CkcKF8PnqkaIXqvgydqfJmqBazCPdw+relrMlhGjkvVdiiGV70rpdnyFmA65ekBCQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-android-arm64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.51.tgz", + "integrity": "sha512-vBtp//5VVkZWmYYvHsqBRCMMi1MzKuMIn5XDScmnykMTu9+TD9v0NMEDqQxvtFToeYmojdo5UCV2vzMQWJcJ4A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-darwin-64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.51.tgz", + "integrity": "sha512-YFmXPIOvuagDcwCejMRtCDjgPfnDu+bNeh5FU2Ryi68ADDVlWEpbtpAbrtf/lvFTWPexbgyKgzppNgsmLPr8PA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-darwin-arm64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.51.tgz", + "integrity": "sha512-juYD0QnSKwAMfzwKdIF6YbueXzS6N7y4GXPDeDkApz/1RzlT42mvX9jgNmyOlWKN7YzQAYbcUEJmZJYQGdf2ow==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-freebsd-64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.51.tgz", + "integrity": "sha512-cLEI/aXjb6vo5O2Y8rvVSQ7smgLldwYY5xMxqh/dQGfWO+R1NJOFsiax3IS4Ng300SVp7Gz3czxT6d6qf2cw0g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-freebsd-arm64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.51.tgz", + "integrity": "sha512-TcWVw/rCL2F+jUgRkgLa3qltd5gzKjIMGhkVybkjk6PJadYInPtgtUBp1/hG+mxyigaT7ib+od1Xb84b+L+1Mg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-32": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.51.tgz", + "integrity": "sha512-RFqpyC5ChyWrjx8Xj2K0EC1aN0A37H6OJfmUXIASEqJoHcntuV3j2Efr9RNmUhMfNE6yEj2VpYuDteZLGDMr0w==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-arm": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.51.tgz", + "integrity": "sha512-LsJynDxYF6Neg7ZC7748yweCDD+N8ByCv22/7IAZglIEniEkqdF4HCaa49JNDLw1UQGlYuhOB8ZT/MmcSWzcWg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-arm64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.51.tgz", + "integrity": "sha512-D9rFxGutoqQX3xJPxqd6o+kvYKeIbM0ifW2y0bgKk5HPgQQOo2k9/2Vpto3ybGYaFPCE5qTGtqQta9PoP6ZEzw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-mips64le": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.51.tgz", + "integrity": "sha512-vS54wQjy4IinLSlb5EIlLoln8buh1yDgliP4CuEHumrPk4PvvP4kTRIG4SzMXm6t19N0rIfT4bNdAxzJLg2k6A==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-ppc64le": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.51.tgz", + "integrity": "sha512-xcdd62Y3VfGoyphNP/aIV9LP+RzFw5M5Z7ja+zdpQHHvokJM7d0rlDRMN+iSSwvUymQkqZO+G/xjb4/75du8BQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-riscv64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.51.tgz", + "integrity": "sha512-syXHGak9wkAnFz0gMmRBoy44JV0rp4kVCEA36P5MCeZcxFq8+fllBC2t6sKI23w3qd8Vwo9pTADCgjTSf3L3rA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-linux-s390x": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.51.tgz", + "integrity": "sha512-kFAJY3dv+Wq8o28K/C7xkZk/X34rgTwhknSsElIqoEo8armCOjMJ6NsMxm48KaWY2h2RUYGtQmr+RGuUPKBhyw==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-netbsd-64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.51.tgz", + "integrity": "sha512-ZZBI7qrR1FevdPBVHz/1GSk1x5GDL/iy42Zy8+neEm/HA7ma+hH/bwPEjeHXKWUDvM36CZpSL/fn1/y9/Hb+1A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-openbsd-64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.51.tgz", + "integrity": "sha512-7R1/p39M+LSVQVgDVlcY1KKm6kFKjERSX1lipMG51NPcspJD1tmiZSmmBXoY5jhHIu6JL1QkFDTx94gMYK6vfA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-sunos-64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.51.tgz", + "integrity": "sha512-HoHaCswHxLEYN8eBTtyO0bFEWvA3Kdb++hSQ/lLG7TyKF69TeSG0RNoBRAs45x/oCeWaTDntEZlYwAfQlhEtJA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-windows-32": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.51.tgz", + "integrity": "sha512-4rtwSAM35A07CBt1/X8RWieDj3ZUHQqUOaEo5ZBs69rt5WAFjP4aqCIobdqOy4FdhYw1yF8Z0xFBTyc9lgPtEg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-windows-64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.51.tgz", + "integrity": "sha512-HoN/5HGRXJpWODprGCgKbdMvrC3A2gqvzewu2eECRw2sYxOUoh2TV1tS+G7bHNapPGI79woQJGV6pFH7GH7qnA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/esbuild-windows-arm64": { + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.51.tgz", + "integrity": "sha512-JQDqPjuOH7o+BsKMSddMfmVJXrnYZxXDHsoLHc0xgmAZkOOCflRmC43q31pk79F9xuyWY45jDBPolb5ZgGOf9g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/exit-hook": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-2.2.1.tgz", + "integrity": "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-source": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/get-source/-/get-source-2.0.12.tgz", + "integrity": "sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==", + "dependencies": { + "data-uri-to-buffer": "^2.0.0", + "source-map": "^0.6.1" + } + }, + "node_modules/get-source/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/html-minifier": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz", + "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==", + "dev": true, + "license": "MIT", + "dependencies": { + "camel-case": "^3.0.0", + "clean-css": "^4.2.1", + "commander": "^2.19.0", + "he": "^1.2.0", + "param-case": "^2.1.1", + "relateurl": "^0.2.7", + "uglify-js": "^3.5.1" + }, + "bin": { + "html-minifier": "cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/inquirer": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/isbinaryfile": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.0.tgz", + "integrity": "sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.30.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.2.tgz", + "integrity": "sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/miniflare": { + "version": "3.20230801.0", + "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-3.20230801.0.tgz", + "integrity": "sha512-jXl++AYc3PDMu9cxeMbFgzrnbgwU8VIkw49cdpOaIAz7jQgPcLuNLOyAw3G+uaLELnILHs81MM67fGR1hAc62A==", + "dependencies": { + "acorn": "^8.8.0", + "acorn-walk": "^8.2.0", + "better-sqlite3": "^8.1.0", + "capnp-ts": "^0.7.0", + "exit-hook": "^2.2.1", + "glob-to-regexp": "^0.4.1", + "http-cache-semantics": "^4.1.0", + "kleur": "^4.1.5", + "set-cookie-parser": "^2.6.0", + "source-map-support": "0.5.21", + "stoppable": "^1.1.0", + "undici": "^5.13.0", + "workerd": "^1.20230801.0", + "ws": "^8.11.0", + "youch": "^3.2.2", + "zod": "^3.20.6" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "bin": { + "mustache": "bin/mustache" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true, + "license": "ISC" + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node_modules/no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "lower-case": "^1.1.1" + } + }, + "node_modules/node-abi": { + "version": "3.46.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.46.0.tgz", + "integrity": "sha512-LXvP3AqTIrtvH/jllXjkNVbYifpRbt9ThTtymSMSuHmhugQLAWr99QQFTm+ZRht9ziUvdGOgB+esme1C6iE6Lg==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^2.2.0" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", + "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/prebuild-install": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/printable-characters": { + "version": "1.0.42", + "resolved": "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz", + "integrity": "sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==" + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/quasar": { + "version": "2.12.4", + "resolved": "https://registry.npmjs.org/quasar/-/quasar-2.12.4.tgz", + "integrity": "sha512-NDhLPUFQdUeKBRccggiwc6gsRXjgVjAZibX6xPmM1I4TKtZuwXM7OBlEtaqWbpshsFF5mC0xKnGeKAMy1ySJ8A==", + "license": "MIT", + "engines": { + "node": ">= 10.18.1", + "npm": ">= 6.13.4", + "yarn": ">= 1.21.1" + }, + "funding": { + "type": "github", + "url": "https://donate.quasar.dev" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/register-service-worker": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/register-service-worker/-/register-service-worker-1.7.2.tgz", + "integrity": "sha512-CiD3ZSanZqcMPRhtfct5K9f7i3OLCcBBWsJjLh1gW9RO/nS94sVzY59iS+fgYBOBqaBpf4EzfqUF3j9IG+xo8A==", + "dev": true, + "license": "MIT" + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "2.77.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.3.tgz", + "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-inject": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz", + "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.", + "dependencies": { + "estree-walker": "^0.6.1", + "magic-string": "^0.25.3", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/rollup-plugin-inject/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==" + }, + "node_modules/rollup-plugin-inject/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/rollup-plugin-node-polyfills": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz", + "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==", + "dependencies": { + "rollup-plugin-inject": "^3.0.0" + } + }, + "node_modules/rollup-plugin-visualizer": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.2.tgz", + "integrity": "sha512-waHktD5mlWrYFrhOLbti4YgQCn1uR24nYsNuXxg7LkPH8KdTXVWR9DNY1WU0QqokyMixVXJS4J04HNrVTMP01A==", + "dev": true, + "license": "MIT", + "dependencies": { + "open": "^8.4.0", + "picomatch": "^2.3.1", + "source-map": "^0.7.4", + "yargs": "^17.5.1" + }, + "bin": { + "rollup-plugin-visualizer": "dist/bin/cli.js" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "rollup": "2.x || 3.x" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/rollup-pluginutils/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==" + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.32.12", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.12.tgz", + "integrity": "sha512-zmXn03k3hN0KaiVTjohgkg98C3UowhL1/VSGdj4/VAAiMKGQOE80PFPxFP2Kyq0OUskPKcY5lImkhBKEHlypJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/sax": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz", + "integrity": "sha512-5f3k2PbGGp+YtKJjOItpg3P99IMD84E4HOvcfleTb5joCHNXYLsR9yWFPOYGgaeMPDubQILTCMdsFb2OMeOjtg==", + "dev": true, + "license": "ISC" + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", + "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead" + }, + "node_modules/stack-trace": { + "version": "1.0.0-pre2", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-1.0.0-pre2.tgz", + "integrity": "sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/stacktracey": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/stacktracey/-/stacktracey-2.1.8.tgz", + "integrity": "sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==", + "dependencies": { + "as-table": "^1.0.36", + "get-source": "^2.0.12" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stoppable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", + "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", + "engines": { + "node": ">=4", + "npm": ">=6" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", + "license": "0BSD" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/undici": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.23.0.tgz", + "integrity": "sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==", + "dependencies": { + "busboy": "^1.6.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", + "dev": true, + "license": "MIT" + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vite": { + "version": "2.9.16", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.16.tgz", + "integrity": "sha512-X+6q8KPyeuBvTQV8AVSnKDvXoBMnTx8zxh54sOwmmuOdxkjMmEJXH2UEchA+vTMps1xw9vL64uwJOWryULg7nA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.14.27", + "postcss": "^8.4.13", + "resolve": "^1.22.0", + "rollup": ">=2.59.0 <2.78.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": ">=12.2.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "less": "*", + "sass": "*", + "stylus": "*" + }, + "peerDependenciesMeta": { + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" + } + }, + "node_modules/vite/node_modules/esbuild-linux-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vue": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", + "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-sfc": "3.3.4", + "@vue/runtime-dom": "3.3.4", + "@vue/server-renderer": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/vue-router": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.4.tgz", + "integrity": "sha512-9PISkmaCO02OzPVOMq2w82ilty6+xJmQrarYZDkjZBfl4RvYAlt4PKnEX21oW4KTtWfa9OuO/b3qk1Od3AEdCQ==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/webpack-merge": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/websocket": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "dependencies": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/workerd": { + "version": "1.20230814.0", + "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20230814.0.tgz", + "integrity": "sha512-eic5xdb/HpuLxTk2IPQL6I07K5DYnEu0YPMOWbjk3agB41l4eQDWClxTC0ORLVw7U3eb+EHODE+vP+Pk7MJKCg==", + "hasInstallScript": true, + "bin": { + "workerd": "bin/workerd" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "@cloudflare/workerd-darwin-64": "1.20230814.0", + "@cloudflare/workerd-darwin-arm64": "1.20230814.0", + "@cloudflare/workerd-linux-64": "1.20230814.0", + "@cloudflare/workerd-linux-arm64": "1.20230814.0", + "@cloudflare/workerd-windows-64": "1.20230814.0" + } + }, + "node_modules/wrangler": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-3.5.0.tgz", + "integrity": "sha512-lvYo2JUxRXdobzd0hs96FT354DvKAYoAiPslceEpKmr0oHCreMWhU5AStfZwg1PEaJJZCwP17LqA5GgjvQ6zyg==", + "dependencies": { + "@cloudflare/kv-asset-handler": "^0.2.0", + "@esbuild-plugins/node-globals-polyfill": "^0.1.1", + "@esbuild-plugins/node-modules-polyfill": "^0.1.4", + "blake3-wasm": "^2.1.5", + "chokidar": "^3.5.3", + "esbuild": "0.16.3", + "miniflare": "3.20230801.0", + "nanoid": "^3.3.3", + "path-to-regexp": "^6.2.0", + "selfsigned": "^2.0.1", + "source-map": "^0.7.4", + "xxhash-wasm": "^1.0.1" + }, + "bin": { + "wrangler": "bin/wrangler.js", + "wrangler2": "bin/wrangler.js" + }, + "engines": { + "node": ">=16.13.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/wrangler/node_modules/esbuild": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.3.tgz", + "integrity": "sha512-71f7EjPWTiSguen8X/kxEpkAS7BFHwtQKisCDDV3Y4GLGWBaoSCyD5uXkaUew6JDzA9FEN1W23mdnSwW9kqCeg==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.16.3", + "@esbuild/android-arm64": "0.16.3", + "@esbuild/android-x64": "0.16.3", + "@esbuild/darwin-arm64": "0.16.3", + "@esbuild/darwin-x64": "0.16.3", + "@esbuild/freebsd-arm64": "0.16.3", + "@esbuild/freebsd-x64": "0.16.3", + "@esbuild/linux-arm": "0.16.3", + "@esbuild/linux-arm64": "0.16.3", + "@esbuild/linux-ia32": "0.16.3", + "@esbuild/linux-loong64": "0.16.3", + "@esbuild/linux-mips64el": "0.16.3", + "@esbuild/linux-ppc64": "0.16.3", + "@esbuild/linux-riscv64": "0.16.3", + "@esbuild/linux-s390x": "0.16.3", + "@esbuild/linux-x64": "0.16.3", + "@esbuild/netbsd-x64": "0.16.3", + "@esbuild/openbsd-x64": "0.16.3", + "@esbuild/sunos-x64": "0.16.3", + "@esbuild/win32-arm64": "0.16.3", + "@esbuild/win32-ia32": "0.16.3", + "@esbuild/win32-x64": "0.16.3" + } + }, + "node_modules/wrangler/node_modules/path-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==" + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xxhash-wasm": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.0.2.tgz", + "integrity": "sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", + "engines": { + "node": ">=0.10.32" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/youch": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/youch/-/youch-3.2.3.tgz", + "integrity": "sha512-ZBcWz/uzZaQVdCvfV4uk616Bbpf2ee+F/AvuKDR5EwX/Y4v06xWdtMluqTD7+KlZdM93lLm9gMZYo0sKBS0pgw==", + "dependencies": { + "cookie": "^0.5.0", + "mustache": "^4.2.0", + "stacktracey": "^2.1.8" + } + }, + "node_modules/zip-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", + "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "archiver-utils": "^2.1.0", + "compress-commons": "^4.1.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zod": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.0.tgz", + "integrity": "sha512-y5KZY/ssf5n7hCGDGGtcJO/EBJEm5Pa+QQvFBeyMOtnFYOSflalxIFFvdaYevPhePcmcKC4aTbFkCcXN7D0O8Q==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/survey-web-app-main/package.json b/survey-web-app-main/package.json new file mode 100644 index 0000000..92f52c6 --- /dev/null +++ b/survey-web-app-main/package.json @@ -0,0 +1,32 @@ +{ + "name": "survey-standalone", + "version": "0.0.1", + "description": "A Quasar Project", + "productName": "Quasar App", + "author": "dudavik ", + "private": true, + "scripts": { + "test": "echo \"No test specified\" && exit 0", + "dev": "quasar dev", + "build": "quasar build" + }, + "dependencies": { + "@grammyjs/web-app": "^1.3.0", + "@quasar/extras": "^1.16.4", + "@supabase/supabase-js": "^2.32.0", + "quasar": "^2.6.0", + "vue": "^3.0.0", + "vue-router": "^4.0.0", + "wrangler": "^3.5.0" + }, + "devDependencies": { + "@quasar/app-vite": "^1.3.0", + "autoprefixer": "^10.4.2", + "postcss": "^8.4.14" + }, + "engines": { + "node": "^18 || ^16 || ^14.19", + "npm": ">= 6.13.4", + "yarn": ">= 1.21.1" + } +} diff --git a/survey-web-app-main/postcss.config.cjs b/survey-web-app-main/postcss.config.cjs new file mode 100644 index 0000000..94b7b1c --- /dev/null +++ b/survey-web-app-main/postcss.config.cjs @@ -0,0 +1,27 @@ +/* eslint-disable */ +// https://github.com/michael-ciniawsky/postcss-load-config + +module.exports = { + plugins: [ + // https://github.com/postcss/autoprefixer + require('autoprefixer')({ + overrideBrowserslist: [ + 'last 4 Chrome versions', + 'last 4 Firefox versions', + 'last 4 Edge versions', + 'last 4 Safari versions', + 'last 4 Android versions', + 'last 4 ChromeAndroid versions', + 'last 4 FirefoxAndroid versions', + 'last 4 iOS versions' + ] + }) + + // https://github.com/elchininet/postcss-rtlcss + // If you want to support RTL css, then + // 1. yarn/npm install postcss-rtlcss + // 2. optionally set quasar.config.js > framework > lang to an RTL language + // 3. uncomment the following line: + // require('postcss-rtlcss') + ] +} diff --git a/survey-web-app-main/public/favicon.ico b/survey-web-app-main/public/favicon.ico new file mode 100644 index 0000000..ae7bbdb Binary files /dev/null and b/survey-web-app-main/public/favicon.ico differ diff --git a/survey-web-app-main/public/icons/favicon-128x128.png b/survey-web-app-main/public/icons/favicon-128x128.png new file mode 100644 index 0000000..1401176 Binary files /dev/null and b/survey-web-app-main/public/icons/favicon-128x128.png differ diff --git a/survey-web-app-main/public/icons/favicon-16x16.png b/survey-web-app-main/public/icons/favicon-16x16.png new file mode 100644 index 0000000..679063a Binary files /dev/null and b/survey-web-app-main/public/icons/favicon-16x16.png differ diff --git a/survey-web-app-main/public/icons/favicon-32x32.png b/survey-web-app-main/public/icons/favicon-32x32.png new file mode 100644 index 0000000..fd1fbc6 Binary files /dev/null and b/survey-web-app-main/public/icons/favicon-32x32.png differ diff --git a/survey-web-app-main/public/icons/favicon-96x96.png b/survey-web-app-main/public/icons/favicon-96x96.png new file mode 100644 index 0000000..e93b80a Binary files /dev/null and b/survey-web-app-main/public/icons/favicon-96x96.png differ diff --git a/survey-web-app-main/quasar.config.js b/survey-web-app-main/quasar.config.js new file mode 100644 index 0000000..81ecc20 --- /dev/null +++ b/survey-web-app-main/quasar.config.js @@ -0,0 +1,209 @@ +/* eslint-env node */ + +/* + * This file runs in a Node context (it's NOT transpiled by Babel), so use only + * the ES6 features that are supported by your Node version. https://node.green/ + */ + +// Configuration for your app +// https://v2.quasar.dev/quasar-cli-vite/quasar-config-js + + +const { configure } = require('quasar/wrappers'); + + +module.exports = configure(function (/* ctx */) { + return { + + + // https://v2.quasar.dev/quasar-cli/prefetch-feature + // preFetch: true, + + // app boot file (/src/boot) + // --> boot files are part of "main.js" + // https://v2.quasar.dev/quasar-cli/boot-files + boot: [ + + + ], + + // https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#css + css: [ + 'app.css' + ], + + // https://github.com/quasarframework/quasar/tree/dev/extras + extras: [ + // 'ionicons-v4', + // 'mdi-v5', + // 'fontawesome-v6', + // 'eva-icons', + // 'themify', + // 'line-awesome', + // 'roboto-font-latin-ext', // this or either 'roboto-font', NEVER both! + + 'roboto-font', // optional, you are not bound to it + 'material-icons', // optional, you are not bound to it + ], + + // Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#build + build: { + target: { + browser: [ 'es2019', 'edge88', 'firefox78', 'chrome87', 'safari13.1' ], + node: 'node16' + }, + + vueRouterMode: 'history', // available values: 'hash', 'history' + // vueRouterBase, + // vueDevtools, + // vueOptionsAPI: false, + + // rebuildCache: true, // rebuilds Vite/linter/etc cache on startup + + // publicPath: '/', + // analyze: true, + // env: {}, + // rawDefine: {} + // ignorePublicFolder: true, + // minify: false, + // polyfillModulePreload: true, + // distDir + + // extendViteConf (viteConf) {}, + // viteVuePluginOptions: {}, + + + // vitePlugins: [ + // [ 'package-name', { ..options.. } ] + // ] + }, + + // Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#devServer + devServer: { + // https: true + open: true // opens browser window automatically + }, + + // https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#framework + framework: { + config: {}, + + // iconSet: 'material-icons', // Quasar icon set + // lang: 'en-US', // Quasar language pack + + // For special cases outside of where the auto-import strategy can have an impact + // (like functional components as one of the examples), + // you can manually specify Quasar components/directives to be available everywhere: + // + // components: [], + // directives: [], + + // Quasar plugins + plugins: [ + 'Notify', + 'Loading', + ] + }, + + // animations: 'all', // --- includes all animations + // https://v2.quasar.dev/options/animations + animations: [], + + // https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#property-sourcefiles + // sourceFiles: { + // rootComponent: 'src/App.vue', + // router: 'src/router/index', + // store: 'src/store/index', + // registerServiceWorker: 'src-pwa/register-service-worker', + // serviceWorker: 'src-pwa/custom-service-worker', + // pwaManifestFile: 'src-pwa/manifest.json', + // electronMain: 'src-electron/electron-main', + // electronPreload: 'src-electron/electron-preload' + // }, + + // https://v2.quasar.dev/quasar-cli/developing-ssr/configuring-ssr + ssr: { + // ssrPwaHtmlFilename: 'offline.html', // do NOT use index.html as name! + // will mess up SSR + + // extendSSRWebserverConf (esbuildConf) {}, + // extendPackageJson (json) {}, + + pwa: false, + + // manualStoreHydration: true, + // manualPostHydrationTrigger: true, + + prodPort: 3000, // The default port that the production server should use + // (gets superseded if process.env.PORT is specified at runtime) + + middlewares: [ + 'render' // keep this as last one + ] + }, + + // https://v2.quasar.dev/quasar-cli/developing-pwa/configuring-pwa + pwa: { + workboxMode: 'generateSW', // or 'injectManifest' + injectPwaMetaTags: true, + swFilename: 'sw.js', + manifestFilename: 'manifest.json', + useCredentialsForManifestTag: false, + // useFilenameHashes: true, + // extendGenerateSWOptions (cfg) {} + // extendInjectManifestOptions (cfg) {}, + // extendManifestJson (json) {} + // extendPWACustomSWConf (esbuildConf) {} + }, + + // Full list of options: https://v2.quasar.dev/quasar-cli/developing-cordova-apps/configuring-cordova + cordova: { + // noIosLegacyBuildFlag: true, // uncomment only if you know what you are doing + }, + + // Full list of options: https://v2.quasar.dev/quasar-cli/developing-capacitor-apps/configuring-capacitor + capacitor: { + hideSplashscreen: true + }, + + // Full list of options: https://v2.quasar.dev/quasar-cli/developing-electron-apps/configuring-electron + electron: { + // extendElectronMainConf (esbuildConf) + // extendElectronPreloadConf (esbuildConf) + + // specify the debugging port to use for the Electron app when running in development mode + inspectPort: 5858, + + bundler: 'packager', // 'packager' or 'builder' + + packager: { + // https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#options + + // OS X / Mac App Store + // appBundleId: '', + // appCategoryType: '', + // osxSign: '', + // protocol: 'myapp://path', + + // Windows only + // win32metadata: { ... } + }, + + builder: { + // https://www.electron.build/configuration/configuration + + appId: 'survey-standalone' + } + }, + + // Full list of options: https://v2.quasar.dev/quasar-cli-vite/developing-browser-extensions/configuring-bex + bex: { + contentScripts: [ + 'my-content-script' + ], + + // extendBexScriptsConf (esbuildConf) {} + // extendBexManifestJson (json) {} + } + } +}); diff --git a/survey-web-app-main/src/App.vue b/survey-web-app-main/src/App.vue new file mode 100644 index 0000000..38442ee --- /dev/null +++ b/survey-web-app-main/src/App.vue @@ -0,0 +1,11 @@ + + + diff --git a/survey-web-app-main/src/assets/quasar-logo-vertical.svg b/survey-web-app-main/src/assets/quasar-logo-vertical.svg new file mode 100644 index 0000000..8210831 --- /dev/null +++ b/survey-web-app-main/src/assets/quasar-logo-vertical.svg @@ -0,0 +1,15 @@ + + + + + + + + + \ No newline at end of file diff --git a/survey-web-app-main/src/components/Survey.vue b/survey-web-app-main/src/components/Survey.vue new file mode 100644 index 0000000..426f223 --- /dev/null +++ b/survey-web-app-main/src/components/Survey.vue @@ -0,0 +1,113 @@ + + + + diff --git a/survey-web-app-main/src/components/SurveyEdit.vue b/survey-web-app-main/src/components/SurveyEdit.vue new file mode 100644 index 0000000..b416437 --- /dev/null +++ b/survey-web-app-main/src/components/SurveyEdit.vue @@ -0,0 +1,232 @@ + + + + + + \ No newline at end of file diff --git a/survey-web-app-main/src/css/app.css b/survey-web-app-main/src/css/app.css new file mode 100644 index 0000000..3487b95 --- /dev/null +++ b/survey-web-app-main/src/css/app.css @@ -0,0 +1,7 @@ +/* app global css */ +.survey-card { + margin-top: 20px; + padding: 50px; + width: 100%; + max-width: 750px; +} \ No newline at end of file diff --git a/survey-web-app-main/src/layouts/MainLayout.vue b/survey-web-app-main/src/layouts/MainLayout.vue new file mode 100644 index 0000000..d221be1 --- /dev/null +++ b/survey-web-app-main/src/layouts/MainLayout.vue @@ -0,0 +1,23 @@ + + + diff --git a/survey-web-app-main/src/pages/EditPage.vue b/survey-web-app-main/src/pages/EditPage.vue new file mode 100644 index 0000000..8d2e287 --- /dev/null +++ b/survey-web-app-main/src/pages/EditPage.vue @@ -0,0 +1,47 @@ + + + \ No newline at end of file diff --git a/survey-web-app-main/src/pages/ErrorNotFound.vue b/survey-web-app-main/src/pages/ErrorNotFound.vue new file mode 100644 index 0000000..c1c178b --- /dev/null +++ b/survey-web-app-main/src/pages/ErrorNotFound.vue @@ -0,0 +1,31 @@ + + + diff --git a/survey-web-app-main/src/pages/ViewPage.vue b/survey-web-app-main/src/pages/ViewPage.vue new file mode 100644 index 0000000..998a735 --- /dev/null +++ b/survey-web-app-main/src/pages/ViewPage.vue @@ -0,0 +1,45 @@ + + + diff --git a/survey-web-app-main/src/router/index.js b/survey-web-app-main/src/router/index.js new file mode 100644 index 0000000..ca3cd61 --- /dev/null +++ b/survey-web-app-main/src/router/index.js @@ -0,0 +1,30 @@ +import { route } from 'quasar/wrappers' +import { createRouter, createMemoryHistory, createWebHistory, createWebHashHistory } from 'vue-router' +import routes from './routes' + +/* + * If not building with SSR mode, you can + * directly export the Router instantiation; + * + * The function below can be async too; either use + * async/await or return a Promise which resolves + * with the Router instance. + */ + +export default route(function (/* { store, ssrContext } */) { + const createHistory = process.env.SERVER + ? createMemoryHistory + : (process.env.VUE_ROUTER_MODE === 'history' ? createWebHistory : createWebHashHistory) + + const Router = createRouter({ + scrollBehavior: () => ({ left: 0, top: 0 }), + routes, + + // Leave this as is and make changes in quasar.conf.js instead! + // quasar.conf.js -> build -> vueRouterMode + // quasar.conf.js -> build -> publicPath + history: createHistory(process.env.VUE_ROUTER_BASE) + }) + + return Router +}) diff --git a/survey-web-app-main/src/router/routes.js b/survey-web-app-main/src/router/routes.js new file mode 100644 index 0000000..4225a30 --- /dev/null +++ b/survey-web-app-main/src/router/routes.js @@ -0,0 +1,20 @@ + +const routes = [ + { + path: '/', + component: () => import('layouts/MainLayout.vue'), + children: [ + { path: 'view', component: () => import('pages/ViewPage.vue') }, + { path: 'edit', component: () => import('pages/EditPage.vue') }, + ] + }, + + // Always leave this as last one, + // but you can also remove it + { + path: '/:catchAll(.*)*', + component: () => import('pages/ErrorNotFound.vue') + } +] + +export default routes diff --git a/survey-web-app-main/src/services/JSONService.js b/survey-web-app-main/src/services/JSONService.js new file mode 100644 index 0000000..e69de29 diff --git a/survey-web-app-main/src/services/imageService.js b/survey-web-app-main/src/services/imageService.js new file mode 100644 index 0000000..4ccf72f --- /dev/null +++ b/survey-web-app-main/src/services/imageService.js @@ -0,0 +1,32 @@ +import { supabase } from 'src/services/supabaseClient' + + +export function getImageUrlById(surveyId) { + return supabase.storage + .from('survey-preview') + .createSignedUrl(`previews/${surveyId}/preview`, 600) +} + + +export async function setQuestionImageUrl(question, questionId) { + const response = await getImageUrlById(questionId) + if (!response.data) { + question.isLoading = false + } + question.imageUrl = response.data.signedUrl +} + + +export function uploadImageById(surveyId, image) { + return supabase.storage + .from('survey-preview') + .upload(`previews/${surveyId}/preview`, image, { upsert: true }) +} + + +export function removeOrIgnoreImageById(surveyId) { + return supabase.storage + .from('survey-preview') + .remove([`previews/${surveyId}/preview`]) +} + diff --git a/survey-web-app-main/src/services/supabaseClient.js b/survey-web-app-main/src/services/supabaseClient.js new file mode 100644 index 0000000..701b4c8 --- /dev/null +++ b/survey-web-app-main/src/services/supabaseClient.js @@ -0,0 +1,6 @@ +import { createClient } from '@supabase/supabase-js' + +const supabaseUrl = "https://qdsibpkizystoiqpvoxo.supabase.co" +const supabaseAnonKey = "" + +export const supabase = createClient(supabaseUrl, supabaseAnonKey) \ No newline at end of file diff --git a/survey-web-app-main/yarn.lock b/survey-web-app-main/yarn.lock new file mode 100644 index 0000000..e6f1d3f --- /dev/null +++ b/survey-web-app-main/yarn.lock @@ -0,0 +1,2883 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/parser@^7.20.15", "@babel/parser@^7.21.3": + version "7.22.10" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.22.10.tgz" + integrity sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ== + +"@cloudflare/kv-asset-handler@^0.2.0": + version "0.2.0" + resolved "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.2.0.tgz" + integrity sha512-MVbXLbTcAotOPUj0pAMhVtJ+3/kFkwJqc5qNOleOZTv6QkZZABDMS21dSrSlVswEHwrpWC03e4fWytjqKvuE2A== + dependencies: + mime "^3.0.0" + +"@cloudflare/workerd-linux-64@1.20230814.0": + version "1.20230814.0" + resolved "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20230814.0.tgz" + integrity sha512-1/y2KHQroshBpCLGX0B+qGdNeXtsAEnMHHhFVWfqdVzUh8DxlpI1Z7II+J6+8a4z8aR/RZnjw+P8ZguECMB/qw== + +"@esbuild-plugins/node-globals-polyfill@^0.1.1": + version "0.1.1" + resolved "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.1.1.tgz" + integrity sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg== + +"@esbuild-plugins/node-modules-polyfill@^0.1.4": + version "0.1.4" + resolved "https://registry.npmjs.org/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.1.4.tgz" + integrity sha512-uZbcXi0zbmKC/050p3gJnne5Qdzw8vkXIv+c2BW0Lsc1ji1SkrxbKPUy5Efr0blbTu1SL8w4eyfpnSdPg3G0Qg== + dependencies: + escape-string-regexp "^4.0.0" + rollup-plugin-node-polyfills "^0.2.1" + +"@esbuild/linux-x64@0.16.3": + version "0.16.3" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.3.tgz" + integrity sha512-SDiG0nCixYO9JgpehoKgScwic7vXXndfasjnD5DLbp1xltANzqZ425l7LSdHynt19UWOcDjG9wJJzSElsPvk0w== + +"@grammyjs/web-app@^1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@grammyjs/web-app/-/web-app-1.3.0.tgz" + integrity sha512-wQgKFNVcgBPiJLu6LoPM3OGy61JY16qo7v9X7/E4DImob0MFh/873GaZ/7yFHP7PpxCTBXEUwiJ6DlSuYbzyCA== + dependencies: + "@types/telegram-web-app" "^6.4.0" + +"@jridgewell/sourcemap-codec@^1.4.15": + version "1.4.15" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@quasar/app-vite@^1.3.0": + version "1.4.3" + resolved "https://registry.npmjs.org/@quasar/app-vite/-/app-vite-1.4.3.tgz" + integrity sha512-5iMs1sk6fyYTFoRVySwFXWL/PS23UEsdk+YSFejhXnSs5fVDmb2GQMguCHwDl3jPIHjZ7A+XKkb2iWx9pjiPXw== + dependencies: + "@quasar/render-ssr-error" "^1.0.1" + "@quasar/vite-plugin" "^1.3.3" + "@rollup/pluginutils" "^4.1.2" + "@types/chrome" "^0.0.208" + "@types/compression" "^1.7.2" + "@types/cordova" "0.0.34" + "@types/express" "^4.17.13" + "@vitejs/plugin-vue" "^2.2.0" + archiver "^5.3.0" + chokidar "^3.5.3" + ci-info "^3.7.1" + compression "^1.7.4" + cross-spawn "^7.0.3" + dot-prop "6.0.1" + elementtree "0.1.7" + esbuild "0.14.51" + express "^4.17.3" + fast-glob "3.2.12" + fs-extra "^11.1.0" + html-minifier "^4.0.0" + inquirer "^8.2.1" + isbinaryfile "^5.0.0" + kolorist "^1.5.1" + lodash "^4.17.21" + minimist "^1.2.6" + open "^8.4.0" + register-service-worker "^1.7.2" + rollup-plugin-visualizer "^5.5.4" + sass "1.32.12" + semver "^7.3.5" + serialize-javascript "^6.0.0" + table "^6.8.0" + vite "^2.9.13" + webpack-merge "^5.8.0" + +"@quasar/extras@^1.16.4": + version "1.16.5" + resolved "https://registry.npmjs.org/@quasar/extras/-/extras-1.16.5.tgz" + integrity sha512-3VAJS9NECr1OSHX674+3YvEMIlHclr81aZrEkoBtVqr+sX4In22Up44toua+qNFsxnoATPqzpwKOJxA3iAF71Q== + +"@quasar/render-ssr-error@^1.0.1": + version "1.0.2" + resolved "https://registry.npmjs.org/@quasar/render-ssr-error/-/render-ssr-error-1.0.2.tgz" + integrity sha512-Y0wyqYHVxc1IOBH6pRiKMSWDqO1mwQu11Zo8rw4cBdclPOQqFb7f65UuRbk5LfbqlXV2hYvklNcy0SBAOiAQnw== + dependencies: + stack-trace "^1.0.0-pre2" + +"@quasar/vite-plugin@^1.3.3": + version "1.4.1" + resolved "https://registry.npmjs.org/@quasar/vite-plugin/-/vite-plugin-1.4.1.tgz" + integrity sha512-lLw7j1A7viLQ6++p29NuYUdfjpaWctRi6tRhMYm8VPumXs8enGeV59JEJ+1tJR2FcQUMYsGOoyHHcQrsakXIkA== + +"@rollup/pluginutils@^4.1.2": + version "4.2.1" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz" + integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== + dependencies: + estree-walker "^2.0.1" + picomatch "^2.2.2" + +"@supabase/functions-js@^2.1.0": + version "2.1.2" + resolved "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.1.2.tgz" + integrity sha512-QCR6pwJs9exCl37bmpMisUd6mf+0SUBJ6mUpiAjEkSJ/+xW8TCuO14bvkWHADd5hElJK9MxNlMQXxSA4DRz9nQ== + dependencies: + cross-fetch "^3.1.5" + +"@supabase/gotrue-js@^2.46.1": + version "2.47.0" + resolved "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.47.0.tgz" + integrity sha512-3e34/vsKH/DoSZCpB85UZpFWSJ2p4GRUUlqgAgeTPagPlx4xS+Nc5v7g7ic7vp3gK0J5PsYVCn9Qu2JQUp4vXg== + dependencies: + cross-fetch "^3.1.5" + +"@supabase/postgrest-js@^1.8.0": + version "1.8.0" + resolved "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.8.0.tgz" + integrity sha512-R6leDIC92NgjyG2/tCRJ42rWN7+fZY6ulTEE+c00tcnghn6cX4IYUlnTNMtrdfYC2JYNOTyM+rWj63Wdhr7Zig== + dependencies: + cross-fetch "^3.1.5" + +"@supabase/realtime-js@^2.7.3": + version "2.7.3" + resolved "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.7.3.tgz" + integrity sha512-c7TzL81sx2kqyxsxcDduJcHL9KJdCOoKimGP6lQSqiZKX42ATlBZpWbyy9KFGFBjAP4nyopMf5JhPi2ZH9jyNw== + dependencies: + "@types/phoenix" "^1.5.4" + "@types/websocket" "^1.0.3" + websocket "^1.0.34" + +"@supabase/storage-js@^2.5.1": + version "2.5.1" + resolved "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.5.1.tgz" + integrity sha512-nkR0fQA9ScAtIKA3vNoPEqbZv1k5B5HVRYEvRWdlP6mUpFphM9TwPL2jZ/ztNGMTG5xT6SrHr+H7Ykz8qzbhjw== + dependencies: + cross-fetch "^3.1.5" + +"@supabase/supabase-js@^2.32.0": + version "2.32.0" + resolved "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.32.0.tgz" + integrity sha512-1ShFhuOI5Du7604nlCelBsRD61daXk2O0qwjumoz35bqrYThnSPPtpJqZOHw6Mg6o7mLjIInYLh/DBlh8UvzRg== + dependencies: + "@supabase/functions-js" "^2.1.0" + "@supabase/gotrue-js" "^2.46.1" + "@supabase/postgrest-js" "^1.8.0" + "@supabase/realtime-js" "^2.7.3" + "@supabase/storage-js" "^2.5.1" + cross-fetch "^3.1.5" + +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/chrome@^0.0.208": + version "0.0.208" + resolved "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.208.tgz" + integrity sha512-VDU/JnXkF5qaI7WBz14Azpa2VseZTgML0ia/g/B1sr9OfdOnHiH/zZ7P7qCDqxSlkqJh76/bPc8jLFcx8rHJmw== + dependencies: + "@types/filesystem" "*" + "@types/har-format" "*" + +"@types/compression@^1.7.2": + version "1.7.2" + resolved "https://registry.npmjs.org/@types/compression/-/compression-1.7.2.tgz" + integrity sha512-lwEL4M/uAGWngWFLSG87ZDr2kLrbuR8p7X+QZB1OQlT+qkHsCPDVFnHPyXf4Vyl4yDDorNY+mAhosxkCvppatg== + dependencies: + "@types/express" "*" + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/cordova@0.0.34": + version "0.0.34" + resolved "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz" + integrity sha512-rkiiTuf/z2wTd4RxFOb+clE7PF4AEJU0hsczbUdkHHBtkUmpWQpEddynNfJYKYtZFJKbq4F+brfekt1kx85IZA== + +"@types/express-serve-static-core@^4.17.33": + version "4.17.35" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz" + integrity sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*", "@types/express@^4.17.13": + version "4.17.17" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz" + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/filesystem@*": + version "0.0.32" + resolved "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.32.tgz" + integrity sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ== + dependencies: + "@types/filewriter" "*" + +"@types/filewriter@*": + version "0.0.29" + resolved "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.29.tgz" + integrity sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ== + +"@types/har-format@*": + version "1.2.11" + resolved "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.11.tgz" + integrity sha512-T232/TneofqK30AD1LRrrf8KnjLvzrjWDp7eWST5KoiSzrBfRsLrWDPk4STQPW4NZG6v2MltnduBVmakbZOBIQ== + +"@types/http-errors@*": + version "2.0.1" + resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz" + integrity sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ== + +"@types/mime@*": + version "3.0.1" + resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + +"@types/mime@^1": + version "1.3.2" + resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz" + integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== + +"@types/node@*": + version "20.4.10" + resolved "https://registry.npmjs.org/@types/node/-/node-20.4.10.tgz" + integrity sha512-vwzFiiy8Rn6E0MtA13/Cxxgpan/N6UeNYR9oUu6kuJWxu6zCk98trcDp8CBhbtaeuq9SykCmXkFr2lWLoPcvLg== + +"@types/phoenix@^1.5.4": + version "1.6.0" + resolved "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.0.tgz" + integrity sha512-qwfpsHmFuhAS/dVd4uBIraMxRd56vwBUYQGZ6GpXnFuM2XMRFJbIyruFKKlW2daQliuYZwe0qfn/UjFCDKic5g== + +"@types/qs@*": + version "6.9.7" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + +"@types/send@*": + version "0.17.1" + resolved "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz" + integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-static@*": + version "1.15.2" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz" + integrity sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw== + dependencies: + "@types/http-errors" "*" + "@types/mime" "*" + "@types/node" "*" + +"@types/telegram-web-app@^6.4.0": + version "6.7.0" + resolved "https://registry.npmjs.org/@types/telegram-web-app/-/telegram-web-app-6.7.0.tgz" + integrity sha512-ill31jBCQW6bo4k0GjsUVNKP0MY336p7ZUxmMi+WofAbO7Reb366jsnqNIrqNtxcIB4kKEpMUHVniArcXSML6g== + +"@types/websocket@^1.0.3": + version "1.0.5" + resolved "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz" + integrity sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ== + dependencies: + "@types/node" "*" + +"@vitejs/plugin-vue@^2.0.0 || ^3.0.0 || ^4.0.0", "@vitejs/plugin-vue@^2.2.0": + version "2.3.4" + resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.4.tgz" + integrity sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg== + +"@vue/compiler-core@3.3.4": + version "3.3.4" + resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz" + integrity sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g== + dependencies: + "@babel/parser" "^7.21.3" + "@vue/shared" "3.3.4" + estree-walker "^2.0.2" + source-map-js "^1.0.2" + +"@vue/compiler-dom@3.3.4": + version "3.3.4" + resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz" + integrity sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w== + dependencies: + "@vue/compiler-core" "3.3.4" + "@vue/shared" "3.3.4" + +"@vue/compiler-sfc@3.3.4": + version "3.3.4" + resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz" + integrity sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ== + dependencies: + "@babel/parser" "^7.20.15" + "@vue/compiler-core" "3.3.4" + "@vue/compiler-dom" "3.3.4" + "@vue/compiler-ssr" "3.3.4" + "@vue/reactivity-transform" "3.3.4" + "@vue/shared" "3.3.4" + estree-walker "^2.0.2" + magic-string "^0.30.0" + postcss "^8.1.10" + source-map-js "^1.0.2" + +"@vue/compiler-ssr@3.3.4": + version "3.3.4" + resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz" + integrity sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ== + dependencies: + "@vue/compiler-dom" "3.3.4" + "@vue/shared" "3.3.4" + +"@vue/devtools-api@^6.5.0": + version "6.5.0" + resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz" + integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q== + +"@vue/reactivity-transform@3.3.4": + version "3.3.4" + resolved "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz" + integrity sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw== + dependencies: + "@babel/parser" "^7.20.15" + "@vue/compiler-core" "3.3.4" + "@vue/shared" "3.3.4" + estree-walker "^2.0.2" + magic-string "^0.30.0" + +"@vue/reactivity@3.3.4": + version "3.3.4" + resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz" + integrity sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ== + dependencies: + "@vue/shared" "3.3.4" + +"@vue/runtime-core@3.3.4": + version "3.3.4" + resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz" + integrity sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA== + dependencies: + "@vue/reactivity" "3.3.4" + "@vue/shared" "3.3.4" + +"@vue/runtime-dom@3.3.4": + version "3.3.4" + resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz" + integrity sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ== + dependencies: + "@vue/runtime-core" "3.3.4" + "@vue/shared" "3.3.4" + csstype "^3.1.1" + +"@vue/server-renderer@3.3.4": + version "3.3.4" + resolved "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz" + integrity sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ== + dependencies: + "@vue/compiler-ssr" "3.3.4" + "@vue/shared" "3.3.4" + +"@vue/shared@3.3.4": + version "3.3.4" + resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz" + integrity sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ== + +accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-walk@^8.2.0: + version "8.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.8.0: + version "8.10.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + +ajv@^8.0.1: + version "8.12.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +archiver-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz" + integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== + dependencies: + glob "^7.1.4" + graceful-fs "^4.2.0" + lazystream "^1.0.0" + lodash.defaults "^4.2.0" + lodash.difference "^4.5.0" + lodash.flatten "^4.4.0" + lodash.isplainobject "^4.0.6" + lodash.union "^4.6.0" + normalize-path "^3.0.0" + readable-stream "^2.0.0" + +archiver@^5.3.0: + version "5.3.1" + resolved "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz" + integrity sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w== + dependencies: + archiver-utils "^2.1.0" + async "^3.2.3" + buffer-crc32 "^0.2.1" + readable-stream "^3.6.0" + readdir-glob "^1.0.0" + tar-stream "^2.2.0" + zip-stream "^4.1.0" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +as-table@^1.0.36: + version "1.0.55" + resolved "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz" + integrity sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ== + dependencies: + printable-characters "^1.0.42" + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async@^3.2.3: + version "3.2.4" + resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +autoprefixer@^10.4.2: + version "10.4.14" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz" + integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ== + dependencies: + browserslist "^4.21.5" + caniuse-lite "^1.0.30001464" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +better-sqlite3@^8.1.0: + version "8.5.0" + resolved "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.5.0.tgz" + integrity sha512-vbPcv/Hx5WYdyNg/NbcfyaBZyv9s/NVbxb7yCeC5Bq1pVocNxeL2tZmSu3Rlm4IEOTjYdGyzWQgyx0OSdORBzw== + dependencies: + bindings "^1.5.0" + prebuild-install "^7.1.0" + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bl@^4.0.3, bl@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +blake3-wasm@^2.1.5: + version "2.1.5" + resolved "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz" + integrity sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g== + +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.21.5, "browserslist@>= 4.21.0": + version "4.21.10" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz" + integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ== + dependencies: + caniuse-lite "^1.0.30001517" + electron-to-chromium "^1.4.477" + node-releases "^2.0.13" + update-browserslist-db "^1.0.11" + +buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: + version "0.2.13" + resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bufferutil@^4.0.1: + version "4.0.7" + resolved "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz" + integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw== + dependencies: + node-gyp-build "^4.3.0" + +busboy@^1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +camel-case@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz" + integrity sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w== + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001517: + version "1.0.30001519" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz" + integrity sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg== + +capnp-ts@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/capnp-ts/-/capnp-ts-0.7.0.tgz" + integrity sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g== + dependencies: + debug "^4.3.1" + tslib "^2.2.0" + +chalk@^4.1.0, chalk@^4.1.1: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +chokidar@^3.5.3, "chokidar@>=3.0.0 <4.0.0": + version "3.5.3" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +ci-info@^3.7.1: + version "3.8.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + +clean-css@^4.2.1: + version "4.2.4" + resolved "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz" + integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A== + dependencies: + source-map "~0.6.0" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.9.0" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz" + integrity sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g== + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +commander@^2.19.0: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +compress-commons@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz" + integrity sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ== + dependencies: + buffer-crc32 "^0.2.13" + crc32-stream "^4.0.2" + normalize-path "^3.0.0" + readable-stream "^3.6.0" + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@^0.5.0, cookie@0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +crc-32@^1.2.0: + version "1.2.2" + resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +crc32-stream@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz" + integrity sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w== + dependencies: + crc-32 "^1.2.0" + readable-stream "^3.4.0" + +cross-fetch@^3.1.5: + version "3.1.8" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +csstype@^3.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + +d@^1.0.1, d@1: + version "1.0.1" + resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +data-uri-to-buffer@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz" + integrity sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA== + +debug@^2.2.0, debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^4.3.1: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-libc@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz" + integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== + +dot-prop@6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== + dependencies: + is-obj "^2.0.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.4.477: + version "1.4.490" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.490.tgz" + integrity sha512-6s7NVJz+sATdYnIwhdshx/N/9O6rvMxmhVoDSDFdj6iA45gHR8EQje70+RYsF4GeB+k0IeNSBnP7yG9ZXJFr7A== + +elementtree@0.1.7: + version "0.1.7" + resolved "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz" + integrity sha512-wkgGT6kugeQk/P6VZ/f4T+4HB41BVgNBq5CDIZVbQ02nvTVqAiVTbskxxu3eA/X96lMlfYOwnLQpN2v5E1zDEg== + dependencies: + sax "1.1.4" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.62" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +esbuild-linux-64@0.14.51: + version "0.14.51" + resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.51.tgz" + integrity sha512-dxjhrqo5i7Rq6DXwz5v+MEHVs9VNFItJmHBe1CxROWNf4miOGoQhqSG8StStbDkQ1Mtobg6ng+4fwByOhoQoeA== + +esbuild-linux-64@0.14.54: + version "0.14.54" + resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz" + integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg== + +esbuild@*, esbuild@0.14.51: + version "0.14.51" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.51.tgz" + integrity sha512-+CvnDitD7Q5sT7F+FM65sWkF8wJRf+j9fPcprxYV4j+ohmzVj2W7caUqH2s5kCaCJAfcAICjSlKhDCcvDpU7nw== + optionalDependencies: + esbuild-android-64 "0.14.51" + esbuild-android-arm64 "0.14.51" + esbuild-darwin-64 "0.14.51" + esbuild-darwin-arm64 "0.14.51" + esbuild-freebsd-64 "0.14.51" + esbuild-freebsd-arm64 "0.14.51" + esbuild-linux-32 "0.14.51" + esbuild-linux-64 "0.14.51" + esbuild-linux-arm "0.14.51" + esbuild-linux-arm64 "0.14.51" + esbuild-linux-mips64le "0.14.51" + esbuild-linux-ppc64le "0.14.51" + esbuild-linux-riscv64 "0.14.51" + esbuild-linux-s390x "0.14.51" + esbuild-netbsd-64 "0.14.51" + esbuild-openbsd-64 "0.14.51" + esbuild-sunos-64 "0.14.51" + esbuild-windows-32 "0.14.51" + esbuild-windows-64 "0.14.51" + esbuild-windows-arm64 "0.14.51" + +esbuild@^0.14.27: + version "0.14.54" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz" + integrity sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA== + optionalDependencies: + "@esbuild/linux-loong64" "0.14.54" + esbuild-android-64 "0.14.54" + esbuild-android-arm64 "0.14.54" + esbuild-darwin-64 "0.14.54" + esbuild-darwin-arm64 "0.14.54" + esbuild-freebsd-64 "0.14.54" + esbuild-freebsd-arm64 "0.14.54" + esbuild-linux-32 "0.14.54" + esbuild-linux-64 "0.14.54" + esbuild-linux-arm "0.14.54" + esbuild-linux-arm64 "0.14.54" + esbuild-linux-mips64le "0.14.54" + esbuild-linux-ppc64le "0.14.54" + esbuild-linux-riscv64 "0.14.54" + esbuild-linux-s390x "0.14.54" + esbuild-netbsd-64 "0.14.54" + esbuild-openbsd-64 "0.14.54" + esbuild-sunos-64 "0.14.54" + esbuild-windows-32 "0.14.54" + esbuild-windows-64 "0.14.54" + esbuild-windows-arm64 "0.14.54" + +esbuild@0.16.3: + version "0.16.3" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.16.3.tgz" + integrity sha512-71f7EjPWTiSguen8X/kxEpkAS7BFHwtQKisCDDV3Y4GLGWBaoSCyD5uXkaUew6JDzA9FEN1W23mdnSwW9kqCeg== + optionalDependencies: + "@esbuild/android-arm" "0.16.3" + "@esbuild/android-arm64" "0.16.3" + "@esbuild/android-x64" "0.16.3" + "@esbuild/darwin-arm64" "0.16.3" + "@esbuild/darwin-x64" "0.16.3" + "@esbuild/freebsd-arm64" "0.16.3" + "@esbuild/freebsd-x64" "0.16.3" + "@esbuild/linux-arm" "0.16.3" + "@esbuild/linux-arm64" "0.16.3" + "@esbuild/linux-ia32" "0.16.3" + "@esbuild/linux-loong64" "0.16.3" + "@esbuild/linux-mips64el" "0.16.3" + "@esbuild/linux-ppc64" "0.16.3" + "@esbuild/linux-riscv64" "0.16.3" + "@esbuild/linux-s390x" "0.16.3" + "@esbuild/linux-x64" "0.16.3" + "@esbuild/netbsd-x64" "0.16.3" + "@esbuild/openbsd-x64" "0.16.3" + "@esbuild/sunos-x64" "0.16.3" + "@esbuild/win32-arm64" "0.16.3" + "@esbuild/win32-ia32" "0.16.3" + "@esbuild/win32-x64" "0.16.3" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + +estree-walker@^2.0.1, estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +exit-hook@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/exit-hook/-/exit-hook-2.2.1.tgz" + integrity sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw== + +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + +express@^4.17.3: + version "4.18.2" + resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.7.0" + resolved "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@3.2.12: + version "3.2.12" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@^11.1.0: + version "11.1.1" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz" + integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2: + version "1.2.1" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + +get-source@^2.0.12: + version "2.0.12" + resolved "https://registry.npmjs.org/get-source/-/get-source-2.0.12.tgz" + integrity sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w== + dependencies: + data-uri-to-buffer "^2.0.0" + source-map "^0.6.1" + +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz" + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^7.1.4: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +html-minifier@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz" + integrity sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig== + dependencies: + camel-case "^3.0.0" + clean-css "^4.2.1" + commander "^2.19.0" + he "^1.2.0" + param-case "^2.1.1" + relateurl "^0.2.7" + uglify-js "^3.5.1" + +http-cache-semantics@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +iconv-lite@^0.4.24, iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@~1.3.0: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inquirer@^8.2.1: + version "8.2.6" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz" + integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^6.0.1" + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.13.0: + version "2.13.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== + dependencies: + has "^1.0.3" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isbinaryfile@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.0.tgz" + integrity sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^4.1.5: + version "4.1.5" + resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + +kolorist@^1.5.1: + version "1.8.0" + resolved "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz" + integrity sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ== + +lazystream@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz" + integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== + dependencies: + readable-stream "^2.0.5" + +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz" + integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== + +lodash.difference@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz" + integrity sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA== + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz" + integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + +lodash.union@^4.6.0: + version "4.6.0" + resolved "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz" + integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz" + integrity sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +magic-string@^0.25.3: + version "0.25.9" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + +magic-string@^0.30.0: + version "0.30.2" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.2.tgz" + integrity sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz" + integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +miniflare@3.20230801.0: + version "3.20230801.0" + resolved "https://registry.npmjs.org/miniflare/-/miniflare-3.20230801.0.tgz" + integrity sha512-jXl++AYc3PDMu9cxeMbFgzrnbgwU8VIkw49cdpOaIAz7jQgPcLuNLOyAw3G+uaLELnILHs81MM67fGR1hAc62A== + dependencies: + acorn "^8.8.0" + acorn-walk "^8.2.0" + better-sqlite3 "^8.1.0" + capnp-ts "^0.7.0" + exit-hook "^2.2.1" + glob-to-regexp "^0.4.1" + http-cache-semantics "^4.1.0" + kleur "^4.1.5" + set-cookie-parser "^2.6.0" + source-map-support "0.5.21" + stoppable "^1.1.0" + undici "^5.13.0" + workerd "^1.20230801.0" + ws "^8.11.0" + youch "^3.2.2" + zod "^3.20.6" + +minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.1.0: + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +mustache@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz" + integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nanoid@^3.3.3, nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + +node-abi@^3.3.0: + version "3.46.0" + resolved "https://registry.npmjs.org/node-abi/-/node-abi-3.46.0.tgz" + integrity sha512-LXvP3AqTIrtvH/jllXjkNVbYifpRbt9ThTtymSMSuHmhugQLAWr99QQFTm+ZRht9ziUvdGOgB+esme1C6iE6Lg== + dependencies: + semver "^7.3.5" + +node-fetch@^2.6.12: + version "2.6.12" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz" + integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g== + dependencies: + whatwg-url "^5.0.0" + +node-forge@^1: + version "1.3.1" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-gyp-build@^4.3.0: + version "4.6.0" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz" + integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== + +node-releases@^2.0.13: + version "2.0.13" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^8.4.0: + version "8.4.2" + resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +param-case@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz" + integrity sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w== + dependencies: + no-case "^2.2.0" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@^6.2.0: + version "6.2.1" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz" + integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.1.0, postcss@^8.1.10, postcss@^8.4.13, postcss@^8.4.14: + version "8.4.27" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz" + integrity sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prebuild-install@^7.1.0: + version "7.1.1" + resolved "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz" + integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== + dependencies: + detect-libc "^2.0.0" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^3.3.0" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + +printable-characters@^1.0.42: + version "1.0.42" + resolved "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz" + integrity sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +quasar@^2.6.0, quasar@^2.8.0: + version "2.12.4" + resolved "https://registry.npmjs.org/quasar/-/quasar-2.12.4.tgz" + integrity sha512-NDhLPUFQdUeKBRccggiwc6gsRXjgVjAZibX6xPmM1I4TKtZuwXM7OBlEtaqWbpshsFF5mC0xKnGeKAMy1ySJ8A== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +readable-stream@^2.0.0: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^2.0.5: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdir-glob@^1.0.0: + version "1.1.3" + resolved "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz" + integrity sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA== + dependencies: + minimatch "^5.1.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +register-service-worker@^1.7.2: + version "1.7.2" + resolved "https://registry.npmjs.org/register-service-worker/-/register-service-worker-1.7.2.tgz" + integrity sha512-CiD3ZSanZqcMPRhtfct5K9f7i3OLCcBBWsJjLh1gW9RO/nS94sVzY59iS+fgYBOBqaBpf4EzfqUF3j9IG+xo8A== + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve@^1.22.0: + version "1.22.4" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz" + integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rollup-plugin-inject@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz" + integrity sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w== + dependencies: + estree-walker "^0.6.1" + magic-string "^0.25.3" + rollup-pluginutils "^2.8.1" + +rollup-plugin-node-polyfills@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz" + integrity sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA== + dependencies: + rollup-plugin-inject "^3.0.0" + +rollup-plugin-visualizer@^5.5.4: + version "5.9.2" + resolved "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.2.tgz" + integrity sha512-waHktD5mlWrYFrhOLbti4YgQCn1uR24nYsNuXxg7LkPH8KdTXVWR9DNY1WU0QqokyMixVXJS4J04HNrVTMP01A== + dependencies: + open "^8.4.0" + picomatch "^2.3.1" + source-map "^0.7.4" + yargs "^17.5.1" + +rollup-pluginutils@^2.8.1: + version "2.8.2" + resolved "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + +"rollup@>=2.59.0 <2.78.0", "rollup@2.x || 3.x": + version "2.77.3" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.77.3.tgz" + integrity sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g== + optionalDependencies: + fsevents "~2.3.2" + +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^7.5.5: + version "7.8.1" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass@*, sass@1.32.12: + version "1.32.12" + resolved "https://registry.npmjs.org/sass/-/sass-1.32.12.tgz" + integrity sha512-zmXn03k3hN0KaiVTjohgkg98C3UowhL1/VSGdj4/VAAiMKGQOE80PFPxFP2Kyq0OUskPKcY5lImkhBKEHlypJA== + dependencies: + chokidar ">=3.0.0 <4.0.0" + +sax@1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz" + integrity sha512-5f3k2PbGGp+YtKJjOItpg3P99IMD84E4HOvcfleTb5joCHNXYLsR9yWFPOYGgaeMPDubQILTCMdsFb2OMeOjtg== + +selfsigned@^2.0.1: + version "2.1.1" + resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz" + integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== + dependencies: + node-forge "^1" + +semver@^7.3.5: + version "7.5.4" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-javascript@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz" + integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== + dependencies: + randombytes "^2.1.0" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +set-cookie-parser@^2.6.0: + version "2.6.0" + resolved "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz" + integrity sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-support@0.5.21: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.4: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +stack-trace@^1.0.0-pre2: + version "1.0.0-pre2" + resolved "https://registry.npmjs.org/stack-trace/-/stack-trace-1.0.0-pre2.tgz" + integrity sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A== + +stacktracey@^2.1.8: + version "2.1.8" + resolved "https://registry.npmjs.org/stacktracey/-/stacktracey-2.1.8.tgz" + integrity sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw== + dependencies: + as-table "^1.0.36" + get-source "^2.0.12" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +stoppable@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz" + integrity sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw== + +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +table@^6.8.0: + version "6.8.1" + resolved "https://registry.npmjs.org/table/-/table-6.8.1.tgz" + integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +tar-fs@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4, tar-stream@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +tslib@^2.1.0, tslib@^2.2.0: + version "2.6.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz" + integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.npmjs.org/type/-/type-1.2.0.tgz" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.7.2: + version "2.7.2" + resolved "https://registry.npmjs.org/type/-/type-2.7.2.tgz" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +uglify-js@^3.5.1: + version "3.17.4" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== + +undici@^5.13.0: + version "5.23.0" + resolved "https://registry.npmjs.org/undici/-/undici-5.23.0.tgz" + integrity sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg== + dependencies: + busboy "^1.6.0" + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@~1.0.0, unpipe@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +update-browserslist-db@^1.0.11: + version "1.0.11" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz" + integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz" + integrity sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +utf-8-validate@^5.0.2, utf-8-validate@>=5.0.2: + version "5.0.10" + resolved "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +"vite@^2.0.0 || ^3.0.0 || ^4.0.0", vite@^2.5.10, vite@^2.9.13: + version "2.9.16" + resolved "https://registry.npmjs.org/vite/-/vite-2.9.16.tgz" + integrity sha512-X+6q8KPyeuBvTQV8AVSnKDvXoBMnTx8zxh54sOwmmuOdxkjMmEJXH2UEchA+vTMps1xw9vL64uwJOWryULg7nA== + dependencies: + esbuild "^0.14.27" + postcss "^8.4.13" + resolve "^1.22.0" + rollup ">=2.59.0 <2.78.0" + optionalDependencies: + fsevents "~2.3.2" + +vue-router@^4.0.0, vue-router@^4.0.12: + version "4.2.4" + resolved "https://registry.npmjs.org/vue-router/-/vue-router-4.2.4.tgz" + integrity sha512-9PISkmaCO02OzPVOMq2w82ilty6+xJmQrarYZDkjZBfl4RvYAlt4PKnEX21oW4KTtWfa9OuO/b3qk1Od3AEdCQ== + dependencies: + "@vue/devtools-api" "^6.5.0" + +vue@^3.0.0, vue@^3.2.0, vue@^3.2.25, vue@^3.2.29, vue@3.3.4: + version "3.3.4" + resolved "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz" + integrity sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw== + dependencies: + "@vue/compiler-dom" "3.3.4" + "@vue/compiler-sfc" "3.3.4" + "@vue/runtime-dom" "3.3.4" + "@vue/server-renderer" "3.3.4" + "@vue/shared" "3.3.4" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webpack-merge@^5.8.0: + version "5.9.0" + resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz" + integrity sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg== + dependencies: + clone-deep "^4.0.1" + wildcard "^2.0.0" + +websocket@^1.0.34: + version "1.0.34" + resolved "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz" + integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wildcard@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + +workerd@^1.20230801.0: + version "1.20230814.0" + resolved "https://registry.npmjs.org/workerd/-/workerd-1.20230814.0.tgz" + integrity sha512-eic5xdb/HpuLxTk2IPQL6I07K5DYnEu0YPMOWbjk3agB41l4eQDWClxTC0ORLVw7U3eb+EHODE+vP+Pk7MJKCg== + optionalDependencies: + "@cloudflare/workerd-darwin-64" "1.20230814.0" + "@cloudflare/workerd-darwin-arm64" "1.20230814.0" + "@cloudflare/workerd-linux-64" "1.20230814.0" + "@cloudflare/workerd-linux-arm64" "1.20230814.0" + "@cloudflare/workerd-windows-64" "1.20230814.0" + +wrangler@^3.5.0: + version "3.5.0" + resolved "https://registry.npmjs.org/wrangler/-/wrangler-3.5.0.tgz" + integrity sha512-lvYo2JUxRXdobzd0hs96FT354DvKAYoAiPslceEpKmr0oHCreMWhU5AStfZwg1PEaJJZCwP17LqA5GgjvQ6zyg== + dependencies: + "@cloudflare/kv-asset-handler" "^0.2.0" + "@esbuild-plugins/node-globals-polyfill" "^0.1.1" + "@esbuild-plugins/node-modules-polyfill" "^0.1.4" + blake3-wasm "^2.1.5" + chokidar "^3.5.3" + esbuild "0.16.3" + miniflare "3.20230801.0" + nanoid "^3.3.3" + path-to-regexp "^6.2.0" + selfsigned "^2.0.1" + source-map "^0.7.4" + xxhash-wasm "^1.0.1" + optionalDependencies: + fsevents "~2.3.2" + +wrap-ansi@^6.0.1: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^8.11.0: + version "8.13.0" + resolved "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + +xxhash-wasm@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.0.2.tgz" + integrity sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz" + integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.5.1: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +youch@^3.2.2: + version "3.2.3" + resolved "https://registry.npmjs.org/youch/-/youch-3.2.3.tgz" + integrity sha512-ZBcWz/uzZaQVdCvfV4uk616Bbpf2ee+F/AvuKDR5EwX/Y4v06xWdtMluqTD7+KlZdM93lLm9gMZYo0sKBS0pgw== + dependencies: + cookie "^0.5.0" + mustache "^4.2.0" + stacktracey "^2.1.8" + +zip-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz" + integrity sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A== + dependencies: + archiver-utils "^2.1.0" + compress-commons "^4.1.0" + readable-stream "^3.6.0" + +zod@^3.20.6: + version "3.22.0" + resolved "https://registry.npmjs.org/zod/-/zod-3.22.0.tgz" + integrity sha512-y5KZY/ssf5n7hCGDGGtcJO/EBJEm5Pa+QQvFBeyMOtnFYOSflalxIFFvdaYevPhePcmcKC4aTbFkCcXN7D0O8Q== diff --git a/validator.py b/validator.py deleted file mode 100644 index e7f99eb..0000000 --- a/validator.py +++ /dev/null @@ -1,18 +0,0 @@ -from pydantic import BaseModel, Field, validator - - -class UserRegistrationDTO(BaseModel): - chat_id: str - age: str = Field(..., title="Возраст") - - -class ValidatedUserRegistrationDTO(UserRegistrationDTO): - @validator('age') - def validate_age(cls, age): - try: - age = int(age) - if age < 12 or age > 122: - raise ValueError("Возраст должен быть не меньше 12 лет и не больше максимума.") - except (ValueError, TypeError): - raise ValueError("Возраст должен быть числом.") - return age diff --git a/vue-qr-scanner-webapp-master/index.html b/vue-qr-scanner-webapp-master/index.html new file mode 100644 index 0000000..1316ba8 --- /dev/null +++ b/vue-qr-scanner-webapp-master/index.html @@ -0,0 +1,18 @@ + + + + + + + Scan Tool WebApp + + + +
+ + + + + diff --git a/vue-qr-scanner-webapp-master/package.json b/vue-qr-scanner-webapp-master/package.json new file mode 100644 index 0000000..3be29cf --- /dev/null +++ b/vue-qr-scanner-webapp-master/package.json @@ -0,0 +1,20 @@ +{ + "name": "scan-tool-webapp", + "private": true, + "version": "0.1.0", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "devDependencies": { + "@grammyjs/web-app": "^1.2.0", + "@vitejs/plugin-vue": "^4.0.0", + "prettier": "^2.8.1", + "vite": "^4.0.1", + "vite-plugin-vuetify": "^1.0.1", + "vue": "^3.2.45", + "vue-qrcode-reader": "^3.1.0-vue3-compatibility.5", + "vuetify": "^3.0.5" + } +} diff --git a/vue-qr-scanner-webapp-master/src/App.vue b/vue-qr-scanner-webapp-master/src/App.vue new file mode 100644 index 0000000..47bda10 --- /dev/null +++ b/vue-qr-scanner-webapp-master/src/App.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/vue-qr-scanner-webapp-master/src/ConsoleOutput.vue b/vue-qr-scanner-webapp-master/src/ConsoleOutput.vue new file mode 100644 index 0000000..e47e7e2 --- /dev/null +++ b/vue-qr-scanner-webapp-master/src/ConsoleOutput.vue @@ -0,0 +1,96 @@ + + + + + \ No newline at end of file diff --git a/vue-qr-scanner-webapp-master/src/env.d.ts b/vue-qr-scanner-webapp-master/src/env.d.ts new file mode 100644 index 0000000..8303f7f --- /dev/null +++ b/vue-qr-scanner-webapp-master/src/env.d.ts @@ -0,0 +1,9 @@ +/// + +interface ImportMetaEnv { + readonly VITE_BOT_URL: string +} + +interface ImportMeta { + readonly env: ImportMetaEnv +} \ No newline at end of file diff --git a/vue-qr-scanner-webapp-master/src/main.ts b/vue-qr-scanner-webapp-master/src/main.ts new file mode 100644 index 0000000..58ffcf8 --- /dev/null +++ b/vue-qr-scanner-webapp-master/src/main.ts @@ -0,0 +1,15 @@ +import "vuetify/styles"; +import { createApp } from "vue"; +import { createVuetify } from "vuetify"; + +import App from "./App.vue"; + +const app = createApp(App); +const vuetify = createVuetify(); + +if (Object.keys(window.Telegram.WebApp.themeParams).length === 0) { + window.location.href = import.meta.env.VITE_BOT_URL; +} + +app.use(vuetify); +app.mount("#app"); diff --git a/vue-qr-scanner-webapp-master/vite.config.js b/vue-qr-scanner-webapp-master/vite.config.js new file mode 100644 index 0000000..f0e6fda --- /dev/null +++ b/vue-qr-scanner-webapp-master/vite.config.js @@ -0,0 +1,14 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import vuetify from 'vite-plugin-vuetify' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + vue(), + vuetify() + ], + server: { + port: 3001 + } +})