Ejemplo n.º 1
0
def join_in(team):
    cid = team.message.chat.id
    uid = team.from_user.id
    mid = team.message.message_id
    unick = team.from_user.username
    uteam = team.data #Equivale al valor de la lista que se corresponde con el botón clickado
    if comp.existe_comp(cid):
        if user.existe_user(uid, cid):
            if user.team_full(cid, uteam):
                message = "Ese equipo esta lleno " + unick + ", elige uno con menos de 2 pilotos"
                bot.send_message(team.message.chat.id, message)
            else:
                #Si el usuario que clicka ya está en la competición y el equipo
                #que selecciona no está lleno, lo cambia de equipo
                if(user.change_team(cid, uid, uteam)):
                    #Actualiza el mensaje que acompaña al teclado, su estructura está
                    #en libs/keyboard.py
                    bot.edit_message_text(keyboard_message(cid), cid, mid, reply_markup = keyboard_team)
        else:
            if user.team_full(cid, uteam):
                message = "Ese equipo esta lleno " + unick + ", elige uno con menos de 2 pilotos"
                bot.send_message(team.message.chat.id, message)

            else:
                #Para un usuario nuevo, que selecciona un equipo que no está lleno
                #mete los campos necesarios en la base de datos
                user.join_in(cid, uid, unick, uteam)
                #Actualiza el mensaje que acompaña al teclado, su estructura está
                #en libs/keyboard.py
                bot.edit_message_text(keyboard_message(cid), cid, mid, reply_markup = keyboard_team)
    else:
        bot.send_message(team.message.chat.id, "No hay competicion en este grupo todavia")
        bot.send_message(team.message.chat.id, "Puedes empezar una con /st_comp")
Ejemplo n.º 2
0
def new_competition(m):
    #Este comando crea la competición y manda el seleccionador de equipos
    cid = m.chat.id #Chat_id
    cname = m.chat.title #Nombre del chat
    uid = m.from_user.id
    #Para comprobar si el chat es un grupo o no, miramos su id (los grupos tienen id negativa)
    if cid > 0:
        send(m, "Error!! Debes crear la competicion en un grupo")
    elif cid < 0:
        if comp.existe_comp(cid):
            send(m, "Ya hay una competicion en este grupo")
        else:
            comp.create_comp(cid)
            send(m, "La competicion se ha creado")
            #Establece al creador de la competición como administrador de la misma
            comp.add_admin(cid, uid, cname)
            #Manda el mensaje de los equipos con el teclado cuando se crea la competición
            message = bot.send_message(cid, keyboard_message(cid), reply_markup = keyboard_team)
            mid = message.message_id
            bid = message.from_user.id
            #Los campos como can_pin_messages solo existen en el objeto ChatMember
            botMember = bot.get_chat_member (cid, bid)
            #Si el bot tiene capacidad para anclar mensajes, lo ancla, si no, manda un mensaje
            if botMember.can_pin_messages or botMember.can_edit_messages:
                bot.pin_chat_message (cid, mid)
            else: send(m, 'Si conviertes el grupo en un supergrupo, me haces administrador '
                          'con derecho a anclar mensajes y vuelves a crear la competición, '
                          'puedo anclar el mensaje de los equipos con el teclado al grupo')
            #Abre el chat privado con el admin
            bot.send_message(uid, "Desde este chat, podras administrar tus competiciones usando /my_comps")
    else:
            print "Se produjo un fallo E:001"
Ejemplo n.º 3
0
def end_race(m):
    # Este comando es uno de los mas importantes
    # Dará por terminada la carrera, sumará los puntos e imprimirá la clasificación
    # También dejará todos los tiempos a 0 de nuevo
    cid = m.chat.id
    uid = m.from_user.id
    uname = m.from_user.username

    if comp.existe_comp(cid):
        if user.is_admin(cid, uid):
            # Comprobamos que todos los juagdores han metido su tiempo
            if timef.all_times_defined(cid):
                send(m, "La carrera ha terminado")
                # Damos los puntos a los jugadores
                #Y mostramos las clasificaciones de la carrera y el campeonato
                timef.give_points(cid)
                lrace_info(m)
                clasif_info(m)
                #Se termina la carrera y muestra información sombre la siguiente
                comp.plus_race_bycomp(cid)
                timef.reset_time(cid)
                next_race(m)
            else:
                send(m, "Todos los pilotos no han metido su tiempo, pueden hacerlo con /time <M:S:MM>")
        else:
            message = uname + " no tiene permisos para realizar esa operacion"
            send(m, message)
    else:
        send(m, 'No hay competicion en este grupo')
        send(m, 'Puedes crear una con /st_comp')
Ejemplo n.º 4
0
def dl_competition(m):
    #Este comando permite eliminar una competición
    cid = m.chat.id
    uid = m.from_user.id
    uname = m.from_user.first_name
    if comp.existe_comp(cid):
        if user.is_admin(cid, uid):
            comp.delete_comp(cid, uid)
            send(m, "La competicion ha sido eliminada")
        else:
            message = uname + " no tiene permisos para realizar esa operacion"
            send(m, message)

    else:
        send(m, "No existe competicion todavía")
        send(m, "Puedes empezar una con /st_comp")
Ejemplo n.º 5
0
def next_race(m):
    #Este comando nos dará información sobre la próxima carrera
    cid = m.chat.id

    if comp.existe_comp(cid):
        race = comp.get_race_bycomp(cid)

        sendMarkdownMessage(cid, """
            🚥 *Próxima Carrera* 🚥

            *Nombre: * {}
            *Vueltas: * {}

        """.format(race['nombre'], race['long']))

        bot.send_photo(cid, "%s"%(race['image']))
Ejemplo n.º 6
0
def time(m):
    cid = m.chat.id
    uid = m.from_user.id
    uname = m.from_user.username
    # time = telebot.util.extract_arguments(m.text)
    splitm = m.text.split()
    if len(splitm) == 2:
        time = splitm[1]
    else:
        time = 'invalid'

    if comp.existe_comp(cid):
        if timef.add_time(cid, uid, time):
            msg = uname + " ha agregado su tiempo"
            send(m, msg)
        else:
            send(m, "No se ha podido agregar el tiempo [Error de formato]")
            send(m, 'Usa /time + tiempo(MM:ss:mmm)')
    else:
        send(m, "No hay ninguna competición en este grupo")
        send(m, "Puedes empezar una con /st_comp")