1
0
mirror of https://github.com/civsocit/olgram.git synced 2025-05-28 21:23:26 +00:00

Compare commits

...

3 Commits

Author SHA1 Message Date
er8dd
103618cbd2 locale 2024-03-22 18:22:21 +04:00
er8dd
7e4f671911 fix 2024-03-22 18:15:27 +04:00
er8dd
eca5c53233 locale 2024-03-22 18:13:20 +04:00

View File

@ -26,9 +26,12 @@ _redis: ty.Optional[Redis] = None
def _get_translator(message: types.Message) -> ty.Callable:
if not message.from_user.locale:
try:
if not message.from_user.locale:
return _
return translators.get(message.from_user.locale.language, _)
except Exception:
return _
return translators.get(message.from_user.locale.language, _)
async def init_redis():
@ -89,8 +92,11 @@ async def send_user_message(message: types.Message, super_chat_id: int, bot, tag
if message.from_user.username:
user_info += " | @" + message.from_user.username
user_info += f" | #ID{message.from_user.id}"
if message.from_user.locale:
user_info += f" | lang: {message.from_user.locale}"
try:
if message.from_user.locale:
user_info += f" | lang: {message.from_user.locale}"
except Exception:
pass
if message.forward_sender_name:
user_info += f" | fwd: {message.forward_sender_name}"
tag = await _redis.get(_tag_uid(bot.pk, message.from_user.id), encoding="utf-8")
@ -219,7 +225,10 @@ async def handle_user_message(message: types.Message, super_chat_id: int, bot):
send_auto = not await _redis.get(_last_message_uid(bot.pk, message.chat.id))
await _redis.setex(_last_message_uid(bot.pk, message.chat.id), 60 * 60 * 3, 1)
if send_auto or bot.enable_always_second_message:
text_obj = await BotSecondMessage.get_or_none(bot=bot, locale=str(message.from_user.locale))
try:
text_obj = await BotSecondMessage.get_or_none(bot=bot, locale=str(message.from_user.locale))
except Exception:
text_obj = None
return SendMessage(chat_id=message.chat.id, text=text_obj.text if text_obj else bot.second_text,
parse_mode="HTML")
@ -280,7 +289,10 @@ async def handle_operator_message(message: types.Message, super_chat_id: int, bo
# в супер-чате кто-то пишет сообщение сам себе, только для личных сообщений
if bot.enable_mailing:
asyncio.create_task(MailingUser.get_or_create(telegram_id=message.chat.id, bot=bot))
await message.forward(super_chat_id)
try:
await message.forward(super_chat_id)
except exceptions.MessageCantBeForwarded:
await message.copy_to(super_chat_id)
# И отправить пользователю специальный текст, если он указан
if bot.second_text:
return SendMessage(chat_id=message.chat.id, text=bot.second_text, parse_mode="HTML")
@ -292,7 +304,10 @@ async def message_handler(message: types.Message, *args, **kwargs):
if message.text and message.text == "/start":
# На команду start нужно ответить, не пересылая сообщение никуда
text_obj = await BotStartMessage.get_or_none(bot=bot, locale=str(message.from_user.locale))
try:
text_obj = await BotStartMessage.get_or_none(bot=bot, locale=str(message.from_user.locale))
except Exception:
text_obj = None
text = text_obj.text if text_obj else bot.start_text
if bot.enable_olgram_text:
text += _(ServerSettings.append_text())