Files
bdbot/bot/messages.py
2026-01-28 15:53:27 +03:00

188 lines
8.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""Themed birthday messages dictionaries."""
import random
# Themes list
THEMES = [
"Автомобили",
"Спорт",
"Танцы",
"Музыка",
"Аниме",
"Игры",
"Книги",
"Кино",
"Путешествия",
"Еда",
"Технологии",
"Искусство",
]
# Emoji dictionary for each theme
THEME_EMOJIS = {
"Автомобили": "🚗",
"Спорт": "",
"Танцы": "💃",
"Музыка": "🎵",
"Аниме": "🦊",
"Игры": "🎮",
"Книги": "📚",
"Кино": "🎬",
"Путешествия": "✈️",
"Еда": "🍕",
"Технологии": "💻",
"Искусство": "🎨",
}
def get_theme_emoji(theme: str) -> str:
"""Get emoji for the given theme."""
return THEME_EMOJIS.get(theme, "🎉") # Default emoji
# Birthday greeting opening phrases (random variations)
BIRTHDAY_GREETINGS = [
"С днем рождения",
"Поздравляю с днем рождения",
"С твоим днем рождения",
"Поздравляю тебя с днем рождения",
"Поздравляю с днем рождения",
]
def get_birthday_greeting_opening() -> str:
"""Get a random birthday greeting opening phrase."""
return random.choice(BIRTHDAY_GREETINGS)
# Birthday messages for each theme
BIRTHDAY_MESSAGES = {
"Автомобили": [
"желаю тебе купить бугатти!",
"пусть твой стальной конь всегда заводится с первого раза!",
"желаю тебе обновить свой автопарк!",
"чтобы у тебя проблем с машиной не было никогда!",
],
"Спорт": [
"желаю тебе новых спортивных достижений!",
"пусть каждый день будет полон энергии!",
"желаю тебе побить все личные рекорды!",
"пусть здоровье будет крепким, а дух сильным!",
"желаю достичь своих целей!",
],
"Танцы": [
"желаю тебе танцевать до упаду!",
"пусть каждый танец будет особенным!",
"желаю тебе найти свой ритм!",
"пусть музыка всегда вдохновляет тебя!",
"пусть жизнь будет грациозной, как и твои танцы!",
"встречай свой праздник в танце!",
],
"Музыка": [
"пусть каждый день звучит как любимый альбом!",
"желаю дальше двигаться по жизни только с ритмом!",
"желаю эпичных плейлистов под каждый случай!",
"желаю чтобы концерт твоих любимых исполнителей был неподалеку!"
],
"Аниме": [
"пусть жизнь будет как вечереника из Grand Blue!",
"встречай свой день рождения в 24 кадра!",
"качественных дабов от любимых дабберов тебе!",
"желаю тебе продолжения любимых тайтлов!",
"пусть твоя жизнь будет лучше финала Атаки Титанов!",
"желаю встречать новый день под любимый опенинг!",
],
"Игры": [
"чтобы твой вишлист никогда не пустовал!",
"с тебя платина в этом году!",
"тиммейтов в пачку, да бабок тачку!",
"чтоб раскиды на мираже залетали с первого раза!",
"чтобы хук стоял и на байбек всегда было!!",
"желаю пройти тайтлы, которые ты откладывал в долгий ящик!",
],
"Книги": [
"пусть каждая книга открывает новые миры!",
"желаю тебе найти свою книгу года!",
"пусть чтение всегда приносит удовольствие!",
"желаю тебе открыть новых любимых авторов!",
],
"Кино": [
"пусть каждый фильм оставляет яркие впечатления!",
"пусть кино всегда вдохновляет тебя!",
"желаю тебе открыть новых любимых режиссеров!",
"побольше попкорна, поменьше некачественных дабов!",
"пусть твое знание фильмов впечатляет и дальше!"
],
"Путешествия": [
"пусть каждое путешествие будет незабываемым!",
"желаю тебе открыть новые страны и города!",
"пусть дороги ведут к интересным местам!",
"пусть каждый отпуск будет полон приключений!",
],
"Еда": [
"желаю тебе открыть новые вкусы!",
"пусть кулинарные эксперименты всегда удаются!",
"желаю тебе найти свое идеальное блюдо!",
"пусть каждый ресторан удивляет тебя!",
],
"Технологии": [
"пусть код компилируется с первого раза!",
"пусть баги обходят тебя стороной!",
"пусть каждый проект приносит успех!",
"поменьше отвалов, побольше DDR5!",
],
"Искусство": [
"желаю тебе вдохновения для новых творений!",
"пусть каждый арт-проект будет особенным!",
"желаю тебе найти свой уникальный стиль!",
"желаю тебе открыть новые художественные горизонты!",
],
}
def get_birthday_message(theme: str) -> str:
"""Get a random birthday message for the given theme."""
if theme not in BIRTHDAY_MESSAGES:
theme = "Музыка" # Default theme
messages = BIRTHDAY_MESSAGES.get(theme, BIRTHDAY_MESSAGES["Музыка"])
return random.choice(messages)
def format_birthday_greeting(first_name: str, theme: str, user_id: int) -> str:
"""Format a complete birthday greeting with emoji and user link."""
emoji = get_theme_emoji(theme)
greeting_opening = get_birthday_greeting_opening()
message = get_birthday_message(theme)
# Format: party popper + greeting + theme emoji + bold name with link
user_link = f"tg://user?id={user_id}"
return f"🎉 {greeting_opening}, {emoji} <a href=\"{user_link}\"><b>{first_name}</b></a>, {message}"
def format_multiple_birthdays_greetings(users_data: list[tuple[str, str, int]]) -> str:
"""Format greetings for multiple users celebrating birthday today.
Args:
users_data: List of tuples (first_name, theme, user_id)
Returns:
Formatted message with all greetings
"""
count = len(users_data)
# Determine correct form of "человек"
if count == 1:
person_word = "человек"
elif count in [2, 3, 4]:
person_word = "человека"
else:
person_word = "человек"
header = f"🎉 Сегодня день рождения отмечают {count} {person_word}:\n\n"
greetings = []
for first_name, theme, user_id in users_data:
emoji = get_theme_emoji(theme)
greeting_opening = get_birthday_greeting_opening()
message = get_birthday_message(theme)
user_link = f"tg://user?id={user_id}"
greeting = f"{emoji} <a href=\"{user_link}\"><b>{first_name}</b></a> — {greeting_opening.lower()}, {message}"
greetings.append(greeting)
return header + "\n\n".join(greetings)