Поиграйтесь с этим кодом
import telebot
bot = telebot.TeleBot(token='XXXXXXXXXXXXXXXXXXXX')
@bot.message_handler(content_types=["text"])
def get_text_messages(message):
if message.text == "Привет":
bot.send_message(message.from_user.id, "Начнем")
start(message)
elif message.text == "/help":
bot.send_message(message.from_user.id, "Напиши Привет")
else:
bot.send_message(message.from_user.id, "Я тебя не понимаю. Напиши /help.")
# Точка старта.
def start(message):
# Инициализируем наш словарь, который будем прокидывать в каждую функцию
data = {}
mes = bot.send_message(message.from_user.id, "Введите количество бриллиантов:")
bot.register_next_step_handler(mes, vvod_brill, data)
# Получаем бриллианты
def vvod_brill(message, data):
if not message.text.isdigit():
bot.send_message(message.from_user.id, "Нужно ввести число")
bot.register_next_step_handler(message, vvod_brill, data)
else:
brill_count = int(message.text)
data['brill_count'] = brill_count
bot.send_message(message.from_user.id, f"Получено бриллиантов: {brill_count}")
bot.send_message(message.from_user.id, "Введите количество рубинов:")
bot.register_next_step_handler(message, vvod_rub, data)
# Получаем рубины
def vvod_rub(message, data):
if not message.text.isdigit():
bot.send_message(message.from_user.id, "Нужно ввести число")
bot.register_next_step_handler(message, vvod_rub, data)
else:
rub_count = int(message.text)
data['rub_count'] = rub_count
bot.send_message(message.from_user.id, f"Получено рубинов: {rub_count}")
bot.send_message(message.from_user.id, "Введите количество жителей:")
bot.register_next_step_handler(message, vvod_jit, data)
# Получаем количество жителей
def vvod_jit(message, data):
if not message.text.isdigit():
bot.send_message(message.from_user.id, "Нужно ввести число")
bot.register_next_step_handler(message, vvod_jit, data)
else:
jit_count = int(message.text)
data['jit_count'] = jit_count
bot.send_message(message.from_user.id, f"Всего жителей: {jit_count}")
counter = 1
bot.send_message(message.from_user.id, f"Сколько заработал кубков житель {counter}?")
bot.register_next_step_handler(message, vvod_cubok, data, counter)
# Получаем количество кубков для каждого
def vvod_cubok(message, data, counter):
if not message.text.isdigit():
bot.send_message(message.from_user.id, "Нужно ввести число")
bot.register_next_step_handler(message, vvod_cubok, data, counter)
else:
cubok_count = int(message.text)
data[f'jit_{counter}_cubok'] = cubok_count
bot.send_message(message.from_user.id, f"Житель {counter} заработал {cubok_count} кубков")
counter += 1
if counter <= data['jit_count']:
bot.send_message(message.from_user.id, f"Сколько заработал кубков житель {counter}?")
bot.register_next_step_handler(message, vvod_cubok, data, counter)
else:
bot.send_message(message.from_user.id, 'А теперь посмотрим что у нас вышло')
bot.send_message(message.from_user.id, f'{data}')
if __name__ == '__main__':
bot.polling()
Я тут набросал основной алгоритм без логики. Я думаю по аналогии справитесь с остальным. Запустите, посмотрите что выводит в конце.
Вам надо будет доработать свою логику и добавить обработку когда количество жителей 0. Сейчас про одного все равно спрашивается.