169 похожих чатов

Имеется ли возможность локализовать меню под заданный язык пользователя? dp.bot.set_my_commands

которое. Или с меню такое не прокатит?

9 ответов

22 просмотра

API Reference: setMyCommands

Ну ты можешь установить команды для одного скоупа для разных language_code. Но если юзер может выбирать, то используй скоуп на конкретного юзера и в момент смены языка дергай setMyCommands и обновляй команды юзеру

Ivan Klimov- Автор вопроса
Groosha
Ну ты можешь установить команды для одного скоупа ...

Работает, благодарю! У меня пара вопросов по скоупам. 1. после установки скоупа он на сервера телеграма попадает и потом оттуда данные берет? если установить разные менюшки для двух скоупов с приоритетами 1 (высокий) и 2 для пользователя, стартануть, зайти в бота, отобразится менюшка 1, потом остановить бота, оставить только установку менюшки для скоупа 2, стартануть бота, у пользователя при этом останется менюшка 1, про которую в коде уже нет никаких упоминаний, выйти из бота, зайти заново, отображается менюшка 1. после явного удаления скоупа 1 для пользователя начинает отображаться менюшка 2 2. можно ли глобально для бота почистить все скоупы?

Ivan Klimov
Работает, благодарю! У меня пара вопросов по скоу...

> 2. можно ли глобально для бота почистить все скоупы? Насколько мне известно, нет. > 1. после установки скоупа он на сервера телеграма попадает и потом оттуда данные берет? Да. Пользователю показываются команды из одного, самого "узкого" скоупа, под который конкретный юзер попадает. Порядок проверки скоупов описан здесь: https://core.telegram.org/bots/api#determining-list-of-commands

Ivan Klimov
Работает, благодарю! У меня пара вопросов по скоу...

Например, если пользотватель попадает под ScopeChat, AllPrivateChats+Language_Code и Default, то ему покажутся команды ТОЛЬКО из ScopeChat, т.к. это наиболее узкий скоуп для конкретного юзера

Ivan Klimov
Работает, благодарю! У меня пара вопросов по скоу...

Если что, у меня на ютубе вышло целых 2 урока на эту тему) Вроде норм вышло) https://t.me/botfatherdev/355

Ivan Klimov- Автор вопроса
Groosha
> 2. можно ли глобально для бота почистить все ско...

ок, а то у меня была ситуация, я в процессе тестирования установил какой-то узкий скоуп с указанием языка, потом скоуп начал менять, изменил менюшку, а в боте она не меняется. и стало не понятно какой скоуп чистить надо. так как в коде он уже более широкий стоял. и вот только когда методом перебора нашелся тот скоуп который надо удалить заработал широкий скоуп и показалась нужная менюшка.

Ivan Klimov
ок, а то у меня была ситуация, я в процессе тестир...

Ага, я тоже с этим сталкивался. Более того, есть подвох! Я пытался найти нужный скоуп, отправляя сырые JSON-запросы через Postman и "неправильный" JSON (добавлял лишнюю запятую в конце, но Postman не считает это ошибкой) приводил к тому, что Bot API не кидался ошибкой, а просто отвечал "ничего не найдено по этому скоупу". Сууууукааааа, я полчаса убил на эту хуйню, пока не понял, что в скоупах есть команды, просто JSON не тот, который хочет телега. Разумеется, ответ Левина был в духе "сам дурак" https://t.me/tdlibchat/32759

Ivan Klimov- Автор вопроса
Groosha
Ага, я тоже с этим сталкивался. Более того, есть п...

да, нормально получилось, и тоже недавно совсем )

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта