fastvk¶
Основные экспорты пакета. Всё необходимое для базового использования импортируется прямо из fastvk.
FastVK¶
FastVK — подкласс Bot с удобным методом run_polling().
class FastVK(Bot):
def __init__(
self,
token: str,
group_id: int | None = None,
*,
storage: BaseStorage | None = None,
lifespan: AsyncContextManager | None = None,
dashboard: BaseDashboard | None = None,
throttle_rate: float = 1.0,
) -> None: ...
def run_polling(self) -> None:
"""Блокирующий. Запускает asyncio.run внутри."""
| Параметр | По умолчанию | Описание |
|---|---|---|
group_id |
None |
ID группы. Если не передан — определяется автоматически из токена через groups.getById при старте. |
throttle_rate |
1.0 |
Минимальный интервал между сообщениями от одного пользователя (секунды). Передай 0 чтобы отключить. |
ThrottlingMiddleware¶
Встроенный rate limiter, регистрируется автоматически в FastVK. Настраивать ничего не нужно.
# по умолчанию — 1 сообщение в секунду на пользователя
bot = FastVK(token=TOKEN, group_id=GROUP_ID)
# другой rate
bot = FastVK(token=TOKEN, group_id=GROUP_ID, throttle_rate=0.5)
# отключить
bot = FastVK(token=TOKEN, group_id=GROUP_ID, throttle_rate=0)
Если пользователь отправляет сообщения быстрее чем throttle_rate секунд, лишние обновления молча дропаются — хэндлер не вызывается. Работает для всех типов событий (message_new, message_event, group_join, group_leave). Посты сообщества (wall_post_new с отрицательным from_id) не троттлируются никогда.
Если нужен класс напрямую:
DashboardConfig¶
Датакласс с настройками сервера дашборда.
@dataclass
class DashboardConfig:
dashboard: bool = True # включить/выключить
dashboard_host: str = "127.0.0.1"
dashboard_port: int = 8080
BaseDashboard¶
Базовый класс конфигурации дашборда. Создай подкласс и переопредели config.
Использование:
from fastvk import FastVK
from fastvk.dashboard import BaseDashboard, DashboardConfig
class MyDashboard(BaseDashboard):
config = DashboardConfig(
dashboard_host="0.0.0.0",
dashboard_port=8080,
)
bot = FastVK(token=TOKEN, group_id=GROUP_ID, dashboard=MyDashboard())
dashboard=None (по умолчанию) — дашборд отключён.
Все пространства VK API методов доступны напрямую на FastVK:
| Свойство | Методы |
|---|---|
bot.messages |
send, edit, delete, search, pin, unpin и др. |
bot.users |
get, search |
bot.groups |
getById, getMembers, getLongPollServer |
bot.wall |
get, post, getById |
bot.photos |
getMessagesUploadServer, saveMessagesPhoto |
bot.docs |
getMessagesUploadServer, save |
await bot.messages.send(peer_id=123, message="Привет", random_id=0)
await bot.users.get(user_ids=123)
Router¶
class Router:
def message(self, *filters) -> Callable: ...
def callback(self, *filters) -> Callable: ...
def error(self) -> Callable: ...
def include_router(self, router: Router) -> None: ...
F¶
Magic filter объект. Смотри Фильтры.
F.text == "hello"
F.text.startswith("!")
F.text.regexp(r"\d+")
F.from_id.in_(1, 2, 3)
~F.text.startswith("/")
(F.text == "a") | (F.text == "b")