Exemple #1
0
async def show_events(message: Message):
    """
        Команда показывает события из общедоступного календаря
        :param message:
        :return:
        """
    try:
        calendar = Calendar()
        now = datetime.utcnow().isoformat() + 'Z'
        next_week = round(time.time()) + 604800
        next_week = datetime.fromtimestamp(next_week).isoformat() + 'Z'

        events_list = calendar.get_events_for_range(now, next_week)

        if not events_list:
            message_text = 'Нет событий на ближайшую неделю'
            await message.answer(text=message_text)
        else:
            message_text = '<b>События на ближайшую неделю:</b>\n'
            for event in events_list:
                if not event['description']:
                    event_description = 'Нет описания'
                else:
                    event_description = event['description']
                event_title = event['summary']
                full_calendar_link = '<a href="%s">Подробнее...</a>' % event[
                    'htmlLink']
                event_start = event['start'].get('dateTime')
                message_text = message_text + f"\n{event_title}\n{event_start}\n{event_description}\n{full_calendar_link}\n"
    except HttpAccessTokenRefreshError as ex:
        message_text = "Токен доступа к календарю истек!"
        print(ex)
    await message.answer(text=message_text,
                         parse_mode='HTML',
                         reply_markup=back_to_menu())
async def select_post_for_worker(message: Message, state: FSMContext):
    global input_data
    async with state.proxy() as userdata:
        userdata["post"] = message.text
        input_data = userdata
    admin = Admin()
    try:
        admin.set_worker_post(input_data)
        await States.COMMAND_STATE.set()
    except PostNotFound as IE:
        print(IE)
        await message.answer(text="Ошибка присвоения должности: побробуйте еще"
                             )
    else:
        waiting_workers = admin.get_workers_without_post()
        print(waiting_workers)
        if waiting_workers:
            await States.SELECT_WORKER_STATE.set()
            await message.answer(
                text="Должность упешно назначена работнику. Есть другие завки",
                reply_markup=generate_workers_buttons(waiting_workers))
        else:
            await message.answer(
                text="Должность упешно назначена работнику. Новых заявок нет",
                reply_markup=back_to_menu())
        await bot.send_message(
            chat_id=input_data["worker_id"],
            text=
            "Администратор авторизовал вас. Для продолжения работы введите /start"
        )
async def ask_new_question(message: Message):
    """
    Команда задать новый вопрос
    :param message:
    :return:
    """
    await States.ENTER_QUESTION_STATE.set()
    await message.answer(text="Задать вопрос\n\nНапишите Ваш вопрос:\n\n\n",
                         reply_markup=back_to_menu())
Exemple #4
0
async def show_documentation(message: Message):
    """
    Команда показать документацию
    :param message:
    :return:
    """
    await message.answer(text="Вот список основных документов: \n",
                         reply_markup=back_to_menu())
    # directory = os.path.join("..", "documentation", "documentation_files")
    for file in get_all_documents(documents_directory):
        document = upload_document(os.path.join(documents_directory, file))
        await message.answer_document(document=document)
Exemple #5
0
async def check_new_workers(message: Message):
    admin = Admin()
    # print("обработчик сработал")
    waiting_workers = admin.get_workers_without_post()
    print(waiting_workers)
    if waiting_workers:
        await States.SELECT_WORKER_STATE.set()
        await message.answer(
            text="Новые заявки ожидают подтверждения. Выберите сотрудника и назначьте его на должность",
            reply_markup=generate_workers_buttons(waiting_workers))
    else:
        await message.answer(text="Новых заявок нет",
                             reply_markup=back_to_menu())
async def typical_questions(message: Message):
    """
    Команда типичные вопросы
    :param message:
    :return:
    """
    with codecs.open("questions\\typical_q.json", "r", "utf_8_sig") as file:
        json_str = file.read()
    list_question_obj = json.loads(json_str)
    for i in range(len(list_question_obj)):
        question = create_smile("\\u2705") + list_question_obj[i][
            'question'] + "\n\n" + list_question_obj[i]['answer']
        await message.answer(text=f"{question}")
    await message.answer(
        text="Если остались вопросы, вы можете задать их администатору.",
        reply_markup=back_to_menu())