Доброго времени суток. Я 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 элемент, а дальше голову ломаю)