В последние годы мессенджеры стали площадкой не только для общения, но и для предоставления сервисов «на лету». Одним из самых популярных направлений является гадание – таро, нумерология, предсказания по дате рождения и т.д. В этой статье мы подробно разберём, как создать собственного WhatsApp‑бота, который будет выполнять гадания, отвечать на вопросы пользователей и даже продавать платные расклады.
Что такое WhatsApp‑бот и зачем он нужен в сфере гаданий? - Автономность. Бот работает 24/7, не требует присутствия живого эксперта.
- Масштабируемость. Один бот может обслуживать тысячи запросов одновременно.
- Персонализация. С помощью ИИ (ChatGPT, Gemini и др.) можно генерировать индивидуальные толкования.
- Маркетинг. Рассылка новостей, акций, приглашений к платным раскладам.
Для реализации проекта нам понадобится:
- Доступ к WhatsApp Business API (или облачному провайдеру типа Twilio, 360dialog).
- Сервер, где будет работать логика бота (Node.js, Python, PHP и др.).
- База данных для хранения пользователей, их запросов и истории гаданий.
- Модуль генерации предсказаний (правила таро‑раскладов, нумерологический движок, ИИ‑модель).
Регистрация и получение доступа к WhatsApp Business API
Самый надёжный способ – официальная WhatsApp Business API. Процесс выглядит так:
- Создайте бизнес‑аккаунт в Meta Business Manager.
- Подтвердите домены и номер телефона. Для теста можно использовать Sandbox‑окружение.
- Получите Access Token и Phone ID – они понадобятся в запросах к API.
- Если вы не хотите заниматься регистрацией вручную, подключите облачного провайдера (Twilio, 360dialog, MessageBird). Они предоставляют готовый webhook‑endpoint и упрощённый процесс оплаты.
Пример запроса к API для отправки сообщения (Python + requests):
import requests, json
url = "https://graph.facebook.com/v19.0/{PHONE_ID}/messages"
headers = {
"Authorization": "Bearer {ACCESS_TOKEN}",
"Content-Type": "application/json"
}
payload = {
"messaging_product": "whatsapp",
"to": "79221234567",
"type": "text",
"text": {"body": "Привет! Я ваш гадательный бот. Выберите расклад:"}
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
print(response.json)
Выбор технологического стека
| Компонент | Рекомендованные технологии | Почему |
|---|---|---|
| Сервер‑логика | Node.js (Express), Python (FastAPI), PHP (Laravel) | Широкая поддержка HTTP‑webhook, множество библиотек для работы с API. |
| База данных | PostgreSQL, MySQL, MongoDB | Надёжность, возможность хранить историю запросов и пользовательские профили. |
| Генерация предсказаний | Правила (JSON‑файлы) + OpenAI API, или готовый движок Таро (GitHub: pamnard/TaroBot) | Комбинация «чётких» правил и «мягкой» ИИ‑интерпретации. |
| Хостинг | DigitalOcean, AWS EC2, Render.com | Доступные цены, простая настройка SSL. |
Архитектура бота
Схема взаимодействия выглядит так:
- Пользователь отправляет сообщение в WhatsApp.
- WhatsApp API делает POST‑запрос на ваш webhook‑endpoint.
- Сервер парсит входящее сообщение, определяет тип запроса (выбор расклада, ввод даты рождения и т.д.).
- В зависимости от типа вызывается один из модулей:
- Таро‑модуль – случайным образом выбирает карты, формирует расклад.
- Нумерологический модуль – рассчитывает числа по дате рождения.
- AI‑модуль – отправляет запрос в OpenAI и получает «человеческое» толкование.
- Сформированный ответ отправляется обратно через WhatsApp API.
- Запрос сохраняется в базе (для аналитики и последующего маркетинга).
Ниже – упрощённый код webhook‑handler на Python (FastAPI):
from fastapi import FastAPI, Request
import httpx, json, random
app = FastAPI
WHATSAPP_TOKEN = "YOUR_ACCESS_TOKEN"
PHONE_ID = "YOUR_PHONE_ID"
WHATSAPP_URL = f"https://graph.facebook.com/v19.0/{PHONE_ID}/messages"
TAROT_CARDS = [
"Шут", "Маг", "Верховная Жрица", "Императрица", "Император",
"Иерофант", "Влюблённые", "Колесница", "Сила", "Отшельник",
"Колесо Фортуны", "Справедливость", "Повешенный", "Смерть",
"Умеренность", "Дьявол", "Башня", "Звезда", "Луна", "Солнце",
"Суд", "Мир"
]
def send_whatsapp(to: str, text: str):
payload = {
"messaging_product": "whatsapp",
"to": to,
"type": "text",
"text": {"body": text}
}
headers = {
"Authorization": f"Bearer {WHATSAPP_TOKEN}",
"Content-Type": "application/json"
}
httpx.post(WHATSAPP_URL, headers=headers, json=payload)
@app.post("/webhook")
async def webhook(request: Request):
data = await request.json
# Выбираем первое сообщение из массива
try:
msg = data["entry"][0]["changes"][0]["value"]["messages"][0]
phone = msg["from"]
text = msg["text"]["body"].strip.lower
except (KeyError, IndexError):
return {"status": "ignored"}
if text in ["привет", "начать", "старт"]:
reply = ("Привет! Я ваш гадательный бот.
"
"Выберите действие:
"
"1️⃣ Таро‑расклад
"
"2️⃣ Нумерология по дате рождения
"
"Отправьте цифру.")
send_whatsapp(phone, reply)
return {"status": "ok"}
if text == "1":
cards = random.sample(TAROT_CARDS, 3)
reply = f"Ваш расклад:
1️⃣ {cards[0]}
2️⃣ {cards[1]}
3️⃣ {cards[2]}
"
"Для подробного толкования напишите номер карты."
send_whatsapp(phone, reply)
return {"status": "ok"}
# Добавьте обработку нумерологии, AI‑модулей и т.д.
send_whatsapp(phone, "Извините, я пока не понимаю эту команду.")
return {"status": "ok"}
Реализация конкретных гадательных модулей 5.1 Таро‑расклад
Для простого расклада «Три карты» достаточно случайно выбрать три карты из колоды и вернуть их названия. Если нужен более сложный расклад (Кельтский крест, Пастельный), создайте JSON‑шаблон, где указаны позиции и их значения.
{
"celtic_cross": [
{"position": "1", "meaning": "Текущее положение"},
{"position": "2", "meaning": "Препятствия"},
{"position": "3", "meaning": "Подсознание"},
{"position": "4", "meaning": "Прошлое"},
{"position": "5", "meaning": "Будущее"},
{"position": "6", "meaning": "Внутренний совет"},
{"position": "7", "meaning": "Внешний совет"},
{"position": "8", "meaning": "Эмоции"},
{"position": "9", "meaning": "Ожидания"},
]
} Алгоритм:
- Случайным образом перемешать массив
TAROT_CARDS. - Взять нужное количество карт (например, 10 для Кельтского креста).
- Сформировать ответ, где каждая карта сопоставлена с её позицией.
5.2 Нумерология
Самый популярный метод – «число судьбы», получаемое из даты рождения:
def digit_sum(n):
while n > 9:
n = sum(int(d) for d in str(n))
return n
def life_path_number(date_str):
# date_str в формате "DDMMYYYY"
total = sum(int(d) for d in date_str if d.isdigit)
return digit_sum(total)
После расчёта числа бот может взять готовый текст‑описание из базы (JSON‑файл) и отправить пользователю.
5.3 Интеграция с OpenAI (ChatGPT) для «человечного» толкования
Если хотите, чтобы ответы звучали более естественно, используйте Chat Completion API. Пример запроса:
import openai
def ai_interpret(card_name, position):
prompt = f"""Ты — опытный таролог. Дай короткое, но ёмкое толкование карты {card_name} в позиции {position}.
Ответ должен быть в 2‑3 предложениях, без лишних вводных фраз."""
response = openai.ChatCompletion.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}],
temperature=0.7
)
return response.choices[0].message.content.strip
Полученный текст можно добавить к базовому ответу бота.
Хранение данных и аналитика
Для дальнейшего развития проекта важно сохранять:
- Номера телефонов (с согласия пользователя).
- Тип выбранного расклада.
- Дата и время запроса.
- Текст ответа (для последующего анализа).
Пример таблицы в PostgreSQL:
CREATE TABLE user_requests (
id SERIAL PRIMARY KEY,
phone VARCHAR(20) NOT NULL,
request_type VARCHAR(30) NOT NULL,
payload JSONB,
answer TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
С помощью таких данных можно:
- Отправлять персонализированные рассылки (например, «Ваш расклад дня готов!»).
- Анализировать популярные типы гаданий и улучшать контент.
- Вести монетизацию – предлагать платные расклады с более глубокой аналитикой.
Монетизация и юридические нюансы 7.1 Платные расклады - Создайте несколько уровней: бесплатный (карта дня, простое число), премиум (полный расклад, AI‑толкование).
- Оплату можно принимать через Google Pay, PayPal или интегрировать WhatsApp Payments (если доступно в вашем регионе).
7.2 Согласие и защита данных
- Создайте несколько уровней: бесплатный (карта дня, простое число), премиум (полный расклад, AI‑толкование).
- Оплату можно принимать через Google Pay, PayPal или интегрировать WhatsApp Payments (если доступно в вашем регионе).
7.2 Согласие и защита данных
Согласно ФЗ‑152 «О персональных данных» и GDPR (если обслуживаете пользователей из ЕС), необходимо:
- Получать явное согласие на хранение номера телефона и обработку данных.
- Обеспечить возможность удаления данных по запросу пользователя.
- Хранить данные в зашифрованном виде (TLS для передачи, AES‑256 для БД).
7.3 Ограничения WhatsApp
WhatsApp запрещает использовать сервис для «мошенничества», «продажи запрещённых товаров» и т.п. Гадание считается «информационным сервисом», но в рекламных сообщениях следует избегать обещаний «гарантированных результатов».
Тестирование и запуск - Локальное тестирование. Запустите сервер на
localhost и используйте ngrok для создания публичного HTTPS‑туннеля, который укажете в настройках webhook‑а. - Тестовый номер. В sandbox‑режиме WhatsApp позволяет отправлять сообщения только на предварительно одобренные номера.
- Проверка логики. Убедитесь, что каждый тип сообщения (текст, кнопка, быстрый ответ) правильно обрабатывается.
- Нагрузочное тестирование. С помощью
locust или k6 смоделируйте 100‑200 одновременных запросов, чтобы убедиться в стабильности. - Переход в продакшн. Переключите webhook‑URL на ваш реальный домен, включите SSL‑сертификат (Let’s Encrypt) и активируйте платный тариф WhatsApp Business API.
Пример готового диалога Пользователь: Привет
Бот: Привет! Я ваш гадательный бот.
Выберите действие:
1️⃣ Таро‑расклад
2️⃣ Нумерология по дате рождения
Отправьте цифру.
Пользователь: 1
Бот: Ваш расклад:
1️⃣ Маг
2️⃣ Сила
3️⃣ Смерть
Для подробного толкования напишите номер карты.
Пользователь: 2
Бот (AI‑толкование):
«Сила» указывает на внутреннюю уверенность и способность преодолевать препятствия. Сейчас время действовать смело, доверяя своей интуиции.
Пользователь: 2
Бот: Пожалуйста, пришлите дату рождения в формате ДДММГГГГ.
Пользователь: 1508191990
Бот: Ваше число судьбы, 7. Это число символизирует духовный поиск, аналитический ум и стремление к самопознанию.
Полезные ресурсы и готовые решения - TaroBot на GitHub – открытый код таро‑бота для Telegram, легко адаптировать под WhatsApp.
- SendPulse: Как создать чат‑бота для WhatsApp – пошаговый гайд с примерами кода.
- Twilio WhatsApp API – простой способ начать без официального Business API.
- OpenAI Chat Completion Guide – как интегрировать ИИ‑толкования.
- CSP и безопасность веб‑приложений – рекомендации по защите вашего сервера.
localhost и используйте ngrok для создания публичного HTTPS‑туннеля, который укажете в настройках webhook‑а.locust или k6 смоделируйте 100‑200 одновременных запросов, чтобы убедиться в стабильности.Пользователь: Привет
Бот: Привет! Я ваш гадательный бот.
Выберите действие:
1️⃣ Таро‑расклад
2️⃣ Нумерология по дате рождения
Отправьте цифру.
Пользователь: 1
Бот: Ваш расклад:
1️⃣ Маг
2️⃣ Сила
3️⃣ Смерть
Для подробного толкования напишите номер карты.
Пользователь: 2
Бот (AI‑толкование):
«Сила» указывает на внутреннюю уверенность и способность преодолевать препятствия. Сейчас время действовать смело, доверяя своей интуиции.
Пользователь: 2
Бот: Пожалуйста, пришлите дату рождения в формате ДДММГГГГ.
Пользователь: 1508191990
Бот: Ваше число судьбы, 7. Это число символизирует духовный поиск, аналитический ум и стремление к самопознанию.
Полезные ресурсы и готовые решения - TaroBot на GitHub – открытый код таро‑бота для Telegram, легко адаптировать под WhatsApp.
- SendPulse: Как создать чат‑бота для WhatsApp – пошаговый гайд с примерами кода.
- Twilio WhatsApp API – простой способ начать без официального Business API.
- OpenAI Chat Completion Guide – как интегрировать ИИ‑толкования.
- CSP и безопасность веб‑приложений – рекомендации по защите вашего сервера.
Создание WhatsApp‑бота для гадания – это сочетание нескольких технологий: официального API мессенджера, серверной логики, базы данных и, при желании, искусственного интеллекта. Следуя этому руководству, вы получите работающий сервис, который может обслуживать тысячи пользователей, генерировать персональные предсказания и даже приносить доход через платные расклады.
Помните о этике и законодательных ограничениях: всегда получайте согласие на обработку персональных данных и не обещайте невозможного. Тогда ваш гадательный бот станет надёжным помощником и приятным «цифровым оракулом» для всех, кто ищет ответы в мире символов.
Удачной разработки!