diff --git a/vkwave/api/methods/_abc.py b/vkwave/api/methods/_abc.py index ee4f6e70..12e41ace 100644 --- a/vkwave/api/methods/_abc.py +++ b/vkwave/api/methods/_abc.py @@ -16,6 +16,7 @@ from .board import Board from .database import Database from .docs import Docs +from .execute import Execute from .fave import Fave from .friends import Friends from .gifts import Gifts @@ -96,6 +97,7 @@ def __init__(self, api_options: APIOptions): self.board = Board("board", self) self.database = Database("database", self) self.docs = Docs("docs", self) + self.execute = Execute("execute", self) self.fave = Fave("fave", self) self.friends = Friends("friends", self) self.gifts = Gifts("gifts", self) diff --git a/vkwave/api/methods/execute.py b/vkwave/api/methods/execute.py new file mode 100644 index 00000000..c29584db --- /dev/null +++ b/vkwave/api/methods/execute.py @@ -0,0 +1,13 @@ +from ._category import Category +from vkwave.types.responses import ExecuteResponse + + +class Execute(Category): + async def __call__(self, code: str, return_raw_response: bool = False): + + raw_result = await self.api_request("", {"code": code}) + if return_raw_response: + return raw_result + + result = ExecuteResponse(**raw_result) + return result diff --git a/vkwave/bots/vkscript/execute.py b/vkwave/bots/vkscript/execute.py index 4cb71357..95581cd1 100644 --- a/vkwave/bots/vkscript/execute.py +++ b/vkwave/bots/vkscript/execute.py @@ -2,6 +2,7 @@ import inspect import types +from vkwave.api.methods import APIOptionsRequestContext from vkwave.bots.vkscript.converter import Scope from vkwave.bots.vkscript.converter import VKScriptConverter @@ -46,10 +47,9 @@ async def __call__(self, *args, **kwargs): return await self._preprocessor(*args, **kwargs) return await self.execute(*args, **kwargs) - async def execute(self, *args, **kwargs): - vk = _get_vk().get_current() + async def execute(self, api: APIOptionsRequestContext, *args, **kwargs): code = self.build(*args, **kwargs) - response = await vk.api_request("execute", {"code": code}) + response = await api.execute(code=code) return response e = execute diff --git a/vkwave/types/responses.py b/vkwave/types/responses.py index 1c9cf945..46aa001e 100644 --- a/vkwave/types/responses.py +++ b/vkwave/types/responses.py @@ -4033,3 +4033,7 @@ class StoriesSearchResponseModel(pydantic.BaseModel): groups: typing.List[GroupsGroup] = pydantic.Field( None, description="", ) + + +class ExecuteResponse(pydantic.BaseModel): + response: int = pydantic.Field(..., description="")