async def change_filled_text(query: types.InlineQuery): if query.data == "AGREEWITHCHANGEyes": await query.message.answer("😊Введите другую информацию") current_state = dp.current_state(user=query.from_user.id) await current_state.set_state(AddChangeInfo.INFO) else: current_state = dp.current_state(user=query.from_user.id) await current_state.reset_state() await query.message.answer("😭Информация не была применена")
async def add_de_version(query: types.InlineQuery): current_state = dp.current_state(user=query.from_user.id) if query.data == "ADDDEVERSIONyes": await current_state.set_state(AddChangeInfo.ADD_DE_VERSION) await query.message.answer("🤲Введите информацию") else: await info.set_about_text(new_info[query.from_user.id]) current_state = dp.current_state(user=query.from_user.id) await current_state.reset_state() del new_info[query.from_user.id] await query.message.answer("🥳Ок.Поздравляю информация добавлена!")
async def wanna_change_de_version(query: types.InlineQuery): if query.data == "WANNACHANGEyes": current_state = dp.current_state(user=query.from_user.id) await current_state.set_state(AddChangeInfo.ADD_DE_VERSION) await query.message.answer("🤲Введите информацию?") else: del new_info[query.from_user.id]["about_text_de"] await info.set_about_text(bot, query, new_info[query.from_user.id]) current_state = dp.current_state(user=query.from_user.id) await current_state.reset_state() await query.message.answer("😭Ок, перевод не добавлен")
async def rewrite_confiramation(query: types.CallbackQuery): """Handler to understand whether user wants to rewrite his new service or not""" if query.data == "REWRITEyes": current_state = dp.current_state(user=query.from_user.id) await current_state.set_state(AddService.NAME) await query.message.answer( "👌Хорошо начнем с начала.А именно с названия") else: current_state = dp.current_state(user=query.from_user.id) await current_state.reset_state() await query.message.answer("😒Ну ладно")
async def start_adding_service(message: types.Message): """A handler to start an adding of a new service""" current_state = dp.current_state(user=message.from_user.id) await current_state.set_state(AddService.CONFIRMING) await message.answer( "🛎Вы в разделе добавления услуги. Ви хотите продолжить?", reply_markup=await create_yesno_keyboard(["CONFIRMING/yes", "CONFIRMING/no"], ["✅Да", "❌Нет"]))
async def confirm_adding_de_version(message: types.Message): if message.text: new_info[message.from_user.id]["about_text_de"] = message.text await message.answer(message.text) current_state = dp.current_state(user=message.from_user.id) await current_state.set_state(AddChangeInfo.ADD_DE_VERSION_CONFIRMING) return await message.answer("🤔Вам все нравиться?", reply_markup=await create_yesno_keyboard( ["AGREEWITHDEyes", "AGREEWITHDEno"], ["✅Да", "❌Нет"])) await message.answer("😤Информация не может быть пустой")
async def start_adding_new_visit_image(query: types.InlineQuery): try: all_message_number = len(await visitimages.get_visit_images()) * 2 + 1 except TypeError: all_message_number = 1 for index in range(-all_message_number, 1): await bot.delete_message(query.message.chat.id, message_id=query.message.message_id + index) current_state = dp.current_state(user=query.from_user.id) await current_state.set_state(AddVisitImage.ADD_IMAGE) await query.message.answer("🤲Отошлите изображение")
async def start_func(message: types.Message): """Handler for the /start command to start a relationship between user and bot""" current_state = dp.current_state(user=message.from_user.id) await current_state.reset_state() await message.answer( "😜Hello!Вас приветствует бот сделаный для администрирования сайта http://emassage.com\nЗдесь Вы можете:\n- Просматривать актуальные записи клиентов\n- Добавлять новые услуги\n- Мониторить статистику\n❗️Бот находится в розработке,его функционал будет расширяться" ) await message.answer("🥺Хотите пройти обучение?", reply_markup=await create_yesno_keyboard(["TUTORIALyes", "TUTORIALno"], ["Да", "Нет"]))
async def add_currency_to_service(query: types.CallbackQuery): """Handler to process the adding of a currency to a new service""" new_service[query.from_user.id]["currency"] = query.data await bot.delete_message(query.message.chat.id, message_id=query.message.message_id) current_state = dp.current_state(user=query.from_user.id) await current_state.set_state(AddService.CURRENCY) return await query.message.answer( "Валюта для новой услуги - '%s'.Правильно?💰" % (query.data), reply_markup=await create_yesno_keyboard(["CURRENCY/yes", "CURRENCY/no"], ["✅Да,хочу продолжить", "❌Нет,хочу поменять"]))
async def confirming_de_version(query: types.InlineQuery): if query.data == "AGREEWITHDEyes": await info.set_about_text(new_info[query.from_user.id]) current_state = dp.current_state(user=query.from_user.id) await current_state.reset_state() del new_info[query.from_user.id] await query.message.answer("👌Поздравляю! Информация добавлена") else: await query.message.answer("🤔Желаете переделать?", reply_markup=await create_yesno_keyboard( ["WANNACHANGEyes", "WANNACHANGEno"], ["✅Да", "❌Нет"]))
async def set_new_text(message: types.Message): if message.text: await message.answer(message.text) new_info[message.from_user.id] = {"about_text": message.text} current_state = dp.current_state(user=message.from_user.id) await current_state.set_state(AddChangeInfo.CONFIRMING) return await message.answer("🤔Вам все нравиться?", reply_markup=await create_yesno_keyboard( ["CHANGEINFOyes", "CHANGEINFOno"], ["✅Да", "❌Нет"])) await message.answer("😦Вы ничего не ввели")
async def change_about_text(query: types.InlineQuery): if query.data == "ADDABOUTyes": for index in range(-1, 1): await bot.delete_message(query.message.chat.id, message_id=query.message.message_id + index) current_state = dp.current_state(user=query.from_user.id) await current_state.set_state(AddChangeInfo.INFO) await query.message.answer("🤲Введите информацию") else: for index in range(-1, 1): await bot.delete_message(query.message.chat.id, message_id=query.message.message_id + index) await query.message.answer("😔Ок")
async def agreement_width_new_visit_image(query: types.InlineQuery): current_state = dp.current_state(user=query.from_user.id) if query.data == "NEWVISITIMAGEAGREE": for index in range(-1, 1): await bot.delete_message(query.message.chat.id, query.message.message_id + index) await current_state.reset_state() await visitimages.add_new_visit_image( new_visit_image[query.from_user.id]["photo_path"], new_visit_image[query.from_user.id]["photo"]) return await query.message.answer("😄Поздравляю! Изображение добавлено") await current_state.set_state(AddVisitImage.ADD_IMAGE) await query.message.answer("🤲Отошлите изображение")
async def edit_visit_image(query: types.InlineQuery): """Main entrypoint of visit_image editing.""" current_state = dp.current_state(user=query.from_user.id) pk_from_query_data = query.data.split("_")[1] if query.data.split("_")[0] == "edit": new_visit_image[query.from_user.id] = {"pk": pk_from_query_data} await current_state.set_state(ChangeVisitImage.EDIT_PROCESS) await query.message.answer("🤲Отошлите новое фото") else: visit_image_to_delete[query.from_user.id] = {"pk": pk_from_query_data} await current_state.set_state(ChangeVisitImage.DELETE_PROCESS) await query.message.answer("🤔Вы уверены?", reply_markup=await create_yesno_keyboard( ["DELETEIMAGEyes", "DELETEIMAGEno"], ["✅Да", "❌Нет"]))
async def agree_with_new_visitimage(query: types.InlineQuery): """Main point of visit_image adding.""" try: all_message_number = len(await visitimages.get_visit_images()) * 2 + 4 except TypeError: all_message_number = 1 for index in range(-all_message_number, 1): await bot.delete_message(query.message.chat.id, query.message.message_id + index) if query.data == "VISITIMAGEyes": await visitimages.set_visit_image(new_visit_image[query.from_user.id]) await query.message.answer("😄Поздравляю! Изображение добавлено") else: current_state = dp.current_state(user=query.from_user.id) await current_state.reset_state() await query.message.answer("😞Ок")
async def start_editing_visit_images(message: types.Message): if visit_images := await visitimages.get_visit_images(): current_state = dp.current_state(user=message.from_user.id) await current_state.set_state(ChangeVisitImage.EDIT_IMAGE) for index, image in enumerate(visit_images): await message.answer("🖼Изображение №%d" % (index + 1)) await bot.send_photo( message.chat.id, image[1], reply_markup=await create_yesno_keyboard( ["edit_%s" % (image[0], ), "delete_%s" % (image[0], )], ["✅Редактировать", "❌Удалить"])) return await message.answer( "🤔Может Вы хотите добавить новое изображение?", reply_markup=await create_yesno_keyboard(["NEWVISITIMAGE"], ["✅Добавить новое изображение"]))
async def agree_with_changed_text(query: types.InlineQuery): if query.data == "CHANGEINFOyes": current_state = dp.current_state(user=query.from_user.id) await current_state.set_state( AddChangeInfo.AGGRE_WITH_START_ADD_DE_VERSION) await query.message.answer( "🇩🇪Хотите добавить версию на немецком язике?", reply_markup=await create_yesno_keyboard(["ADDDEVERSIONyes", "ADDDEVERSIONno"], ["✅Да", "❌Нет"])) else: del new_info[query.from_user.id] await query.message.answer( "🤔Желаете изменить информацию?", reply_markup=await create_yesno_keyboard(["AGREEWITHCHANGEyes", "AGREEWITHCHANGEno"], ["✅Да", "❌Нет"]))
async def callback(query: types.CallbackQuery): """Handler for the creating a new service. Contains: -> CONFIRMING processor -> NAME processor -> DESCRIPTION processor -> PRICE processor -> CURRENCY processor -> PHOTO processor """ current_state = dp.current_state(user=query.from_user.id) if query.data == "CONFIRMING/yes": new_service[query.from_user.id] = {} await current_state.set_state(AddService.NAME) await query.message.answer("📋Ок, начнем с названия") elif query.data == "CONFIRMING/no": await current_state.reset_state() await query.message.answer("😒Ну ладно") else: if query.data.split("/")[0][-1] == "_" and query.data.split( "/")[1] == "yes": new_service[query.from_user.id]["%s" % (query.data.split( "/")[0][:-1].lower())] = query.message.text.split("'")[1] if query.data.split( "/")[1] == "yes" and query.data.split("/")[0] != "PHOTO": new_service[query.from_user.id]["%s" % (query.data.split( "/")[0].lower())] = query.message.text.split("'")[1] if query.data == "NAME/no": await current_state.set_state(AddService.NAME) await query.message.answer("🖌Напишите другое название") elif query.data == "NAME/yes": await current_state.set_state(AddService.NAME_DE) await query.message.answer("🇩🇪Приступим к названию на немецком") elif query.data == "NAME_DE_/no": await current_state.set_state(AddService.NAME_DE) await query.message.answer("🖌Напишите другое название") elif query.data == "NAME_DE_/yes": await current_state.set_state(AddService.DESCRIPTION) await query.message.answer("📄Приступим к описанию") elif query.data == "DESCRIPTION/no": await current_state.set_state(AddService.DESCRIPTION) await query.message.answer("🖌Напишите другое описание") elif query.data == "DESCRIPTION/yes": await current_state.set_state(AddService.DESCRIPTION_DE) await query.message.answer("🇩🇪Напишите описание на немецком") elif query.data == "DESCRIPTION_DE_/no": await current_state.set_state(AddService.DESCRIPTION_DE) await query.message.answer("🖌Напишите другое описание на немецком") elif query.data == "DESCRIPTION_DE_/yes": await current_state.set_state(AddService.PRICE) await query.message.answer("💵Напишите цену услуги") elif query.data == "PRICE/no": await current_state.set_state(AddService.PRICE) await query.message.answer("🖌Напишите другую цену") elif query.data == "PRICE/yes": await current_state.set_state(AddService.CURRENCY) await query.message.answer("💰Приступим к валюте") await query.message.answer("Виберете", reply_markup=await create_yesno_keyboard( ["EUR", "USD", "UAH", "CHF"], ["EUR", "USD", "UAH", "CHF"])) elif query.data == "CURRENCY/no": await current_state.set_state(AddService.CURRENCY) await query.message.answer("🖌Поменяйте валюту") elif query.data == "CURRENCY/yes": await current_state.set_state(AddService.PHOTO) await query.message.answer("🖼Время фотографии для услуги.") elif query.data == "PHOTO/no": await current_state.set_state(AddService.PHOTO) await query.message.answer("🖌Ок,поменяйте фото") elif query.data == "PHOTO/yes": photo = await bot.download_file( new_service[query.from_user.id]["photo"].file_path) await bot.send_photo(query.message.chat.id, photo=photo) await bot.send_message( query.message.chat.id, text= "Информация новой услуги\nНазвание: %s\n%sОписание: %s\n%sЦена: %s %s\n" % (new_service[query.from_user.id]["name"], (("Название на немецком: " + new_service[query.from_user.id]["name_de"] + "\n") if new_service[query.from_user.id].get("name_de") else ""), new_service[query.from_user.id]["description"], (("Описание на немецком: " + new_service[query.from_user.id]["description_de"] + "\n") if new_service[query.from_user.id].get("description_de") else ""), new_service[query.from_user.id]["price"], new_service[query.from_user.id]["currency"])) await query.message.answer("📝Проверте данные новой услуги") await query.message.answer( "🤔Все правильно?", reply_markup=await create_yesno_keyboard(["ADDyes", "ADDno"], ["✅Да", "❌Нет"])) await bot.delete_message(chat_id=query.message.chat.id, message_id=query.message.message_id)