Как разместить Telegram-бота?
В этом руководстве создадим бота с нуля и разместим его на EliteHost. Хватит базовых знаний — опыт с Linux или VPS не нужен.
Создание Telegram-бота
в Telegram @BotFather — откройте и /newbot — отправьте команду. BotFather спросит две вещи:
- Имя бота — имя, которое видят пользователи (например:
Мой бот) - Username —
_botдолжно заканчиваться на (например:mening_botim_bot)
После успешного создания BotFather token выдаёт. Выглядит так:
7123456789:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsawНикому не передавайте токен
Пишем код бота
Ниже — готовые примеры для самых популярных библиотек. Файл main.py (Python) или index.js (Node.js) — система найдёт его автоматически.
aiogram 3.xРекомендуется
# main.py
import asyncio
import logging
import os
from aiogram import Bot, Dispatcher, types
from aiogram.filters import CommandStart
from aiogram.client.default import DefaultBotProperties
from aiogram.enums import ParseMode
logging.basicConfig(level=logging.INFO)
# Token muhit o'zgaruvchisidan olinadi — kodga yozmang!
TOKEN = os.getenv("BOT_TOKEN")
if not TOKEN:
raise RuntimeError("BOT_TOKEN o'zgaruvchisi topilmadi")
dp = Dispatcher()
@dp.message(CommandStart())
async def start(message: types.Message) -> None:
await message.answer(
f"Salom, <b>{message.from_user.full_name}</b>! 👋\n"
"Men EliteHost'da ishlayapman."
)
@dp.message()
async def echo(message: types.Message) -> None:
await message.answer(message.text or "Matn yuboring")
async def main() -> None:
bot = Bot(TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
await dp.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())pyTelegramBotAPI
# main.py
import os
import telebot
TOKEN = os.getenv("BOT_TOKEN")
bot = telebot.TeleBot(TOKEN)
@bot.message_handler(commands=["start"])
def start(message):
bot.reply_to(message, "Salom! Men EliteHost'da ishlayapman.")
@bot.message_handler(func=lambda m: True)
def echo(message):
bot.reply_to(message, message.text)
# infinity_polling — tarmoq uzilsa avtomatik qayta ulanadi
bot.infinity_polling(skip_pending=True)python-telegram-bot
# main.py
import os
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
await update.message.reply_text("Salom! Men EliteHost'da ishlayapman.")
def main() -> None:
app = Application.builder().token(os.getenv("BOT_TOKEN")).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()
if __name__ == "__main__":
main()Node.js (Telegraf)
// index.js
import { Telegraf } from 'telegraf';
const token = process.env.BOT_TOKEN;
if (!token) {
throw new Error("BOT_TOKEN o'zgaruvchisi topilmadi");
}
const bot = new Telegraf(token);
bot.start((ctx) => ctx.reply("Salom! Men EliteHost'da ishlayapman."));
bot.on('text', (ctx) => ctx.reply(ctx.message.text));
bot.launch();
// To'g'ri to'xtatish
process.once('SIGINT', () => bot.stop('SIGINT'));
process.once('SIGTERM', () => bot.stop('SIGTERM'));Подготовка файла зависимостей
Для проектов на Python requirements.txt — создайте его. В нём указываются используемые библиотеки с версиями:
aiogram==3.15.0А для Node.js — package.json:
{
"name": "mening-botim",
"version": "1.0.0",
"type": "module",
"main": "index.js",
"dependencies": {
"telegraf": "^4.16.3"
}
}Фиксируйте версию
aiogram==3.15.0 — указывайте точную версию. Иначе при обновлении библиотеки бот может неожиданно сломаться.Подготовка ZIP-архива
Папка проекта должна выглядеть так:
mening-botim/ ├── main.py ← входной файл ├── requirements.txt ← зависимости ├── handlers/ ← дополнительные модули (необязательно) │ └── admin.py └── data/ ← файлы данных (необязательно)Папка внутри — выделите файлы и упакуйте в ZIP (не саму папку — но система правильно поймёт оба варианта).
Не добавляйте в архив
- ·
venv/,.venv/— виртуальное окружение - ·
node_modules/— устанавливается на сервере - ·
.env— вводите токены через панель - ·
__pycache__/,.git/
Загрузка на EliteHost
- В панели управления Новый сервер → Бот-хостинг — выберите тариф
- Выберите среду: Python, Node.js, Go, PHP, Java, .NET, Rust, Bun или Ruby
- Выберите версию (рекомендуется Python 3.12)
- Загрузите ZIP-файл
После загрузки Elite AutoDeploy анализирует архив и показывает результат:
Ввод переменных окружения
Настройки → Переменные окружения перейдите в раздел и введите нужные значения:
BOT_TOKEN=7123456789:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw ADMIN_ID=123456789 DATABASE_URL=sqlite:///data/bot.dbЭти значения в базе AES-256-GCM шифруется и расшифровывается только внутри контейнера.
Запуск и проверка
🚀 Запуск бота — нажмите кнопку. Система по очереди:
- Создаёт сервер (~30 секунд)
- Загружает файлы
- Устанавливает зависимости
- Запускает бота
Весь процесс живые логи отображается. По завершении отправьте боту в Telegram /start .
Бот не отвечает?
Частые ошибки
Unauthorized / 401Причина: BOT_TOKEN неверный или отозван.
Решение: Получите токен заново у @BotFather и обновите его в разделе «Переменные окружения».
ModuleNotFoundError: No module named 'aiogram'Причина: Библиотека не указана в requirements.txt.
Решение: Добавьте в requirements.txt и нажмите «Переустановить зависимости».
Conflict: terminated by other getUpdates requestПричина: Бот с этим же токеном запущен где-то ещё.
Решение: Остановите копию на своём компьютере или другом сервере.
Killed / MemoryErrorПричина: Бот превысил лимит RAM тарифа.
Решение: Перейдите на тариф выше или перенесите большие данные в базу.