@gorpan

Как выбрать опции поочередно не возвращаясь в начало?

Есть простой бот справочник на telebot. Хочу сделать возможным выбирать разные мышцы из списка не возвращаясь каждый раз в начало с командой /start

проверить в тг ссылка удалена модератором.

import telebot
from telebot import types
import time
import requests
import json
import os


TOKEN = os.getenv('TOKEN_K')

bot = telebot.TeleBot(TOKEN)

mio_list = {'Верхняя трапеция': {'МК': 'Начало: От основания черепа, вдоль позвоночника до С7, у основания шеи сразу над наибольшим выступом. Прикрепление: Наружная треть ключицыи верхняя часть лопатки','Орган': 'Почки','фото' : 'https://disk.yandex.ru/i/uraY7q6UFdsMIg', 'ММТ': 'https://disk.yandex.ru/i/OGIUTCslhbkurA'},
'Средняя, нижняя трапеция' : {'МК': 'Начало: Средняя трапециевидная мышцаначинается вдоль седьмого шейного позвонка (С7) и первого-третьего грудных позвонков (Т1-ТЗ). Нижняя трапециевидная мышца начинается вдоль Т4-Т12. Прикрепление: В верхнем углу лопатки', 'Орган': 'Селезёнка', 'фото': 'https://disk.yandex.ru/i/8PNWgATcVEiDhg', 'ММТ': 'https://disk.yandex.ru/i/bY2ykdBQgHaguA'},
'Надостная' : {'МК': 'Место начала: Верхний внутренний угол лопатки в верхней части спины. Место прикрепления: Верх плечевой кости, где рука соединяется с плечом.', 'Орган': 'Центральный', 'фото': 'https://disk.yandex.ru/i/AZQt2CE35uut_A', 'ММТ': 'https://disk.yandex.ru/i/jmuQfF8ktJBzyA'},
'Дельтовидная' : {'МК': 'Начало: Гребень и край лопатки. Прикрепление: На середине передней части плечевой кости', 'Орган': '"Лёгкие"', 'фото': 'https://disk.yandex.ru/i/bvnORnZtPemPTw', 'ММТ': 'https://disk.yandex.ru/i/EZ7lRZMUYW2J8Q'},
'Передняя дельтовидная' : {'МК': 'Начало: Дистальная треть ключицы, ближе к плечу. Прикрепление: На руке, треть дистанции ниже от плечевого сустава.', 'Орган': '"Желчный пузырь"', 'фото': 'https://disk.yandex.ru/i/ADVkaCw-XO034A', 'ММТ': 'https://disk.yandex.ru/i/Dz0d3dmE6FBHfQ'},
'Клювовидно-плечевая' : {'МК': 'Начало: Передняя поверхность плеча на клювовидном отростке лопатки. Прикрепление: На середине передней части плечевой кости.', 'Орган': '"Лёгкие"', 'фото': 'https://disk.yandex.ru/i/AJiN2Q3z2hkHjA', 'ММТ': 'https://disk.yandex.ru/i/gKjr_8n6oPRfzA'},
'Мышца, поднимающая лопатку' : {'МК': 'Начало: Отростки С1-4, слегка в стороны на задней части шеи. Прикрепление: Верх лопатки, в месте, где она ближе к позвоночнику', 'Орган': '"Желудок"', 'фото': 'https://disk.yandex.ru/i/Bd-kOJcdO8EnbQ', 'ММТ': 'https://disk.yandex.ru/i/EC81qyVlaUqIQQ'},
'Подлопаточная мышца' : {'МК': 'Начало: Нижняя часть лопатки. Прикрепление: Верхняя передняя часть руки (плечевой кости)', 'Орган': '"Сердце"', 'фото': 'https://disk.yandex.ru/i/W6xkqX_DMBn0wg', 'ММТ': 'https://disk.yandex.ru/i/CFwqv-KtQvp6Ig'},
'Малая круглая' : {'МК': 'Начало: верхние две трети бокового края лопатки. Прикрепление: Сверху задней области верхней части руки', 'Орган': '"Тройной обогреватель"', 'фото': 'https://disk.yandex.ru/i/5XswibmexBRyLg', 'ММТ': 'https://disk.yandex.ru/i/F8D3DxpIRdphMw'},
'Большая грудная' : {'МК': 'Начало: Вдоль грудины. Прикрепление: Бороздка между мышцами на передней части плеча (общее с ключичной частью большой грудной мышцы)', 'Орган': 'Печень', 'фото': 'https://disk.yandex.ru/i/jIzB7PVzLCAuPg', 'ММТ': 'https://disk.yandex.ru/i/JsTJiaCKDmi5cA'},
'Малая грудная' : {'МК': 'Начало: От центра до конца ключиц у основания шеи. Прикрепление: Канавка между мышцами спереди верхней части руки, сразу ниже плеча', 'Орган': 'Желудок', 'фото': 'https://disk.yandex.ru/i/zK4agNyjuldnHQ', 'ММТ': 'https://disk.yandex.ru/i/0guAIU5XZXG9_w'},
'Широчайшая мышца спины' : {'МК': 'Начало: Вдоль позвоночника, от Т6 междунижней областью лопаток, вниз до уровня тазовых костей; верх тазовых костей сзади. Прикрепление: Внутри передней части руки, как раз под плечевым суставом', 'Орган': '"Селезёнка"', 'фото': 'https://disk.yandex.ru/i/eYWLoYoC5gBqIw', 'ММТ': 'https://disk.yandex.ru/i/k8kZN2wbgaJ92g'},
'Зубчатая' : {'МК': 'Начало: От центра до конца ключиц у основания шеи. Прикрепление: Канавка между мышцами спереди верхней части руки, сразу ниже плеча', 'Орган': 'Лёгкие', 'фото': 'https://disk.yandex.ru/i/SGGfU1gi9e-_wQ', 'ММТ': 'https://disk.yandex.ru/i/AVWHuiDQrIo-dw'},
'Ромбовидная' : {'МК': 'Начало: Вдоль грудины. Прикрепление: Бороздка между мышцами на передней части плеча (общее с ключичной частью большой грудной мышцы)', 'Орган': 'Печень', 'фото': 'https://disk.yandex.ru/i/wMFVw7xkFP5sNA', 'ММТ': 'https://disk.yandex.ru/i/Zf5832t8hi0-6A'},
'Большая ягодичная' : {'МК': 'Начало: задняя часть тазовых костей (подвздошной кости) и вдоль крестца. Прикрепление: в верхней части, на задней поверхности бедренной кости, вниз около 8см', 'Орган': 'Кровообращение и половая система', 'фото': 'https://disk.yandex.ru/i/6vq-6KxhnekSQA', 'ММТ': 'https://disk.yandex.ru/i/4djzXvgDIVf1LQ'},
'Средняя ягодичная' : {'МК': 'Начало: Внешняя сторона тазовых костей. Прикрепление: Верхняя часть бедренной кости.)', 'Орган': 'Кровообращение и половая система', 'фото': 'https://disk.yandex.ru/i/10aQvZtGOhNdqg', 'ММТ': 'https://disk.yandex.ru/i/SJk9ITMDQiX31A'},
'Приводящие' : {'МК': 'Начало: У лобковой кости. Прикрепление: Вдоль бедренной кости, на нижней части бедра и до колена', 'Орган': 'Кровообращение и половая система', 'фото': 'https://disk.yandex.ru/i/cXEAFf7ZLRHLOQ', 'ММТ': 'https://disk.yandex.ru/i/zbUlcx9yiydW3g'},
'Напрягатель широкой фасции бедра' : {'МК': 'Начало: Наружная часть тазовых костей, спереди. Прикрепление: Сразу под коленом с наружной стороны ноги.', 'Орган': 'Толстый кишечник', 'фото': 'https://disk.yandex.ru/i/YPEHwh_liFSqTw', 'ММТ': 'https://disk.yandex.ru/i/UVWPlGKvUMKikA'},
'Прямая мышца бедра' : {'МК': 'Начало: Верхняя область бедренной и тазовой кости. Прикрепление: На голени чуть ниже коленной чашечки', 'Орган': 'Тонкий кишечник', 'фото': 'https://disk.yandex.ru/i/_rLb7exyzG_lvA', 'ММТ': 'https://disk.yandex.ru/i/BSy_Hwer16sVtQ'},
'Подвздошная' : {'МК': 'Начало: Вдоль верхней внутренней поверхности тазовой (подвздошной) кости, переходит на крестец и стабилизирующие связки. Прикрепление: с внутренней стороны верхней части бедренной кости, над уровнем лобковой кости', 'Орган': 'Почки', 'фото': 'https://disk.yandex.ru/i/3IBFYbUW-9fjAA', 'ММТ': 'https://disk.yandex.ru/i/_vQ3zNW2fqPhrQ'},
'Поясничная' : {'МК': 'Начало: Вдоль ПЕРЕДНЕЙ части позвоночника от Т12, на уровне последнего ребра, и по всем поясничным позвонкам. Прикрепление: Внутри верхней части бедренной кости, на уровне лобковой кости', 'Орган': 'Почки', 'фото': 'https://disk.yandex.ru/i/gwQlg8vt_O9-qQ', 'ММТ': 'https://disk.yandex.ru/i/_8AZgQhzl40wBQ'},
'Грушевидная' : {'МК': 'Начало: Внутренняя поверхность крестца (их невозможно ощутить на поверхности). Прикрепление: Внутренняя область бедренной кости', 'Орган': 'Кровообращение и половая система', 'фото': 'https://disk.yandex.ru/i/Z6IfCylMzmusSg', 'ММТ': 'https://disk.yandex.ru/i/rfKGqGWWIu73Og'},
'Квадратная' : {'МК': 'Начало: Вдоль верхнего заднего гребня подвздошной кости и вдоль подвздошнопоясничной связки. Прикрепление: Нижний край двенадцатого ребра и поперечных отростков первых четырех поясничных позвонков', 'Орган': 'Толстый кишечник', 'фото': 'https://disk.yandex.ru/i/IM7cn5ySjYR2dA', 'ММТ': 'https://disk.yandex.ru/i/IF09lgkmHvFT-Q'}}
@bot.message_handler(content_types=['text', 'photo'], commands=['start','mio_desc'])

def startup(message):
	markup = types.ReplyKeyboardMarkup(row_width = 1, resize_keyboard = False, one_time_keyboard=False)
	markup.add('Верх. Шейный-грудной', 'Низ. Живот-поясница-таз-стопы')
	bot.send_message(message.from_user.id, 'Какой регион?', reply_markup=markup)
	bot.register_next_step_handler(message, mio)

def mio(message):
	if message.text == 'Верх. Шейный-грудной':
		markup = types.ReplyKeyboardMarkup(row_width = 1, resize_keyboard = True, one_time_keyboard=True)
		markup.add('Верхняя трапеция', 'Средняя, нижняя трапеция','Надостная', 'Дельтовидная', 'Передняя дельтовидная', 'Клювовидно-плечевая', 'Мышца, поднимающая лопатку', 'Подлопаточная мышца', 'Малая круглая', 'Большая грудная', 'Малая грудная', 'Широчайшая мышца спины', 'Зубчатая', 'Ромбовидная')
		bot.send_message(message.from_user.id, 'Какую мышцу?', reply_markup=markup)
		bot.register_next_step_handler(message, mio_desc)
	elif message.text == 'Низ. Живот-поясница-таз-стопы':
		markup = types.ReplyKeyboardMarkup(row_width = 1, resize_keyboard = True, one_time_keyboard=True) 
		markup.add('Большая ягодичная', 'Средняя ягодичная', 'Приводящие', 'Напрягатель широкой фасции бедра', 'Прямая мышца бедра', 'Подвздошная', 'Поясничная', 'Грушевидная', 'Квадратная')
		bot.send_message(message.from_user.id, 'Какую мышцу?', reply_markup=markup)
		bot.register_next_step_handler(message, mio_desc)
	else:
		pass



def mio_desc(message):
	mio = message.text
	try:
		response = '<b>Места прикрепления</b>' + '\n' + str(mio_list[str(mio)]['МК']) + '\n' + '<b>Меридиан</b>' + '\n' + str(mio_list[str(mio)]['Орган'])
		bot.send_photo(message.from_user.id, mio_list[str(mio)]['фото'])
		bot.send_photo(message.from_user.id, mio_list[str(mio)]['ММТ'])
		bot.send_message(message.from_user.id, parse_mode="HTML", text=response)
	except Exception:
		bot.send_message(message.from_user.id, 'Такой мышцы нет в списке')


	bot.send_message(message.from_user.id, 'В начало. Жми /start')

while True:
	try:
		bot.polling(none_stop=True, interval=0)
	except:
		logging.error('error: {}'.format(sys.exc_info()[0]))
		time.sleep(5)
  • Вопрос задан
  • 38 просмотров
Решения вопроса 1
@gorpan Автор вопроса
добрался до решения с наводки chatgpt

добавил register_next_step_handler в mio_desc и вынес клавиатуру из функции

def mio_desc(message):
mio = message.text
if mio in mio_list_up:
response = 'Места прикрепления' + '\n' + str(mio_list_up[str(mio)]['МК']) + '\n' + 'Меридиан' + '\n' + str(mio_list_up[str(mio)]['Орган'])
bot.send_photo(message.from_user.id, mio_list_up[str(mio)]['фото'])
bot.send_photo(message.from_user.id, mio_list_up[str(mio)]['ММТ'])
bot.send_message(message.from_user.id, parse_mode="HTML", text=response, reply_markup=markup_up)
bot.register_next_step_handler(message, mio_desc)
elif mio in mio_list_low:
response = 'Места прикрепления' + '\n' + str(mio_list_low[str(mio)]['МК']) + '\n' + 'Меридиан' + '\n' + str(mio_list_low[str(mio)]['Орган'])
bot.send_photo(message.from_user.id, mio_list_low[str(mio)]['фото'])
bot.send_photo(message.from_user.id, mio_list_low[str(mio)]['ММТ'])
bot.send_message(message.from_user.id, parse_mode="HTML", text=response, reply_markup=markup_low)
bot.register_next_step_handler(message, mio_desc)
else:
bot.send_message(message.from_user.id, 'Такой мышцы нет в списке')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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