def join_league(bot, update):
    try:
        logger = _get_logger()
        # Validaciones de argumentos
        if not _authenticate(update):
            bot.send_message(chat_id=update.message.chat_id,
                             text="Grupo invalido")
            return
        liga = find_one(LEAGUES_COLLECTION, {"__$STATE": "JOINING"})
        if not liga:
            bot.send_message(chat_id=update.message.chat_id,
                             text="Mi no entender")
            return
        player = find_one(PLAYERS_COLLECTION,
                          {"__$tel_id": update.message.from_user.id})
        if not player:
            bot.send_message(
                chat_id=update.message.chat_id,
                text=
                'No se encontro jugador, recuerde que debe linkear su usuario a un jugador'
            )
            return
        if str(player["__$name"]).lower() in liga["players"]:
            bot.send_message(chat_id=update.message.chat_id,
                             text='El jugador ya se encuentra en la liga')
            return
        liga["players"].append(player["__$name"].lower())
        update_doc(LEAGUES_COLLECTION, {"__$STATE": "JOINING"}, liga)
        bot.send_message(chat_id=liga["__$grupo"],
                         text="@" +
                         str(player["__$name"] + " Exito al unirse a la liga"))
    except Exception as ex:
        bot.send_message(chat_id=update.message.chat_id, text=str(ex))
        logger.exception(ex)
        return
예제 #2
0
def submit_doble(bot, update, args):
    players_team_a = args[0].split("&")
    players_team_b = args[2].split("&")

    player_a_1 = find_one(PLAYERS_COLLECTION,{"$or":[{"__$name":re.compile("^"+players_team_a[0]+"$", re.IGNORECASE)},{"__$tel_name":players_team_a[0][1:]}]})
    if not player_a_1:
        bot.send_message(chat_id=update.message.chat_id, text="Jugador "+str(players_team_a[0])+" no existe")
        return False
    player_a_2 = find_one(PLAYERS_COLLECTION,{"$or":[{"__$name":re.compile("^"+players_team_a[1]+"$", re.IGNORECASE)},{"__$tel_name":players_team_a[1][1:]}]})
    if not player_a_2:
        bot.send_message(chat_id=update.message.chat_id, text="Jugador "+str(players_team_a[1])+" no existe")
        return False

    player_b_1 = find_one(PLAYERS_COLLECTION,{"$or":[{"__$name":re.compile("^"+players_team_b[0]+"$", re.IGNORECASE)},{"__$tel_name":players_team_b[0][1:]}]})
    if not player_b_1:
        bot.send_message(chat_id=update.message.chat_id, text="Jugador "+str(players_team_b[0])+" no existe")
        return False
    player_b_2 = find_one(PLAYERS_COLLECTION,{"$or":[{"__$name":re.compile("^"+players_team_b[1]+"$", re.IGNORECASE)},{"__$tel_name":players_team_b[1][1:]}]})
    if not player_b_2:
        bot.send_message(chat_id=update.message.chat_id, text="Jugador "+str(players_team_b[1])+" no existe")
        return False

    team_a_elo = int((player_a_1["__$elo"] + player_a_2["__$elo"])/2)
    team_b_elo = int((player_b_1["__$elo"] + player_b_2["__$elo"])/2)
    
    new_team_a_elo,new_team_b_elo = _calculate_elo(team_a_elo, team_b_elo, int(args[1]), int(args[3]))
    team_a_dif = ("+" if new_team_a_elo-team_a_elo > 0 else "-") + str(abs(new_team_a_elo-team_a_elo))
    team_b_dif = ("+" if new_team_b_elo-team_b_elo > 0 else "-") + str(abs(new_team_b_elo-team_b_elo))

    player_a_1["__$elo"] = player_a_1["__$elo"] + int(new_team_a_elo-team_a_elo)
    player_a_2["__$elo"] = player_a_2["__$elo"] + int(new_team_a_elo-team_a_elo)
    player_b_1["__$elo"] = player_b_1["__$elo"] + int(new_team_b_elo-team_b_elo)
    player_b_2["__$elo"] = player_b_2["__$elo"] + int(new_team_b_elo-team_b_elo)

    game_id = str(uuid.uuid4())

    match_history = {"__$date":datetime.datetime.today(), "__$game_id":game_id, "type":"double", "team1":players_team_a, "team2":players_team_b}
    match_history[players_team_a[0]] = int(args[1])
    match_history[players_team_a[1]] = int(args[1])
    match_history[players_team_b[0]] = int(args[3])
    match_history[players_team_b[1]] = int(args[3])

    player_a_1["__$history"].append(match_history)
    player_a_2["__$history"].append(match_history)
    player_b_1["__$history"].append(match_history)
    player_b_2["__$history"].append(match_history)

    update_doc(PLAYERS_COLLECTION,{"__$name":player_a_1["__$name"]},player_a_1)
    update_doc(PLAYERS_COLLECTION,{"__$name":player_a_2["__$name"]},player_a_2)
    update_doc(PLAYERS_COLLECTION,{"__$name":player_b_1["__$name"]},player_b_1)
    update_doc(PLAYERS_COLLECTION,{"__$name":player_b_2["__$name"]},player_b_2)

    bot.send_message(chat_id=update.message.chat_id, text="Partido cargado con exito\n"+
                                                        str(player_a_1["__$name"])+ " (" + team_a_dif +"): "+str(int(player_a_1["__$elo"]))+"\n"+
                                                        str(player_a_2["__$name"])+ " (" + team_a_dif +"): "+str(int(player_a_2["__$elo"]))+"\n"+
                                                        str(player_b_1["__$name"])+ " (" + team_b_dif +"): "+str(int(player_b_1["__$elo"]))+"\n"+
                                                        str(player_b_2["__$name"])+ " (" + team_b_dif +"): "+str(int(player_b_2["__$elo"]))+"\n"+
                                                        str(game_id))
def start_league(bot, update):
    try:
        logger = _get_logger()
        if not _authenticate(update):
            bot.send_message(chat_id=update.message.chat_id,
                             text="Grupo invalido")
            return
        league = find_one(LEAGUES_COLLECTION, {"__$STATE": {"$ne": "END"}})
        if league:
            league = find_one(LEAGUES_COLLECTION, {"__$STATE": "JOINING"})
            if not league:
                bot.send_message(chat_id=update.message.chat_id,
                                 text="Ya hay una liga en progreso")
                return
            start_playing_league(bot, update, league)
            bot.send_message(chat_id=update.message.chat_id,
                             text="Inicio la liga: " +
                             league["config"]["nombre_liga"])
            bot.send_message(
                chat_id=update.message.chat_id,
                text="Lista de jugadores:\n" +
                "\n".join([player for player in league["players"]]))
            return
        insert_one(
            LEAGUES_COLLECTION, {
                "__$STATE": "CONFIG",
                "__$DATE": datetime.today(),
                "__$organizador": {
                    "id": update.message.from_user.id,
                    "name": update.message.from_user.username
                },
                "config": {
                    "cant_partidos": 1
                },
                "__$grupo": update.message.chat_id,
                "players": []
            })
        bot.send_message(chat_id=update.message.chat_id,
                         text="La liga esta siendo configurada por: @" +
                         str(update.message.from_user.username))
        custom_keyboard = [['Solo ida', 'Ida y vuelta']]
        reply_markup = telegram.ReplyKeyboardMarkup(custom_keyboard)
        bot.send_message(chat_id=update.message.from_user.id,
                         text="Cantidad de cruces:",
                         reply_markup=reply_markup)
    except Exception as ex:
        bot.send_message(chat_id=update.message.chat_id, text=str(ex))
        logger.exception(ex)
        return
def link(bot, update, args):
    try:
        logger = _get_logger()
        _bot_history("set_elo", update, args)
        # Validaciones de argumentos
        if not _authenticate(update):
            bot.send_message(chat_id=update.message.chat_id,
                             text="Grupo invalido")
            return
        if not args or len(args) != 1:
            bot.send_message(
                chat_id=update.message.chat_id,
                text=
                "Por favor, ingrese el nombre del jugador al que desea vincular su usuario"
            )
            return

        player = find_one(PLAYERS_COLLECTION,
                          {"__$tel_id": update.message.from_user.id})
        if player:
            bot.send_message(chat_id=update.message.chat_id,
                             text="Ya estas vinculado a otro jugador")
            return
        player = find_one(
            PLAYERS_COLLECTION,
            {"__$name": re.compile("^" + args[0] + "$", re.IGNORECASE)})
        if not player:
            bot.send_message(chat_id=update.message.chat_id,
                             text="No se encontro al jugador")
            return
        if "__$link" in player:
            bot.send_message(chat_id=update.message.chat_id,
                             text="El jugador ya se encuentra vinculado")
            return
        user_id = update.message.from_user.id
        user_name = update.message.from_user.username
        update_doc(PLAYERS_COLLECTION,
                   {"__$name": re.compile("^" + args[0] + "$", re.IGNORECASE)},
                   {"$set": {
                       "__$tel_id": user_id,
                       "__$tel_name": user_name
                   }})
        bot.send_message(chat_id=update.message.chat_id,
                         text="Exito al vincular jugador")
    except Exception as ex:
        bot.send_message(chat_id=update.message.chat_id, text=str(ex))
        logger.exception(ex)
        return
def submit_league(bot, update, args):
    try:
        logger = _get_logger()
        # Validaciones de argumentos
        if not _authenticate(update):
            bot.send_message(chat_id=update.message.chat_id,
                             text="Grupo invalido")
            return
        if not submit_result_goals(bot, update, args):
            return
        player_a = args[0]
        player_b = args[2]
        goals_a = int(args[1])
        goals_b = int(args[3])
        league = find_one(LEAGUES_COLLECTION, {"__$STATE": "PLAYING"})
        if not league:
            bot.send_message(chat_id=update.message.chat_id,
                             text='No hay ninguna liga en curso')
            return
        if not _submit_league_game(bot, update, league, player_a, player_b,
                                   goals_a, goals_b):
            return
        bot.send_message(chat_id=update.message.chat_id,
                         text='Partido de liga cargado con exito')
        _validate_end_league(bot, update, league)
    except Exception as ex:
        bot.send_message(chat_id=update.message.chat_id, text=str(ex))
        logger.exception(ex)
        return
def nombre_liga(bot, update):
    try:
        logger = _get_logger()
        liga = find_one(LEAGUES_COLLECTION, {
            "__$STATE": "CONFIG",
            "__$organizador.id": update.message.from_user.id
        })
        if not liga:
            bot.send_message(chat_id=update.message.chat_id,
                             text="Mi no entender")
            return
        liga["config"]["nombre_liga"] = str(update.message.text)[11:]
        liga["__$STATE"] = "JOINING"
        update_doc(LEAGUES_COLLECTION, {
            "__$STATE": "CONFIG",
            "__$organizador.id": update.message.from_user.id
        }, liga)
        reply_markup = telegram.ReplyKeyboardRemove()
        bot.send_message(chat_id=liga["__$grupo"],
                         text="@" + str(liga['__$organizador']["name"]) +
                         " da inicio a la liga: " +
                         str(update.message.text)[11:])
        bot.send_message(chat_id=liga["__$grupo"],
                         text='Escribí /joinliga para unirte a la liga')
        bot.send_message(chat_id=update.message.chat_id,
                         text='Configuracion terminada',
                         reply_markup=reply_markup)
    except Exception as ex:
        bot.send_message(chat_id=update.message.chat_id, text=str(ex))
        logger.exception(ex)
        return
def cruces_partidos(bot, update):
    try:
        logger = _get_logger()
        liga = find_one(LEAGUES_COLLECTION, {
            "__$STATE": "CONFIG",
            "__$organizador.id": update.message.from_user.id
        })
        if not liga:
            bot.send_message(chat_id=update.message.chat_id,
                             text="Mi no entender")
            return
        print(liga)
        cant_partidos = 1 if update.message.text == "Solo ida" else 2
        liga["config"]["cant_partidos"] = cant_partidos
        update_doc(LEAGUES_COLLECTION, {
            "__$STATE": "CONFIG",
            "__$organizador.id": update.message.from_user.id
        }, liga)
        reply_markup = telegram.ReplyKeyboardRemove()
        bot.send_message(
            chat_id=update.message.from_user.id,
            text=
            'Ingrese nombre de la liga (con el formato"NombreLiga:*nombre de la liga")',
            reply_markup=reply_markup)
    except Exception as ex:
        bot.send_message(chat_id=update.message.chat_id, text=str(ex))
        logger.exception(ex)
        return
def admin_player_info(bot, update, args):
    try:
        logger = _get_logger()
        _bot_history("admin_player_info", update, args)
        # Validaciones de argumentos
        if not _authenticate_admin(update):
            bot.send_message(chat_id=update.message.chat_id,
                             text="Requiere autorizacion de un administrador")
            return
        if not args:
            bot.send_message(chat_id=update.message.chat_id,
                             text="Por favor, agregar nombre del jugador")
            return
        elif len(args) != 1:
            bot.send_message(
                chat_id=update.message.chat_id,
                text="Por favor, el nombre del jugador no puede tener espacios"
            )
            return

        player = find_one(
            PLAYERS_COLLECTION, {
                "$or": [{
                    "__$name":
                    re.compile("^" + args[0] + "$", re.IGNORECASE)
                }, {
                    "__$tel_name": args[0][1:]
                }]
            })
        if not player:
            bot.send_message(chat_id=update.message.chat_id,
                             text="El jugador no existe")
            return
        message = "Partidos de " + str(player["__$name"]) + "\n"
        for game in player["__$history"]:
            if "type" not in game:
                enemy = [
                    player for player in list(game.keys())
                    if "__$" not in player
                ]
                if len(enemy) == 1:
                    enemy = enemy[0]
                    message = message + "- " + str(
                        player["__$name"]) + ": " + str(
                            game["__$own"]) + " | " + str(enemy) + ": " + str(
                                game[enemy]
                            ) + " / " + game["__$game_id"] + "\n"
                else:
                    logger.error(game)
        bot.send_message(chat_id=update.message.chat_id, text=message)
    except Exception as ex:
        bot.send_message(chat_id=update.message.chat_id, text=str(ex))
        logger.exception(ex)
        return
def agregar_a_liga(bot, update, args):
    try:
        logger = _get_logger()
        if not _authenticate_admin(update):
            bot.send_message(chat_id=update.message.chat_id,
                             text="Requiere autorizacion de un administrador")
            return
        if not args or len(args) != 1:
            bot.send_message(chat_id=update.message.chat_id,
                             text="Carga solo un jugador")
            return
        league = find_one(LEAGUES_COLLECTION, {"__$STATE": "PLAYING"})
        if not league:
            bot.send_message(chat_id=update.message.chat_id,
                             text="No se està jugando ninguna liga")
            return
        player = find_one(PLAYERS_COLLECTION, {"__$name": args[0]})
        if not player:
            bot.send_message(chat_id=update.message.chat_id,
                             text="Jugador no existe")
            return

        for p in league["players"]:
            tmp = {}
            tmp["games"] = 0
            tmp[player["__$name"]] = 0
            tmp[p] = 0
            league["partidos"].append(tmp)

        league["players"].append(player["__$name"])

        update_doc(LEAGUES_COLLECTION, {"__$STATE": "PLAYING"}, league)
        bot.send_message(chat_id=update.message.chat_id,
                         text="Jugador agregado con exito a la liga!")
    except Exception as ex:
        bot.send_message(chat_id=update.message.chat_id, text=str(ex))
        logger.exception(ex)
        return
예제 #10
0
def submit_simple(bot, update, args):
    player_a = find_one(PLAYERS_COLLECTION,{"$or":[{"__$name":re.compile("^"+args[0]+"$", re.IGNORECASE)},{"__$tel_name":args[0][1:]}]})
    player_a_week = find_one(WEEKLY,{"$or":[{"__$name":re.compile("^"+args[0]+"$", re.IGNORECASE)},{"__$tel_name":args[0][1:]}]})
    if not player_a:
        bot.send_message(chat_id=update.message.chat_id, text="El primero jugador no existe")
        return False
    player_b = find_one(PLAYERS_COLLECTION,{"$or":[{"__$name":re.compile("^"+args[2]+"$", re.IGNORECASE)},{"__$tel_name":args[2][1:]}]})
    player_b_week = find_one(WEEKLY,{"$or":[{"__$name":re.compile("^"+args[2]+"$", re.IGNORECASE)},{"__$tel_name":args[2][1:]}]})
    if not player_b:
        bot.send_message(chat_id=update.message.chat_id, text="El segundo jugador no existe")
        return False
    player_a_elo,player_b_elo = _calculate_elo(player_a["__$elo"], player_b["__$elo"], int(args[1]), int(args[3]))
    player_a_elo_week,player_b_elo_week = _calculate_elo(player_a_week["__$elo"], player_b_week["__$elo"], int(args[1]), int(args[3]))
    player_a_dif = ("+" if player_a_elo-player_a["__$elo"] > 0 else "-") + str(abs(player_a_elo-player_a["__$elo"]))
    player_b_dif = ("+" if player_b_elo-player_b["__$elo"] > 0 else "-") + str(abs(player_b_elo-player_b["__$elo"]))
    player_a["__$elo"] = player_a_elo
    player_b["__$elo"] = player_b_elo
    player_a_week["__$elo"] = player_a_elo_week
    player_b_week["__$elo"] = player_b_elo_week
    game_id = str(uuid.uuid4())
    match_history_a = {"__$date":datetime.datetime.today(),"__$own":int(args[1]), "__$game_id":game_id}
    match_history_a[str(player_b["__$name"])] = int(args[3])
    match_history_b = {"__$date":datetime.datetime.today(),"__$own":int(args[3]), "__$game_id":game_id}
    match_history_b[str(player_a["__$name"])] = int(args[1])
    player_a["__$history"].append(match_history_a)
    player_b["__$history"].append(match_history_b)
    player_a_week["__$history"].append(match_history_a)
    player_b_week["__$history"].append(match_history_b)
    update_doc(PLAYERS_COLLECTION,{"__$name":player_a["__$name"]},player_a)
    update_doc(PLAYERS_COLLECTION,{"__$name":player_b["__$name"]},player_b)
    update_doc(WEEKLY,{"__$name":player_a["__$name"]},player_a_week)
    update_doc(WEEKLY,{"__$name":player_b["__$name"]},player_b_week)
    bot.send_message(chat_id=update.message.chat_id, text="Partido cargado con exito\n"+
                                                        str(player_a["__$name"])+ " (" + player_a_dif +"): "+str(int(player_a_elo))+"\n"+
                                                        str(player_b["__$name"])+ " (" + player_b_dif +"): "+str(int(player_b_elo))+"\n"+
                                                        str(game_id))
예제 #11
0
def _validate_end_league(bot,update,league,ignore_games=False):
    if not ignore_games:
        for partido in league["partidos"]:
            if partido["games"] != league["config"]["cant_partidos"]:
                return
    league["__$STATE"] = "END"
    update_doc(LEAGUES_COLLECTION,{"__$STATE":"PLAYING"},league)
    bot.send_message(chat_id=league["__$grupo"], text='Finalizo la liga: ' + str(league["config"]["nombre_liga"]))
    date = datetime.datetime.today()
    for player in _calculta_league_position(league):
        player_data = find_one(PLAYERS_COLLECTION,{"__$name":re.compile("^"+player["NAME"]+"$", re.IGNORECASE)})
        player_data["__$elo"]+=(player["POINTS"]*len(league["players"]))
        player_data["__$history"].append({"type":"liga","points":player["POINTS"],"name":league["config"]["nombre_liga"],"__$date":date,"players":len(league["players"])})
        update_doc(PLAYERS_COLLECTION,{"__$name":re.compile("^"+player["NAME"]+"$", re.IGNORECASE)},player_data)
    _render_league_image(bot, update, league, overrideChatId=league["__$grupo"])
    _render_league_games(bot, update, league, overrideChatId=league["__$grupo"])
def add_player(bot, update, args):
    try:
        logger = _get_logger()
        _bot_history("add_player", update, args)
        # Validaciones de argumentos
        if not args:
            bot.send_message(chat_id=update.message.chat_id,
                             text="Por favor, agregar nombre del jugador")
            return
        elif len(args) != 1:
            bot.send_message(
                chat_id=update.message.chat_id,
                text="Por favor, el nombre del jugador no puede tener espacios"
            )
            return
        elif "__$" in args[0]:
            bot.send_message(chat_id=update.message.chat_id,
                             text="Nombre invalido, no se acepta el simbolo $")
            return
        if not _authenticate(update):
            bot.send_message(chat_id=update.message.chat_id,
                             text="Grupo invalido")
            return
        player = find_one(
            PLAYERS_COLLECTION,
            {"__$name": re.compile("^" + args[0] + "$", re.IGNORECASE)})
        if not player:
            insert_one(PLAYERS_COLLECTION, {
                "__$name": args[0],
                "__$elo": 1800,
                "__$history": []
            })
            insert_one(WEEKLY, {
                "__$name": args[0],
                "__$elo": 1800,
                "__$history": []
            })
        else:
            bot.send_message(chat_id=update.message.chat_id,
                             text="El jugador ya existe")
            return
        bot.send_message(chat_id=update.message.chat_id,
                         text="Jugador agregado con exito")
    except Exception as ex:
        logger.exception(ex)
        bot.send_message(chat_id=update.message.chat_id, text=str(ex))
        return
def league_games(bot, update):
    try:
        logger = _get_logger()
        # Validaciones de argumentos
        if not _authenticate(update):
            bot.send_message(chat_id=update.message.chat_id,
                             text="Grupo invalido")
            return
        league = find_one(LEAGUES_COLLECTION, {"__$STATE": "PLAYING"})
        if not league:
            bot.send_message(chat_id=update.message.chat_id,
                             text='No hay ninguna liga en curso')
            return
        _render_league_games(bot, update, league)
    except Exception as ex:
        bot.send_message(chat_id=update.message.chat_id, text=str(ex))
        logger.exception(ex)
        return
def end_league(bot, update):
    try:
        logger = _get_logger()
        if not _authenticate_admin(update):
            bot.send_message(chat_id=update.message.chat_id,
                             text="Requiere autorizacion de un administrador")
            return
        league = find_one(LEAGUES_COLLECTION, {"__$STATE": "PLAYING"})
        if not league:
            bot.send_message(chat_id=update.message.chat_id,
                             text="No se està jugando ninguna liga")
            return
        _validate_end_league(bot, update, league, ignore_games=True)
        bot.send_message(chat_id=update.message.chat_id, text="Liga terminada")
    except Exception as ex:
        bot.send_message(chat_id=update.message.chat_id, text=str(ex))
        logger.exception(ex)
        return
def player_statics(bot, update, args):
    try:
        logger = _get_logger()
        _bot_history("player_statics", update, args)
        # Validaciones de argumentos
        if not _authenticate(update):
            bot.send_message(chat_id=update.message.chat_id,
                             text="Grupo invalido")
            return
        if not args:
            args = [str(update.message.from_user.id)]
        elif len(args) != 1:
            bot.send_message(
                chat_id=update.message.chat_id,
                text="Por favor, el nombre del jugador no puede tener espacios"
            )
            return

        query = {
            "$or": [{
                "__$name": re.compile("^" + args[0] + "$", re.IGNORECASE)
            }, {
                "__$tel_name": args[0][1:]
            }]
        }
        try:
            query["$or"].append({"__$tel_id": int(args[0])})
        except:
            pass
        player = find_one(PLAYERS_COLLECTION, query)
        if not player:
            bot.send_message(chat_id=update.message.chat_id,
                             text="El jugador no existe")
            return
        message = "Estadisticas de " + str(player["__$name"]) + "\n"
        games_dict = {}
        for game in player["__$history"]:
            if "type" not in game:
                enemy = [
                    player for player in list(game.keys())
                    if "__$" not in player
                ]
                if len(enemy) == 1:
                    enemy = enemy[0]
                    if enemy not in games_dict:
                        games_dict[enemy] = {"own": 0, "enemy": 0}
                    games_dict[enemy]["own"] = games_dict[enemy]["own"] + int(
                        game["__$own"] > game[enemy])
                    games_dict[enemy]["enemy"] = games_dict[enemy][
                        "enemy"] + int(game[enemy] > game["__$own"])
                else:
                    logger.error(game)
        for key in games_dict:
            percent = 100 * (
                float(games_dict[key]["own"]) /
                float(games_dict[key]["own"] + games_dict[key]["enemy"]))
            message = message + str(player["__$name"]) + ": " + str(
                games_dict[key]["own"]) + " | " + str(key) + ": " + str(
                    games_dict[key]["enemy"]) + " - (" + str(round(percent,
                                                                   1)) + "%)\n"

        average_goals, average_percent_games, games_played = _get_average_stats(
            player, percent=True)
        message = message + "Promedio diferencia de goles: " + str(
            average_goals) + "\n"
        message = message + "Promedio de partidos ganados: " + str(
            average_percent_games) + "%\n"
        message = message + "Partidos jugados: " + str(games_played) + "\n"
        bot.send_message(chat_id=update.message.chat_id, text=message)
    except Exception as ex:
        bot.send_message(chat_id=update.message.chat_id, text=str(ex))
        logger.exception(ex)
        return