def send_defect(update: Update, context: CallbackContext) -> None: user_data = context.user_data defect = user_data.get(con.DEFECT) token = user_data.get(con.ACCESS_TOKEN) payload = { "created_by": user_data.get(con.SENDER_ID), "title": defect.get(con.DEFECT_TITLE), "description": defect.get(con.DEFECT_DESCRIPTION), "room": defect.get(con.DEFECT_ROOM) } photo_file = open(defect.get(con.DEFECT_PHOTO), 'rb') files = { "attachment": photo_file } response = Request.post_defect(payload, files, token) photo_file.close() _remove_defect_cache(context) text = ("Дефект успішно додано!" if response.ok else "Сталась помилка на сервері") query = update.callback_query keyboard = Buttons.back_to_menu() query.answer() query.edit_message_text(text=text, reply_markup=keyboard)
def help(update: Update, context: CallbackContext) -> int: query = update.callback_query text = "Натисніть кнопку <b>Реєстрація</b>, якщо бажаєте користуватися ботом вперше.\n" text += "Натисніть <b>Вхід</b>, якщо ви тут не вперше." "" query.answer() query.edit_message_text(text=text, parse_mode=ParseMode.HTML, reply_markup=Buttons.back_to_menu()) context.user_data[con.START_OVER] = True return con.SHOWING
def register(update: Update, context: CallbackContext) -> int: payload = { "telegram_id": context.user_data[con.SENDER_ID], "first_name": context.user_data[con.SENDER_FIRST_NAME], "last_name": context.user_data[con.SENDER_LAST_NAME], "username": context.user_data[con.SENDER_USERNAME] } response = Request.register(payload).json() message = response.get('message') reply_text = ('Ви уже зареєстровані!' if message and 'exist' in message else 'Ваш запит вислано для перевірки, очікуйте на відповідь.') query = update.callback_query query.answer() query.edit_message_text(text=reply_text, reply_markup=Buttons.back_to_menu()) context.user_data[con.START_OVER] = True return con.SHOWING
def auth(update: Update, context: CallbackContext) -> int: query = update.callback_query user_data = context.user_data sender_id = user_data[con.SENDER_ID] response = Request.login(sender_id).json() message = response.get('message') access_token = response.get('access_token') # Default text, keyboard, state in case of error reply_text = 'Очікуйте на активацію.' keyboard = Buttons.back_to_menu() state = con.SHOWING if not message and access_token: reply_text = ('Виберіть потрібну опцію' if user_data.get( con.ADD_DEFECT_AGAIN) else 'Ви успішно ввійшли!') user_data[con.ACCESS_TOKEN] = access_token role = _get_user_role(context) if role == con.Role.not_specified.value: reply_text = 'Ваша роль поки що не визначена. Звернітся до адміністратора.' elif role == con.Role.sanitary_worker.value: keyboard = Buttons.get_cleaner_options() state = con.DESCRIBING_DEFECT elif role == con.Role.technical_worker.value: keyboard = Buttons.get_all_options() state = con.DESCRIBING_DEFECT query.answer() query.edit_message_text(text=reply_text, reply_markup=keyboard) context.user_data[con.START_OVER] = True return state