Разные сообщения в зависимости от ответа пользователя
Есть 2 направления x и y. Слушатель задаёт вопрос "Могу ли обучаться", если он выбрал направление x, ответ должен быть "Да можете", если выбрал направление y, то ответ должен быть "Нет, не можете". Первый раз делаю бота, сделал такой вариант, но edu всегда равно 0
from aiogram.types import Message
from aiogram.filters import CommandStart, Command
from aiogram import F, Router
import app.keyboards as kb
router = Router()
edu = 0
@router.message(CommandStart())
async def cmd_start(message: Message):
await message.answer('Привет! Я могу ответить на твои вопросы по поводу обучения \n Выбери программу обучения',
reply_markup=kb.main)
@router.message(Command('help'))
async def cmd_help(message: Message):
await message.answer('Текст помощи')
#Выбор программы обучения
@router.message(F.text == 'HR менеджер с применением 1С:ЗУП 8.3')
async def faq(message: Message):
edu = 1
await message.answer(
'Программа подготовки менеджера по персоналу включает в себя фундаментальные вопросы управления персоналом'
' и затрагивает практические аспекты использования современных ИТ-решений HR-подразделений.',
reply_markup=kb.faq)
@router.message(
F.text == 'БЮДЖЕТНЫЙ (БУХГАЛТЕРСКИЙ) УЧЕТ И НАЛОГООБЛОЖЕНИЕ В ГОСУДАРСТВЕННЫХ (МУНИЦИПАЛЬНЫХ) УЧРЕЖДЕНИЯХ')
async def faq(message: Message):
edu = 1
await message.answer(
'Актуальность программы переподготовки определяется необходимостью использования в профессиональной '
'деятельности бухгалтера программ автоматизированного ведения бухгалтерского учета и отчетности на предприятии.'
'\n Курс в части 1С представляет из себя набор практических занятий в типовой конфигурации «1С:Предприятие», '
'охватывающих весь спектр бухгалтерских операций бюджетной организации,'
' в том числе формирование регламентированной отчетности и баланса.'
'\n Все занятия проводятся только на актуальных версиях программы «1С:Предприятие».', reply_markup=kb.faq)
@router.message(F.text == 'МЕНЕДЖЕР ПО ПРОДАЖАМ')
async def faq(message: Message):
await message.answer(
'Программа профессиональной переподготовки «Менеджер по продажам» - совершенствование имеющихся и получение '
'новых компетенций в сфере продаж,'
'необходимых для профессиональной деятельности, и повышения профессионального уровня в рамках имеющейся '
'квалификации.',
reply_markup=kb.faq)
@router.message(F.text == 'МЕНЕДЖЕР ПО ЗАКУПКАМ')
async def faq(message: Message):
await message.answer(
'Дополнительная профессиональная программа профессиональной переподготовки "Менеджер по закупкам" (далее - '
'Программа) призвана способствовать реализации основополагающего принципа Федерального закона «О контрактной '
'системе в сфере закупок товаров, работ, услуг для обеспечения государственных и муниципальных нужд» № 44-ФЗ '
'– профессионализм заказчика.'
'Программа разработана в соответствии с нормами Федерального закона от 29 декабря 2012 г. N 273-ФЗ "Об '
'образовании в'
'Российской Федерации", Федеральный закон от 05.04.2013 N 44-ФЗ "О контрактной системе в сфере закупок '
'товаров, работ, услуг для обеспечения государственных и муниципальных нужд", Приказа Минтруда России от '
'10.09.2015 N 625н "Об утверждении профессионального стандарта "Специалист в сфере закупок", '
'с учетом требований приказа Министерства образования и науки Российской Федерации от 1 июля 2013 г. N 499 '
'"Об утверждении Порядка организации и осуществления образовательной деятельности по дополнительным '
'профессиональным программам", а также иными положениями действующего законодательства РФ.',
reply_markup=kb.faq)
#Ответы на частые вопросы
@router.message(F.text == 'Что если у меня не получилось присутствовать на лекции?')
async def faq(message: Message):
await message.answer('Все лекции можно посмотреть в записи')
@router.message(F.text == 'Есть ли письменные материалы по лекциям?')
async def faq(message: Message):
await message.answer('Нет, лекций в письменном виде нет. Только записи лекций и презентации')
@router.message(F.text == 'Что я получаю в конце обучения?')
async def faq(message: Message):
await message.answer('Диплом о проф переподготовке гос образца')
@router.message(F.text == 'Что делать после подачи заявки?')
async def faq(message: Message):
await message.answer(
'После подачи заявки на портале Работа России, вас вызывают в ЦЗН для утверждения вашей категории и '
'возможности обучаться, далее на почту вам приходит логин и пароль от личного кабинета Flow куда нужно будет '
'загрузить все документы (паспорт, диплом, договор, согласие на обр персональных данных). После успешной '
'загрузки все документов вы можете приступить к обучению')
@router.message(F.text == 'Могу ли я обучиться на программе если в данный момент работаю?')
async def faq(message: Message):
if edu == 1:
await message.answer('Да, вы можете обучаться на программе')
elif edu == 0:
await message.answer('нет, вы не можете обучаться на программе')
Ответы (1 шт):
Автор решения: Timur
→ Ссылка
В твоем коде edu
, которую ты объявляешь в начале - это глобальная переменная. А затем ты ещё раз объявляешь ее, только внутри функции, и она уже является локальной.
Чтобы у тебя менялось значение глобальной переменной, используй ключевое слово global
. Пример здесь.