Как создать бота гадалку в Telegram на Python


Содержание

  1. Что такое бот‑гадалка
  2. Как создать бота в Telegram
  3. Пример кода на Python (python‑telegram‑bot)
  4. Как разместить бота (локально или на VPS)
  5. Как пользоваться ботом
  6. Советы по улучшению и расширению функционала

Telegram остаётся одной из самых популярных платформ для создания ботов благодаря простому API‚ высокой скорости доставки сообщений и возможности работы круглосуточно․ Бот‑гадалка – отличный пример того‚ как можно объединить развлечение и полезность: пользователь получает мгновенный ответ на свой вопрос‚ а разработчик получает опыт работы с Telegram Bot API и обработкой случайных данных․

Что такое бот‑гадалка

Бот‑гадалка – это автоматизированный диалоговый агент‚ который:

  • принимает текстовое сообщение от пользователя (вопрос или запрос на гадание);
  • генерирует случайный или семантически обоснованный ответ (например‚ вытягивает карту Таро‚ даёт ответ «да/нет»‚ предлагает цитату или афоризм);
  • отправляет результат обратно в чат․

Для простоты мы реализуем два типа гадания:

  1. «Да/Нет» – случайный выбор из двух вариантов;
  2. «Карта Таро» – случайная карта из колоды из 22 старших арканов с кратким толкованием․

Как создать бота в Telegram

  1. Откройте чат с @BotFather․
  2. Отправьте команду /newbot и следуйте инструкциям: придумайте имя бота и username (должен оканчиваться на bot)․
  3. После успешного создания BotFather пришлёт вам токен доступа – строку вида 123456789:AAHFsfvsdfSDSDsfsdfsd․ Сохраните его‚ он понадобится в коде․
  4. Опционально: установите описание‚ аватарку и команды бота через BotFather (/setdescription‚ /setuserpic‚ /setcommands)․

Пример кода на Python (python‑telegram‑bot)

Ниже представлен минимальный рабочий пример‚ который использует библиотеку python‑telegram‑bot (версия 20+)․ Убедитесь‚ что у вас установлен Python 3․8+․

Установка зависимостей

pip install python-telegram-bot --upgrade

Файл bot․py

import logging
import random
from telegram import Update
from telegram․ext import ApplicationBuilder‚ CommandHandler‚ ContextTypes‚ MessageHandler‚ filters

logging․basicConfig(
 format='%(asctime)s ⸺ %(name)s ‒ %(levelname)s ‒ %(message)s'‚
 level=logging․INFO
)

TOKEN = "ВАШ_ТОКЕН_ЗДЕСЬ"


TARO_CARDS = [
 ("Шут"‚ "Новые начинания‚ спонтанность‚ риск․")‚
 ("Маг"‚ "Умение‚ ресурсы‚ реализация планов․")‚
 ("Жрица"‚ "Интуиция‚ тайны‚ внутренний голос․")‚
 ("Императрица"‚ "Изобилие‚ забота‚ творчество․")‚
 ("Император"‚ "Авторитет‚ структура‚ контроль․")‚
 ("Иерофант"‚ "Традиция‚ обучение‚ совет․")‚
 ("Влюблённые"‚ "Выбор‚ отношения‚ гармония․")‚
 ("Колесница"‚ "Победа‚ движение вперёд‚ контроль․")‚
 ("Сила"‚ "Смелость‚ сострадание‚ внутренняя сила․")‚
 ("Отшельник"‚ "Уединение‚ поиск истины‚ мудрость․")‚
 ("Колесо фортуны"‚ "Перемены‚ судьба‚ циклы․")‚
 ("Справедливость"‚ "Баланс‚ честность‚ закон․")‚
 ("Повешенный"‚ "Жертва‚ новый взгляд‚ отказ․")‚
 ("Смерть"‚ "Преобразование‚ конец начала‚ трансформация․")‚
 ("Умеренность"‚ "Баланс‚ терпение‚ смешивание․")‚
 ("Дьявол"‚ "Привязанность‚ материализм‚ тень․")‚
 ("Башня"‚ "Внезапные изменения‚ разрушение‚ откровение․")‚
 ("Звезда"‚ "Надежда‚ вдохновение‚ спокойствие․")‚
 ("Луна"‚ "Иллюзии‚ интуиция‚ подсознание․")‚
 ("Солнце"‚ "Радость‚ успех‚ ясность․")‚
 ("Суд"‚ "Переоценка‚ пробуждение‚ внутренний голос․")‚
 ("Мир"‚ "Завершение‚ гармония‚ целостность․")
]

async def start(update: Update‚ context: ContextTypes․DEFAULT_TYPE) -> None:
 await update․message․reply_text(
 "Привет! Я бот‑гадалка․ Выберите‚ что хотите:
"
 "/yesno – получить ответ «Да» или «Нет»
"
 "/taro – вытянуть случайную карту Таро"
 )

async def yesno(update: Update‚ context: ContextTypes․DEFAULT_TYPE) -> None:
 answer = random․choice(["Да"‚ "Нет"])
 await update․message․reply_text(f"🔮 Ответ: {answer}")

async def taro(update: Update‚ context: ContextTypes․DEFAULT_TYPE) -> None:
 card‚ meaning = random․choice(TARO_CARDS)
 await update․message․reply_text(
 f"🃏 Ваша карта: {card}
{meaning}"‚ )
def main -> None:
 application = ApplicationBuilder․token(TOKEN)․build

 application․add_handler(CommandHandler("start"‚ start))
 application․add_handler(CommandHandler("yesno"‚ yesno))
 application․add_handler(CommandHandler("taro"‚ taro))

 # Запуск бота в режиме long‑polling (просто для теста)
 application․run_polling
if __name__ == '__main__':
 main

Ключевые моменты кода:

  • Мы используем ApplicationBuilder из новой версии библиотеки․
  • Команды /yesno и /taro возвращают случайный ответ․
  • Логирование помогает отслеживать работу бота․

Как разместить бота (локально или на VPS)

Локальный запуск (для теста)

  1. Сохраните код выше в файл bot․py․
  2. Замените ВАШ_ТОКЕН_ЗДЕСЬ на токен‚ полученный от BotFather․
  3. Запустите:
python bot․py

Бот будет работать‚ пока запущен терминал․ Нажмите Ctrl+C для остановки․

Запуск на VPS (рекомендуется для постоянной работы)

  1. арендуйте небольшой VPS (например‚ Ubuntu 22․04)․
  2. Подключитесь по SSH и установите Python и pip:
sudo apt update && sudo apt install -y python3 python3-pip
  1. Скопируйте файл bot․py на сервер (например‚ через scp или Git)․
  2. Установите зависимости:
pip3 install python-telegram-bot --upgrade
  1. Запустите бота в фоновом режиме с помощью screen или systemd․ Пример с screen:
screen -S telegram-bot
python3 bot․py

Для более надёжного решения создайте unit‑файл telegram-bot․service в /etc/systemd/system/ и активируйте его через systemctl enable --now telegram-bot․service․

Как пользоваться ботом

После запуска бота найдите его в Telegram по username (например‚ @MyFortuneBot) и отправьте одну из следующих команд:

  • /start – приветственное сообщение и список доступных команд․
  • /yesno – получите случайный ответ «Да» или «Нет»․
  • /taro – вытяните случайную карту Таро с толкованием․
  • Вы также можете просто написать боту любой текст; в текущей версии он будет отвечать только на команды‚ но вы легко можете добавить обработчик MessageHandler для ответа на произвольные вопросы․

    Советы по улучшению и расширению функционала

    • Добавить больше видов гадания: руны‚ я ching‚ numerology‚ ежедневный гороскоп․
    • Сделать персонализированные ответы: сохранять историю запросов пользователя и давать советы‚ основанные на предыдущих выборах․
    • Использовать вебхуки вместо long‑polling для снижения нагрузки на сервер․
    • Подключить базу данных (например‚ SQLite или PostgreSQL) для хранения статистики использования․
    • Оформить бота красивыми клавиатурами (ReplyKeyboardMarkup или InlineKeyboardMarkup) для выбора типа гадания без ввода команд․
    • Добавить поддержку мультиязычности (русский/английский) через gettext или простой словарь․
    • Обеспечить защиту от спама: лимитировать количество запросов в минуту от одного пользователя․

    Создание бота‑гадалки в Telegram – отличный способ познакомиться с Telegram Bot API‚ попрактиковаться в Python и получить весёлый инструмент для общения с друзьями или подписчиками․ В этой статье мы показали:

    1. Как зарегистрировать бота через BotFather․
    2. Как написать простой‚ но расширяемый код на python‑telegram‑bot․
    3. Как запустить бота локально и на VPS․
    4. Как пользоваться ботом и какие дальнейшие улучшения возможны․

    Теперь вы можете запустить своего собственного гадалку и удивлять окружающих точными (или не очень) предсказаниями! Удачной разработки и приятных гаданий․