@SimpleMakc

Как редактировать кнопки в айограм?

я отправляю 30 кнопок и хочу чтобы по нажатию на одну из кнопок она меняла текст на *текст кнопки и галочка*
и так с каждой кнопкой
search = InlineKeyboardMarkup(row_width=2)<img src="https://habrastorage.org/webt/60/5f/18/605f1809488ca738746174.jpeg" alt="image"/>

banime = InlineKeyboardButton('аниме', callback_data=cearch_callback.new(cat_name='anime'))
bcartoon = InlineKeyboardButton('мультфильм', callback_data=cearch_callback.new(cat_name='cartoon'))
bfamily = InlineKeyboardButton('семейное', callback_data=cearch_callback.new(cat_name='family'))
berotica = InlineKeyboardButton('эротика', callback_data=cearch_callback.new(cat_name='erotica'))
bfiction = InlineKeyboardButton('фантастика', callback_data=cearch_callback.new(cat_name='fiction'))
bhorror = InlineKeyboardButton('ужасы', callback_data=cearch_callback.new(cat_name='horror'))
bfantasy = InlineKeyboardButton('фэнтэзи', callback_data=cearch_callback.new(cat_name='fantasy'))
bthriller = InlineKeyboardButton('триллер', callback_data=cearch_callback.new(cat_name='thriller'))
btalk_show = InlineKeyboardButton('ток - шоу', callback_data=cearch_callback.new(cat_name='talk_show'))
bsport = InlineKeyboardButton('спорт', callback_data=cearch_callback.new(cat_name='sport'))
badventure = InlineKeyboardButton('приключения', callback_data=cearch_callback.new(cat_name='adventure'))
breality_show = InlineKeyboardButton('реалити - шоу', callback_data=cearch_callback.new(cat_name='reality_show'))
bnoir = InlineKeyboardButton('ноир', callback_data=cearch_callback.new(cat_name='noir'))
bscience = InlineKeyboardButton('наука', callback_data=cearch_callback.new(cat_name='science'))
bmusical = InlineKeyboardButton('мьюзикал', callback_data=cearch_callback.new(cat_name='musical'))
bmystic = InlineKeyboardButton('мистика', callback_data=cearch_callback.new(cat_name='mystic'))
bmelodrama = InlineKeyboardButton('мелодрамма', callback_data=cearch_callback.new(cat_name='melodrama'))
bshort = InlineKeyboardButton('короткометражный', callback_data=cearch_callback.new(cat_name='short'))
bcrime = InlineKeyboardButton('криминал', callback_data=cearch_callback.new(cat_name='crime'))
bconcert = InlineKeyboardButton('концерт', callback_data=cearch_callback.new(cat_name='concert'))
bcomedy = InlineKeyboardButton('комедия', callback_data=cearch_callback.new(cat_name='comedy'))
baction_film = InlineKeyboardButton('боевик', callback_data=cearch_callback.new(cat_name='action_film'))
bcomics = InlineKeyboardButton('комиксы', callback_data=cearch_callback.new(cat_name='comics'))
bhistorical_film = InlineKeyboardButton('исторический', callback_data=cearch_callback.new(cat_name='historical_film'))
bdrama = InlineKeyboardButton('драмма', callback_data=cearch_callback.new(cat_name='drama'))
bdocumentary = InlineKeyboardButton('документальные', callback_data=cearch_callback.new(cat_name='documentary'))
bwestern = InlineKeyboardButton('вестерн', callback_data=cearch_callback.new(cat_name='western'))
bmilitary = InlineKeyboardButton('военные', callback_data=cearch_callback.new(cat_name='military'))
bdetective = InlineKeyboardButton('детективные', callback_data=cearch_callback.new(cat_name='detective'))
bchildrens = InlineKeyboardButton('детские', callback_data=cearch_callback.new(cat_name='childrens'))
bright = InlineKeyboardButton(text='Поиск', callback_data='right')


search.insert(banime)
search.insert(bcartoon)
search.insert(bfamily)
search.insert(berotica)
search.insert(bfiction)
search.insert(bhorror)
search.insert(bfantasy)
search.insert(bthriller)
search.insert(btalk_show)
search.insert(bsport)
search.insert(badventure)
search.insert(breality_show)
search.insert(bnoir)
search.insert(bscience)
search.insert(bmusical)
search.insert(bmystic)
search.insert(bmelodrama)
search.insert(bshort)
search.insert(bcrime)
search.insert(bconcert)
search.insert(bcomedy)
search.insert(baction_film)
search.insert(bcomics)
search.insert(bhistorical_film)
search.insert(bdrama)
search.insert(bdocumentary)
search.insert(bwestern)
search.insert(bmilitary)
search.insert(bdetective)
search.insert(bchildrens)
search.insert(bright)
  • Вопрос задан
  • 109 просмотров
Пригласить эксперта
Ответы на вопрос 1
@twistfire92
Python backend developer
При нажатии на кнопку нужно просто редактировать сообщение, генерируя новую клавиатуру с нуля, но с галочкой на нужной кнопке. Вроде как можно даже только клавиатуру редактировать, через EditMessageReplyMarkup. Нужно только хранить где-то текущее состояние всех кнопок, чтобы сохранялись галочки на уже помеченных кнопках.

И да, присоединюсь к комментаторам, переделайте вывод через цикл.

P.S. Telegram bot api позволяет в reply_markup засунуть строку до 64 байт, так что вы повнимательнее, с таким количеством кнопок, лучше как-то урезать длину строки в callback_data каждой кнопки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы