refactor
This commit is contained in:
187
bot/messages.py
Normal file
187
bot/messages.py
Normal file
@ -0,0 +1,187 @@
|
||||
"""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)
|
||||
Reference in New Issue
Block a user