Хотите своими руками создать небольшое гадание по знакам зодиака? Python позволяет реализовать это за считанные минуты без сторонних сервисов и сложных библиотек. Ниже приведён пошаговый пример программы‚ которая по дате рождения выводит знак зодиака и генерирует короткий гороскоп на сегодняшний день.
Что умеет наш «гороскоп-бот»
- Определяет знак зодиака по дню и месяцу.
- Генерирует случайное‚ но связное «предсказание».
- Может легко расширяться до полноценного Telegram-бота.
Минимальные требования
Достаточно стандартной библиотеки Python 3.8+.
Дополнительно (опционально) установите python-telegram-bot‚ если хотите разместить бота в Telegram:
pip install python-telegram-bot --upgrade Определяем знак по дате
Создадим словарь с диапазонами дат и функцию get_sign:
import datetime
SIGNS = {
(1‚ 20): "Козерог"‚ (2‚ 19): "Водолей"‚ (3‚ 21): "Рыбы"‚
(4‚ 20): "Овен"‚ (5‚ 21): "Телец"‚ (6‚ 21): "Близнецы"‚
(7‚ 22): "Рак"‚ (8‚ 23): "Лев"‚ (9‚ 23): "Дева"‚
(10‚ 23): "Весы"‚ (11‚ 23): "Скорпион"‚ (12‚ 22): "Стрелец"‚
(12‚ 31): "Козерог"
}
def get_sign(month: int‚ day: int) -> str:
for (m‚ d)‚ sign in SIGNS.items:
if (month‚ day) <= (m‚ d):
return sign
return "Козерог"
Генерируем текст гороскопа
Чтобы не парсить сторонние сайты‚ сохраним набор «фраз-заготовок» и случайно их комбинируем:
import random
TEMPLATES = {
"Овен": [
"Сегодня звёзды сулят вам приток энергии — время начать новый проект."‚
"Возможны неожиданные встречи‚ которые перевернут привычный ход дел."
]‚
"Телец": [
"Финансовое положение улучшится‚ если вы проявите настойчивость."‚
"День благоприятен для крупных покупок и инвестиций."
]‚
# ... добавьте свои шаблоны для остальных знаков
}
def generate_horoscope(sign: str) -> str:
lines = TEMPLATES.get(sign‚ ["Сегодня полагайтесь на интуицию."])
return f"{sign}
{random.choice(lines)}"
Склейка в простую CLI-программу
Теперь всё соберём воедино:
if __name__ == "__main__":
birth = input("Введите дату рождения (ДД.ММ): ")
day‚ month = map(int‚ birth.split("."))
sign = get_sign(month‚ day)
print(generate_horoscope(sign))
Запустите файл и введите 29.04 — получите‚ например:
- Телец
- День благоприятен для крупных покупок и инвестиций.
Telegram-бот за 15 строк
Добавляем импорт библиотеки telebot и создаём обработчик команды /start. День и месяц бот запрашивает в диалоге:
import telebot
TOKEN = "ВАШ_ТОКЕН_ОТ_BOTFATHER"
bot = telebot.TeleBot(TOKEN)
@bot.message_handler(commands=['start'])
def start_message(message):
bot.send_message(message.chat.id‚
"Привет! Напиши свою дату рождения в формате ДД.ММ.")
@bot.message_handler(func=lambda m: True)
def horoscope_handler(message):
try:
d‚ m = map(int‚ message.text.split("."))
sign = get_sign(m‚ d)
bot.reply_to(message‚ generate_horoscope(sign))
except Exception:
bot.reply_to(message‚ "Формат: ДД.ММ‚ например 29.04")
bot.polling
Как расширить функционал
- Парсинг реального сайта: используйте
requests + BeautifulSoup‚ чтобы забрать гороскоп c horoscope.com или astroscope.ru. - База данных: храните текстовые шаблоны в SQLite и обновляйте их через админ-бота;
- Многоязычность: заведите словари на русском/английском и выбирайте язык через команду
/lang.
За 30 минут мы написали:
• CLI-версию гороскопа;
• готовый Telegram-бота;
• легко расширяемый каркас.
Теперь вы можете не только «читать» звёзды‚ но и делиться собственными предсказаниями с друзьями прямо в мессенджере!