def check_off_tasks(message): id = message.chat.id user = players.users.get(id) if user is None: bot.send_message(id, config.unknown_error) return if was_help_cmd(message): help_cmd(message) return num = user.curr_off_task l = message.text.split(' ') code = offtxt.final_ans[num] if len(l) > 1: bot.send_message(id, config.offline_too_much_words_in_code_error) bot.register_next_step_handler(message, server) return if len(message.text) != len(code): bot.send_message(id, config.offline_mismatch_len_code_error) bot.register_next_step_handler(message, server) return if message.text == code: user.curr_off_task += 1 saver.save_users(players.users) if user.curr_off_task >= config.offline_num_final_tasks: final(message) else: bot.send_message(id, 'Верный ответ!') tasks(message) else: bot.send_message(id, config.offline_wrong_code_error) bot.register_next_step_handler(message, check_off_tasks)
def server(message): id = message.chat.id user = players.users.get(id) if user is None: bot.send_message(id, config.unknown_error) return if was_help_cmd(message): help_cmd(message) return user.check_point = config.offline_check_points[4] logger.log_event(user.uid, 'Server', user.name) saver.save_users(players.users) code = offtxt.server_code l = message.text.split(' ') if len(l) > 1: bot.send_message(id, config.offline_too_much_words_in_code_error) bot.register_next_step_handler(message, server) return if len(l[0]) != len(code): bot.send_message(id, config.offline_mismatch_len_code_error) bot.register_next_step_handler(message, server) return if message.text == code: bot.send_message(id, 'Осталось уже совсем немного...') tasks(message) else: bot.send_message(id, config.offline_wrong_code_error) bot.register_next_step_handler(message, server)
def traf(message): id = message.chat.id user = players.users.get(id) if user is None: bot.send_message(id, config.unknown_error) return if message.text == '/continue': bot.send_message(id, 'Введите код с трафарета') bot.register_next_step_handler(message, traf) return if was_help_cmd(message): help_cmd(message) return user.check_point = config.offline_check_points[3] logger.log_event(user.uid, 'Traf', user.name) saver.save_users(players.users) code = offtxt.traf_codes[user.uid] l = message.text.split(' ') if len(l) > 1: bot.send_message(id, config.offline_too_much_words_in_code_error) bot.register_next_step_handler(message, traf) return if len(l[0]) != len(code): bot.send_message(id, config.offline_mismatch_len_code_error) bot.register_next_step_handler(message, traf) return if message.text == code: bot.send_photo(id, offtxt.traf_photo_id, caption='Найдите его...') bot.register_next_step_handler(message, server) else: bot.send_message(id, config.offline_wrong_code_error) bot.register_next_step_handler(message, traf)
def check_task(message): user = players.users.get(message.chat.id) func = 'nope' if check_task_format(user.curr_online_task, message.text): if message.text.lower() == text.ans[user.curr_online_task]: prev_task = user.curr_online_task reset_user_attempts(user) user.add_points(config.points_for_task) if user.curr_online_task == user.online_start_task: bot.send_message(message.chat.id, config.online_task_ending) pass # Здесь будет переход к оффлайн части квеста else: bot.send_message(message.chat.id, config.online_task_accepted) send_text(message.chat.id, prev_task) func = 'send_task' else: user.online_attempt -= 1 if user.online_attempt > 0: bot.send_message( message.chat.id, config.online_task_wrong_answer + str(user.online_attempt)) func = 'check_task' else: prev_task = user.curr_online_task reset_user_attempts(user) bot.send_message(message.chat.id, config.online_task_end_of_attempts) send_text(message.chat.id, prev_task) func = 'send_task' saver.save_users(players.users) else: bot.send_message(message.chat.id, config.online_task_wrong_format) func = 'check_task' return func
def final(message): id = message.chat.id user = players.users.get(id) if user is None: bot.send_message(id, config.unknown_error) return user.check_point = config.offline_check_points[6] logger.log_event(user.uid, 'Final', user.name) saver.save_users(players.users) bot.send_message(id, config.offline_final_txt) bot.register_next_step_handler(message, check_final)
def tasks(message): id = message.chat.id user = players.users.get(id) if user is None: bot.send_message(id, config.unknown_error) return user.check_point = config.offline_check_points[5] logger.log_event(user.uid, 'Tasks', user.name) saver.save_users(players.users) num = user.curr_off_task bot.send_message(id, offtxt.final_tasks[num]) bot.register_next_step_handler(message, check_off_tasks)
def book_code(message): id = message.chat.id user = players.users.get(id) if user is None: bot.send_message(id, config.unknown_error) return user.check_point = config.offline_check_points[1] logger.log_event(user.uid, 'Books', user.name) saver.save_users(players.users) task = offtxt.books_names[user.uid] bot.send_message(id, config.offline_books_text1 + task + config.offline_books_text2) bot.register_next_step_handler(message, check_books)
def del_user(message): words = message.text.split(' ') i = 0 if words[0] == 'NOPE': return while words[i] != 'ChatID:': i += 1 if int(words[i + 1]) >= 0: deleted = players.users.pop(int(words[i + 1]), None) bot.send_message(message.chat.id, 'Пользователь успешно удален!') logger.log_text('Successful', 'Delete') saver.save_users(players.users)
def anti_photo(message): id = message.chat.id user = players.users.get(id) if user is None: bot.send_message(id, config.unknown_error) return user.check_point = config.offline_check_points[2] logger.log_event(user.uid, 'Anti-photo', user.name) saver.save_users(players.users) a = offtxt.photocross_tasks[user.uid] bot.send_message(id, config.offline_photocross_text) for i in range(len(a)): bot.send_photo(id, offtxt.photocross_id[a[i]]) bot.register_next_step_handler(message, check_photos)
def set_name(message): id = message.chat.id user = players.users.get(id) if user is not None: if message.text.find('ChatID:') == -1 and message.text.find('NOPE') == -1: logger.log_event(message.chat.id, 'Changed name to "' + message.text + '"', get_user_name(message.chat.id)) players.users[id].name = message.text saver.save_users(players.users) bot.send_message(id, 'Приятно познакомиться, ' + message.text) else: bot.send_message(id, config.set_name_error) bot.register_next_step_handler(message, set_name) else: players.users[id] = players.User(id, players.number_of_users) players.number_of_users += 1 players.users[id].name = message.text players.users[id].is_running = True saver.save_users(players.users) bot.send_message(id, 'Приятно познакомиться, ' + message.text) bot.send_message(id, 'Если готовы начать - отправьте любое сообщение!') bot.register_next_step_handler(message, online_start)
def get_token(message): if players.verify_token(message.text, 'user'): bot.send_message(message.chat.id, 'Отлично! Теперь давайте знакомиться, скажите название вашей команды') bot.register_next_step_handler(message, set_name) elif players.verify_token(message.text, 'admin'): players.users[message.chat.id] = players.Admin(message.chat.id) saver.save_users(players.users) bot.send_message(message.chat.id, "Вы успешно повышены до администратора!") set_name_cmd(message) elif players.verify_token(message.text, 'kp'): players.users[message.chat.id] = players.KP(message.chat.id) offtxt.locker_kp.append(players.users[message.chat.id]) saver.save_users(players.users) bot.send_message(message.chat.id, "Вы успешно повышены до КПшника!") set_name_cmd(message) elif players.verify_token(message.text, 'super'): players.users[message.chat.id] = players.Admin(message.chat.id, is_super=True) saver.save_users(players.users) bot.send_message(message.chat.id, "Вы теперь мой царь и бог!") set_name_cmd(message) else: logger.log_text('Unsuccessful promotion!', 'Verify_token') bot.send_message(message.chat.id, config.token_error) bot.send_message(message.chat.id, 'Попробуйте еще раз') bot.register_next_step_handler(message, get_token)