- Added voice message handling capabilities, including saving and deleting audio messages via callback queries. - Refactored audio record management in the database to remove unnecessary fields and streamline operations. - Introduced new keyboard options for voice interactions in the bot. - Updated `.gitignore` to include voice user files for better project organization. - Removed obsolete voice bot handler files to simplify the codebase.
73 lines
8.6 KiB
Python
73 lines
8.6 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": "Пост успешно отправлен❤️ Ожидай одобрения😊",
|
||
# Voice handler messages
|
||
"MESSAGE_FOR_STANDUP": "Отлично, ты вошел в режим стендапа 📣"
|
||
"&Это свободное пространство, в котором может высказаться каждый житель нашего города, и он будет услышан🙌🏼"
|
||
"&Для того чтобы высказаться, нажми кнопку: 'Высказаться' и запиши голосовое сообщение, оно выпадет анонимно кому-то другому🗣"
|
||
"&Для того чтобы послушать о чем говорит наш город, нажми кнопку: 'Послушать'👂"
|
||
"&Ты можешь анонимно пообщаться, поделиться чем-то важным, обратиться напрямую к жителям🤝 Также можешь выступить перед аудиторией (спеть песню, рассказать стихотворение, шутку)🎤"
|
||
"&❗️Но пожалуйста не оскорбляй никого, и будь вежлив.",
|
||
'WELCOME_MESSAGE': "<b>Привет.</b>",
|
||
'DESCRIPTION_MESSAGE': "<i>Здесь можно послушать голосовые сообщения от совершенно незнакомых людей из Бийска</i>",
|
||
'ANALOGY_MESSAGE': "Это почти как написать письмо, положить его в бутылку и швырнуть в океан. Никогда не узнаешь, послушал его кто-то или нет и ответить тоже не получится..",
|
||
'RULES_MESSAGE': "Записывать можно всё что угодно — никаких правил нет. Главное — твой голос, <i>хотя бы на 5-10 секунд</i>",
|
||
'ANONYMITY_MESSAGE': "Здесь всё анонимно: тот, кому я отправлю твое сообщение, не узнает ни твое имя, ни твой аккаунт (так что можно не стесняться говорить то, что не стал(а) бы выкладывать в собственные соцсети)",
|
||
'SUGGESTION_MESSAGE': "Если не знаешь, что сказать, можешь просто прочитать любое текстовое сообщение из недавно полученных или отправленных (или спеть, рассказать стихотворенье)",
|
||
'EMOJI_INFO_MESSAGE': "Любые войсы будут помечены эмоджи. <b>Твой эмоджи - </b>{emoji}Таким эмоджи будут помечены твои сообщения для других Но другие люди не узнают кто за каким эмоджи скрывается:)",
|
||
'HELP_INFO_MESSAGE': "Так же можешь ознакомиться с инструкцией к боту по команде /help",
|
||
'FINAL_MESSAGE': "<b>Ну всё, достаточно инструкций. записывайся! Микрофон твой - </b> 🎤",
|
||
'HELP_MESSAGE': "Скорее всего ответы на твои вопросы есть здесь, ознакомься: https://telegra.ph/Instrukciya-k-botu-Golosa-Bijsk-10-11-2\nЕсли это не поможет, пиши в личку: @Kerrad1",
|
||
'VOICE_SAVED_MESSAGE': "Окей, сохранил!👌",
|
||
'LISTENINGS_CLEARED_MESSAGE': "Прослушивания очищены. Можешь начать слушать заново🤗",
|
||
'NO_AUDIO_MESSAGE': "Прости, ты прослушал все аудио😔. Возвращайся позже, возможно наша база пополнится",
|
||
'UNKNOWN_CONTENT_MESSAGE': "Я тебя не понимаю🤷♀️ запиши голосовое",
|
||
'RECORD_VOICE_MESSAGE': "Хорошо, теперь пришли мне свое голосовое сообщение"
|
||
}
|
||
|
||
|
||
@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
|