Основной класс бота
Bot - главный класс фреймворка. Вы используете его для взаимодействия с Telegram Bot API.
Конструктор
Существует два способа передачи токена и параметров.
- Передать токен в качестве первого аргумента и (опционально) параметры
const bot = new Bot(process.env.BOT_TOKEN, {
api: {
fetchOptions: {
headers: {
"X-Hi-Telegram": "10",
},
},
},
});- Передать параметры с обязательным полем
token
const bot = new Bot({
token: process.env.BOT_TOKEN,
api: {
fetchOptions: {
headers: {
"X-Hi-Telegram": "10",
},
},
},
});Информация о боте
Когда бот начинает прослушивать обновления, GramIO получает информацию о боте, чтобы проверить, является ли токен бота действительным, и использовать некоторые данные бота. Например, эти данные будут использоваться для обработки упоминаний бота в командах. Если вы это настроите это поле сами, GramIO не будет отправлять запрос getMe при запуске.
const bot = new Bot(process.env.BOT_TOKEN, {
info: process.env.NODE_ENV === "production" ?
{
id: 1,
is_bot: true,
first_name:
"Bot example",
username: "example_bot",
// ..
}
: undefined
},
});IMPORTANT
Вам следует настроить это при горизонтальном масштабировании вашего бота (из-за ограничений частоты запросов метода getMe и более быстрого времени запуска) или при работе в бессерверных средах.
Плагины по умолчанию
Некоторые плагины используются по умолчанию, но вы можете отключить их.
const bot = new Bot(process.env.BOT_TOKEN, {
plugins: {
// отключить форматирование. Все format`` будут текстом без форматирования
format: false,
},
});Параметры API
fetchOptions
Настройка параметров fetch
const bot = new Bot(process.env.BOT_TOKEN, {
api: {
fetchOptions: {
headers: {
"X-Hi-Telegram": "10",
},
},
},
});baseURL
URL, который будет использоваться для отправки запросов. По умолчанию "https://api.telegram.org/bot".
const bot = new Bot(process.env.BOT_TOKEN, {
api: {
// случайный домен
baseURL: "https://telegram.io/bot",
},
});useTest
Следует ли отправлять запросы в тестовый дата-центр? По умолчанию false. Тестовая среда полностью отделена от основной среды, поэтому вам потребуется создать новую учетную запись пользователя и нового бота с помощью @BotFather.
const bot = new Bot(process.env.BOT_TOKEN, {
api: {
useTest: true,
},
});retryGetUpdatesWait
Время в миллисекундах перед повторным вызовом getUpdates. По умолчанию 1000.
const bot = new Bot(process.env.BOT_TOKEN, {
api: {
retryGetUpdatesWait: 300,
},
});Поддержка прокси
В GramIO очень просто настроить прокси для запросов.
Node.js
import { ProxyAgent } from "undici";
const proxyAgent = new ProxyAgent("my.proxy.server");
const bot = new Bot(process.env.BOT_TOKEN, {
api: {
fetchOptions: {
dispatcher: proxyAgent,
},
},
});WARNING
Несмотря на то, что undici работает под капотом Node.js, вам придется установить его. Также убедитесь, что у вас нет "lib": ["DOM"] в вашем tsconfig.json, иначе вы не увидите свойство dispatcher в типах (хотя undici всё равно будет его обрабатывать).
Bun
const bot = new Bot(process.env.BOT_TOKEN, {
api: {
fetchOptions: {
proxy: "https://my.proxy.server",
},
},
});Deno
const client = Deno.createHttpClient({
proxy: { url: "http://host:port/" },
});
const bot = new Bot(process.env.BOT_TOKEN, {
api: {
fetchOptions: {
client,
},
},
});WARNING
This API is unstable, so you should run it with deno run index.ts --unstable
Documentation | Deno.proxy | HTTP_PROXY environment variables