@Beko96

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

Боту передаются обычные str их надо записать в обычный список (data), но в список в итоге пуст и ничего не записалось как быть?

import telebot

bot = telebot.TeleBot(' - - - ')

data = []

def main():
	
	@bot.message_handler(commands = ['start'])
	def foo(message):
		msg = bot.send_message(message.chat.id,'введите имя')
		bot.register_next_step_handler(msg,name)

	def name(message):
		
		name = message.text
		
		data.append(name)

		msg = bot.send_message(message.chat.id,'введите возраст')

		bot.register_next_step_handler(msg,age)


	def age(message):
		data.append(message.age)

	return data

if __name__ == '__main__':
	
	print(main())
	
	bot.enable_save_next_step_handlers(delay=2)
	bot.load_next_step_handlers()
	bot.polling()
  • Вопрос задан
  • 405 просмотров
Решения вопроса 1
@o5a
Список заполняется, просто в текущем коде возвращается он только один раз (в самом начале, когда он еще пустой), т.к. main() запускается только один раз.

Можно увидеть, добавив например команду /info
@bot.message_handler(commands = ['info'])
def send_info(message):
  bot.send_message(message.chat.id, f'data={data}')


Так что не нужно все эти функции оборачивать в main, они просто должны идти на глобальном уровне.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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