Телеграмм бот по сбору информации от пользователей
Есть код.
import asyncio
import json
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.middlewares.logging import LoggingMiddleware
API_TOKEN = 'токен'
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
dp.middleware.setup(LoggingMiddleware())
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
await message.answer("Пожалуйста, введите свое имя:")
@dp.message_handler(lambda message: True)
async def get_name(message: types.Message):
name = message.text
await message.answer("Пожалуйста, введите свой номер телефона:")
@dp.message_handler()
async def get_phone_number(message: types.Message):
phone_number = message.text
await message.answer("Пожалуйста, введите свой адрес местоположения:")
@dp.message_handler()
async def get_location_address(message: types.Message):
location_address = message.text
await message.answer("Пожалуйста, предоставьте информацию о продукте:")
@dp.message_handler()
async def get_product_information(message: types.Message):
product_info = message.text
await message.answer("Пожалуйста, предоставьте название компании:")
@dp.message_handler()
async def save_info(message: types.Message):
user_info = {
'name': get_name(),
# 'phone_number': get_phone_number(),
'location_address': get_location_address(),
'product_info': get_product_information(),
'company_name': message.text
}
with open('user_info.json', 'a') as file:
json.dump(user_info, file)
file.write('\n')
await message.answer("Информация сохранена.")
async def main():
await dp.start_polling()
await asyncio.sleep(5)
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.create_task(main())
loop.run_forever()
Код отрабатывает первую функцию затем просит номер телефона и после ввода опять номер просит и так бесконечно.
Ответы (1 шт):
Автор решения: Bi Diaz
→ Ссылка
@dp.message_handler(lambda message: message.text and not message.text.startswith('/'))
декораторы меняй на этот