- Updated `.dockerignore` to include additional development and temporary files, enhancing build efficiency. - Modified `.gitignore` to remove unnecessary entries and streamline ignored files. - Enhanced `docker-compose.yml` with health checks, resource limits, and improved environment variable handling for better service management. - Refactored `Dockerfile.bot` to utilize a multi-stage build for optimized image size and security. - Improved `Makefile` with new commands for deployment, migration, and backup, along with enhanced help documentation. - Updated `requirements.txt` to include new dependencies for environment variable management. - Refactored metrics handling in the bot to ensure proper initialization and collection.
57 lines
5.7 KiB
Python
57 lines
5.7 KiB
Python
import html
|
||
|
||
# Local imports - metrics
|
||
from .metrics import (
|
||
metrics,
|
||
track_time,
|
||
track_errors
|
||
)
|
||
|
||
|
||
constants = {
|
||
'HELLO_MESSAGE': "Привет, username!👋🏼&Меня зовут Виби, я бот канала 'Влюбленный Бийск'❤🤖"
|
||
"&Я был создан для того, чтобы помочь тебе выложить пост в наш канал и если это необходимо, связаться с админами ✍✉"
|
||
"&Так же я могу выдать тебе набор стикеров, где я буду главным героем🦸♂"
|
||
"&Наш бот голосового общения переехал сюда: https://t.me/podslushano_biysk_bot 🎤&Там можно послушать о чем говорит наш город🎧"
|
||
"&Предлагай свой пост мне и я обязательно его опубликую😉"
|
||
"&Для продолжения взаимодействия воспользуйся меню внизу твоего дисплея⬇"
|
||
"&&Если что-то пошло не так: введи в чат команду /start, это перезапустит сценарий сначала."
|
||
"&Не жми кнопку несколько раз если я не ответил с первого раза. Возможно ведутся тех.работы и я отвечу позже"
|
||
"&&Основная группа в ВК: https://vk.com/love_bsk"
|
||
"&Основной канал в ТГ: https://t.me/love_bsk",
|
||
'SUGGEST_NEWS': "username, окей, жду от тебя текст поста🙌🏼"
|
||
"&Обрати внимание, что я умный и смогу из твоего текста понять команды указанные ниже😉"
|
||
"&Если хочешь чтобы пост был опубликован анонимно, напиши в любом месте своего поста слово 'анон'."
|
||
"&Если хочешь опубликовать пост не анонимно, то напиши 'не анон', 'неанон' или не пиши ничего."
|
||
"&&❗️❗️Я обучен только на команды, указанные мной выше👆"
|
||
"&❗️❗️Проверь, чтобы указание авторства было выполнено так как я попросил, иначе пост будет выложен не корректно"
|
||
"&Пост будет опубликован только в группе ТГ📩",
|
||
"CONNECT_WITH_ADMIN": "username, напиши свое обращение или предложение✍️"
|
||
"&Мы рассмотрим и ответим тебе в ближайшее время☺️❤️",
|
||
"DEL_MESSAGE": "username, напиши свое обращение или предложение✍"
|
||
"&Мы рассмотрим и ответим тебе в ближайшее время☺❤",
|
||
"BYE_MESSAGE": "Если позднее захочешь предложить еще один пост или обратиться к админам с вопросом, то просто пришли в чат команду 👉 /restart"
|
||
"&&И тебе пока!👋🏼❤️",
|
||
"USER_ERROR": "Увы, я не понимаю тебя😐💔 Выбери один из пунктов в нижнем меню, а затем пиши.",
|
||
"QUESTION": "Сообщение успешно отправлено❤️ Ответим, как только сможем😉",
|
||
"SUCCESS_SEND_MESSAGE": "Пост успешно отправлен❤️ Ожидай одобрения😊",
|
||
"MESSAGE_FOR_STANDUP": "Отлично, ты вошел в режим стендапа 📣"
|
||
"&Это свободное пространство, в котором может высказаться каждый житель нашего города, и он будет услышан🙌🏼"
|
||
"&Для того чтобы высказаться, нажми кнопку: 'Высказаться' и запиши голосовое сообщение, оно выпадет анонимно кому-то другому🗣"
|
||
"&Для того чтобы послушать о чем говорит наш город, нажми кнопку: 'Послушать'👂"
|
||
"&Ты можешь анонимно пообщаться, поделиться чем-то важным, обратиться напрямую к жителям🤝 Также можешь выступить перед аудиторией (спеть песню, рассказать стихотворение, шутку)🎤"
|
||
"&❗️Но пожалуйста не оскорбляй никого, и будь вежлив."
|
||
}
|
||
|
||
|
||
@track_time("get_message", "message_service")
|
||
@track_errors("message_service", "get_message")
|
||
def get_message(username: str, type_message: str):
|
||
if username is None:
|
||
# Поведение ожидаемое тестами: TypeError при username=None
|
||
raise TypeError("username is None")
|
||
message = constants[type_message]
|
||
# Экранируем потенциально проблемные символы для HTML
|
||
message = message.replace('username', html.escape(username)).replace('&', '\n')
|
||
return message
|