|
11 | 11 | content: "телеграм бот, фреймворк, как создать бота, Telegram, Telegram Bot API, GramIO, TypeScript, JavaScript, Node.JS, Nodejs, Deno, Bun, обработка обновлений, context объект, middleware, события бота, Update типы, обработчики событий, next функция, цепочка middleware, message события, callback_query события, фильтрация обновлений, маршрутизация событий, edited_message, channel_post, inline_query, polling, webhook, типы обновлений, регистрация обработчиков" |
12 | 12 | --- |
13 | 13 |
|
14 | | -# Контекст |
| 14 | +# Обработка обновлений |
| 15 | + |
| 16 | +## Start |
| 17 | + |
| 18 | +Метод `start` запускает процесс получения обновлений от Telegram для вашего бота. В зависимости от переданных параметров, бот может использовать long-polling или webhook для получения событий. Этот метод инициализирует бота, подгружает [lazy плагины](/docs/ru/plugins/lazy-load) и вызывает хук [`onStart`](/docs/ru/plugins/hooks#onstart). |
| 19 | + |
| 20 | +**Сигнатура:** |
| 21 | + |
| 22 | +```ts |
| 23 | +start(options?): Promise<BotInfo> |
| 24 | +``` |
| 25 | +
|
| 26 | +**Параметры:** |
| 27 | +
|
| 28 | +- `options` — объект с настройками запуска: |
| 29 | + - `webhook` — параметры для запуска через webhook (`true`, строка-URL или объект с параметрами). |
| 30 | + - `longPolling` — параметры для long-polling (например, таймауты). |
| 31 | + - `dropPendingUpdates` — сбрасывать ли неотправленные обновления при запуске. |
| 32 | + - `allowedUpdates` — список типов обновлений, которые бот будет получать. |
| 33 | + - `deleteWebhook` — как поступать с существующим webhook при запуске long-polling. |
| 34 | +
|
| 35 | +> [!IMPORTANT] |
| 36 | +> |
| 37 | +> **Особенности параметров:** |
| 38 | +> |
| 39 | +> - Если указать `webhook: true`, GramIO не будет пытаться установить webhook самостоятельно — предполагается, что вы уже настроили его. В этом случае бот просто начнёт принимать обновления через уже существующий webhook. |
| 40 | +> |
| 41 | +> - Параметр `deleteWebhook` управляет тем, что делать с существующим webhook при запуске long-polling: |
| 42 | +> - Если `deleteWebhook: true`, бот всегда удаляет webhook перед запуском long-polling. |
| 43 | +> - Если `deleteWebhook: "on-conflict-with-polling"`, webhook будет удалён только если он мешает запуску long-polling (когда Telegram отвечает на запрос `getUpdates` с ошибкой конфликта). |
| 44 | +> - Если не указано, используется поведение по умолчанию (`on-conflict-with-polling`). |
| 45 | +
|
| 46 | +```ts |
| 47 | +import { Bot } from "gramio"; |
| 48 | + |
| 49 | +const bot = new Bot(process.env.BOT_TOKEN) |
| 50 | + .command("start", (ctx) => ctx.send("Привет!")) |
| 51 | + .onStart(console.log); |
| 52 | + |
| 53 | +await bot.start({ |
| 54 | + longPolling: { timeout: 10 }, |
| 55 | + dropPendingUpdates: true, |
| 56 | +}); |
| 57 | +``` |
| 58 | +
|
| 59 | +**Описание работы:** |
| 60 | +
|
| 61 | +- Если не указан webhook, запускается long-polling. |
| 62 | +- Если указан webhook, настраивается webhook и бот начинает принимать обновления через HTTP. |
| 63 | +- Вызывает хук [`onStart`](/docs/ru/plugins/hooks#onstart). |
| 64 | +- Можно сбросить старые обновления при запуске. |
| 65 | +
|
| 66 | +## Stop |
| 67 | +
|
| 68 | +Метод `stop` завершает приём обновлений и корректно останавливает все внутренние процессы бота. Вызываются хуки завершения (`onStop`), очищается очередь обновлений. |
| 69 | +
|
| 70 | +**Сигнатура:** |
| 71 | +
|
| 72 | +```ts |
| 73 | +stop(timeout?): Promise<void> |
| 74 | +``` |
| 75 | +
|
| 76 | +**Параметры:** |
| 77 | +
|
| 78 | +- `timeout` — время ожидания завершения обработки очереди обновлений (по умолчанию 3000 мс). |
| 79 | +
|
| 80 | +**Пример использования:** |
| 81 | +
|
| 82 | +```ts |
| 83 | +await bot.stop(); |
| 84 | +``` |
| 85 | +
|
| 86 | +**Описание работы:** |
| 87 | +
|
| 88 | +- Останавливает long-polling или webhook (если был запущен). |
| 89 | +- Дожидается завершения обработки всех текущих обновлений. |
| 90 | +- Вызывает хук [`onStop`](/docs/ru/plugins/hooks#onstop). |
| 91 | +
|
| 92 | +## Контекст |
15 | 93 |
|
16 | 94 | ## Прослушивание всех событий |
17 | 95 |
|
@@ -143,4 +221,4 @@ const bot = new Bot(process.env.BOT_TOKEN as string) |
143 | 221 | context.k; |
144 | 222 | // ^| |
145 | 223 | }); |
146 | | -``` |
| 224 | +``` |
0 commit comments