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())
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)
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())