def process_lab_remove_info(message): global Q, queue_name, bot, state_table username = message.from_user.username chat_id = message.chat.id is_admin = username in ADMIN_USER is_student = USERS.get(username) is not None lab = None try: lab = int(message.text.strip()) if lab <= 0: lab = None raise ValueError("Lab number must be greater than 0") except ValueError: bot.send_message(chat_id, "Неправильный формат ввода.") if lab is not None: query = Q.record_present(username, lab) if query is not None: Q.remove(username, lab) update_backup() bot.send_message( chat_id, "Ваша запись удалена. Теперь вы не сдаёте лабу номер " + str(lab)) else: bot.send_message(chat_id, "Ты эту лабу и так не сдаёшь!") state_table[username] = BotState.READING_COMMAND
def get_user_rating(username, lab): name = USERS.get(username) if name is None: raise ValueError("User @" + username + "is not registered") elif lab <= 0: raise ValueError("Lab id must be positive") elif lab > len(leaderboard): raise LeaderboardLabError(username, lab) elif name not in leaderboard[lab - 1]: raise LeaderboardUserError(username, lab) else: return leaderboard[lab - 1][name]
def process_new_queue_name(message): global Q, queue_name, bot, state_table username = message.from_user.username chat_id = message.chat.id is_admin = username in ADMIN_USER is_student = USERS.get(username) is not None Q = Queue() update_backup() queue_name = message.text bot.send_message(chat_id, "Название очереди изменено на `" + queue_name + "`") state_table[username] = BotState.READING_COMMAND
def process_command(message): global Q, queue_name, bot, state_table, handing_stats username = message.from_user.username chat_id = message.chat.id is_admin = username in ADMIN_USER is_student = USERS.get(username) is not None is_teacher = False if message.text == create_new_queue_cmd and is_admin: bot.send_message(chat_id, "Введите название очереди:") state_table[username] = BotState.READING_QUEUE_NAME elif message.text == show_current_queue_cmd and (is_admin or is_student): log_queue(chat_id) elif message.text == add_to_queue_cmd and is_student: bot.send_message(chat_id, "Введите номер лабы, на которую хотите записаться") state_table[username] = BotState.READING_LAB_APPEND_DATA elif message.text == leave_queue_cmd and is_student: bot.send_message(chat_id, "Введите номер лабы, запись которой надо убрать") state_table[username] = BotState.READING_LAB_REMOVE_DATA elif message.text == show_position and is_student: query = Q.record_present(username, None) if query is None: bot.send_message(chat_id, "Тебя нет в очереди") else: bot.send_message( chat_id, "Ваша позиция в очереди: " + str(query.index + 1) + "!\nЭто Ваша БЛИЖАЙШАЯ позиция в очереди") elif message.text == display_first_cmd and is_teacher: pass elif message.text == show_handing_stats: msg = "Таблица сдачи лаб\n" for (i, b) in enumerate(iter(handing_stats[username])): labN = i + 1 if b: st = "*сдана*" else: st = "*не сдана*" msg += ("Лаба №" + str(labN) + " " + st + "\n") bot.send_message(chat_id, msg, parse_mode="MarkdownV2") else: bot.send_message( chat_id, "Неопознанная команда или у Вас нет прав на такую команду")
def send_welcome(message): username = message.from_user.username chat_id = message.chat.id sti = open("graphics/sticker.webp", "rb") if username in ADMIN_USER: bot.send_message(chat_id, "Привет, admin!") bot.send_sticker(chat_id, sti) # keyboard markup = types.ReplyKeyboardMarkup(row_width=1) item1 = types.KeyboardButton(create_new_queue_cmd) item2 = types.KeyboardButton(show_current_queue_cmd) markup.add(item1, item2, item3, item4) bot.send_message(chat_id, "Выбeрите функцию:", reply_markup=markup) elif USERS.get(username) is not None: bot.send_message(chat_id, "Привет, " + USERS[username] + "!") bot.send_sticker(chat_id, sti) # keyboard markup = types.ReplyKeyboardMarkup(row_width=1) item1 = types.KeyboardButton(show_current_queue_cmd) item2 = types.KeyboardButton(add_to_queue_cmd) item3 = types.KeyboardButton(leave_queue_cmd) item4 = types.KeyboardButton(show_position) markup.add(item1, item2, item3, item4) bot.send_message(chat_id, "Выбeрите функцию:", reply_markup=markup) else: bot.send_message( chat_id, "Привет, я тебя не знаю!\nЯ не умею работать с пользователей, которых не знаю!\nНапиши Никите Пологову, возможно это какая-то ошибка" )
def process_lab_append_info(message): global Q, queue_name, bot, state_table username = message.from_user.username chat_id = message.chat.id is_admin = username in ADMIN_USER is_student = USERS.get(username) is not None lab, rating = None, None try: lab = int(message.text.strip()) if lab <= 0: lab = None raise ValueError("Lab number must be greater than 0") except ValueError: bot.send_message(chat_id, "Неправильный формат ввода.") if lab is not None: query = Q.record_present(username, lab) if query is not None: bot.send_message(chat_id, "Ты уже есть в очереди!") else: try: Q.push(QueueElement(username, lab)) update_backup() bot.send_message(chat_id, "Поздравляю. Ты записан в очередь.") except LeaderboardLabError as err: print("@" + username + "has caused the following error:\n" + str(err)) err_msg = "Приносим свои извинения, но у нас пока не загружена таблица лабы №" + str( lab) + ".\n" + err_msg_ps bot.send_message(chat_id, err_msg) except LeaderboardUserError as err: print("@" + username + "has caused the following error:\n" + str(err)) err_msg = "Приносим свои извинения, но мы не нашли Вас в таблице лабы №" + str( lab) + ".\nВозможно наши данные устарели.\n" + err_msg_ps bot.send_message(chat_id, err_msg) state_table[username] = BotState.READING_COMMAND
def get_pw(username): if username in USERS: return USERS.get(username) return None
def load_user(id): return USERS.get(int(id))