async def edit_profile_age_step2(message: types.Message, state: FSMContext): '''Функция для обновления возвраста в бд''' await send_log(message) try: if str(message.text) == 'Отменить❌': await state.finish() await magic_start(message) return elif int(message.text) < 6: await message.answer('ой🤭\nТы чёт маловат...') await message.answer(cus_ans.random_reapeat_list()) #прерывание функции return elif int(message.text) > 54: await message.answer('Пажилой человек👨') await message.answer(cus_ans.random_reapeat_list()) #прерывание функции return elif int(message.text) > 6 and int(message.text) < 54: await message.answer( 'Малый повзрослел получается🤗\n\nВозвраст успешно измененён!') await state.update_data(edit_profile_age=message.text) user_data = await state.get_data() db.edit_age(user_data['edit_profile_age'], str(message.from_user.id)) await state.finish() await edit_profile(message) except Exception as e: await message.answer(cus_ans.random_reapeat_list()) photorint(e) return
async def delete_profile(message: types.Message): '''Функция для удаления анкеты''' await send_log(message) try: db.delete_profile(message.from_user.id) await message.answer('Анкета успешно удалена!') await magic_start(message) except: await message.answer(cus_ans.random_reapeat_list()) return
async def edit_profile_again(message: types.Message): '''Функция для заполнения анкеты заново''' await send_log(message) try: db.delete_profile(message.from_user.id) await create_profile(message) except Exception as e: await message.answer(cus_ans.random_reapeat_list()) print(e) return
async def search_profile(message: types.Message): '''Функция для ввода пользователя своего города,последующей записи в бд''' await send_log(message) try: if db.profile_exists(message.from_user.id) == False: await message.answer( 'У тебя нет анкеты, заполни её а потом приходи сюда!') else: await message.answer('Выбери город для поиска человечка :)') await SearchProfile.city_search.set() except Exception as e: await message.answer(cus_ans.random_reapeat_list()) await state.finish() print(e) return
async def create_profile_age(message: types.Message, state: FSMContext): try: if str(message.text) == 'Выйти❌': await state.finish() await magic_start(message) return if int(message.text) < 6: await message.answer('ой🤭\nТы чёт маловат...') await message.answer(cus_ans.random_reapeat_list()) #прерывание функции return elif int(message.text) > 54: await message.answer('Пажилой человек👨') await message.answer(cus_ans.random_reapeat_list()) #прерывание функции return elif int(message.text) > 6 and int(message.text) < 54: await state.update_data(profile_age=message.text) #кнопки меню button_skip = KeyboardButton('Пропустить') skip_input = ReplyKeyboardMarkup(one_time_keyboard=True) skip_input.add(button_skip) await message.answer( 'За№бись!!\nПоследний шаг - указать ссылку на свой инстаграмм🤑\nЕсли нет желания - можно пропустить➡🔜', reply_markup=skip_input) await CreateProfile.next() else: await answer.message('Укажи правильный возраст, только цифры') return except: await message.answer(cus_ans.random_reapeat_list()) #прерывание функции return
async def create_profile_social_link(message: types.Message, state: FSMContext): try: if str(message.text) == 'Выйти❌': await state.finish() await magic_start(message) return if str(message.text) == 'Пропустить': await message.answer('Анкета успешно создана!') user_data = await state.get_data() db.create_profile( message.from_user.id, message.from_user.username, str(user_data['profile_name']), str(user_data['profile_description']), str(user_data['profile_city']), 'photo/' + str(message.from_user.id) + '.jpg', str(user_data['profile_sex']), str(user_data['profile_age']), None ) #self,telegram_id,telegram_username,name,description,city,photo,sex,age,social_link await state.finish() await magic_start(message) elif str(message.text).startswith('https://www.instagram.com/'): await state.update_data(profile_link=message.text) await message.answer('Анкета успешно создана!') user_data = await state.get_data() db.create_profile( message.from_user.id, message.from_user.username, str(user_data['profile_name']), str(user_data['profile_description']), str(user_data['profile_city']), 'photo/' + str(message.from_user.id) + '.jpg', str(user_data['profile_sex']), str(user_data['profile_age']), str(user_data['profile_link']) ) #self,telegram_id,telegram_username,name,description,city,photo,sex,age,social_link await state.finish() await magic_start(message) else: await message.answer( 'Ссылка корявая!!\n\nОна должна начинаться с https://www.instagram.com/\n\nК примеру - https://www.instagram.com/helloworldbastard/' ) return except: await message.answer(cus_ans.random_reapeat_list()) #прерывание функции return
async def create_profile_sex(message: types.Message, state: FSMContext): if str(message.text) == 'Выйти❌': await state.finish() await magic_start(message) return if message.text == 'Мужчина' or message.text == 'Женщина': await state.update_data(profile_sex=message.text.lower()) await message.answer( 'Замечательно!\nОсталось совсем чуть-чуть\n\nДавай же узнаем твой возвраст, что бы не сидеть восьмёрку лет если что👮♂️ ' ) await CreateProfile.next() elif message.text == 'Картошка🥔': await message.answer(cus_ans.joke_first()) #прерывание функции return else: await message.answer(cus_ans.random_reapeat_list()) #прерывание функции return
async def create_profile_city(message: types.Message, state: FSMContext): if str(message.text) == 'Выйти❌': await state.finish() await magic_start(message) return if len(message.text) < 35 and (not str(message.text) in cus_ans.ban_symvols): await state.update_data(profile_city=message.text.lower()) await message.answer( 'Прелестно, теперь добавим фотокарточку, что бы все знали какая ты красавица(хихи)🖼\n\nВажно отправлять фотографией, а не файлом!' ) await CreateProfile.next() elif str(message.text) in cus_ans.ban_symvols: await message.answer( 'У тебя в сообщении запрещённые символы🤬🤬\nЗапятая к примеру') else: await message.answer(cus_ans.random_reapeat_list()) #прерывание функции return
async def create_profile_description(message: types.Message, state: FSMContext): if str(message.text) == 'Выйти❌': await state.finish() await magic_start(message) return if len(message.text) < 35 and (not str(message.text) in cus_ans.ban_symvols): await state.update_data(profile_description=message.text) await message.answer( 'Неплохо,неплохо\n\nТеперь предлагаю заполнить город где вы собираетесь трепить🤪' ) await CreateProfile.next() elif str(message.text) in cus_ans.ban_symvols: await message.answer( 'У тебя в сообщении запрещённые символы🤬🤬\nЗапятая к примеру') else: await message.answer(cus_ans.random_reapeat_list()) #прерывание функции return
async def create_profile_name(message: types.Message, state: FSMContext): if str(message.text) == 'Выйти❌': await state.finish() await magic_start(message) return if len(str(message.text)) < 35 and (not str(message.text) in cus_ans.ban_symvols): await state.update_data(profile_name=message.text.lower()) await message.reply( message.text.title() + ' - п*здатое имя😉\nТеперь заполни описание своей личности что бы все поняли кто же ты : \n - инопланетянин👽\n - дурак🤡 \n - гигант мысли🧠 \n - отец русской демократии👪 \n\nбез этого никак прости :9' ) await CreateProfile.next() elif str(message.text) in cus_ans.ban_symvols: await message.answer( 'У тебя в сообщении запрещённые символы🤬🤬\nЗапятая к примеру') else: await message.answer(cus_ans.random_reapeat_list()) #прерывание функции return
async def edit_profile_age(message: types.Message): try: #кнопки для отмены button_cancel = KeyboardButton('Отменить❌') button_cancel_menu = ReplyKeyboardMarkup(one_time_keyboard=True) button_cancel_menu.add(button_cancel) if message.text == 'Изменить количество годиков👶': await message.answer('Введи свой новый возвраст', reply_markup=button_cancel_menu) await EditProfile.age_edit.set() elif message.text == 'Изменить описание анкеты📝': await message.answer('Введи новое хайп описание своей анкеты!', reply_markup=button_cancel_menu) await EditProfile.description_edit.set() except Exception as e: await message.answer(cus_ans.random_reapeat_list()) print(e) return
async def edit_profile_description(message: types.Message, state: FSMContext): '''Функция для обновления описания в бд''' await send_log(message) try: if str(message.text) == 'Отменить❌': await state.finish() await magic_start(message) return await message.answer( 'Прекрасное описание броди\n\nОписание успешно изменено!') await state.update_data(edit_profile_description=message.text) user_data = await state.get_data() db.edit_description(user_data['edit_profile_description'], str(message.from_user.id)) await state.finish() await edit_profile(message) except Exception as e: await message.answer(cus_ans.random_reapeat_list()) print(e) return
async def edit_profile(message: types.Message): '''Функция для меню редактирования анкеты''' await send_log(message) try: if (not db.profile_exists(message.from_user.id)): await message.answer('У тебя нет анкеты!') elif (db.profile_exists(message.from_user.id)): photo = open('photo_user/' + str(message.from_user.id) + '.jpg', 'rb') #кнопки выбора пола button_again = KeyboardButton('Заполнить анкету заново🔄') button_edit_description = KeyboardButton( 'Изменить описание анкеты📝') button_edit_age = KeyboardButton('Изменить количество годиков👶') button_cancel = KeyboardButton('Выйти❌') edit_profile = ReplyKeyboardMarkup(one_time_keyboard=True) edit_profile.add(button_again, button_edit_description, button_edit_age, button_cancel) caption = 'Твоя анкета:\n\nИмя - ' + str( db.all_profile(str(message.from_user.id))[0] [3]).title() + '\nОписание - ' + str( db.all_profile(str(message.from_user.id))[0] [4]) + '\nМесто жительство🌎 - ' + str( db.all_profile(str(message.from_user.id))[0] [5]).title() + '\nСколько годиков?) - ' + str( db.all_profile(str(message.from_user.id))[0][8]) await message.answer_photo(photo, caption=caption, reply_markup=edit_profile) photo.close() except Exception as e: await message.answer(cus_ans.random_reapeat_list()) print(e) return
async def rating_profile(message: types.Message): '''Возвращает рейтинг анкет''' await send_log(message) try: final_top = '' top_count = 0 for i in db.top_rating(): for d in i: top_count += 1 rofl_list = [ '\nебааа#ь ты жёсткий😳', '\nвасап👋', '\nбро полегче там😮', '\nгений🧠', '\nреспект🤟' ] final_top = final_top + str(top_count) + ' место - ' + str( db.get_info(str(d))[3]).title() + ' из города ' + str( db.get_info(str(d))[5]).title() + rofl_list[top_count - 1] + '\n' await message.answer( f'Рейтинг самых п#здатых в этом чат боте😎\nОчки рейтинга получаются с помощью активностей в боте😎\n\n{final_top}' ) except Exception as e: await message.answer(cus_ans.random_reapeat_list()) print(e)
async def seach_profile_step3(message: types.Message, state: FSMContext): '''Функция поиска анкет после отправки пользователя своей оценки(лайк,дизлайк,репорт)''' await send_log(message) try: if str(message.text) == '👍': if str(message.text) == '/start' or str(message.text) == 'Выйти❌': await state.finish() await magic_start(message) user_data = await state.get_data() try: profile_id = db.search_profile( str(db.get_info_user(str(message.from_user.id))[6]), str(db.get_info(str(message.from_user.id))[8]), str(db.get_info(str( message.from_user.id))[7]))[db.search_profile_status( str(message.from_user.id))[0]][0] except IndexError: db.edit_zero_profile_status(message.from_user.id) profile_id = db.search_profile( str(db.get_info_user(str(message.from_user.id))[6]), str(db.get_info(str(message.from_user.id))[8]), str(db.get_info(str( message.from_user.id))[7]))[db.search_profile_status( str(message.from_user.id))[0]][0] except Exception as e: print(e) await state.finish() await magic_start(message) await state.update_data(last_profile_id=profile_id) if db.add_like_exists(str(message.from_user.id), user_data['last_profile_id']) == False: db.add_like(str(message.from_user.id), user_data['last_profile_id']) db.up_rating( db.check_rating(profile_id)[0], user_data['last_profile_id']) db.edit_profile_status( str(message.from_user.id), db.search_profile_status(str(message.from_user.id))[0]) name_profile = str(db.get_info(profile_id)[3]) age_profile = str(db.get_info(profile_id)[8]) description_profile = str(db.get_info(profile_id)[4]) social_link_profile = str(db.get_info(profile_id)[9]) photo_profile = open('photo_user/' + str(profile_id) + '.jpg', 'rb') city = str(user_data['search_profile_city']).title() final_text_profile = f'Смотри, кого для тебя нашёл☺️\n\n{name_profile},{age_profile},{city}\n{description_profile}' await message.answer_photo(photo_profile, caption=final_text_profile) name_profile_self = str(db.get_info(str(message.from_user.id))[3]) age_profile_self = str(db.get_info(str(message.from_user.id))[8]) description_profile_self = str( db.get_info(str(message.from_user.id))[4]) social_link_profile_self = str( db.get_info(str(message.from_user.id))[9]) photo_profile_self = open( 'photo_user/' + str(message.from_user.id) + '.jpg', 'rb') final_text_profile_self = f'Тобой кто то заинтересовался!\nСам в шоке😮..\n\n{name_profile_self},{age_profile_self},{city}\n{description_profile_self}\n\nЧего ты ждёшь,беги знакомиться - @{str(message.from_user.username)}' await bot.send_photo(user_data['last_profile_id'], photo_profile_self, caption=final_text_profile_self) return await state.finish() elif str(message.text) == '👎': if str(message.text) == '/start' or str(message.text) == 'Выйти❌': await state.finish() await magic_start(message) user_data = await state.get_data() try: profile_id = db.search_profile( str(db.get_info_user(str(message.from_user.id))[6]), str(db.get_info(str(message.from_user.id))[8]), str(db.get_info(str( message.from_user.id))[7]))[db.search_profile_status( str(message.from_user.id))[0]][0] except IndexError: db.edit_zero_profile_status(message.from_user.id) profile_id = db.search_profile( str(db.get_info_user(str(message.from_user.id))[6]), str(db.get_info(str(message.from_user.id))[8]), str(db.get_info(str( message.from_user.id))[7]))[db.search_profile_status( str(message.from_user.id))[0]][0] except Exception as e: print(e) await state.finish() await magic_start(message) await state.update_data(last_profile_id=profile_id) db.edit_profile_status( str(message.from_user.id), db.search_profile_status(str(message.from_user.id))[0]) name_profile = str(db.get_info(profile_id)[3]) age_profile = str(db.get_info(profile_id)[8]) description_profile = str(db.get_info(profile_id)[4]) social_link_profile = str(db.get_info(profile_id)[9]) photo_profile = open('photo_user/' + str(profile_id) + '.jpg', 'rb') city = str(user_data['search_profile_city']).title() final_text_profile = f'Смотри, кого для тебя нашёл☺️\n\n{name_profile},{age_profile},{city}\n{description_profile}' await message.answer_photo(photo_profile, caption=final_text_profile) elif str(message.text) == 'Репорт👺': if str(message.text) == '/start' or str(message.text) == 'Выйти❌': await state.finish() await magic_start(message) user_data = await state.get_data() try: profile_id = db.search_profile( str(db.get_info_user(str(message.from_user.id))[6]), str(db.get_info(str(message.from_user.id))[8]), str(db.get_info(str( message.from_user.id))[7]))[db.search_profile_status( str(message.from_user.id))[0]][0] except IndexError: db.edit_zero_profile_status(message.from_user.id) profile_id = db.search_profile( str(db.get_info_user(str(message.from_user.id))[6]), str(db.get_info(str(message.from_user.id))[8]), str(db.get_info(str( message.from_user.id))[7]))[db.search_profile_status( str(message.from_user.id))[0]][0] except Exception as e: print(e) await state.finish() await magic_start(message) #отправка репорта await state.update_data(last_profile_id=profile_id) if (db.report_exists(str(message.from_user.id), user_data['last_profile_id']) == False): db.throw_report(str(message.from_user.id), user_data['last_profile_id']) await message.answer( 'Репорт отправлен!\nСпасибо за улучшение комьюнити🥰') else: await message.answer( 'У вас уже есть репорт на данную анкету!\nЧёж вы его так хейтите..😦' ) db.edit_profile_status( str(message.from_user.id), db.search_profile_status(str(message.from_user.id))[0]) name_profile = str(db.get_info(profile_id)[3]) age_profile = str(db.get_info(profile_id)[8]) description_profile = str(db.get_info(profile_id)[4]) social_link_profile = str(db.get_info(profile_id)[9]) photo_profile = open('photo_user/' + str(profile_id) + '.jpg', 'rb') city = str(user_data['search_profile_city']).title() final_text_profile = f'Смотри, кого для тебя нашёл☺️\n\n{name_profile},{age_profile},{city}\n{description_profile}' await message.answer_photo(photo_profile, caption=final_text_profile) elif str(message.text) == 'Всячина👜': await other(message) elif str(message.text) == 'Откат действий◀️': await backup(message) else: await state.finish() await magic_start(message) except Exception as e: await message.answer(cus_ans.random_reapeat_list()) await state.finish() await magic_start(message) print(e) return
async def seach_profile_step2(message: types.Message, state: FSMContext): '''Функция поиска анкет после отправки пользователя своего города''' await send_log(message) try: await state.update_data(search_profile_city=message.text.lower()) user_data = await state.get_data() db.set_city_search(str(user_data['search_profile_city']), str(message.from_user.id)) if (bool( len( db.search_profile( str(db.get_info_user(str(message.from_user.id))[6]), str(db.get_info(str(message.from_user.id))[8]), str(db.get_info(str(message.from_user.id))[7]))))): try: profile_id = db.search_profile( str(db.get_info_user(str(message.from_user.id))[6]), str(db.get_info(str(message.from_user.id))[8]), str(db.get_info(str( message.from_user.id))[7]))[db.search_profile_status( str(message.from_user.id))[0]][0] except: db.edit_zero_profile_status(message.from_user.id) profile_id = db.search_profile( str(db.get_info_user(str(message.from_user.id))[6]), str(db.get_info(str(message.from_user.id))[8]), str(db.get_info(str( message.from_user.id))[7]))[db.search_profile_status( str(message.from_user.id))[0]][0] await state.update_data(last_profile_id=profile_id) db.edit_profile_status( str(message.from_user.id), db.search_profile_status(str(message.from_user.id))[0]) #кнопки для оценки button_like = KeyboardButton('👍') button_dislike = KeyboardButton('👎') button_other = KeyboardButton('Всячина👜') button_report = KeyboardButton('Репорт👺') mark_menu = ReplyKeyboardMarkup() mark_menu.add(button_dislike, button_like, button_report, button_other) name_profile = str(db.get_info(profile_id)[3]) age_profile = str(db.get_info(profile_id)[8]) description_profile = str(db.get_info(profile_id)[4]) social_link_profile = str(db.get_info(profile_id)[9]) photo_profile = open('photo_user/' + str(profile_id) + '.jpg', 'rb') city = str(db.get_info_user(message.from_user.id)[6]).title() final_text_profile = f'Смотри, кого для тебя нашёл☺️\n\n{name_profile},{age_profile},{city}\n{description_profile}' await message.answer_photo(photo_profile, caption=final_text_profile, reply_markup=mark_menu) await SearchProfile.next() else: await message.answer('Такого города нет или там нет анкет :(') await state.finish() except Exception as e: await message.answer(cus_ans.random_reapeat_list()) await state.finish() await magic_start(message) print(e)