Проблема с отображением меню бота в супергруппах на iOS
Добрый день. На протяжении нескольких лет мы стабильно использовали собственного Telegram-бота в супергруппах без каких-либо сбоев.
Сейчас возникла следующая проблема, характерная исключительно для клиента Telegram на iOS (последняя версия):
- В обычных группах меню бота отображается корректно.
- В супергруппах меню отсутствует.
На всех других платформах (ПК, веб-версия, Android) меню бота функционирует нормально как в обычных группах, так и в супергруппах.
Вопрос: С чем может быть связана эта проблема и как её можно решить?
Меню должно появляться в интерфейсе справа от поля ввода текста, в области переключения на смайлики и клавиатуру.
Используемый код
Исходная реализация функции start:
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
"""Отправляет сообщение при команде /start и показывает кнопку."""
user_id = update.effective_chat.id
# Определяем группу пользователя
user_group = None
for group, admins in GROUP_ADMINS.items():
if user_id in admins:
user_group = group
break
if user_group is None:
await update.effective_message.reply_text("Вы не авторизованы для использования этого бота.")
return
# Получаем уровень доступа для группы
access_level = GROUP_ACCESS_LEVELS.get(user_group, 0)
# Формируем набор кнопок на основе уровня доступа
button_set = [button for button, level in BUTTON_ACCESS_LEVELS.items() if level <= access_level]
keyboard = [[KeyboardButton(button_text)] for button_text in button_set]
reply_markup = ReplyKeyboardMarkup(keyboard, resize_keyboard=True)
# Задержка в функции start
await asyncio.sleep(2)
# Отправка сообщения с меню
if update.message:
await update.effective_message.reply_text('Привет! Выберите действие или используйте *Меню (⌘)*!', parse_mode='Markdown', reply_markup=reply_markup)
else:
await update.effective_message.edit_message_text('Привет! Выберите действие или используйте *Меню (⌘)*!', parse_mode='Markdown', reply_markup=reply_markup)
def main() -> None:
"""Запуск бота."""После обнаружения проблемы код был немного модифицирован (добавлены параметры one_time_keyboard и is_persistent), но это не привело к изменению ситуации:
keyboard = [[KeyboardButton(button_text)] for button_text in button_set]
reply_markup = ReplyKeyboardMarkup(
keyboard,
resize_keyboard=True,
one_time_keyboard=False,
is_persistent=True
)