@Zpengineer

Как при нажатии кнопки вывести следующий элемент списка в Python Telegram Bot?

Доброго времени суток. Я Python начал изучать недавно, заинтересовался разработкой ботов для Телеграмм. Пишу для своих нужд бота. Суть заключается в том, что бот получает Json объект с нужного сайта, необходимые элементы заношу в массив и по нажатию кнопки вывожу данные. Как мне сделать, чтобы при повторном нажатии на кнопку выводился следующий элемент?
with urlopen("ссылка") as response:
        source = response.read()

data = json.loads(source)


i = 0
profile = []
while i <= 50:
    name = data[i]['display_name']
    age = data[i]['display_age']
    foto = data[i]['profile_images']['thumbnail_image_big']
    height = data[i]['height']
    weight = data[i]['weight']
    tags = data[i]['tags'][0]
    silka = data[i]['chat_url']
    info = name + age+ height + weight + tags
    i = i + 1
    profile.append(info)

@bot.message_handler(commands=['start'])
def startpg(message):
    startmenu = types.ReplyKeyboardMarkup(True, True)
    startmenu.row('Начать')
    bot.send_message(message.chat.id, 'Добро пожаловать!', reply_markup=startmenu)

@bot.message_handler(content_types=['text'])
def osnov(message):
    global keks
    keks = 'keks'

    if message.text == 'Начать':
        send = bot.send_message(message.chat.id, 'Введите своё имя:')
        bot.register_next_step_handler(send, next1)
    elif message.text == 'Текст 1':
        if keks == 'keks':
            knopki = types.InlineKeyboardMarkup()
            but_1 = types.InlineKeyboardButton(text='Выбрать еще', callback_data='next')
            but_2 = types.InlineKeyboardButton(text='Перейти', url=silka)
            knopki.add(but_1, but_2)
            bot.send_message(message.chat.id, info, parse_mode="HTML", reply_markup=knopki)


    elif message.text == 'Текст 2':
        if keks == 'keks':
            knopki = types.InlineKeyboardMarkup()
            but_1 = types.InlineKeyboardButton(text='Выбрать еще', callback_data='next')
            but_2 = types.InlineKeyboardButton(text='Перейти', url=silka)
            knopki.add(but_1, but_2)
            bot.send_message(message.chat.id, info, parse_mode="HTML", reply_markup=knopki)

def next1(message):
    send = bot.send_message(message.chat.id, 'Очень приятно {name}, введите ваш город'.format(name=message.text))
    bot.register_next_step_handler(send, next2)

def next2(message):
    global keks
    keks = 'keks'
    forwhat = types.ReplyKeyboardMarkup(True, False)
    forwhat.row('Текст 1')
    forwhat.row('Текст 2')
    bot.send_message(message.chat.id, 'текст'.format(sity=message.text), reply_markup=forwhat)

@bot.callback_query_handler(func=lambda c: True)
def inlin(c):

        if c.data == 'next':
            global keks
            keks = 'exit'
            knopki = types.InlineKeyboardMarkup()
            but_1 = types.InlineKeyboardButton(text='Выбрать еще', callback_data='next')
            but_2 = types.InlineKeyboardButton(text='Перейти', url=silka)
            knopki.add(but_1, but_2)
            bot.send_message(c.message.chat.id, profile, parse_mode="HTML", reply_markup=knopki)

bot.polling()


Необходимо при нажатии кнопки Выбрать еще выводить следующий profile, а так же должно увеличиваться url silka. Пока что удалось вывести 1 и 2 элемент, а дальше голову ломаю)
  • Вопрос задан
  • 1194 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы