Быстрый старт

Создайте бота и запустите echo-бота за несколько шагов.

Шаг 1. Создайте бота

  1. Откройте alphames.duckdns.org
  2. В поиске найдите @botmother
  3. Отправьте /newbot
  4. Введите отображаемое имя, например My Helper
  5. Введите username, например myhelperbot (обязательно оканчивается на bot)
  6. Сохраните токен — он показывается один раз

Шаг 2. Проверьте токен

curl -s https://alphames.duckdns.org/api/bot/getMe \
  -H "Authorization: Bot YOUR_TOKEN_HERE"

Должен вернуться JSON с "ok": true и данными бота.

Шаг 3. Напишите боту

  1. Найдите своего бота в поиске: @myhelperbot
  2. Откройте личный чат и отправьте /start

Сообщение попадёт в очередь updates — его заберёт ваш скрипт.

Шаг 4. Запустите скрипт

Минимальный бот на Node.js 18+:

// bot.js
const TOKEN = process.env.BOT_TOKEN;
const API = 'https://alphames.duckdns.org/api/bot';
const headers = {
  Authorization: `Bot ${TOKEN}`,
  'Content-Type': 'application/json',
};

let offset = 0;

async function api(path, options = {}) {
  const res = await fetch(`${API}${path}`, { ...options, headers });
  const data = await res.json();
  if (!res.ok) throw new Error(data.error || res.statusText);
  return data;
}

async function tick() {
  const { result } = await api(`/getUpdates?offset=${offset}`);
  for (const update of result) {
    offset = update.update_id + 1;
    if (update.type !== 'message') continue;
    const { chatId, text, from } = update.message;
    const reply = text === '/start'
      ? `Привет, ${from.displayName}! Я echo-бот.`
      : `Вы написали: ${text}`;
    await api('/sendMessage', {
      method: 'POST',
      body: JSON.stringify({ chat_id: chatId, text: reply }),
    });
  }
}

setInterval(() => tick().catch(console.error), 1000);
console.log('Bot running…');
# Windows PowerShell
$env:BOT_TOKEN="ваш_токен"
node bot.js

Шаг 5. Проверьте ответ

Напишите боту снова — он должен ответить. Если нет:

Деплой бота

Бот — это обычный процесс, который должен работать 24/7:

Храните токен в переменной окружения, не коммитьте в git.

Дальше