API¶
У нас есть 3 класса для работы с API: API
, APIOptions
, APIOptionsRequestContext
.
API это ядро. Оно содержит все токены и клиенты.
from vkwave.api import API, Token, UserSyncSingleToken
my_token = Token('token')
api = API(tokens=UserSyncSingleToken(my_token))
В APIOptions
содержатся tokens
, clients
, strategy
и другие вещи, вы можете получить к ним доступ через api.default_api_options
. Например вы можете добавить клиент, токен или обновить стратегию
api = API(...)
api.default_api_options.add_token(tokens=[...]) # или добавить только один токен
Но только с этим вы не можете сделать запрос в API.
Вам нужно получить контекст!
api_session = API(...)
api = api_session.get_context()
Когда вы пишете это - вы получаете APIOptionsRequestContext
. Он содержит все методы и собственный APIOptions
.
result = await api.status.get()
print(result.response.text)
API Handler¶
У вас может возникнуть вопрос. Как получать контекст API, прямо из хендлера, неужели придется везде импортировать класс API? Но нет, получить контекст вы можете получить прямо из полученного вами события:
from vkwave.bots import SimpleLongPollBot, SimpleBotEvent
bot = SimpleLongPollBot(tokens='mytoken', group_id=-1)
@bot.message_handler(bot.command_filter('getuser'))
async def get_user(event: SimpleBotEvent):
api = event.api_ctx
user_id = event.text.split()[1]
user_info = (await api.users.get(user_ids=user_id)).response[0]
return f'Информация о пользователе: {user_info}'
Через данный способ также можно получить доступ к опциям API через api.pi_options.