0 / 0 / 0
Регистрация: 02.12.2018
Сообщений: 8

pyTelegramBotAPI Перелистывание страниц

27.05.2022, 18:38. Показов 2185. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть 10 картинок page1, page2, .., page10
необходимо реализовать инлайн кнопки "назад" и "вперед" которые будут соответственно перелистывать страницы.


P.S. остальные решения на форуме не помогли
P.P.S. все это находится в elif, если это имеет значение
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.05.2022, 18:38
Ответы с готовыми решениями:

Перелистывание страниц
Библиотека — aiogram В общем, у меня есть база данных и есть код: База данных(на столбец "ostatki" не обращайте внимание, это...

Перелистывание страниц
Как сделать такое: вот как на форуме здесь скажем:Страница 1 - примерно 50 тем,страница 2 - следующие 50 тем и т.д...Как можно...

Перелистывание страниц
https://www.cyberforum.ru/attachments/346320d1387798825 Задача такая. Есть два блока. div1 - означает номер страницы div2 -...

6
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
27.05.2022, 18:53
Цитата Сообщение от mr_portoble Посмотреть сообщение
все это находится в elif, если это имеет значение
покажите?
0
0 / 0 / 0
Регистрация: 02.12.2018
Сообщений: 8
27.05.2022, 19:02  [ТС]
Jabbson,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@bot.message_handler(content_types=['text'])
def bot_message(message):
  if message.chat.type == 'private':
..
 elif message.text == 'Трунь':
      markup = types.ReplyKeyboardMarkup(resize_keyboard = True)
      page1 = open('/content/drive/MyDrive/PsyShine/ТРУНЬ part 1/1.png', 'rb')
      page2 = open('/content/drive/MyDrive/PsyShine/ТРУНЬ part 1/2.png', 'rb')
      page3 = open('/content/drive/MyDrive/PsyShine/ТРУНЬ part 1/3.png', 'rb')
      page4 = open('/content/drive/MyDrive/PsyShine/ТРУНЬ part 1/4.png', 'rb')
      page5 = open('/content/drive/MyDrive/PsyShine/ТРУНЬ part 1/5.png', 'rb')
      page6 = open('/content/drive/MyDrive/PsyShine/ТРУНЬ part 1/6.png', 'rb')
      page7 = open('/content/drive/MyDrive/PsyShine/ТРУНЬ part 1/7.png', 'rb')
      page8 = open('/content/drive/MyDrive/PsyShine/ТРУНЬ part 1/8.png', 'rb')
      page9 = open('/content/drive/MyDrive/PsyShine/ТРУНЬ part 1/9.png', 'rb')
      page10 = open('/content/drive7/MyDrive/PsyShine/ТРУНЬ part 1/10.png', 'rb')
      buttontext = f'______' 
    
      inlinemarkup = types.InlineKeyboardMarkup() 
      inlinebutton1 = types.InlineKeyboardButton('<<', callback_data='last page')
      inlinebutton2 = types.InlineKeyboardButton('>>', callback_data='next page')
      inlinemarkup.row(inlinebutton1, inlinebutton2)
      
      bot.edit_message_media(message.chat.id, next, buttontext, reply_markup = inlinemarkup)
      bot.send_message(message.chat.id, 'Трунь', parse_mode = 'html', reply_markup = markup)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
27.05.2022, 20:06
а часть, которая реагирует на callback?
Python
1
2
      inlinebutton1 = types.InlineKeyboardButton('<<', callback_data='last page')
      inlinebutton2 = types.InlineKeyboardButton('>>', callback_data='next page')
какая функция обрабатывает эти колбеки?
0
3 / 3 / 0
Регистрация: 22.10.2021
Сообщений: 217
27.05.2022, 22:59
Разберись в функции EditMessage это то, что ты ищешь!
0
0 / 0 / 0
Регистрация: 02.12.2018
Сообщений: 8
28.05.2022, 01:03  [ТС]
Jabbson, никакая, не знаю как это реализовать, так чтобы отрабатывалось цикле if, сработает ли если его вынести отдельной функцией?

UnrealCoder, а, да? я как раз поэтому здесь)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
28.05.2022, 04:02
Ниже небольшой пример, в реальной боевой задаче хранить индексы в кнопках, наверное, не стоит, как и глобальную клавиатуру, но для примера подойдет, дальше пилите по необходимости.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import telebot
from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton, InputMediaPhoto
 
bot = telebot.TeleBot('...')
 
photos = [open(f'photos/img{x}.jpeg', 'rb') for x in range(1,6)]
 
markup = InlineKeyboardMarkup()
markup.row_width = 2
markup.add(InlineKeyboardButton("Previous", callback_data="prev:-1"),
            InlineKeyboardButton("Next", callback_data="next:1"))
 
@bot.callback_query_handler(func=lambda x: x.data[:4] in ['prev', 'next'])
def callback_handler(callback):
    show_idx = int(callback.data.split(':')[1])
    prev_idx = int(markup.keyboard[0][0].callback_data.split(':')[1])
    next_idx = int(markup.keyboard[0][1].callback_data.split(':')[1])
 
    if callback.data.startswith('prev'):
        if prev_idx == -1:
            bot.answer_callback_query(callback.id, "Это была первая картинка!", show_alert=True)
            return
        markup.keyboard[0][0].callback_data = f"prev:{prev_idx-1}"
        markup.keyboard[0][1].callback_data = f"next:{next_idx-1}"
    elif callback.data.startswith('next'):
        if next_idx == len(photos):
            bot.answer_callback_query(callback.id, "Это была последняя картинка!", show_alert=True)
            return
        markup.keyboard[0][0].callback_data = f"prev:{prev_idx+1}"
        markup.keyboard[0][1].callback_data = f"next:{next_idx+1}"
 
    new_img = photos[show_idx]
    new_img.seek(0)
    bot.edit_message_media(InputMediaPhoto(new_img), callback.message.chat.id, callback.message.id, reply_markup=markup)
 
@bot.message_handler(commands=['start'])
def message_handler(message):
    bot.send_photo(message.chat.id, photos[0], reply_markup=markup)
 
if __name__ == '__main__':
    bot.infinity_polling()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.05.2022, 04:02
Помогаю со студенческими работами здесь

Перелистывание страниц
На главной страницы большая таблица. Как сделать перелистывание на след и пред страницы? чтобы это выглядело примерно так &lt;1 2 3...7 8...

Перелистывание страниц
Здравствуйте, нужно чтобы после вывода на экран, результат выводился по странично и по нажатию стрелок (&lt;,&gt;) можно было листать...

Перелистывание страниц
ребят подскажите пожалуйста как такое можно реализовать или живой пример если можно.

Перелистывание страниц
Всем привет! Подскажите пожалуйста как сделать на вордпресс чтоб выводилось по несколько записей на странице (к примеру 5 шт), а...

Перелистывание страниц
Всем привет! Реализовываю парсинг страницы. Суть, захожу на 1 страницу записываю ссылки в эксель всех компаний, потом захожу на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru