Справочник по API¶
Bot¶
-
class
vk_botting.bot.Bot(command_prefix, description=None, **options)¶ Представляет собой бота ВК. Это сабкласс
Client, поэтому все, что можно делать сClient, можно делать и с нимТак же это сабкласс
GroupMixin, потому у него есть функционал для работы с командами-
command_prefix¶ Префикс команды - это то, с чего должно начинаться сообщение, чтобы бот распознал его как команду. Этот префикс должен быть либо строкой, либо вызываемой функцией, которая принимает как параметры бота и экземпляр класса
Messageи возвращает префикс. Это позволяет сделать префикс динамическим. При этом функция может быть как синхронной, так и асинхроннойПрефикс может быть и итератором строк, в таком случае первый подошедший префикс будет использован для вызова команды. Для избежания проблем нельзя использовать пустой итератор. Префикс можно получить с помощью
Context.prefixПримечание
Если передавать боту несколько префиксов, то учтите, что более ранний префикс не должен быть началом более позднего. Как, к примеру, префиксы не должны быть в порядке
('!', '!?'), ибо в таком случае префикс'!?'никогда не будет использован. Это особенно важно при использовании пустой строки в качестве префикса
-
self_bot¶ Если
True, бот будет слушать только команды, вызванные им же самим. ЕслиFalse(по умолчанию), то бот будет себя игнорировать- тип
-
v¶ Версия VK API. По умолчанию „5.131“ (последняя поддерживаемая библиотекой)
Предупреждение
Библиотека не предназначена для работы с версиями API ниже „5.131“ и выше „5.131“
- тип
-
add_check(func, *, call_once=False)¶ Добавляет боту глобальную проверку. Это способ добавить
check()илиcheck_once()без декоратора.- Параметры
func – Функция, используемая как глобальная проверка
call_once (
bool) – Должна ли функция быть вызвана лишь раз при вызовеCommand.invoke()
-
add_cog(cog)¶ Добавляет боту «Cog». Cog - класс, который имеет полностью обособленные события и команды
- Параметры
cog (
Cog) – Cog, который надо зарегистрировать боту- Исключение
CommandError – Возникла ошибка во время инициализации.
-
add_command(command)¶ Добавляет команду
Commandили ее наследника в внутренний лист команд.Обычно не вызывается, вместо него используется декораторы
command().- Параметры
command (
Command) – Команда, которую надо добавить.- Исключение
ClientException – Если команда уже зарегистрирована.
-
add_listener(func, name=None)¶ Алтернатива
listen()без декоратора.- Параметры
Пример
async def on_ready(): pass async def my_message(message): pass bot.add_listener(on_ready) bot.add_listener(my_message, 'on_message_new')
-
await
add_user_token(token)¶ Эта функция является корутиной. Альтернатива для
Context.attach_user_token()
-
after_invoke(coro)¶ Декоратор, вызывающий корутину сразу после вызова команды. Удобно использовать для чистки подключений и еще чего-нибудь. Сама корутина должна принимать один параметр -
ContextПримечание
Аналог
before_invoke(), но не вызывается пока не пройдут все проверки и парсинг аргументов. Правда, вызвывается вне зависимости от наличия или отсутствия ошибок в команде
-
await
attach_user_token(token)¶ Эта функция является корутиной.
Присоединяет к боту токен пользователя, что позволяет выполнять запросы к API которые доступны только пользователям.
Также помещает в self.user экземпляр класса
Userсоответствующий предоставленному токену- Параметры
token (
str) – Токен пользователя, который необходимо прикрепить
-
before_invoke(coro)¶ Декоратор, который вызывает корутину прямо перед вызовом команды. Удобно чтобы подготовить подключения, например. Корутина должна принимать один параметр -
Context.Примечание
before_invoke()иafter_invoke()вызываются только если все проверки прошли и команда не выдала ошибок.
-
build_msg(msg)¶ Создает экземпляр класса
Messageизdict, содержащего объект сообщения.В нормальных условиях не должна вызываться вообще
-
check(func)¶ Декоратор, добавляющий глобальную проверку для бота. Глобальная проверка применяется ко всем командам бота.
Примечание
Эта функция может быть как обычной функцией, так и корутиной.
Similar to a command
check(), this takes a single parameter of typeContextand can only raise exceptions inherited fromCommandError. .. rubric:: Пример@bot.check def check_commands(ctx): return ctx.command.qualified_name in allowed_commands
-
check_once(func)¶ Декоратор, добавляющий одноразовую глобальную проверку боту. Вызывается один раз для каждой команды, после чего не используется
Примечание
Эта функция может быть как обычной функцией, так и корутиной.
Как и функция
check()команды, принимает один параметрContextи может вызывать ошибки, наследованные изCommandErrorПример
@bot.check_once def whitelist(ctx): return ctx.message.author.id in my_whitelist
-
command(*args, **kwargs)¶ Декоратор, который добавляет команду в внутренний лист через
add_command()
-
extensions¶ Связь названия расширений с самими расширениями, только для чтения
- тип
Mapping[
str,types.ModuleType]
-
get_cog(name)¶ Получает запрошенный cog. Если он не найден, возвращает
None.- Параметры
name (
str) – Название cog’а, который запрашивается
-
get_command(name)¶ Получает команду (
Commandили его сабкласс) из внутреннего списка командМожет использоваться и чтобы получать альтернативные названия
К примеру, в случае с
'foo bar'вернет название подкомандыbarиз группы командfoo. Если команда не найдена, вернетNone- Параметры
name (
str) – Название команды, которую надо получить- Результат
Запрошенная команда. Если не найдена, возвращает
None.- Тип результата
Commandили сабкласс
-
await
get_context(message, *, cls=<class 'vk_botting.context.Context'>)¶ Эта функция является корутиной.
Возвращает контекст для вызова команды из сообщения. Это более низкоуровневая часть
process_commands(), которая позволяет более детально управлять обработкой. Возвращенный контест не обязательно будет верным, его надо проверить с помощьюContext.valid- Параметры
- Результат
Контекст для вызова. Тип зависит от параметра
cls- Тип результата
-
await
get_group(gid)¶ Эта функция является корутиной.
Альтернатива для метода „groups.get“ VK API, возвращает только одну группу
-
await
get_groups(*gids)¶ Эта функция является корутиной.
Альтернатива для метода „groups.get“ VK API
-
await
get_own_page()¶ Эта функция является корутиной.
Получает страницу для текущего токена, вне зависимости от того, пользователь это или группа
-
await
get_page(pid, fields=None, name_case=None)¶ Эта функция является корутиной.
Получает страницу с данным id, вне зависимости от того, группа это или пользователь
- Параметры
- Исключение
vk_botting.VKApiError – Если VK API возвращает ошибку
- Результат
- Тип результата
-
await
get_pages(*ids, fields=None, name_case=None)¶ Эта функция является корутиной.
Получает страницы для запрошенных id, вне зависимости от того, группа это или пользователь
- Параметры
- Исключение
vk_botting.VKApiError – Если VK API возвращает ошибку
- Результат
- Тип результата
-
await
get_prefix(message)¶ Эта функция является корутиной.
Получает префикс бота для данного сообщения
-
await
get_user(uid, fields=None, name_case=None)¶ Эта функция является корутиной.
Альтернатива методу „users.get“ VK API, возвращает только одного пользователя
- Параметры
- Исключение
vk_botting.VKApiError – Если VK API возвращает ошибку
- Результат
Экземпляр класса
Userдля запрошенного пользователя- Тип результата
-
await
get_users(*uids, fields=None, name_case=None)¶ Эта функция является корутиной.
Альтернатива методу „users.get“ VK API
-
await
invoke(ctx)¶ Эта функция является корутиной.
Вызывает команду с данным контекстом и разбирается со всеми внутренними механизмами вызова событий.
- Параметры
ctx (
Context) – Контекст для вызова команды.
-
listen(name=None)¶ Декоратор, который привязывает функцию к событию. По сути позволяет слушать множество событий из разных мест, таких, как, к примеру
on_ready(). Привязанная функция должна быть корутиной.Пример
@bot.listen() async def on_message_new(message): print('one') # in some other file... @bot.listen('on_message_new') async def my_message(message): print('two')
Выведет „one“ и „two“ в неопределенном порядке.
- Исключение
TypeError – Привязанная функция - не корутина.
-
load_extension(name)¶ Загружает расширение. Расширения - модуль python который содержит команды, cog’и и события. Любое расширение должно иметь глобальную функцию
setup, определяющую, что расширение должно делать, когда загружено. Эта функция должна принимать 1 аргумент - bot.- Параметры
name (
str) – Название расширения, которое надо загрузить. Должно иметь в себе точку, повторяя синтаксис импорта в обычном Python (к примеру foo.test для файла foo/test.py).- Исключение
ExtensionNotFound – Расширение не может быть импортировано.
ExtensionAlreadyLoaded – Расширение уже загружено.
NoEntryPointError – У расширения нет функции
setup.ExtensionFailed – В расширении или его
setupвозникла ошибка.
-
await
on_command_error(context, exception)¶ Эта функция является корутиной. Обработчик ошибок, предоставляемый ботом. По умолчанию выводит информацию о ошибке в
sys.stderr, но может быть переобъявлен, чтобы делать что-то другое. Вызывается только если в боте нет функций, привязанных к ошибкам.
-
await
on_error(event_method, *args, **kwargs)¶ Эта функция является корутиной.
Обработчик ошибок, предоставляемый ботом.
По умолчанию выводит информацию о ошибке в
sys.stderr, но может быть переобъявлен, чтобы делать что-то другое.Посмотрите
vk_botting.on_error()для более детального объяснения
-
await
process_commands(message)¶ Эта функция является корутиной.
Функция, обрабатывающая команды, зарегистрированные в боте и прочих источниках. Без этой корутины никакие команды вызваны не будут.
По умолчанию, эта корутина вызывается внутри
on_message_new(). Если вы переобъявляетеon_message_new(), не забудьте вызывать эту корутину.Состоит из более низкоуровневых функций и представляет собой последовательный вызов
get_context()иinvoke().Так же проверяет, является ли автор сообщения ботом и не вызывает
get_context()иinvoke()в таком случае.- Параметры
message (
Message) – Сообщение, команды из которого надо обрабатывать
-
reload_extension(name)¶ Автоматически перезагружает расширение. Заменяет расширение перезагруженной версией самого себя. Представляет собой последовательный вызов
unload_extension()иload_extension(), но рассчитанный на возможные ошибки, в случае которых бот возвращается к предыдущей, рабочей версии расширения.- Параметры
name (
str) – Имя расширения, которое надо перезагрузить. Должно иметь в себе точку, повторяя синтаксис импорта в обычном Python (к примеру foo.test для файла foo/test.py).- Исключение
ExtensionNotLoaded – Расширение не было загружено.
ExtensionNotFound – Расширение не может быть импортировано.
NoEntryPointError – У расширения нет функции
setup.ExtensionFailed – В функции
setupрасширения произошла ошибка.
-
remove_check(func, *, call_once=False)¶ Удаляет глобальную проверку из бота. Эта функция не вызывает ошибку даже если такой глобальной проверки не было.
- Параметры
func – Функция, которую надо удалить из глобальных проверок.
call_once (
bool) – Была ли функция была добавлена с параметромcall_once=True
-
remove_cog(name)¶ Удаляет cog из бота. Все связаные с ним команды и события тоже будут удалены. Если cog не найден, ничего не делает.
- Параметры
name (
str) – Название cog’а для удаления.
-
remove_command(name)¶ Удаляет команду (
Commandили сабкласс) из внутреннего списка команд.Может быть использован и для удаления альтернативных названий.
-
remove_listener(func, name=None)¶ Удаляет событие из списка событий.
- Параметры
func – Функция, которая была привязана к событию.
name (
str) – Название события, которое надо удалить. По умолчанию - имя функции
-
run(token, owner_id=None)¶ Блокирующий вызов, который позволяет не инициализировать цикл самостоятельно.
Предупреждение
Эта функция должна быть последней вызванной в коде, так как она блокирующая. Это значит что регистрация событий, команд и т.д. после нее не будут работать.
-
await
send_message(peer_id=None, message=None, attachment=None, sticker_id=None, keyboard=None, reply_to=None, forward_messages=None, forward=None, **kwargs)¶ Эта функция является корутиной.
Отправляет сообщение данному получателю с данным текстом
Текст должен быть типом, который можно преобразовать в строку с помощью
str(message).Если сообщение -
None(по умолчанию), то должен быть предоставлен параметрattachmentилиsticker_id.Если есть параметр
attachment, он должен бытьstr, List[str],Attachmentили List[Attachment]Если есть параметр
keyboard, он должен бытьstrилиKeyboard(предпочтительно)- Параметры
peer_id (
int) – Id получателя сообщенияmessage (
str) – Текст сообщенияattachment (Union[List[
str],str, List[Attachment],Attachment]) – Приложение к сообщениюsticker_id (Union[
str,int]) – Id стикера, который надо отправитьkeyboard (
Keyboard) – Клавиатура, которую надо отправить вместе с сообщениемreply_to (Union[
str,int]) – Id сообщения, на которое надо ответитьforward_messages (Union[List[
int], List[str]]) – Id сообщений, которые надо переслать.forward (
dict) – Для дополнительной информации смотрите документацию.as_user (
bool) – Должно ли сообщение быть отправлено от имени пользователя (с использованием присоединенного токена)
- Исключение
vk_botting.VKApiError – Если VK API возвращает ошибку
- Результат
Сообщение, которое было отправлено
- Тип результата
-
unload_extension(name)¶ Выгружает расширение. Когда расширение выгружено, все команды, события и cog’и, связанные с ним, тоже удаляются. У расширения так же может быть функция
teardownдля чистки всего, что осталось, если это необходимо. Она, аналогичноsetup, должна принимать один параметр - bot- Параметры
name (
str) – Название расширения для выгрузки. Должно иметь в себе точку, повторяя синтаксис импорта в обычном Python (к примеру foo.test для файла foo/test.py).- Исключение
ExtensionNotLoaded – Расширение не было загружено.
-
await
upload_document(peer_id, file, type=<DocType.DOCUMENT: 'doc'>, title=None)¶ Эта функция является корутиной.
Загружает документ в диалог с данным peer_id
Возвращает attachment, готовый к использованию в send_message
- Параметры
peer_id (
int) – Peer_id назначения. Загруженный документ нельзя использовать вне данного диалога.file (
str) – Путь к документу, который надо загрузить. Может быть относительным.type (
str) – Тип загруженного документа. Может быть значением изDocTypetitle (
str) – Название для загруженного документа. По умолчанию имя файла.
- Результат
Экземпляр
Attachment, представляющий загруженный документ- Тип результата
-
await
upload_image_to_server(server, filename=None, url=None, raw=None, format=None)¶ Эта функция является корутиной.
Загружает изображение на какой-то сервер ВК.
Возвращает dict, представляющий собой ответ сервера.
- Параметры
server (
str) – Url сервера для загрузки. Может быть получен от API с помощью методов подобных photos.getUploadServer.filename (
str) – Путь к изображению, которое надо загрузить. Может быть относительным.url (
str) – Ссылка на изображение, которое надо загрузить. Это должна быть прямая ссылка на поддерживаемый формат изображений, иначе не сработает.raw (
bytes) – Сырые байты изображения, которое надо загрузить. Если используется, надо передать параметр format.format (
str) – Расширение загружаемого изображения. Должно быть использовано только вместе с сырыми байтами.
- Результат
dict, представляющий собой ответ сервера.- Тип результата
-
await
upload_photo(peer_id, filename=None, url=None, raw=None, format=None)¶ Эта функция является корутиной.
Загружает изображение в диалог с данным peer_id
Возвращает attachment, готовый к использованию в send_message
- Параметры
peer_id (
int) – Peer_id назначения. Загруженное изображение нельзя использовать вне данного диалогаfilename (
str) – Путь к изображению, которое надо загрузить. Может быть относительным.url (
str) – Ссылка на изображение, которое надо загрузить. Это должна быть прямая ссылка на поддерживаемый формат изображений, иначе не сработает.raw (
bytes) – Сырые байты изображения, которое надо загрузить. Если используется, надо передать параметр format.format (
str) – Расширение загружаемого изображения. Должно быть использовано только вместе с сырыми байтами.
- Результат
Экземпляр
Attachment, представляющий загруженное фото.- Тип результата
-
await
user_vk_request(method, post=True, **kwargs)¶ Эта функция является корутиной.
Реализует абстрактный запрос к методам VK Api с помощью прикрепленного токена пользователя.
- Параметры
method (
str) – Название метода в виде строки (к примеру „users.get“)post (
bool) – Должен ли запрос быть POST. По умолчаниюTrue. Не рекомендуется менять этот параметр.kwargs (
Any) – Аргументы для отправки вместе с запросом. .. note:: access_token и v отправлять не надо, они автоматически добавляются из настроек текущего бота
- Результат
Ответ от сервера, представленный в виде
dict- Тип результата
-
await
vk_request(method, post=True, **kwargs)¶ Эта функция является корутиной.
Реализует абстрактный запрос к методам VK Api
- Параметры
method (
str) – Название метода в виде строки (к примеру „users.get“)post (
bool) – Должен ли запрос быть POST. По умолчаниюTrue. Не рекомендуется менять этот параметр.kwargs (
Any) – Аргументы для отправки вместе с запросом. .. note:: access_token и v отправлять не надо, они автоматически добавляются из настроек текущего бота
- Результат
Ответ от сервера, представленный в виде
dict- Тип результата
-
wait_for(event, *, check=None, timeout=None)¶ Эта функция является корутиной.
Ожидает определенное событие.
Может быть использован, к примеру, чтобы ждать ответа пользователя или пока тот изменит сообщение внутри команды.
Параметр
timeoutпередается напрямую вasyncio.wait_for(). По умолчанию, ждет неопределенно долго. Учтите, что в случае истечения времени вызываетсяasyncio.TimeoutError.В случае если событие возвращает множество аргументов, возвращается
tuple, содержащий их. Пожалуйста, обращайтесь к documentation для справки о событиях и их параметрахФункция возвращает первое событие, удовлетворяющее условиям
Примеры
Ожидание ответа пользователя:
@bot.command() async def greet(ctx): await ctx.send('Say hello!') def check(m): return m.text == 'hello' and m.from_id == ctx.from_id msg = await bot.wait_for('message_new', check=check) await ctx.send('Hello {.from_id}!'.format(msg))
- Параметры
event (
str) – Название события, как и в event reference, но без префиксаon_.check (Optional[Callable[…,
bool]]) – Проверка для события, которое надо ожидать. Аргументы должны соответствовать параметрам события, который ожидается.timeout (Optional[
float]) – Количество секунд для ожидания. По истечении вызываетasyncio.TimeoutError.
- Исключение
asyncio.TimeoutError – Если время ожидание было предоставлено и достигнуто
- Результат
Возвращает один аргумент,
tupleиз нескольких аргументов, или не возвращает вообще, в зависимости от события. Пожалуйста, обращайтесь к documentation для справки о событиях и их параметрах- Тип результата
Any
-
for ... in
walk_commands()¶ Итератор, который рекурсивно проходит по всем командам и подкомандам.
-
-
vk_botting.bot.when_mentioned(bot, msg)¶ Функция, которая реализует префикс команды, аналогичный обращению к боту. Должна передаваться как атрибут
Bot.command_prefix
-
vk_botting.bot.when_mentioned_or(*prefixes)¶ Функция, которая реализует префикс команды, аналогичный обращению к боту, а также все предоставленные префиксы. Должна передаваться как атрибут
Bot.command_prefixПример
bot = Bot(command_prefix=commands.when_mentioned_or('!'))
Примечание
Эта функция возвращает другую функцию, так что если она используется внутри собственной функции, то должна возвращать возвращенную функцию. К примеру:
async def get_prefix(bot, message): extras = await prefixes_for(message.peer_id) # returns a list return commands.when_mentioned_or(*extras)(bot, message)
-
vk_botting.bot.when_mentioned_or_pm()¶ Функция, которая реализует префикс команды, аналогичный обращению к боту, а также принимает любое сообщение за команду, в случае если боту пишут в ЛС. Должна передаваться как атрибут
Bot.command_prefixПример
bot = commands.Bot(command_prefix=commands.when_mentioned_or_pm())
-
vk_botting.bot.when_mentioned_or_pm_or(*prefixes)¶ Функция, которая реализует префикс команды, аналогичный обращению к боту, принимает любое сообщение за команду, в случае если боту пишут в ЛС, а также реализует все предоставленные префиксы. Должна передаваться как атрибут
Bot.command_prefixПример
bot = commands.Bot(command_prefix=commands.when_mentioned_or_pm_or('!'))
Примечание
Эта функция возвращает другую функцию, так что если она используется внутри собственной функции, то должна возвращать возвращенную функцию. К примеру:
async def get_prefix(bot, message): extras = await prefixes_for(message.peer_id) # returns a list return commands.when_mentioned_or(*extras)(bot, message)
Context¶
-
class
vk_botting.context.Context(**attrs)¶ Представляет собой контекст с которым должна вызываться команда.
Этот класс содержит кучу информации, которая поможет вам понять контекст вызова команды. Класс не должен создаваться вручную и вместо этого должен передаваться командам как первый параметр.
Класс является экземпляром абстрактного класса
Messageable-
args¶ Список преобразованных аргументов, переданных команде. Если используется в событии
on_command_error(), то может быть неполным- тип
-
kwargs¶ Словарь преобразованных аргументов, переданных команде. Аналогично
args, если используется в событииon_command_error(), то может быть неполным- тип
-
invoked_with¶ Название команды, которая была вызвана. Можно использовать, чтобы понять, какое альтернативное название было использовано для вызова.
- тип
-
invoked_subcommand¶ Подкоманда (
Commandили сабкласс), которая была вызвана.Noneесли подкоманды не были использованы
-
subcommand_passed¶ Строка, которая пыталась вызвать подкоманду. Не обязательно указывает на существующую подкоманду, может просто являться бредом или, в случае, если ничего не было передано,
None.- тип
Опциональный[
str]
-
command_failed¶ Логическая переменная, обозначающая что провалилась подготовка, проверка или вызов команды.
- тип
-
await
invoke(*args, **kwargs)¶ Эта функция является корутиной.
Вызывает команду с данными аргументами.
Можно использовать в случае если необходимо просто вызвать функцию, которая привязана к команде.
Примечание
Не вызывает преобразователи, проверки, задержки или связанные события. Просто вызывает связанную функцию.
В эту функцию очень важно передавать верные аргументы.
Предупреждение
Первым параметром должна быть вызываемая команда.
- Параметры
command (
Command) – Команда или ее сабкласс, которую необходимо вызвать*args – Аргументы для вызова
**kwargs – Аргументы с ключевыми словами для вызова
-
await
reinvoke(*, call_hooks=False, restart=True)¶ Эта функция является корутиной.
Заново вызывает команду
Аналог
invoke(), но пропускает проверки, задержки и обработчики ошибокПримечание
Если необходимо избежать
ArgumentErrorили ее наследников, то стоит использовать обычныйinvoke(), так как иначе будут использованы те же аргументы и возвращена та же ошибка
-
await
reply(message=None, *, attachment=None, sticker_id=None, keyboard=None)¶ Эта функция является корутиной. Сокращение для
Message.reply()
-
await
get_user(fields=None, name_case=None)¶ Эта функция является корутиной. Возвращает автора сообщения как экземпляр
Userclass
Эта функция является корутиной. Альтернатива для
Context.get_user()
-
await
fetch_user(*args, **kwargs)¶ Эта функция является корутиной. Альтернатива для
Context.get_user()
Эта функция является корутиной. Альтернатива для
Context.get_user()
-
cog¶ Возвращает cog, связанный с командой или
None, если такого не существует
-
valid¶ Проверяет, верен ли контекст для вызова
Сокращение для
Message.from_id
-
from_id¶ Сокращение для
Message.from_id
-
peer_id¶ Сокращение для
Message.peer_id
-
text¶ Сокращение для
Message.text
-
await
send(message=None, *, attachment=None, sticker_id=None, keyboard=None, reply_to=None, forward_messages=None)¶ Эта функция является корутиной.
Отправляет сообщение в ответ с данным текстом.
Текст должен быть типом, который можно преобразовать в строку с помощью
str(message).Если сообщение -
None(по умолчанию), то должен быть предоставлен параметрattachmentилиsticker_id.Если есть параметр
attachment, он должен бытьstr, List[str],Attachmentили List[Attachment]Если есть параметр
keyboard, он должен бытьstrилиKeyboard(предпочтительно)- Параметры
message (
str) – Текст сообщенияattachment (Union[List[
str],str, List[Attachment],Attachment]) – Приложение к сообщениюsticker_id (Union[
str,int]) – Id стикера, который надо отправитьkeyboard (
Keyboard) – Клавиатура, которую надо отправить вместе с сообщениемreply_to (Union[
str,int]) – Id сообщения, на которое надо ответитьforward_messages (Union[List[
int], List[str]]) – Id сообщений, которые надо переслать.
- Исключение
vk_botting.VKApiError – Если VK API возвращает ошибку
- Результат
Сообщение, которое было отправлено
- Тип результата
-
await
trigger_typing()¶ Эта функция является корутиной.
Включает боту состояние „печатает“
Может быть использовано вместо
typing()в некоторых случаяхСостояние „печатает“ выключается через 10 секунд или при отправке ответа
- Исключение
vk_botting.VKApiError – Если VK API возвращает ошибку
- Результат
Результат вызова к VK Api
- Тип результата
-
typing()¶ Возвращает контекстный менеджер, который позволяет поддерживать состояние „печатает“ неопределенное количество времени
Может быть использовано для долгих операций бота в командах
Примечание
Может использоваться и как синхронный контекстный менеджер, и как асинхроный. То есть и
withиasync withбудут работатьПример использования:
async with ctx.typing(): # do expensive stuff here await ctx.send('done!')
-
Справка по событиям¶
Эта страница описывает различные события, которые слушает Bot
Есть два способа зарегистрировать события: через Bot.listen() или создать сабкласс Bot и перезаписать события. К примеру:
import vk_botting
class MyBot(vk_botting.Bot):
async def on_message_new(self, message):
if message.from_id == self.group.id:
return
if message.text.startswith('$hello'):
await message.send('Hello World!')
Если обработчик события вызывает ошибку, то вызывается функция on_error() для ее обработки. По умолчанию она выводит ошибку и игнорирует ее
Предупреждение
Все события должны быть корутинами(корутиной). Если они таковыми не являются, то можно получить неожиданные ошибки. Чтобы функция стала корутиной, ее надо объявлять через async def
-
on_ready()¶ Вызывается, когда бот закончил подготовку информации, полученной от VK Api. Обычно - после успешного входа и когда подготовлены атрибуты
Bot.groupи прочие
-
on_error(event, \*args, \*\*kwargs)¶ Обычно, когда событие вызывает ошибку, в stderr выводится traceback и ошибка игнорируется. Если вы хотите изменить это поведение и обрабатывать ошибки самостоятельно, можно переобъявить эту функцию.
Информация о ошибке и сама ошибка получаются стандартным вызовом
sys.exc_info()Если необходимо, чтобы ошибка выходила за пределы бота, то можно просто вызывать ошибку внутри
on_error(The raise statement). Если внутриon_errorвызвана ошибка, то бот никак не будет ее обрабатывать.- Параметры
event (
str) – Названия события, вызвавшего ошибкуargs – Позиционные аргументы для события, вызвавшего ошибку
kwargs – Аргументы с ключевыми словами для события, вызвавшего ошибку
-
on_command_error(ctx, error)¶ Обработчик ошибок, вызываемый, когда ошибка вызвана внутри команды посредством ошибки ввода пользователя, проверки или ошибки в вашем коде
По умолчанию -
Bot.on_command_error()- Параметры
ctx (
Context) – Контекст вызова командыerror (
CommandErrorderived) – Вызванная ошибка
-
on_command(ctx)¶ Событие, которое вызывается когда команда найдена и будет вызвана
Это событие вызывается вне зависимости от возможных ошибок в команде
- Параметры
ctx (
Context) – Контекст вызова команды
-
on_command_completion(ctx)¶ Событие, которое вызывается, когда команда успешно вызвана
Вызывается только после успешного вызова команды
- Параметры
ctx (
Context) – Контекст вызова команды
-
on_message_new(message)¶ Вызывается, когда бот получает сообщение
- Параметры
message (
message.Message) – Полученное сообщение
-
on_message_event(event)¶ Вызывается, когда пользователь нажимает на callback-кнопку
- Параметры
event – Полученное событие
-
on_message_reply(message)¶ Вызывается, когда бот отвечает на сообщение
- Параметры
message (
message.Message) – Отправленное сообщение
-
on_message_edit(message)¶ Вызывается, когда сообщение изменено
- Параметры
message (
message.Message) – Измененное сообщение
-
on_message_typing_state(state)¶ Вызывается, когда изменяется состояние „печатает“ (к примеру кто-то начал печатать)
- Параметры
state (
states.State) – Новое состояние
-
on_conversation_start(message)¶ Вызывается, когда пользователь использует кнопку „Начать“ в диалоге с ботом
- Параметры
message (
message.Message) – Сообщение, отправленное когда пользователь начал диалог
-
on_chat_kick_user(message)¶ Вызывается при удалении пользователя из чата
- Параметры
message (
message.Message) – Сообщение, отправленное, когда пользователь был удален
-
on_chat_invite_user(message)¶ Вызывается при добавлении пользователя к чату
- Параметры
message (
message.Message) – Сообщение, отправленное при приглашении пользователя
-
on_chat_invite_user_by_link(message)¶ Вызывается при добавлении пользователя к чату посредством ссылки-приглашения
- Параметры
message (
message.Message) – Сообщение, отправленное при приглашении пользователя
-
on_chat_photo_update(message)¶ Вызывается при обновлении фото чата
- Параметры
message (
message.Message) – Сообщение, отправленное при смене фото
-
on_chat_photo_remove(message)¶ Вызывается при удалении фото чата
- Параметры
message (
message.Message) – Сообщение, отправленное при удалении фото
-
on_chat_create(message)¶ Вызывается при создании чата
- Параметры
message (
message.Message) – Сообщение, отправленное при создании чата
-
on_chat_title_update(message)¶ Вызывается при обновлении названия чата
- Параметры
message (
message.Message) – Сообщение, отправленное при смене названия чата
-
on_chat_pin_message(message)¶ Вызывается при закреплении сообщения в чате
- Параметры
message (
message.Message) – Сообщение, отправленное при закреплении сообщения в чате
-
on_chat_unpin_message(message)¶ Вызывается при откреплении сообщения в чате
- Параметры
message (
message.Message) – Сообщение, отправленное при откреплении сообщения в чате
-
on_message_allow(user)¶ Вызывается, когда пользователь разрешает получение сообщений от бота
- Параметры
user (
user.User) – Пользователь, разрешивший получение сообщений
-
on_message_deny(user)¶ Вызывается, когда пользователь запрещает получение сообщения от бота
- Параметры
user (
user.User) – Пользователь, запретивший получение сообщений
-
on_photo_new(photo)¶ Вызывается, когда в группу бота загружено фото
- Параметры
photo (
attachments.Photo) – Загруженное фото
-
on_audio_new(audio)¶ Вызывается, когда в группу бота загружено аудио
- Параметры
audio (
attachments.Audio) – Загруженное аудио
-
on_video_new(video)¶ Вызывается, когда в группу бота загружено видео
- Параметры
video (
attachments.Video) – Загруженное видео
-
on_photo_comment_new(comment)¶ Вызывается, когда к фото добавляется новый комментарий
- Параметры
comment (
group.PhotoComment) – Добавленный комментарий
-
on_photo_comment_edit(comment)¶ Вызывается, когда под фото изменяется комментарий
- Параметры
comment (
group.PhotoComment) – Измененный комментарий
-
on_photo_comment_restore(comment)¶ Вызывается, когда под фото восстанавливается комментарий
- Параметры
comment (
group.PhotoComment) – Восстановленный комментарий
-
on_photo_comment_delete(comment)¶ Вызывается, когда под фото удаляется комментарий
- Параметры
comment (
group.DeletedPhotoComment) – Удаленный комментарий
-
on_video_comment_new(comment)¶ Вызывается, когда к видео добавляется новый комментарий
- Параметры
comment (
group.VideoComment) – Добавленный комментарий
-
on_video_comment_edit(comment)¶ Вызывается, когда под видео изменяется комментарий
- Параметры
comment (
group.VideoComment) – Измененный комментарий
-
on_video_comment_restore(comment)¶ Вызывается, когда под видео восстанавливается комментарий
- Параметры
comment (
group.VideoComment) – Восстановленный комментарий
-
on_video_comment_delete(comment)¶ Вызывается, когда под видео удаляется комментарий
- Параметры
comment (
group.DeletedVideoComment) – Удаленный комментарий
-
on_market_comment_new(comment)¶ Вызывается, когда к товару добавляется новый комментарий
- Параметры
comment (
group.MarketComment) – Добавленный комментарий
-
on_market_comment_edit(comment)¶ Вызывается, когда под товаром изменяется комментарий
- Параметры
comment (
group.MarketComment) – Измененный комментарий
-
on_market_comment_restore(comment)¶ Вызывается, когда под товаром восстанавливается комментарий
- Параметры
comment (
group.MarketComment) – Восстановленный комментарий
-
on_market_comment_delete(comment)¶ Вызывается, когда под товаром удаляется комментарий
- Параметры
comment (
group.DeletedMarketComment) – Удаленный комментарий
-
on_board_post_new(comment)¶ Вызывается, когда к обсуждению добавляется новый комментарий
- Параметры
comment (
group.BoardComment) – Комментарий, добавленный к обсуждению
-
on_board_post_edit(comment)¶ Вызывается, когда в обсуждении изменяется комментарий
- Параметры
comment (
group.BoardComment) – Измененный комментарий
-
on_board_post_restore(comment)¶ Вызывается, когда в обсуждении восстанавливается комментарий
- Параметры
comment (
group.BoardComment) – Восстановленный комментарий
-
on_board_post_delete(comment)¶ Вызывается, когда в обсуждении удаляется комментарий
- Параметры
comment (
group.DeletedBoardComment) – Удаленный комментарий
-
on_wall_post_new(post)¶ Вызывается, когда на стену добавляется пост
- Параметры
post (
group.Post) – Добавленный пост
-
on_wall_repost(post)¶ Вызывается, когда пост со стены репостится
- Параметры
post (
group.Post) – Репостнутый пост
-
on_wall_reply_new(comment)¶ Вызывается, когда на стену добавляется новый комментарий
- Параметры
comment (
group.WallComment) – Добавленный комментарий
-
on_wall_reply_edit(comment)¶ Вызывается, когда комментарий на стене изменяется
- Параметры
comment (
group.WallComment) – Измененный комментарий
-
on_wall_reply_restore(comment)¶ Вызывается, когда комментарий на стене восстанавливается
- Параметры
comment (
group.WallComment) – Восстановленный комментарий
-
on_wall_reply_delete(comment)¶ Вызывается, когда комментарий на стене удаляется
- Параметры
comment (
group.DeletedWallComment) – Удаленный комментарий
-
on_group_join(user, join_type)¶ Вызывается, когда пользователь присоединяется к группе
- Параметры
user (
user.User) – Пользователь, присоединившийся к группеjoin_type (
str) – Тип присоединения. Может быть „join“ если пользователь просто присоединился, „unsure“ для событий, „accepted“ если пользователя приглашали, „approved“ если пользователя приняли или „request“ если пользователь запросил доступ в сообщество
-
on_group_leave(user, self)¶ Вызывается, когда пользователь покидает группу
- Параметры
user (
user.User) – Пользователь, покинувший группуself (
bool) – Покинул ли пользователь сам (True) или был исключен (False)
-
on_user_block(user)¶ Вызывается, когда пользователя блокируют в группе
- Параметры
user (
user.BlockedUser) – Пользователь, которого заблокировали
-
on_user_unblock(user)¶ Вызывается, когда пользователя разблокируют в группе
- Параметры
user (
user.UnblockedUser) – Пользователь, которого разблокировали
-
on_poll_vote_new(vote)¶ Вызывается, когда в опросе появляется новый голос
- Параметры
vote (
group.PollVote) – Новый голос
-
on_group_officers_edit(edit)¶ Вызывается, когда изменяются полномочия в группе
- Параметры
edit (
group.OfficersEdit) – Изменение
Cog’и¶
Cog¶
-
class
vk_botting.cog.Cog¶ Базовый класс который должны наследовать все cog’и.
Cog - собрание команд, событий и переменных состояний, помогающий объединять команды в группы. Больше информации о них можно найти на странице Cogs.
При наследовании этого класса, можно также указывать параметры, доступные в
CogMeta.-
for ... in
walk_commands()¶ Итератор, который рекурсивно проходит по всем командам и подкомандам.
-
get_listeners()¶ Возвращает
listвида (имя, функция), содержащий все события объявленные в этом cog’е.
-
classmethod
listener(name=None)¶ Декоратор, который регистрирует функцию как обработчик события.
Это то же самое, что
Bot.listen(), только для cog’а.
-
cog_unload()¶ Особый метод, который вызывается когда cog удаляется.
Эта функция не может быть корутиной. Это должна быть обычная функция.
Сабклассы должны заменить эту функцию для изменения поведения при удалении cog’а.
-
bot_check_once(ctx)¶ Особый метод который регистрирует проверку аналогично
Bot.check_once().Эта функция может быть корутиной и должна принимать один параметр -
ctx, который представляет собойContext.
-
bot_check(ctx)¶ Особый метод который регистрирует проверку аналогично
Bot.check_once().Эта функция может быть корутиной и должна принимать один параметр -
ctx, который представляет собойContext.
-
cog_check(ctx)¶ Особый метод, который добавляет
commands.check()к каждой команде и подкоманде в этом cog’е.Эта функция может быть корутиной и должна принимать один параметр -
ctx, который представляет собойContext.
-
cog_command_error(ctx, error)¶ Особый метод, который вызывается когда внутри cog’а происходит ошибка.
Он похож на
on_command_error(), за исключением того что применяется он только к командам внутри cog’а.Эта функция может быть корутиной.
- Параметры
ctx (
Context) – Контекст вызова, при котором произошла ошибка.error (
CommandError) – Вызванная ошибка.
-
await
cog_before_invoke(ctx)¶ Особый метод, который выступает как локальный, действующий только на cog аналог
Command.before_invoke().Эта функция должна быть корутиной.
- Параметры
ctx (
Context) – Контекст вызова команды
-
await
cog_after_invoke(ctx)¶ Особый метод, который выступает как локальный, действующий только на cog аналог
Command.after_invoke().Эта функция должна быть корутиной.
- Параметры
ctx (
Context) – Контекст вызова команды
-
for ... in
CogMeta¶
-
class
vk_botting.cog.CogMeta(*args, **kwargs)¶ Метакласс для объявления cog’а.
Важно заметить, что этот класс не предназначен для использования напрямую. Он представлен тут исключительно для полноты документации. В случае необходимости есть возможность создания собственных метаклассов для смеси этого с другими метаклассами, к примеру
abc.ABCMeta.К примеру, для создания своего абстрактного класса, смешивающего cog с чем-то еще,можно сделать следующее.
import abc class CogABCMeta(CogMeta, abc.ABCMeta): pass class SomeMixin(metaclass=abc.ABCMeta): pass class SomeCogMixin(SomeMixin, Cog, metaclass=CogABCMeta): pass
Примечание
При передаче аттрибута метакласса, задокументированного ниже, важно заметить необходимость передачи его именно как аргумент с ключевым словом при создании класса, например:
class MyCog(Cog, name='My Cog'): pass
-
command_attrs¶ Список свойств, которые передаются каждой команде внутри этого cog’а. Словарь передается в
__init__классаCommand(или его сабкласса). Если указать свойства при объявлении команды внутри класса, то они перезапишутсвойства, указанные в данном параметре. Например:class MyCog(Cog, command_attrs=dict(hidden=True)): @command() async def foo(self, ctx): pass # hidden -> True @command(hidden=False) async def bar(self, ctx): pass # hidden -> False
- тип
-
Абстрактные классы¶
abstract base class, известные как abc - классы, которые определяют базовые модели, которые могут наследовать другие классы (abc). Нельзя создавать экземпляры этих классов. Они существуют в основном для использования с isinstance() и issubclass()
Эта библиотека содержит раздел, посвященный абстрактным классам
-
class
vk_botting.abstract.Messageable¶ ABC, который определяет основные операции с моделями, способными получать сообщения
Этот ABC используется для:
-
async with
typing()¶ Возвращает контекстный менеджер, который позволяет поддерживать состояние „печатает“ неопределенное количество времени
Может быть использовано для долгих операций бота в командах
Примечание
Может использоваться и как синхронный контекстный менеджер, и как асинхроный. То есть и
withиasync withбудут работатьПример использования:
async with ctx.typing(): # do expensive stuff here await ctx.send('done!')
-
await
send(message=None, *, attachment=None, sticker_id=None, keyboard=None, reply_to=None, forward_messages=None)¶ Эта функция является корутиной.
Отправляет сообщение в ответ с данным текстом.
Текст должен быть типом, который можно преобразовать в строку с помощью
str(message).Если сообщение -
None(по умолчанию), то должен быть предоставлен параметрattachmentилиsticker_id.Если есть параметр
attachment, он должен бытьstr, List[str],Attachmentили List[Attachment]Если есть параметр
keyboard, он должен бытьstrилиKeyboard(предпочтительно)- Параметры
message (
str) – Текст сообщенияattachment (Union[List[
str],str, List[Attachment],Attachment]) – Приложение к сообщениюsticker_id (Union[
str,int]) – Id стикера, который надо отправитьkeyboard (
Keyboard) – Клавиатура, которую надо отправить вместе с сообщениемreply_to (Union[
str,int]) – Id сообщения, на которое надо ответитьforward_messages (Union[List[
int], List[str]]) – Id сообщений, которые надо переслать.
- Исключение
vk_botting.VKApiError – Если VK API возвращает ошибку
- Результат
Сообщение, которое было отправлено
- Тип результата
-
await
trigger_typing()¶ Эта функция является корутиной.
Включает боту состояние „печатает“
Может быть использовано вместо
typing()в некоторых случаяхСостояние „печатает“ выключается через 10 секунд или при отправке ответа
- Исключение
vk_botting.VKApiError – Если VK API возвращает ошибку
- Результат
Результат вызова к VK Api
- Тип результата
-
async with
Дополнительные классы¶
Attachment¶
-
class
vk_botting.attachments.AttachmentType¶ Определяет тип приложения
-
PHOTO= 'photo'¶ Фото
-
VIDEO= 'video'¶ Видео
-
AUDIO= 'audio'¶ Аудио
-
DOCUMENT= 'doc'¶ Документ
-
WALL= 'wall'¶ Пост со стены
-
MARKET= 'market'¶ Товар
-
POLL= 'poll'¶ Опрос
-
-
class
vk_botting.attachments.Attachment(owner_id, _id, type)¶ Представляет собой приложение к сообщению
Для получения строкового представления можно использовать str(
Attachment) или просто передавать это как аргумент вBot.send_message()-
owner_id¶ Id владельца приложения. Положительное целое для пользователей, отрицательное для групп
- тип
-
type¶ Тип приложения. Может быть значением из
AttachmentType- тип
-
Keyboard¶
-
class
vk_botting.keyboard.KeyboardColor¶ Определяет цвета клавиатуры
-
PRIMARY= 'primary'¶ Основной цвет (синий)
-
SECONDARY= 'secondary'¶ Вторичный цвет (серый)
-
NEGATIVE= 'negative'¶ Отрицательный цвет (красный)
-
POSITIVE= 'positive'¶ Положительный цвет (зеленый)
-
-
class
vk_botting.keyboard.Keyboard(one_time=False, inline=False)¶ Класс для удобного создания и изменения клавиатур ботов
Может использоваться в
Bot.send_message()как есть-
classmethod
get_empty_keyboard()¶ Метод класса для получения пустой клавиатуры. Удобно использовать для очищения клавиатуры
Добавляет кнопку на текущую строку
- Параметры
label (
str) – Название кнопкиcolor (:class:Union[str, KeyboardColor]) – Цвет кнопки. Может быть значением из
KeyboardColorpayload (
dict) – Опционально. Используется для некоторых кнопок
- Исключение
vk_botting.VKApiError – Когда на строке уже слишком много кнопок
Добавляет callback-кнопку (https://vk.com/dev/bots_docs_5) на текущую строку
- Параметры
label (
str) – Название кнопкиcolor (:class:Union[str, KeyboardColor]) – Цвет кнопки. Может быть значением из
KeyboardColorpayload (
dict) – Опционально. Используется для некоторых кнопок
- Исключение
vk_botting.VKApiError – Когда на строке уже слишком много кнопок
Добавляет кнопку местоположения на текущую строку
- Параметры
payload (
dict) – Информация для кнопки местоположения- Исключение
vk_botting.VKApiError – Когда на строке уже слишком много кнопок
Добавляет кнопку на текущую строку
Добавляет кнопку на текущую строку
-
add_line()¶ Добавляет новую строку на клавиатуру
- Исключение
vk_botting.VKApiError – Когда на клавиатуре уже слишком много кнопок
-
classmethod
Кулдаун¶
-
vk_botting.commands.cooldown(rate, per, type=<BucketType.default: 0>)¶ Декоратор который добавляет кулдаун к экземпляру класса
Commandили его сабкласса.Кулдаун позволяет использование команды только определенное количество раз за определенный отрезок времени. Кулдаун может применяться к каждому пользователю, диалогу, участнику диалога или же глобально.
Третий аргумент - тип, который должен быть значением
BucketType, то есть может быть одним из:BucketType.defaultчтобы кулдаун считался на глобальной основе.BucketType.user- на основе пользователя.BucketType.conversation- на основе диалога.BucketType.member- на основе участника диалога.
Если кто-то пытается использовать команду при достигнутом кулдауне, то вызывается ошибка
CommandOnCooldown, которую можно поймать вon_command_error()или локальном обработчике ошибок.У команды может быть только один кулдаун
-
class
vk_botting.cooldowns.BucketType¶ Представляет собой тип бакета для кулдауна.
-
default= 0¶ По умолчанию. Работает на глобальной основе. По сути, считает использование команды любым пользователем где угодно в один бакет.
-
user= 1¶ Работает на основе пользователя. Считает использование команд конкретными пользователями вне зависимости от того, где эти пользователи использовали команду.
-
conversation= 2¶ Работает на основе беседы. Считает использование команд в конкретных беседах, вне зависимости от того, кто использовал команду и является ли эта беседа личным или групповым чатом.
-
member= 3¶ Работает на основе участника диалога. Участник тут - это пользователь в диалоге. Тот же пользователь сможет использовать команду в другом диалоге, и это будет считаться в другой бакет.
-
Модели VK¶
Модели - классы, которые получаются от VK и не должны быть созданы пользователем
Опасно
Классы ниже только для чтения
К примеру, это значит, что не стоит создавать или менять экземпляры класса User
User¶
-
class
vk_botting.user.User(bot, data)¶ Представляет собой пользователя ВК
Класс имеет в себе много неиспользуемых атрибутов, которые основаны вокруг полей пользователя в VK API, так что можно посмотреть их в документации VK API
Все атрибуты могут быть None при недостатке информации
-
async with
typing()¶ Возвращает контекстный менеджер, который позволяет поддерживать состояние „печатает“ неопределенное количество времени
Может быть использовано для долгих операций бота в командах
Примечание
Может использоваться и как синхронный контекстный менеджер, и как асинхроный. То есть и
withиasync withбудут работатьПример использования:
async with ctx.typing(): # do expensive stuff here await ctx.send('done!')
-
await
send(message=None, *, attachment=None, sticker_id=None, keyboard=None, reply_to=None, forward_messages=None)¶ Эта функция является корутиной.
Отправляет сообщение в ответ с данным текстом.
Текст должен быть типом, который можно преобразовать в строку с помощью
str(message).Если сообщение -
None(по умолчанию), то должен быть предоставлен параметрattachmentилиsticker_id.Если есть параметр
attachment, он должен бытьstr, List[str],Attachmentили List[Attachment]Если есть параметр
keyboard, он должен бытьstrилиKeyboard(предпочтительно)- Параметры
message (
str) – Текст сообщенияattachment (Union[List[
str],str, List[Attachment],Attachment]) – Приложение к сообщениюsticker_id (Union[
str,int]) – Id стикера, который надо отправитьkeyboard (
Keyboard) – Клавиатура, которую надо отправить вместе с сообщениемreply_to (Union[
str,int]) – Id сообщения, на которое надо ответитьforward_messages (Union[List[
int], List[str]]) – Id сообщений, которые надо переслать.
- Исключение
vk_botting.VKApiError – Если VK API возвращает ошибку
- Результат
Сообщение, которое было отправлено
- Тип результата
-
await
trigger_typing()¶ Эта функция является корутиной.
Включает боту состояние „печатает“
Может быть использовано вместо
typing()в некоторых случаяхСостояние „печатает“ выключается через 10 секунд или при отправке ответа
- Исключение
vk_botting.VKApiError – Если VK API возвращает ошибку
- Результат
Результат вызова к VK Api
- Тип результата
-
async with
Group¶
-
class
vk_botting.group.Group(data)¶ Представляет собой сообщество ВК
Message¶
-
class
vk_botting.message.Message(data)¶ Представляет собой любое сообщение, отправленное или полученное ботом
Должно создаваться только через
Bot.build_msg()-
id¶ Id сообщения в диалоге
Предупреждение
Не пытайтесь использовать этот параметр в групповых чатах, так как он всегда будет 0 и будет вызывать ошибки
- тип
-
date¶ Дата/время отправки сообщения
-
update_time¶ Дата/время изменения сообщения
-
attachments¶ Список приложений к сообщению
- тип
List[
Attachment]
-
action¶ Информация о действии
- тип
Union[
MessageAction,NoneType]
-
async with
typing()¶ Возвращает контекстный менеджер, который позволяет поддерживать состояние „печатает“ неопределенное количество времени
Может быть использовано для долгих операций бота в командах
Примечание
Может использоваться и как синхронный контекстный менеджер, и как асинхроный. То есть и
withиasync withбудут работатьПример использования:
async with ctx.typing(): # do expensive stuff here await ctx.send('done!')
-
await
edit(message=None, *, attachment=None, keep_forward_messages=1, keep_snippets=1)¶ Эта функция является корутиной.
Корутина для изменения сообщения
- Параметры
message (
str) – Новый текст сообщенияattachment (Union[List[
str],str, List[Attachment],Attachment]) – Новые приложения к сообщениюkeep_forward_messages (
bool) –Trueесли стоит сохранить пересланные сообщения. По умолчаниюTruekeep_snippets (
bool) –Trueесли стоит сохранить сниппеты. По умолчаниюTrue
- Исключение
vk_botting.VKApiError – Если VK API возвращает ошибку
- Результат
Сообщение, которое было отправлено
- Тип результата
-
await
delete(delete_for_all=1)¶ Эта функция является корутиной.
Корутина для удаления сообщения
- Параметры
delete_for_all (
bool) –Trueесли стоит удалить сообщение для всех пользователей. По умолчаниюTrue- Исключение
vk_botting.VKApiError – Если VK API возвращает ошибку
-
await
reply(message=None, **kwargs)¶ Эта функция является корутиной.
Отправляет сообщение как ответ к изначальному
Текст должен быть типом, который можно преобразовать в строку с помощью
str(message).Если сообщение -
None(по умолчанию), то должен быть предоставлен параметрattachmentилиsticker_id.Если есть параметр
attachment, он должен бытьstr, List[str],Attachmentили List[Attachment]Если есть параметр
keyboard, он должен бытьstrилиKeyboard(предпочтительно)- Параметры
message (
str) – Текст сообщенияattachment (Union[List[
str],str, List[Attachment],Attachment]) – Приложение к сообщениюsticker_id (Union[
str,int]) – Id стикера, который надо отправитьkeyboard (
Keyboard) – Клавиатура, которую надо отправить вместе с сообщением
- Исключение
vk_botting.VKApiError – Если VK API возвращает ошибку
- Результат
Сообщение, которое было отправлено
- Тип результата
-
await
get_user()¶ Эта функция является корутиной. Возвращает автора сообщения как экземпляр
Userclass
Эта функция является корутиной. Альтернатива для
Message.get_user()
-
await
fetch_user()¶ Эта функция является корутиной. Альтернатива для
Message.get_user()
Эта функция является корутиной. Альтернатива для
Message.get_user()
-
await
send(message=None, *, attachment=None, sticker_id=None, keyboard=None, reply_to=None, forward_messages=None)¶ Эта функция является корутиной.
Отправляет сообщение в ответ с данным текстом.
Текст должен быть типом, который можно преобразовать в строку с помощью
str(message).Если сообщение -
None(по умолчанию), то должен быть предоставлен параметрattachmentилиsticker_id.Если есть параметр
attachment, он должен бытьstr, List[str],Attachmentили List[Attachment]Если есть параметр
keyboard, он должен бытьstrилиKeyboard(предпочтительно)- Параметры
message (
str) – Текст сообщенияattachment (Union[List[
str],str, List[Attachment],Attachment]) – Приложение к сообщениюsticker_id (Union[
str,int]) – Id стикера, который надо отправитьkeyboard (
Keyboard) – Клавиатура, которую надо отправить вместе с сообщениемreply_to (Union[
str,int]) – Id сообщения, на которое надо ответитьforward_messages (Union[List[
int], List[str]]) – Id сообщений, которые надо переслать.
- Исключение
vk_botting.VKApiError – Если VK API возвращает ошибку
- Результат
Сообщение, которое было отправлено
- Тип результата
-
await
trigger_typing()¶ Эта функция является корутиной.
Включает боту состояние „печатает“
Может быть использовано вместо
typing()в некоторых случаяхСостояние „печатает“ выключается через 10 секунд или при отправке ответа
- Исключение
vk_botting.VKApiError – Если VK API возвращает ошибку
- Результат
Результат вызова к VK Api
- Тип результата
-
MessageEvent¶
-
class
vk_botting.message.MessageEvent(data)¶ Представляет собой событие сообщения (https://vk.com/dev/bots_docs_5)
-
event_id¶ Уникальное id события (может быть использовано только один раз и только в течении следующей минуты)
- тип
-
await
blank_answer()¶ Эта функция является корутиной.
Корутина, которая отправляет пустой ответ на событие (чтобы убрать анимацию загрузки на кнопке)
- Исключение
vk_botting.VKApiError – Если VK API возвращает ошибку
- Результат
Ответ сервера
- Тип результата
-
await
show_snackbar(text)¶ Эта функция является корутиной.
Корутина для отправки ответа типа show_snackbar (показывает пользователю всплывающее уведомление)
-
await
open_link(link)¶ Эта функция является корутиной.
Корутина для отправки ответа типа open_link (открывает у пользователя ссылку)
-
Ошибки¶
-
class
vk_botting.exceptions.VKException¶ Базовый класс ошибки для vk_botting
В идеале, он может быть использован для обработки всех ошибок, вызываемых библиотекой
-
class
vk_botting.exceptions.VKApiError¶ Ошибка для большинства ошибок, возвращаемых VK Api в своих ответах
-
class
vk_botting.exceptions.CommandError(message=None, *args)¶ Базовая ошибка для всех ошибок, связанных с командами
Является наследником
VKExceptionЭта ошибка и ее наследники обрабатываются особым образом в специальном событии
on_command_error()
-
class
vk_botting.exceptions.CommandNotFound¶ Ошибка, вызываемая когда не найдена команда с подходящим именем
Не вызывается при неверных подкомандах
Является наследником
CommandError
-
class
vk_botting.exceptions.DisabledCommand(message=None, *args)¶ Ошибка, вызываемая, когда вызыванная команда выключена
Является наследником
CommandError
-
class
vk_botting.exceptions.CommandOnCooldown(cooldown, retry_after)¶ Ошибка, вызываемая когда вызыванная команда на кулдауне. Является наследником
CommandError-
cooldown¶ Класс с атрибутами
rate,perиtype, аналогичный декораторуcooldown()- тип
Кулдаун
-
-
class
vk_botting.exceptions.CheckFailure(message=None, *args)¶ Ошибка, вызываемая при провале проверок из
Command.checksЯвляется наследником
CommandError
-
class
vk_botting.exceptions.ClientException¶ Ошибка, вызываемая когда возникает проблема с
ClientОбычно возникает из-за кривого ввода пользователя
-
class
vk_botting.exceptions.CommandInvokeError(e)¶ Ошибка, вызываемая при возникновении ошибки при вызове команды. Наследник
CommandError-
original¶ Изначальная ошибка. Может быть получена с помощью атрибута
__cause__
-
-
class
vk_botting.exceptions.ArgumentError(message=None, *args)¶ Базовая ошибка для ошибок, связанных с аргументами команд
Является наследником
CommandError
-
class
vk_botting.exceptions.BadArgument(message=None, *args)¶ Ошибка, возникающая при ошибке парсинга или преобразования аргументов
Наследник
ArgumentError
-
class
vk_botting.exceptions.BadUnionArgument(param, converters, errors)¶ Ошибка, возникающая при ошибке преобразования к всем типам
typing.Union. НаследникArgumentError-
param¶ Параметр, который не удалось преобразовать
-
converters¶ Кортеж использованных преобразователей
- тип
Tuple[Type, ..]
-
errors¶ Список ошибок, вызванных проблемой при преобразовании
- тип
List[
CommandError]
-
-
class
vk_botting.exceptions.MissingRequiredArgument(param)¶ Ошибка, возникшая при нехватке пропаршенных аргументов для команды
Наследник
ArgumentError-
param¶ Отсутствующий аргумент
-
-
class
vk_botting.exceptions.TooManyArguments(message=None, *args)¶ Ошибка, возникающая когда команде было передано слишком много аргументов и атрибут
Command.ignore_extraбыл наTrueНаследник
ArgumentError
-
class
vk_botting.exceptions.ConversionError(converter, original)¶ Ошибка, возникающая когда преобразователь вызывает ошибку, отличную от
CommandError. наследникCommandError-
converter¶ Преобразователь, который вызвал ошибку
- тип
conversions.Converter
-
original¶ Изначальная ошибка. Может быть получена с помощью атрибута
__cause__
-
-
class
vk_botting.exceptions.ExtensionError(message=None, *args, name)¶ Базовая ошибка для ошибок, связанных с расширениями
Является наследником
VKException
-
class
vk_botting.exceptions.ExtensionAlreadyLoaded(name)¶ Ошибка, вызванная когда расширение уже было загружено
Наследник
ExtensionError
-
class
vk_botting.exceptions.ExtensionNotLoaded(name)¶ Ошибка, вызываемая, когда расширение не загружено
Наследник
ExtensionError
-
class
vk_botting.exceptions.NoEntryPointError(name)¶ Ошибка, вызываемая, когда в расширении нет функции
setupНаследник
ExtensionError
-
class
vk_botting.exceptions.ExtensionFailed(name, original)¶ Ошибка, вызываемая когда расширение провалилось при выполнении или в функции
setupНаследник
ExtensionError
-
class
vk_botting.exceptions.ExtensionNotFound(name, original)¶ Ошибка, вызываемая когда расширение не найдено
Наследник
ExtensionError-
original¶ Тут могла быть ваша реклама ver.2
- тип
NoneType
-
-
class
vk_botting.exceptions.UnexpectedQuoteError(quote)¶ Ошибка, вызываемая когда парсер находит кавычку внутри строки, не ограниченной кавычками
Наследник
ArgumentError
-
class
vk_botting.exceptions.InvalidEndOfQuotedStringError(char)¶ Ошибка, вызываемая когда пробел должен быть после закрывающей кавычки, но найден другой символ
Наследник
ArgumentError
-
class
vk_botting.exceptions.ExpectedClosingQuoteError(close_quote)¶ Ошибка, вызываемая когда ожидается кавычка, но ее нет
Наследник
ArgumentError
-
class
vk_botting.exceptions.LoginError¶ Ошибка, вызываемая когда боту не удается зайти с предоставленным токеном по какой-то причине
Дополнительные классы¶
-
class
vk_botting.commands.GroupMixin(*args, **kwargs)¶ Mixin, который определяет часто используемый функционал для классов, которые могут регистрировать команды
-
add_command(command)¶ Добавляет команду
Commandили ее наследника в внутренний лист команд.Обычно не вызывается, вместо него используется декораторы
command().- Параметры
command (
Command) – Команда, которую надо добавить.- Исключение
ClientException – Если команда уже зарегистрирована.
-
remove_command(name)¶ Удаляет команду (
Commandили сабкласс) из внутреннего списка команд.Может быть использован и для удаления альтернативных названий.
-
for ... in
walk_commands()¶ Итератор, который рекурсивно проходит по всем командам и подкомандам.
-
get_command(name)¶ Получает команду (
Commandили его сабкласс) из внутреннего списка командМожет использоваться и чтобы получать альтернативные названия
К примеру, в случае с
'foo bar'вернет название подкомандыbarиз группы командfoo. Если команда не найдена, вернетNone
-
command(*args, **kwargs)¶ Декоратор, который добавляет команду в внутренний лист через
add_command()
-
-
class
vk_botting.commands.Command(func, **kwargs)¶ Класс, определяющий текстовую команду бота
Не создаются вручную, вместо этого они создаются с помощью декоратора
-
cog¶ Cog, к которому принадлежит команда.
Noneесли такого нет- тип
Optional[
Cog]
-
checks¶ Список проверок, которые подтверждают, что команда должна быть вызвана, принимающих на вход
Contextкак единственный параметр. Если команда не проходит проверки, то вon_command_error()подаетсяCheckFailure- тип
List[Callable[…,
bool]]
-
rest_is_raw¶ Если
Falseи есть аргумент с ключевым словом, то он обрабатывается как обычный аргумент, который обрабатываетMissingRequiredArgumentи значения по умолчанию как обычно вместо того, чтобы передавать аргумент как сырую строку- тип
-
ignore_extra¶ Если
True, игнорирует лишние аргументы, переданные команде. Иначе вызываетсяTooManyArguments- тип
-
cooldown_after_parsing¶ Если
True, то обработка перезарядки происходит после парсинга аргументов, иначе до- тип
-
add_check(func)¶ Добавляет проверку к команде. Это
check(), только без декоратора- Параметры
func – Функция, которая будет использоваться для проверки
-
remove_check(func)¶ Удаляет проверку с команды. Если такой проверки нет, не вызовет ошибку
- Параметры
func – Функция, которую необходимо удалить из проверок
-
update(**kwargs)¶ Обновляет экземпляр
Commandс новыми атрибутамиРаботает аналогично декоратору
command()в плане параметров
-
copy()¶ Создает копию команды
-
clean_params¶ Получает параметр OrderedDict без параметров контекста и self
Удобно для исследования подписей
-
full_parent_name¶ Получает имя команды
Базовое имя команды, которое необходимо для ее выполнения
- тип
-
parents¶ Получает родительские команды для данной
Если у команды нет родительских команд, то возвращает пустой
listК примеру для команды
?a b c testродительские команды -[c, b, a]- тип
-
root_parent¶ Получает коренные родительские команды данной
Если у команды нет родительских команд, возвращает
NoneК примеру в команде
?a b c testвернетa
-
is_on_cooldown(ctx)¶ Проверяет на перезарядке ли команда
-
reset_cooldown(ctx)¶ Обнуляет перезарядку команды
- Параметры
ctx (
Context) – Контест команды, перезарядку которой надо обнулить
-
error(coro)¶ Декоратор, который регистрирует корутину как локальный обработчик ошибок
Локальный обработчик ошибок это
on_command_error(), работающий только на одну команду
-
before_invoke(coro)¶ Декоратор, который вызывает корутину прямо перед вызовом команды
Удобно чтобы подготовить подключения, например
Корутина должна принимать один параметр -
ContextСм.
Bot.before_invoke()для дополнительной информации
-
after_invoke(coro)¶ Декоратор, вызывающий корутину сразу после вызова команды
Удобно использовать для чистки подключений и еще чего-нибудь
Сама корутина должна принимать один параметр -
ContextСм.
Bot.after_invoke()для дополнительной информации
-
await
can_run(ctx)¶ Эта функция является корутиной.
Проверяет, может ли команда быть вызвана засчет проверки всех проверок внутри атрибута
checks. Еще проверяет, выключена ли команда- Параметры
ctx (
Context) – Параметр ctx вызванной команды- Исключение
CommandError – Любая ошибка, возникшая во время выполнения функции будет обработана этой функцией
- Результат
Логическая переменная, обозначающая может ли команда быть вызвана
- Тип результата
-
-
class
vk_botting.client.Client(**kwargs)¶ Класс, представляющий собой Клиент для взаимодействий с VK Api
Предупреждение
Не должен использоваться вне класса
Bot, так как не будет работать-
exception
botCommandException¶
-
wait_for(event, *, check=None, timeout=None)¶ Эта функция является корутиной.
Ожидает определенное событие.
Может быть использован, к примеру, чтобы ждать ответа пользователя или пока тот изменит сообщение внутри команды.
Параметр
timeoutпередается напрямую вasyncio.wait_for(). По умолчанию, ждет неопределенно долго. Учтите, что в случае истечения времени вызываетсяasyncio.TimeoutError.В случае если событие возвращает множество аргументов, возвращается
tuple, содержащий их. Пожалуйста, обращайтесь к documentation для справки о событиях и их параметрахФункция возвращает первое событие, удовлетворяющее условиям
Примеры
Ожидание ответа пользователя:
@bot.command() async def greet(ctx): await ctx.send('Say hello!') def check(m): return m.text == 'hello' and m.from_id == ctx.from_id msg = await bot.wait_for('message_new', check=check) await ctx.send('Hello {.from_id}!'.format(msg))
- Параметры
event (
str) – Название события, как и в event reference, но без префиксаon_.check (Optional[Callable[…,
bool]]) – Проверка для события, которое надо ожидать. Аргументы должны соответствовать параметрам события, который ожидается.timeout (Optional[
float]) – Количество секунд для ожидания. По истечении вызываетasyncio.TimeoutError.
- Исключение
asyncio.TimeoutError – Если время ожидание было предоставлено и достигнуто
- Результат
Возвращает один аргумент,
tupleиз нескольких аргументов, или не возвращает вообще, в зависимости от события. Пожалуйста, обращайтесь к documentation для справки о событиях и их параметрах- Тип результата
Any
-
await
vk_request(method, post=True, **kwargs)¶ Эта функция является корутиной.
Реализует абстрактный запрос к методам VK Api
- Параметры
method (
str) – Название метода в виде строки (к примеру „users.get“)post (
bool) – Должен ли запрос быть POST. По умолчаниюTrue. Не рекомендуется менять этот параметр.kwargs (
Any) – Аргументы для отправки вместе с запросом. .. note:: access_token и v отправлять не надо, они автоматически добавляются из настроек текущего бота
- Результат
Ответ от сервера, представленный в виде
dict- Тип результата
-
await
user_vk_request(method, post=True, **kwargs)¶ Эта функция является корутиной.
Реализует абстрактный запрос к методам VK Api с помощью прикрепленного токена пользователя.
- Параметры
method (
str) – Название метода в виде строки (к примеру „users.get“)post (
bool) – Должен ли запрос быть POST. По умолчаниюTrue. Не рекомендуется менять этот параметр.kwargs (
Any) – Аргументы для отправки вместе с запросом. .. note:: access_token и v отправлять не надо, они автоматически добавляются из настроек текущего бота
- Результат
Ответ от сервера, представленный в виде
dict- Тип результата
-
await
get_users(*uids, fields=None, name_case=None)¶ Эта функция является корутиной.
Альтернатива методу „users.get“ VK API
-
await
get_groups(*gids)¶ Эта функция является корутиной.
Альтернатива для метода „groups.get“ VK API
-
await
get_pages(*ids, fields=None, name_case=None)¶ Эта функция является корутиной.
Получает страницы для запрошенных id, вне зависимости от того, группа это или пользователь
- Параметры
- Исключение
vk_botting.VKApiError – Если VK API возвращает ошибку
- Результат
- Тип результата
-
await
get_user(uid, fields=None, name_case=None)¶ Эта функция является корутиной.
Альтернатива методу „users.get“ VK API, возвращает только одного пользователя
- Параметры
- Исключение
vk_botting.VKApiError – Если VK API возвращает ошибку
- Результат
Экземпляр класса
Userдля запрошенного пользователя- Тип результата
-
await
get_group(gid)¶ Эта функция является корутиной.
Альтернатива для метода „groups.get“ VK API, возвращает только одну группу
-
await
get_page(pid, fields=None, name_case=None)¶ Эта функция является корутиной.
Получает страницу с данным id, вне зависимости от того, группа это или пользователь
- Параметры
- Исключение
vk_botting.VKApiError – Если VK API возвращает ошибку
- Результат
- Тип результата
-
await
get_own_page()¶ Эта функция является корутиной.
Получает страницу для текущего токена, вне зависимости от того, пользователь это или группа
-
await
upload_image_to_server(server, filename=None, url=None, raw=None, format=None)¶ Эта функция является корутиной.
Загружает изображение на какой-то сервер ВК.
Возвращает dict, представляющий собой ответ сервера.
- Параметры
server (
str) – Url сервера для загрузки. Может быть получен от API с помощью методов подобных photos.getUploadServer.filename (
str) – Путь к изображению, которое надо загрузить. Может быть относительным.url (
str) – Ссылка на изображение, которое надо загрузить. Это должна быть прямая ссылка на поддерживаемый формат изображений, иначе не сработает.raw (
bytes) – Сырые байты изображения, которое надо загрузить. Если используется, надо передать параметр format.format (
str) – Расширение загружаемого изображения. Должно быть использовано только вместе с сырыми байтами.
- Результат
dict, представляющий собой ответ сервера.- Тип результата
-
await
upload_document(peer_id, file, type=<DocType.DOCUMENT: 'doc'>, title=None)¶ Эта функция является корутиной.
Загружает документ в диалог с данным peer_id
Возвращает attachment, готовый к использованию в send_message
- Параметры
peer_id (
int) – Peer_id назначения. Загруженный документ нельзя использовать вне данного диалога.file (
str) – Путь к документу, который надо загрузить. Может быть относительным.type (
str) – Тип загруженного документа. Может быть значением изDocTypetitle (
str) – Название для загруженного документа. По умолчанию имя файла.
- Результат
Экземпляр
Attachment, представляющий загруженный документ- Тип результата
-
await
upload_photo(peer_id, filename=None, url=None, raw=None, format=None)¶ Эта функция является корутиной.
Загружает изображение в диалог с данным peer_id
Возвращает attachment, готовый к использованию в send_message
- Параметры
peer_id (
int) – Peer_id назначения. Загруженное изображение нельзя использовать вне данного диалогаfilename (
str) – Путь к изображению, которое надо загрузить. Может быть относительным.url (
str) – Ссылка на изображение, которое надо загрузить. Это должна быть прямая ссылка на поддерживаемый формат изображений, иначе не сработает.raw (
bytes) – Сырые байты изображения, которое надо загрузить. Если используется, надо передать параметр format.format (
str) – Расширение загружаемого изображения. Должно быть использовано только вместе с сырыми байтами.
- Результат
Экземпляр
Attachment, представляющий загруженное фото.- Тип результата
-
build_msg(msg)¶ Создает экземпляр класса
Messageизdict, содержащего объект сообщения.В нормальных условиях не должна вызываться вообще
-
await
on_error(event_method, *args, **kwargs)¶ Эта функция является корутиной.
Обработчик ошибок, предоставляемый ботом.
По умолчанию выводит информацию о ошибке в
sys.stderr, но может быть переобъявлен, чтобы делать что-то другое.Посмотрите
vk_botting.on_error()для более детального объяснения
-
await
send_message(peer_id=None, message=None, attachment=None, sticker_id=None, keyboard=None, reply_to=None, forward_messages=None, forward=None, **kwargs)¶ Эта функция является корутиной.
Отправляет сообщение данному получателю с данным текстом
Текст должен быть типом, который можно преобразовать в строку с помощью
str(message).Если сообщение -
None(по умолчанию), то должен быть предоставлен параметрattachmentилиsticker_id.Если есть параметр
attachment, он должен бытьstr, List[str],Attachmentили List[Attachment]Если есть параметр
keyboard, он должен бытьstrилиKeyboard(предпочтительно)- Параметры
peer_id (
int) – Id получателя сообщенияmessage (
str) – Текст сообщенияattachment (Union[List[
str],str, List[Attachment],Attachment]) – Приложение к сообщениюsticker_id (Union[
str,int]) – Id стикера, который надо отправитьkeyboard (
Keyboard) – Клавиатура, которую надо отправить вместе с сообщениемreply_to (Union[
str,int]) – Id сообщения, на которое надо ответитьforward_messages (Union[List[
int], List[str]]) – Id сообщений, которые надо переслать.forward (
dict) – Для дополнительной информации смотрите документацию.as_user (
bool) – Должно ли сообщение быть отправлено от имени пользователя (с использованием присоединенного токена)
- Исключение
vk_botting.VKApiError – Если VK API возвращает ошибку
- Результат
Сообщение, которое было отправлено
- Тип результата
-
await
add_user_token(token)¶ Эта функция является корутиной. Альтернатива для
Context.attach_user_token()
-
await
attach_user_token(token)¶ Эта функция является корутиной.
Присоединяет к боту токен пользователя, что позволяет выполнять запросы к API которые доступны только пользователям.
Также помещает в self.user экземпляр класса
Userсоответствующий предоставленному токену- Параметры
token (
str) – Токен пользователя, который необходимо прикрепить
-
run(token, owner_id=None)¶ Блокирующий вызов, который позволяет не инициализировать цикл самостоятельно.
Предупреждение
Эта функция должна быть последней вызванной в коде, так как она блокирующая. Это значит что регистрация событий, команд и т.д. после нее не будут работать.
-
exception
-
vk_botting.commands.command(name=None, cls=None, **attrs)¶ Декоратор который преобразует функцию в класс
Command.Все проверки, добавленные с помощью
check()и подобных, привязываются к функции. Через сам этот декоратор нельзя передать проверки.- Параметры
name (
str) – Название, с которым надо создать команду. По умолчанию - название функции без изменений.cls – Класс, с помощью которого надо создать команду. По умолчанию - класс
Command. Обычно этот параметр менять не стоит.attrs – Аргументы с ключевыми словами, которые передаются при создании класса, указанного в
cls.
- Исключение
TypeError – Если функция не является корутиной или уже является командой.