Как создать собственного бота‑гороскопа в Telegram на Python

Telegram‑боты стали популярным способом доставки быстрой и персонализированной информации. Одним из самых востребованных направлений является гороскоп – ежедневные, недельные и месячные предсказания для всех знаков зодиака. В этой статье мы разберём, почему гороскопы в мессенджере так популярны, какие готовые решения уже существуют, и покажем пошагово, как создать собственного бота‑гороскопа на Python.


Что такое гороскоп‑бот в Telegram?

Гороскоп‑бот – это автоматизированный аккаунт в Telegram, который реагирует на команды пользователя (например, /start или /horoscope) и отправляет текстовые предсказания, часто сопровождая их красивыми изображениями, кнопками выбора знака зодиака и даже интерактивными элементами (кнопки «Любовный», «Финансовый», «Здоровье»).

  • Бот может работать в личных чатах и в группах.
  • Поддерживает рассылку (push‑уведомления) с ежедневными предсказаниями.
  • Позволяет интегрировать платные подписки и AI‑генерацию текста.

Популярные гороскоп‑боты в Telegram

Ниже перечислены несколько известных проектов, которые уже успешно работают в экосистеме Telegram.

  1. DHoroBot – открытый проект на GitHub (github.com/king-tri-ton/DHoroBot). Бот получает актуальные гороскопы с horo.mail.ru и поддерживает команды /today, /week, /month.
  2. TheBestZodiacBot – коммерческий сервис, предоставляющий персональные прогнозы, а также расклады Таро и нумерологию.
  3. Saturn.Love – «самый персонифицированный астро‑бот», использующий ИИ‑модели для генерации уникального текста под каждый запрос.
  4. HumorHoroscopeBot – шуточный бот, который поднимает настроение лёгкими предсказаниями и мемами.
  5. Поговорим со звёздами – бот‑ассистент, который каждый день отправляет карту Таро, персональный гороскоп и «магические числа».

Как создать собственного бота‑гороскопа

Создание бота не требует глубоких знаний астрологии – достаточно уметь работать с API Telegram и получать данные о гороскопах из открытых источников.

3.1 Регистрация бота в BotFather

  1. Откройте Telegram и найдите официального бота @BotFather.
  2. Отправьте команду /newbot и следуйте инструкциям: задайте имя и уникальное username (должно оканчиваться на bot).
  3. После создания вы получите токен – длинную строку вида 123456789:ABCdefGhIJKlmnoPQRstuVWXyz. Сохраните его, он понадобится в коде.

3.2 Выбор языка и библиотеки

Самый популярный стек – Python + pyTelegramBotAPI (telebot). Установить библиотеку можно командой:

pip install pyTelegramBotAPI requests

Если вы предпочитаете Node.js, то аналогом будет node-telegram-bot-api.

3.3 Получение данных о гороскопах

Есть два основных подхода:

  • Парсинг открытых сайтов (например, horo.mail.ru или astrology.com). Нужно соблюдать robots.txt и правила использования контента.
  • Официальные API – некоторые сервисы (например, Aztro) предоставляют бесплатный JSON‑интерфейс с ежедневными предсказаниями.

Пример запроса к API Aztro:

import requests

def get_horoscope(sign: str, day: str = "today"):
 url = "https://aztro.sameerkumar.website/"
 params = {"sign": sign, "day": day}
 response = requests.post(url, params=params)
 return response.json

3.4 Структура кода бота

Ниже – минимальный рабочий скелет бота, который показывает гороскоп по нажатию кнопки.

import telebot
import random
import requests
TOKEN = "ВАШ_ТОКЕН_ЗДЕСЬ"
bot = telebot.TeleBot(TOKEN)

ZODIACS = [
 "Овен", "Телец", "Близнецы", "Рак", "Лев", "Дева",
 "Весы", "Скорпион", "Стрелец", "Козерог", "Водолей", "Рыбы"
]

@bot.message_handler(commands=['start', 'help'])
def send_welcome(message):
 markup = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3)
 buttons = [telebot.types.KeyboardButton(z) for z in ZODIACS]
 markup.add(*buttons)

 bot.send_message(
 message.chat.id,
 "Привет! Выбери свой знак зодиака, и я пришлю тебе ежедневный гороскоп.",
 reply_markup=markup
 )

@bot.message_handler(func=lambda m: m.text in ZODIACS)
def send_horoscope(message):
 sign = message.text.lower
 data = get_horoscope(sign) # функция из предыдущего блока
 text = f"{message.text} – {data['date']}
"
 text += f"🔮 {data['description']}
"
 text += f"❤️ Любовь: {data['love']}
"
 text += f"💰 Финансы: {data['finance']}
"
 text += f"🧭 Совет: {data['compatibility']}"

if __name__ == '__main__':
 bot.polling(none_stop=True, interval=0)

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

  • Используем ReplyKeyboardMarkup – простые кнопки, позволяющие выбрать знак.
  • Функция get_horoscope делает запрос к внешнему API и возвращает словарь.

3.5 Планирование ежедневных рассылок

Чтобы бот автоматически отправлял гороскоп каждому подписчику в 9:00 утра, можно использовать библиотеку schedule или встроенный APScheduler.

from apscheduler.schedulers.background import BackgroundScheduler

def broadcast_daily:
 for user_id in get_all_subscribers:
 # Предположим, что у каждого пользователя хранится его знак
 sign = get_user_sign(user_id)
 data = get_horoscope(sign)
 text = f"🌞 Доброе утро! Гороскоп на сегодня для {sign.title}:
{data['description']}"
scheduler = BackgroundScheduler
scheduler.add_job(broadcast_daily, 'cron', hour=9, minute=0)
scheduler.start

3.6 Тестирование и деплой

  1. Тестировать бота удобно в режиме «polling» на локальном компьютере.
  2. Для постоянной работы используйте Docker или Heroku. Пример Dockerfile:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "bot.py"]

После сборки запустите контейнер и убедитесь, что бот работает 24/7.


Продвинутые функции

4.1 Персонализация

Сохраняйте в базе (SQLite, PostgreSQL) не только знак, но и пол, дату рождения, интересы. На их основе можно генерировать более точные предсказания:

  • «Любовный гороскоп» – учитывает ваш пол и статус отношений.
  • «Финансовый совет» – подбирает рекомендации в зависимости от возраста.

4.2 ИИ‑генерация текста

Для уникального контента можно подключить OpenAI API (ChatGPT) или модели HuggingFace. Пример запроса к ChatGPT:

import openai
def ai_horoscope(sign):
 prompt = f"Составь короткий ежедневный гороскоп для знака {sign} в стиле астролога."
 response = openai.ChatCompletion.create(
 model="gpt-4o-mini",
 messages=[{"role": "user", "content": prompt}],
 max_tokens=80,
 temperature=0.7,
 )
 return response.choices[0].message.content.strip

4.3 Платные подписки и монетизация

  • Используйте Telegram Payments API для продажи премиум‑гороскопов (доступ к «глубокому» анализу, личным рекомендациям).
  • Оформляйте платные каналы и рассылайте эксклюзивный контент только подписчикам.
  • Рекламные партнерства: размещайте небольшие рекламные блоки в конце прогноза.

Лучшие практики и безопасность

  • Не храните токен в открытом коде. Используйте переменные окружения (os.getenv('TELEGRAM_TOKEN')).
  • Обрабатывайте исключения при запросах к внешним API – иначе бот может «упасть».
  • Ограничьте количество запросов к API (rate‑limit) – многие бесплатные сервисы позволяют лишь 100 запросов в час.
  • Соблюдайте GDPR и локальные законы о персональных данных: храните только необходимую информацию и предоставляйте возможность её удаления.
  • Регулярно обновляйте зависимости, чтобы избежать уязвимостей.

Гороскоп‑бот в Telegram – это отличный способ соединить астрологию, автоматизацию и современные технологии. С помощью простого кода на Python, открытых API и небольших усилий по настройке вы получаете полностью функционирующий сервис, который может привлекать аудиторию, генерировать доход и даже стать площадкой для экспериментов с ИИ.

Если вы только начинаете, советуем:

  1. Создать базовый бот, который отвечает на кнопку «Выбрать знак».
  2. Подключить бесплатный API (Aztro) и убедиться, что ответы приходят корректно.
  3. Добавить планировщик и протестировать рассылку.
  4. Постепенно внедрять персонализацию и, при желании, ИИ‑генерацию.

Удачной разработки и пусть звёзды всегда светят в ваш Telegram‑чат!