async def play_game(message): print("{} play game".format(message.chat.username)) user_data = UserData(message.chat.id) print(user_data.get_count_answers()) if user_data.get_count_answers() != 0: db_worker = SQLither(config.database_name) db_worker.insert_answer(message.chat.id, user_data.get_question_id(), message.text) db_worker.update_last_activity(message.chat.id, time.time()) db_worker.close() if user_data.get_count_answers() >= Questions.get_questions_limit(): markup = types.ReplyKeyboardMarkup(one_time_keyboard=False, resize_keyboard=True) markup.add(string_worker.get_yes_button()) markup.add(string_worker.get_no_button()) await send_message(message.chat.id, string_worker.get_ask_feedback(), reply_markup=markup) user_data.delete() return next_question_id = Questions.get_next_random_question_id(user_data.get_answers_id()) user_data.set_question_id(next_question_id) question_text = Questions.get_question(next_question_id) if Questions.is_time_to_praise(user_data.get_count_answers()): await send_message(message.chat.id, string_worker.get_praise(user_data.get_count_answers())) user_data.save() await send_message(message.chat.id, "<b>{}.</b> {}".format(user_data.get_count_answers(), question_text), parse_mode='HTML') if Questions.is_gif_time(user_data.get_count_answers()): await asyncio.sleep(10) await bot.send_chat_action(message.chat.id, 'upload_video') await asyncio.sleep(5) await bot.send_video(message.chat.id, config.pic_begin_game)
def test_is_image_present(stored_username, stored_img_name, username, img_name, expected): from server import is_image_present user = LogIn(username=stored_username) user.save() user_data = UserData(username=user, image_name=[stored_img_name]) user_data.save() value = is_image_present(username, img_name) assert expected == value UserData.objects.raw({"_id": stored_username}).delete() LogIn.objects.raw({"_id": stored_username}).delete()
def test_is_first_upload(stored_username, username, expected): from server import is_first_upload user = LogIn(username=stored_username) user.save() user_data = UserData(username=user, image_name=['.'], image=['.'], processing_time=['.'], image_size=['.'], hist_data=['.'], upload_date=['.']) user_data.save() value = is_first_upload(username) assert expected == value UserData.objects.raw({"_id": stored_username}).delete() LogIn.objects.raw({"_id": stored_username}).delete()
def test_inverted_image_upload(username, filepath, expected): from server import inverted_image_upload user = LogIn(username=username) user.save() user_data = UserData(username=user, image_name=['.'], image=['.'], processing_time=['.'], image_size=['.'], hist_data=['.'], upload_date=['.']) user_data.save() inverted_image_upload(username, filepath) users = UserData.objects.raw({"_id": username}) stored_name = '' for user in users: stored_name = user.image_name assert expected == stored_name[1] UserData.objects.raw({"_id": username}).delete() LogIn.objects.raw({"_id": username}).delete()
async def handle_main_menu_input(message: types.Message): if not message.chat.id in config.admins: user_data = UserData(message.chat.id) if user_data.is_active: return user_data.set_is_active(True) user_data.save() if message.text == string_worker.get_yes_button( ) or message.text == string_worker.get_no_button(): feedback = 0 if message.text == string_worker.get_yes_button(): feedback = 1 db_worker = SQLither(config.database_name) db_worker.insert_feedback(message.chat.id, feedback) db_worker.close() print("{} set {} feedback".format(message.chat.username, feedback)) user_data.set_question_id(-1) user_data.save() await send_message(message.chat.id, string_worker.get_result_message(), reply_markup=types.ReplyKeyboardRemove()) await result(message) else: await play_game(message) user_data = UserData(message.chat.id) user_data.set_is_active(False) user_data.save() else: if message.text == string_worker.get_list_users_button(): db_worker = SQLither(config.database_name) utils.generate_list_users(db_worker) db_worker.close() await bot.send_document(message.chat.id, open(config.users_file, 'rb')) # elif message.text == string_worker.get_delete_data_button(): # db_worker = SQLither(config.database_name) # users = db_worker.select_real_users_in_bot() # for user in users: # user_data = UserData(user.get_user_id()) # user_data.delete() # db_worker.delete_all_data() # db_worker.close() # await send_message(message.chat.id, 'Данные удалено') elif message.text == 'Start cheering users :)': await start_cheering_real_users()
def original_upload(username, filepath): """Performs encoding and uploads to database along with associated data metrics (upload time, processing time, histogram, size). Checks to see if username is already associated with a UserData document and uploads accordingly. Args: username (str): username to upload to in database filepath (str): filepath of image to be processed and encoded Returns: None """ # Read original image from filepath image = skimage.io.imread(filepath) # Process image and encode it. start_time = time.time() image_encode = encode_array(image) processing_time = str(time.time() - start_time) # Create image name image_name = img_name_from_filepath(filepath, "_original") # Calc image size image_size = get_num_pixels(image) # Get date and time upload_date = datetime.now().strftime("%Y-%m-%d %H:%M:%S:%f") # Calc histogram data. Produces {"red": ndarray, "green....} # Use each color spectrum for analysis via processing, then # concatenate back together with img = np.dstack(red, green, blue) hist_data = pixel_histogram(image) hist_encode = encode_dict(hist_data) # Check if previous images exist if is_first_upload(username): # If first upload, create document user = UserData(username=username, image_name=[image_name], image=[image_encode], processing_time=[processing_time], image_size=[image_size], hist_data=[hist_encode], upload_date=[upload_date]) user.save() else: # Save image to database UserData.objects.raw({ "_id": username }).update({ "$push": { "image_name": image_name, "image": image_encode, "processing_time": processing_time, "image_size": image_size, "hist_data": hist_encode, "upload_date": upload_date } }) return
async def start(message: types.Message): print("{} has id {}".format(message.chat.username, message.chat.id)) # for question in Questions.questions: # await send_message(message.chat.id, question, parse_mode='HTML') if message.chat.id in config.admins: markup = types.ReplyKeyboardMarkup(one_time_keyboard=False, resize_keyboard=True) markup.add(string_worker.get_list_users_button()) # markup.add(string_worker.get_delete_data_button()) await send_message(message.chat.id, string_worker.get_instructions(), parse_mode='HTML', reply_markup=markup) return else: # user_data = UserData(message.chat.id) # user_data.delete() user_data = UserData(message.chat.id) user_data.set_is_active(True) user_data.save() db_worker = SQLither(config.database_name) if db_worker.is_user_exist(message.chat.id): await send_message(message.chat.id, string_worker.get_pass_one_time()) return else: db_worker.update_last_activity(message.chat.id, time.time()) db_worker.insert_user(message.chat.id, message.chat.first_name, message.chat.last_name, message.chat.username) db_worker.close() markup = types.ReplyKeyboardRemove() await send_message(message.chat.id, string_worker.get_hello(), parse_mode='HTML', reply_markup=markup) await asyncio.sleep(10) await bot.send_chat_action(message.chat.id, 'upload_video') await asyncio.sleep(5) await bot.send_video(message.chat.id, config.pic_begin_game) await asyncio.sleep(5) next_question_id = Questions.get_next_random_question_id( user_data.get_answers_id()) user_data.set_question_id(next_question_id) question_text = Questions.get_question(next_question_id) await send_message(message.chat.id, "<b>{}.</b> {}".format( user_data.get_count_answers(), question_text), parse_mode='HTML') user_data.set_is_active(False) user_data.save()