Как создать чат‑бота‑астролога: пошаговое руководство

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


Планирование и определение функций

Прежде чем писать код, необходимо чётко сформулировать, какие задачи будет выполнять ваш бот․ Ниже перечислены самые популярные функции:

  1. Выдача ежедневных, недельных и месячных гороскопов․
  2. Расчёт натальной карты по дате, времени и месту рождения․
  3. Ответы на часто задаваемые вопросы о совместимости знаков․
  4. Персонализированные рекомендации (любовь, работа, здоровье)․
  5. Интеграция с календарём для напоминаний о важных астрологических событиях․

Важно: определите минимальный набор функций (MVP), чтобы быстрее вывести продукт на рынок и собрать обратную связь․

Выбор платформы для чат‑бота

Существует несколько популярных платформ, каждая из которых имеет свои плюсы и минусы․

Платформа Поддерживаемые мессенджеры Язык разработки Стоимость
Telegram Bot API Telegram Python, Node․js, PHP, Go и др․ Бесплатно (ограничения по запросам)
Facebook Messenger Platform Facebook, Instagram Node․js, PHP, Java Бесплатно до 2000 запросов/день
Viber Bot API Viber Python, Node․js, Ruby Бесплатно
Microsoft Bot Framework Telegram, Slack, Teams, Web‑чат и др․ C#, Node․js, Python Бесплатный тариф + платные опции

Для большинства русскоязычных пользователей Telegram – лучший выбор: простая регистрация бота, широкая аудитория и отсутствие строгих ограничений․

Подготовка астрологической базы данных

Бот‑астрологу нужна надёжная информация о планетных позициях, знаках зодиака, аспектах и т․п․ Есть два основных подхода:

Использование готовых API

  • Aztro API – бесплатный сервис для получения ежедневных гороскопов․
  • AstrologyAPI – платный, но предоставляет расчёт натальных карт, совместимость и транзиты․
  • AstronomyAPI – открытый API с эфемеридами․

Самостоятельный расчёт эфемерид

Если хотите полностью контролировать данные, скачайте JPL DE430 или Swiss Ephemeris и используйте их в своём коде․ Ниже пример на Python с библиотекой pyswisseph:

import swisseph as swe
from datetime import datetime

def get_planet_positions(date_time: datetime, lat: float, lon: float):
 # Устанавливаем координаты наблюдателя
 swe․set_topo(lon, lat, 0)

 # Переводим дату в юлианский день
 jd = swe․julday(date_time․year, date_time․month, date_time․day,
 date_time․hour + date_time․minute/60․0)
 planets = {
 'Sun': swe․SUN,
 'Moon': swe․MOON,
 'Mercury': swe․MERCURY,
 'Venus': swe․VENUS,
 'Mars': swe․MARS,
 'Jupiter': swe․JUPITER,
 'Saturn': swe․SATURN,
 'Uranus': swe․URANUS,
 'Neptune': swe․NEPTUNE,
 'Pluto': swe․PLUTO
 }

 positions = {}
 for name, pl in planets․items:
 lon, lat, dist = swe․calc(jd, pl)[:3]
 positions[name] = lon # долгота в градусах
 return positions

now = datetime․now
pos = get_planet_positions(now, 55․75, 37․62) # Москва
print(pos)

Эти данные потом можно преобразовать в знаки зодиака, дома и аспекты․

Архитектура бота

Рекомендуемая схема выглядит так:

  1. Frontend (мессенджер) – получает сообщения от пользователя․
  2. Webhook‑сервер – обработчик запросов (например, Flask/Django для Python)․
  3. Логика бота – модуль, отвечающий за диалог, парсинг запросов и вызов астрологических функций․
  4. Астрологический модуль – расчёт гороскопов, натальных карт, совместимости․
  5. База данных – хранит пользовательские профили (дата/время рождения, предпочтения)․
  6. Служба планирования – cron‑задачи для отправки ежедневных гороскопов․

Ниже схематичный пример кода на Python + Flask для Telegram:

from flask import Flask, request
import requests
import json

app = Flask(__name__)

TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN'
TELEGRAM_URL = f'https://api․telegram․org/bot{TOKEN}/'

def send_message(chat_id, text):
 url = TELEGRAM_URL + 'sendMessage' requests․post(url, json=payload)

def get_daily_horoscope(sign):
 # Пример обращения к бесплатному API Aztro
 resp = requests․post('https://aztro․sameerkumar․website/?sign=' + sign․lower + '&day=today')
 data = resp․json
 return data['description']

@app․route('/webhook', methods=['POST'])
def webhook:
 update = request․get_json
 if 'message' in update:
 chat_id = update['message']['chat']['id']
 text = update['message']․get('text', '')․strip․lower

 # простая команда /start
 if text == '/start':
 send_message(chat_id, 'Привет! Я астрологический бот․ Введи знак зодиака, и я пришлю твой гороскоп․')
 elif text in ['овен','телец','близнецы','рак','лев','дева','весы','скорпион','стрелец','козерог','водолей','рыбы']:
 horoscope = get_daily_horoscope(text)
 send_message(chat_id, f'{text․} — {horoscope}')
 else:
 send_message(chat_id, 'Я не понял․ Пожалуйста, введи название знака зодиака․')
 return 'ok'

if __name__ == '__main__':
 # Для локального теста используйте ngrok, а в продакшн – любой облачный хостинг
 app․run(host='0․0․0․0', port=8443)

Хранение пользовательских данных

Чтобы предлагать персонализированные гороскопы, необходимо сохранять дату, время и место рождения․ Наиболее простые варианты:

  • SQLite – для небольших проектов, легко встраивается в приложение․
  • PostgreSQL – если планируется масштабирование и аналитика․
  • Firebase Realtime Database – если хотите полностью безсерверное решение․

Пример таблицы в PostgreSQL:

CREATE TABLE users (
 id SERIAL PRIMARY KEY,
 telegram_id BIGINT UNIQUE NOT NULL,
 name TEXT,
 birth_date DATE NOT NULL,
 birth_time TIME,
 latitude NUMERIC(9,6),
 longitude NUMERIC(9,6)
);

Планирование отправки ежедневных гороскопов

Для автоматической рассылки используйте планировщик задач:

  • Cron на VPS (Linux) – простейший способ․
  • Heroku Scheduler – если ваш бот размещён на Heroku․
  • AWS Lambda + CloudWatch Events – без серверов, только платите за исполнение․

Пример cron‑записи, отправляющей гороскоп в 9:00 по Москве каждому пользователю:

0 6 * * * /usr/bin/python3 /home/bot/send_daily․py

В скрипте send_daily․py вы выбираете всех пользователей из БД, получаете их знак (по дате рождения) и вызываете функцию get_daily_horoscope, после чего отправляете сообщение через Telegram API․

Тестирование и отладка

Качественное тестирование – залог успеха․ Обязательно проверьте:

  1. Корректность парсинга входных сообщений (регистронезависимость, синонимы)․
  2. Точность астрологических расчётов (сравните с известными сервисами)․
  3. Работу с ошибками: отсутствие даты рождения, неверный формат, недоступность внешних API․
  4. Производительность при рассылке (не превышайте лимиты Telegram – 30 сообщений в секунду)․

Для автоматических тестов удобно использовать pytest (Python) и мокировать запросы к внешним API․

Публикация и продвижение

После того как бот готов, выполните следующие шаги:

  • Зарегистрируйте Webhook у выбранного мессенджера (Telegram: setWebhook)․
  • Разместите сервер в надёжном облаке (DigitalOcean, AWS, Google Cloud)․ Минимальный тариф – 5 USD/мес․
  • Создайте короткое и запоминающееся имя пользователя (например, @astro_bot)․
  • Подготовьте приветственное сообщение и инструкцию по использованию;
  • Продвигайте бот в тематических группах, на форумах астрологии, через рекламные посты в соцсетях․

Расширенные возможности

Когда базовый функционал отлажен, можно добавить:

  • Голосовые ответы (используя Google Text‑to‑Speech)․
  • Интеграцию с Google Calendar для напоминаний о лунных фазах․
  • Платные подписки на персональные отчёты (Stripe, PayPal)․
  • Графическое отображение натальной карты (SVG‑генерация)․
  • Машинное обучение для более «человечного» диалога․

Часто задаваемые вопросы

Нужно ли иметь астрологическое образование?

Технически нет, но базовые знания о знаках, домах и аспектах помогут построить более качественную логику и избежать ошибок․

Как обеспечить безопасность пользовательских данных?

Используйте HTTPS для всех запросов, храните токены в переменных окружения, а личные данные (дата и время рождения) шифруйте (например, с помощью cryptography в Python)․

Какие ограничения у Telegram Bot API?

Максимальный размер сообщения – , ограничение на отправку медиа‑файлов (20 МБ)․ Также есть лимит в 30 сообщений в секунду на один бот․

Создание бота‑астролога – увлекательный проект, который сочетает в себе программирование, работу с астрологическими данными и взаимодействие с пользователями․ Следуя этому пошаговому руководству, вы сможете быстро собрать MVP, протестировать его на реальной аудитории и постепенно расширять функционал․

Помните: успех бота зависит не только от точности гороскопов, но и от качества пользовательского опыта․ Делайте диалог живым, отвечайте быстро и не забывайте про регулярные обновления․

Удачной разработки! 🚀