Как разделить слишком длинное сообщение Telegram-бота на несколько коротких?
Всем привет! Проблема такова: пишу простенького Telegram-бота, который выдаёт интересные упражнения по выбору со встроенной кливиатуры. Но дело в том, что текст сообщений с упражнениями зачастую превышает лимит в 4096 знаков. Искал, гуглил, пытался перестроить найденные варианты под свой код, но ничего не выходит. Буду очень благодарен, если поможете решить проблему.
Вот, собственно, код для выдачи рандомного варианта из списка упражнений по нажатию на клавишу '? Память'.
@bot.message_handler(content_types=['text'])
def exercise(message):
if message.chat.type == 'private':
if message.text == '? Память':
markup = types.InlineKeyboardMarkup(row_width=1)
item1 = types.InlineKeyboardButton("? Другое упражнение", callback_data='memory_another')
markup.add(item1)
bot.send_message(message.chat.id, str(random.choice(memory_tasks)), parse_mode='html', reply_markup=markup)
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
- Определил переменную
MESS_MAX_LENGTH - Отправку сделал через цикл (прелесть в том, что если сообщение и будет меньше
MESS_MAX_LENGTH, то все-равно код цикла выполнится)
Пример:
MESS_MAX_LENGTH = 4096
@bot.message_handler(content_types=['text'])
def exercise(message):
if message.chat.type == 'private':
if message.text == '? Память':
markup = types.InlineKeyboardMarkup(row_width=1)
item1 = types.InlineKeyboardButton("? Другое упражнение", callback_data='memory_another')
markup.add(item1)
text = str(random.choice(memory_tasks))
for x in range(0, len(text), MESS_MAX_LENGTH):
mess = text[x: x + MESS_MAX_LENGTH]
bot.send_message(message.chat.id, mess, parse_mode='html', reply_markup=markup)