Основной класс бота
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