Форум программистов, компьютерный форум, киберфорум
Python: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 02.12.2018
Сообщений: 8

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

27.05.2022, 18:38. Показов 2173. Ответов 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 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru