• Не могу запустить телеграм бота на Яндекс облаке?

    @nickie000 Автор вопроса
    Протестировал просто код из примера, выдает:
    {
       {
        "errorMessage": "'NoneType' object is not subscriptable",
        "errorType": "TypeError",
        "stackTrace": [
            "  File \"/function/runtime/runtime.py\", line 193, in handle_event\n    result = asyncio.get_event_loop().run_until_complete(result)\n",
            "  File \"/function/runtime/lib/python3.7/asyncio/base_events.py\", line 587, in run_until_complete\n    return future.result()\n",
            "  File \"/function/code/main.py\", line 56, in handler\n    if event['httpMethod'] == 'POST':\n"
        ]
    }
    Написано
  • Бот не отвечает на сообщения пользователя, как исправить?

    @nickie000 Автор вопроса
    Ну, в общем, да , предположение
    Предполагаю что функцию def register_handlers_common нужно вызвать :)
    явилось верным.
    рабочий код:
    async def cmd_start(message: types.Message, state=FSMContext):
        keyboard = types.ReplyKeyboardMarkup(resize_keyboard = True)
        buttons = ["Поехали"]
        keyboard.add(*buttons)
        await message.answer("")
        await message.answer_photo(photo=logo_forsage)
        await message.answer(
        f"Привет {message.from_user.full_name}! Я чат-бот  такси Форсаж." +
        " Присоединяйтесь к нашей команде профессиональных водителей для работы в сфере междугородних перевозок.\n" +
        " Нажимая на кнопку ниже , Вы даете свое согласие на обработку персональных данных." +
        " После заполнения анкеты и одобрения администратора Вам придет ссылка на нашу рабочую группу.", reply_markup=keyboard
      )
    
    def register_handlers_common(dp: Dispatcher):
        dp.register_message_handler(cmd_start, commands=["start"], state='*')
    
    register_handlers_common(dp)
  • Не могу проверить отправленное сообщение на тип введенных данных [aiogram]?

    @nickie000 Автор вопроса
    WhiteMarlin, а не реагирует он потому что я ничего не записал в Qnnaire.driveexp?
  • Не могу проверить отправленное сообщение на тип введенных данных [aiogram]?

    @nickie000 Автор вопроса
    WhiteMarlin, у меня подозрения на то, что он не реагирует на сообщение
    левелы не записывает
  • Не могу проверить отправленное сообщение на тип введенных данных [aiogram]?

    @nickie000 Автор вопроса
    WhiteMarlin, в общем вот так у меня получилось
    try:
        @dp.message_handler(state=Qnnaire.driveexp)
        async def taxi_exp(message: types.Message, state: FSMContext):
            try:
                if re.match(r"^[0-9]+$", message.text):
                    try:
                        async with state.proxy() as data:
                            data['driveexp'] = message.text
                    except Exception as e1:
                        print(e1)
                    try:
                        keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
                    except Exception as e2:
                        print(e2)
                    try:
                        buttons = ["Конечно", "Еще нет"]
                    except Exception as e3:
                        print(e3)
                    try:
                        keyboard.add(*buttons)
                    except Exception as e4:
                        print(e4)
                    try:
                        await message.answer(" У Вас есть опыт работы в такси?\nДля отмены нажмите (/cancel)", reply_markup=keyboard)
                    except Exception as e5:
                        print(e5)
                else:
                    try:
                        return await message.reply("Сказал же написать цифрами, попробуйте еще раз \nДля отмены нажмите (/cancel)")
                    except Exception as e6:
                        print(e6)
            except Exception as IF:
                print(IF)
    except Exception as E:
        print(E)

    в терминале ничего не записывается
  • Не могу проверить отправленное сообщение на тип введенных данных [aiogram]?

    @nickie000 Автор вопроса
    WhiteMarlin, в общем где бы я не поставил try выдает ошибку Try statement must have at least one except or finally clause
    upd: это я дебил) сейчас проверю
  • Не могу проверить отправленное сообщение на тип введенных данных [aiogram]?

    @nickie000 Автор вопроса
    WhiteMarlin, не работает, не что я делаю не так
    вот код, можете посмотреть?
    logging.basicConfig(level = logging.INFO)
    
    TOKEN = "мой токен"
    bot = Bot(token = TOKEN)
    dp = Dispatcher(bot, storage = MemoryStorage())
    
    # Данные, которые нужно запомнить
    class Qnnaire(StatesGroup):
    	citizen = State()
    	drlicense = State()
    	driveexp = State()
    	taxiexp = State()
    	fio = State()
    	phone = State()
    	ctzen = State()
    
    license_tries = 0
    
    # handlers 
    # Начало
    @dp.message_handler(commands='start')
    async def cmd_start(message: types.Message):
        keyboard = types.ReplyKeyboardMarkup(resize_keyboard = True, row_width = 1)
        buttons = ["Поехали"]
        keyboard.add(*buttons)
        await message.answer("")
        await message.answer(f"Привет {message.from_user.full_name}! Я чат-бот  такси Форсаж. Присоединяйтесь к нашей команде профессиональных водителей для работы в сфере междугородних перевозок.\n Нажимая на кнопку ПОЕХАЛИ , Вы даете свое согласие на обработку персональных данных. После заполнения анкеты и одобрения администратора Вам придет ссылка на нашу рабочую группу.", reply_markup=keyboard)
    
    # Гражданство
    @dp.message_handler(Text(equals=["Поехали", "Начать заново"]))
    async def citizen(message: types.Message):
    	keyboard = types.ReplyKeyboardMarkup(resize_keyboard = True, row_width = 2)
    	buttons = ["Да", "Нет"]
    	keyboard.add(*buttons)
    	await message.answer(" У Вас есть гражданство РФ?", reply_markup=keyboard)
    
    # Лицензия водителя
    @dp.message_handler(Text(equals=["Да", "Нет"]))
    async def driver_license(message: types.Message, state: FSMContext):
    	keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
    	buttons = ["Да ✅", "Нет ⛔"]
    	keyboard.add(*buttons)
    	async with state.proxy() as data:
    		data['citizen'] = message.text
    	await message.answer(" У Вас есть водительские права (удостоверение) РФ?\nДля отмены нажмите (/cancel)", reply_markup=keyboard)
    
    # Если нет Лицензии
    @dp.message_handler(Text(equals=["Нет ⛔"]))
    async def cancel_handler(message: types.Message):
    	keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=1)
    	buttons = ["Начать заново"]
    	keyboard.add(*buttons)
    	await message.answer("", reply_markup=keyboard)
    	await message.answer("К сожалению мы не сможем с Вами сотрудничать, т.к. у Вас нет водительских прав российского образца.")
    	await message.answer("Либо если Вы случайно промахнулись - просто нажмите на кнопку снизу, чтобы заново приступить к заполнению анкеты ")
    
    #  Стаж вождения
    @dp.message_handler(Text(equals=["Да ✅"]))
    async def drive_exp(message: types.Message, state: FSMContext):
    	async with state.proxy() as data:
    		data['drlicense'] = message.text
    	await message.answer("Сколько лет стажа Вашего вождения? Укажите цифрами...\nДля отмены нажмите (/cancel)", reply_markup=types.ReplyKeyboardRemove())
    
    # Проверка стажа и вывод опыт в такси
    @dp.message_handler(state = Qnnaire.driveexp)
    async def taxi_exp(message: types.Message, state: FSMContext):
    	if re.match(r"^[0-9]+$", message.text):
    		async with state.proxy() as data:
    			data['driveexp'] = message.text
    		keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
    		buttons = ["Конечно", "Еще нет"]
    		keyboard.add(*buttons)
    		await message.answer(" У Вас есть опыт работы в такси?\nДля отмены нажмите (/cancel)", reply_markup=keyboard)
    	else:
    		return await message.reply("Сказал же написать цифрами, попробуйте еще раз \nДля отмены нажмите (/cancel)")
  • Не могу проверить отправленное сообщение на тип введенных данных [aiogram]?

    @nickie000 Автор вопроса
    на re.match ругается, что для него нужно?
  • Не могу проверить отправленное сообщение на тип введенных данных [aiogram]?

    @nickie000 Автор вопроса
    Ошибка и не пишется, просто бот не отвечает на сообщение с цифрами или не цифрами
    если писать старт то все начнется заново и опять до момента с drive_exp_invalid
    Фильтр это я про лямбду в декораторе над функцией drive_exp_invalid
    # log
    logging.basicConfig(level = logging.INFO)
    
    TOKEN = "bot_token"
    bot = Bot(token = TOKEN)
    dp = Dispatcher(bot, storage = MemoryStorage())
    
    # Данные, которые нужно запомнить
    class Qnnaire(StatesGroup):
    	citizen = State()
    	drlicense = State()
    	driveexp = State()
    	taxiexp = State()
    	fio = State()
    	phone = State()
    	ctzen = State()
    
    # handlers 
    # Начало
    @dp.message_handler(Text(equals = ["/start"]))
    async def cmd_start(message: types.Message):
        keyboard = types.ReplyKeyboardMarkup(resize_keyboard = True, row_width = 1)
        buttons = ["Поехали"]
        keyboard.add(*buttons)
        await message.answer("")
        await message.answer(f"Привет {message.from_user.full_name}! Я чат-бот  такси Форсаж. Присоединяйтесь к нашей команде профессиональных водителей для работы в сфере междугородних перевозок.\n Нажимая на кнопку ПОЕХАЛИ , Вы даете свое согласие на обработку персональных данных. После заполнения анкеты и одобрения администратора Вам придет ссылка на нашу рабочую группу.", reply_markup=keyboard)
    
    # Гражданство
    @dp.message_handler(Text(equals=["Поехали", "Начать заново"]))
    async def citizen(message: types.Message):
    	keyboard = types.ReplyKeyboardMarkup(resize_keyboard = True, row_width = 2)
    	buttons = ["Да", "Нет"]
    	keyboard.add(*buttons)
    	await message.answer(" У Вас есть гражданство РФ?", reply_markup=keyboard)
    
    # Лицензия водителя
    @dp.message_handler(Text(equals=["Да", "Нет"]))
    async def driver_license(message: types.Message, state: FSMContext):
    	keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
    	buttons = ["Да ✅", "Нет ⛔"]
    	keyboard.add(*buttons)
    	async with state.proxy() as data:
    		data['citizen'] = message.text
    	await message.answer(" У Вас есть водительские права (удостоверение) РФ?", reply_markup=keyboard)
    
    # Если нет Лицензии
    @dp.message_handler(Text(equals=["Нет ⛔"]))
    async def no_drive_license(message: types.Message):
    	keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=1)
    	buttons = ["Начать заново"]
    	keyboard.add(*buttons)
    	await message.answer("", reply_markup=keyboard)
    	await message.answer("К сожалению мы не сможем с Вами сотрудничать, т.к. у Вас нет водительских прав российского образца.")
    	await message.answer("Либо если Вы случайно промахнулись - просто нажмите на кнопку снизу, чтобы заново приступить к заполнению анкеты ")
    
    #  Стаж вождения
    @dp.message_handler(Text(equals=["Да ✅"]))
    async def drive_exp(message: types.Message, state: FSMContext):
    	async with state.proxy() as data:
    		data['drlicense'] = message.text
    	await message.answer("Сколько лет стажа Вашего вождения? Укажите цифрами...", reply_markup=types.ReplyKeyboardRemove())
    
    # Проверка на правильность написания стажа
    @dp.message_handler(lambda message: not message.text.isdigit(), state = Qnnaire.driveexp)
    async def drive_exp_invalid(message: types.Message):
    	return await message.reply("Сказал же написать цифрами, попробуйте еще раз ")
    
    # Стаж написан правильно
    # Опыт в такси 
    @dp.message_handler(lambda message: message.text.isdigit(), state = Qnnaire.driveexp)
    async def taxi_exp(message: types.Message, state: FSMContext):
    	async with state.proxy() as data:
    		data['driveexp'] = message.text
    	keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
    	buttons = ["Конечно", "Еще нет"]
    	keyboard.add(*buttons)
    	await message.answer(" У Вас есть опыт работы в такси?", reply_markup=keyboard)
    
    
    if __name__ == "__main__":
    	executor.start_polling(dp, skip_updates=True)
  • Как реализовать запись данных пользователя в телеграм-боте на Python?

    @nickie000 Автор вопроса
    Ultra-Bad Coder, да, согласен нужно бы немного подучить питона)