Ejemplo n.º 1
0
def kroke(update, context):
    user = update.effective_user.id
    if not apu.permit(user):
        apu.botM(update, context,
                 "Sinulla ei ole oikeuksia lisätä uusia osakilpailuita.")
        return
    names = apu.names(context.args)
    sel = """
        SELECT *
        FROM Kroket
        WHERE pvm = ?
    """
    ins = """
        INSERT INTO Kroket
        VALUES(?)
    """
    if names[0] == '':
        now = datetime.now()
        pvm = now.strftime("%m%d")
        conn = sqlite3.connect(apu.db_path)
        cursor = conn.cursor()
        cursor.execute(sel, (pvm, ))
        rows = cursor.fetchall()
        if len(rows) == 0:
            cursor.execute(ins, (pvm, ))
            apu.botM(update, context, "Osakilpailu lisätty tietokantaan.")
            conn.commit()
        else:
            apu.botM(update, context, "Osakilpailu on jo tietokannassa.")
        conn.close()
    elif len(names) == 1:
        pvm = names[0].split(".")
        if not len(pvm) == 2:
            apu.botM(
                update, context, "Anna parametriksi päivämäärä, jolle haluat "
                "lisätä osakilpailun, muodossa dd.mm")
            return
        if not pvm[0].isdigit() or not pvm[1].isdigit():
            apu.botM(
                update, context,
                "Anna parametriksi päivämäärä dd.mm, jolle haluat lisätä "
                "osakilpailun.")
            return
        pv = pvm[0]
        kuu = pvm[1]
        pvm = apu.fdate(kuu, pv)
        conn = sqlite3.connect(apu.db_path)
        cursor = conn.cursor()
        cursor.execute(sel, (pvm, ))
        rows = cursor.fetchall()
        if len(rows) == 0:
            cursor.execute(ins, (pvm, ))
            apu.botM(update, context, "Osakilpailu lisätty tietokantaan.")
            conn.commit()
        else:
            apu.botM(update, context, "Osakilpailu on jo tietokannassa.")
        conn.close()
Ejemplo n.º 2
0
def nimi(update, context):
    user = update.effective_user.id
    if not apu.permit(user):
        apu.botM(update, context,
                 "Sinulla ei ole oikeuksia muuttaapelaajien nimiä.")
        return
    names = apu.names(context.args)
    if '' in names or not len(names) == 2:
        apu.botM(
            update, context,
            "Anna 1. argumentiksi yhden pelaajan nimi, jonka haluat "
            "muuttaa ja 2. argumentiksi uusi nimi.")
        return
    name0 = names[0].lower()
    name1 = names[1].lower()
    conn = sqlite3.connect(apu.db_path)
    cursor = conn.cursor()
    sel1 = """
        SELECT *
        FROM Maksut
        WHERE nimi = ?
    """
    upd1 = """
        UPDATE Maksut
        SET nimi = ?
        WHERE nimi = ?
    """
    upd2 = """
        UPDATE Tapahtumat
        SET ukko = ?
        WHERE ukko = ?
    """
    cursor.execute(sel1, (name0, ))
    rows = cursor.fetchall()
    if len(rows) == 0:
        apu.botM(
            update, context,
            "Kyseinen pelaaja ei ole tietokannassa, joten hänen nimeä ei "
            "voitu muuttaa.")
        conn.close()
        return
    cursor.execute(sel1, (name1, ))
    rows = cursor.fetchall()
    if not len(rows) == 0:
        apu.botM(
            update, context,
            "Tietokannassa on jo henkilö, jonka nimi on sama kuin "
            "parametriksi annettu uusi nimi. Nimeä ei muutettu.")
        conn.close()
        return
    cursor.execute(upd1, (name1, name0))
    cursor.execute(upd2, (name1, name0))
    conn.commit()
    conn.close()
    apu.botM(update, context, "Pelaajan nimi muutettu.")
Ejemplo n.º 3
0
def maksu(update, context):
    user = update.effective_user.id
    if not apu.permit(user):
        apu.botM(
            update, context,
            "Sinulla ei ole oikeuksia muuttaa pelaajien liigamaksun tilaa.")
        return
    names = apu.names(context.args)
    if '' in names:
        apu.botM(
            update, context,
            "Anna argumentiksi vähintään yksi pelaaja, jonka haluat "
            "merkitä maksaneeksi. Jos haluat merkitä useamman pelaajan "
            "kerralla, erota nimet pilkulla.")
        return
    conn = sqlite3.connect(apu.db_path)
    cursor = conn.cursor()
    sel = """
        SELECT *
        FROM Maksut
        WHERE nimi = ?
    """
    added = []
    notadded = []
    for name in names:
        name = name.lower()
        cursor.execute(sel, (name, ))
        rows = cursor.fetchall()
        if len(rows) == 0:
            notadded.append(name)
        else:
            added.append(name)
    upd = """
        UPDATE Maksut
        SET maksu = 1
        WHERE nimi = ?
    """
    for name in added:
        cursor.execute(upd, (name, ))
    conn.commit()
    conn.close()
    if len(notadded) == 0:
        apu.botM(update, context, "Maksu päivitetty onnistuneesti pelaajille.")
    elif len(added) == 0:
        apu.botM(
            update, context,
            "Ketään kyseisistä pelaajista ei ole vielä lisätty "
            "tietokantaan. Lisää pelaajat ensin komennolla /uusi.")
    else:
        apu.botM(
            update, context, "Maksu päivitetty pelaajille {}. Pelaajia"
            " {} ei ole vielä lisätty tietokantaan. "
            "Lisää pelaajat ensin komennolla /uusi."
            "".format(added, notadded))
Ejemplo n.º 4
0
def uusi(update, context):
    user = update.effective_user.id
    if not apu.permit(user):
        apu.botM(
            update, context,
            "Sinulla ei ole oikeuksia lisätä uusia henkilöitä tietokantaan")
        return
    names = apu.names(context.args)
    if '' in names:
        apu.botM(
            update, context,
            "Anna parametriksi pelaajan nimi, jonka haluat lisätä "
            "tietokantaan. Jos haluat lisätä useamman pelaajan kerralla, "
            "erota nimet pilkulla.")
        return
    conn = sqlite3.connect(apu.db_path)
    cursor = conn.cursor()
    sel = """
        SELECT *
        FROM Maksut
        WHERE nimi = ?
    """
    ins = """
        INSERT INTO Maksut
        VALUES (?, ?)
    """
    added = []
    notadded = []
    for name in names:
        name = name.lower()
        cursor.execute(sel, (name, ))
        rows = cursor.fetchall()
        if len(rows) == 1:
            added.append(name)
        else:
            notadded.append(name)
            cursor.execute(ins, (name, 0))
    if len(added) == 0:
        conn.commit()
        apu.botM(update, context,
                 "Henkilö(t) lisätty onnistuneesti tietokantaan")
    elif len(notadded) == 0:
        apu.botM(
            update, context,
            "Kaikki parametriksi annetut pelaajat ovat jo valmiiksi lisätty "
            "tietokantaan.")
    else:
        conn.commit()
        apu.botM(
            update, context,
            "Henkilö(t) {} lisätty tietokantaan. Loput pelaajista olivat jo "
            "valmiiksi tietokannassa.".format(notadded))
    conn.close()
Ejemplo n.º 5
0
def poista(update, context):
    user = update.effective_user.id
    if not apu.permit(user):
        apu.botM(update, context,
                 "Sinulla ei ole oikeuksia poistaa henkilöitä tietokannasta")
        return
    names = apu.names(context.args)
    if names[0] == '' or len(names) > 1:
        apu.botM(
            update, context,
            "Anna argumentiksi yhden pelaajan nimi, jonka haluat poistaa "
            "tietokannasta. Tämä komento poistaa myös kaikki pelaajan"
            "sijoitukset osakilpailuista.")
    else:
        name = names[0].lower()
        conn = sqlite3.connect(apu.db_path)
        cursor = conn.cursor()
        sel1 = """
            SELECT *
            FROM Maksut
            WHERE nimi = ?
        """
        del1 = """
            DELETE
            FROM Maksut
            WHERE nimi = ?
        """
        del2 = """
            DELETE
            FROM Tapahtumat
            WHERE ukko = ?
        """
        cursor.execute(sel1, (name, ))
        rows = cursor.fetchall()
        if len(rows) == 0:
            apu.botM(
                update, context,
                "Kyseinen pelaaja ei ole tietokannassa, joten häntä ei "
                "voitu poistaa.")
            conn.close()
            return
        cursor.execute(del1, (name, ))
        cursor.execute(del2, (name, ))
        conn.commit()
        conn.close()
        apu.botM(update, context, "Pelaaja poistettu tietokannasta.")
Ejemplo n.º 6
0
def piste(update, context):
    user = update.effective_user.id
    if not apu.permit(user):
        apu.botM(
            update, context,
            "Sinulla ei ole oikeuksia muuttaa tai lisätä tuloksia "
            "tietokantaan.")
        return
    names = apu.names(context.args)
    if '' in names or not len(names) == 3:
        apu.botM(
            update, context,
            "Anna ensimmäiseksi parametriksi päivämäärä, jolle haluat "
            "lisätä tai muuttaa pisteet ja toiseksi paramatriksi henkilön, "
            "jolle tämä muutos tehdään. Anna kolmanneksi parametriksi "
            "uusi sijoitus.")
        return
    pvm = names[0].split(".")
    if not len(pvm) == 2:
        apu.botM(
            update, context,
            "Anna ensimmäiseksi parametriksi päivämäärä, jolle haluat "
            "lisätä tai muuttaa pisteet, muodossa dd.mm")
        return
    if not pvm[0].isdigit() or not pvm[1].isdigit() or not names[2].isdigit():
        apu.botM(
            update, context,
            "Anna ensimmäiseksi parametriksi päivämäärä dd.mm, jolle haluat "
            "lisätä tai muuttaa pisteet. Anna kolmanneksi parametriksi "
            "uusi sijoitus.")
        return
    if int(names[2]) not in range(1, 10):
        apu.botM(update, context, "Anna sijoitus, joka on välillä [1,9].")
        return
    pv = pvm[0]
    kuu = pvm[1]
    pvm = apu.fdate(kuu, pv)
    name = names[1].lower()
    sij = int(names[2])
    p = apu.switch(sij)
    conn = sqlite3.connect(apu.db_path)
    cursor = conn.cursor()
    sel1 = """
        SELECT *
        FROM Tapahtumat
        WHERE ukko = ? AND pvm = ?
    """
    sel2 = """
        SELECT *
        FROM Kroket
        WHERE pvm = ?
    """
    upd1 = """
        UPDATE Tapahtumat
        SET pisteet = ?
        WHERE ukko = ? AND pvm = ?
    """
    ins1 = """
        INSERT INTO Tapahtumat
        VALUES(?, ?, ?)
    """
    cursor.execute(sel1, (name, pvm))
    rows1 = cursor.fetchall()
    cursor.execute(sel2, (pvm, ))
    rows2 = cursor.fetchall()
    if len(rows1) == 0 and len(rows2) == 1:
        cursor.execute(ins1, (name, pvm, p))
        conn.commit()
        apu.botM(
            update, context,
            "Henkilöllä ei ollut vielä merkintää kyseisen päivän "
            "osakilpailusta, joten se lisättiin.")
    elif len(rows1) > 0 and len(rows2) == 1:
        cursor.execute(upd1, (p, name, pvm))
        conn.commit()
        apu.botM(update, context,
                 "Henkilön sijoitus osakilpailussa muutettu onnistuneesti")
    else:
        apu.botM(
            update, context,
            "Kyseiselle päivälle ei ole lisätty osakilpailua. Komennolla "
            "/kroke dd.mm voit lisätä osakilpailun tietylle päivälle.")
        return
    conn.close()
Ejemplo n.º 7
0
def sijoitus(update, context):
    user = update.effective_user.id
    if not apu.permit(user):
        apu.botM(
            update, context,
            "Sinulla ei ole oikeuksia lisätä uusia sijoituksia "
            "tietokantaan.")
        return
    names = apu.names(context.args)
    if len(names) < 2 or (not names[0].isdigit()
                          and int(names[0]) in range(1, 10)):
        apu.botM(
            update, context,
            "Anna ensimmäisenä parametrinä sijoitus ja tämän jälkeen "
            "henkilöt jotka saavuttivat kyseisen sijan. Ertota parametrit "
            "pilkulla.")
        return
    if '' in names:
        apu.botM(update, context, "Syöte on viallinen.")
        return
    place = int(names[0])
    points = apu.switch(place)
    names = names[1:]
    now = datetime.now()
    pvm = now.strftime("%m%d")
    conn = sqlite3.connect(apu.db_path)
    cursor = conn.cursor()
    sel1 = """
        SELECT *
        FROM Tapahtumat
        WHERE ukko = ? AND pvm = ?
    """
    sel2 = """
        SELECT *
        FROM Kroket
        WHERE pvm = ?
    """
    sel3 = """
        SELECT *
        FROM Maksut
        WHERE nimi = ?
    """
    cursor.execute(sel2, (pvm, ))
    rows = cursor.fetchall()
    if len(rows) == 0:
        apu.botM(
            update, context,
            "Tälle päivälle ei ole tallennettu osakilpailua. Komennolla "
            "/kroke voit lisätä tälle päivälle osakilpailun.")
        conn.close()
        return
    notin = []
    for name in names:
        name = name.lower()
        cursor.execute(sel3, (name, ))
        rows = cursor.fetchall()
        if len(rows) == 0:
            notin.append(name)
    if len(notin) > 0:
        apu.botM(
            update, context,
            "Pelaajia {} ei ole lisätty tietokantaan. Lisää heidät ensin "
            "komennolla /uusi.".format(notin))
        conn.close()
        return
    added = []
    notadded = []
    for name in names:
        name = name.lower()
        cursor.execute(sel1, (name, pvm))
        rows = cursor.fetchall()
        if len(rows) == 0:
            apu.piste(update, context, name, points, pvm)
            added.append(name)
        else:
            notadded.append(name)
    conn.close()
    if len(notadded) == 0:
        apu.botM(update, context, "Pisteet lisätty onnistuneesti pelaajille.")
    elif len(added) == 0:
        apu.botM(update, context,
                 "Kaikille pelaajille oli jo lisätty pisteet.")
    else:
        apu.botM(
            update, context, "Pelaajille {} lisätty pisteet. Pelaajille"
            " {} oli jo lisätty pisteet.".format(added, notadded))
Ejemplo n.º 8
0
def help(update, context):
    no = emojize(":skull_and_crossbones:", use_aliases=True)
    yes = emojize(":yum:", use_aliases=True)
    user = update.effective_user.id
    apu.botM(
        update,
        context,
        "Komennot jotka eivät vaadi lupaa {}\n\n"  # ------------
        "/tulokset komennolla voit tarkastella sijoituksia kesäliigassa. "
        "Jos komennon ajaa ilman parametrejä, listaa se kymmenen parhaiten "
        "menestynyttä pelaajaa. Jos parametriksi antaa yhden pelaajan "
        "nimen, listaa se kaikki kyseisen pelaajan sijoitukset kaikista "
        "kaikista osakilpailuista.\n"
        "(esim. /tulokset)\n"
        "(esim. /tulokset Timppa)\n\n"
        "/pelaajat komennolla voit listata kaikki pelaajat, jotka on "
        "lisätty tietokantaan. Lisäksi tieto pelaajien liigamaksusta on "
        "listattu.\n"
        "(esim. /pelaajat)\n\n"
        "/joukkueet komennolla voit arpoa joukkuuet. Anna ensimmäiseksi "
        "parametriksi joukkueiden lukumäärä ja sen jälkeen pelaajien nimet "
        "pilkulla erotettuna.\n"
        "(esim. /joukkueet 4, Timppa, Tomppa)\n\n"
        "/osakilpailut komennolla voit tarkastella osakilpailuja, jotka on "
        "lisätty tietokantaan. Tulosteeseen on merkitty onko yksittäinen "
        "kilpailu jo suoritettu, vai vasta tulossa.\n"
        "(esim. /osakilpailut)\n\n"
        "".format(yes))
    if not apu.permit(user):
        return
    apu.botM(
        update,
        context,
        "Komennot jotka vaativat luvan {}\n\n"  # ------------
        "/uusi komennolla voit lisätä uusia pelaajia tietokantaan. "
        "Oletuksena uudet pelaajat eivät ole maksaneet liiga-maksua.\n"
        "(esim. /uusi Timppa, Tomppa)\n\n"
        "/maksu komennolla voit päivittää henkilön liiga-maksun tilan.\n"
        "(esim. /maksu Timppa, Tomppa)\n\n"
        "/kroke komennolla voit lisätä osakilpailun tietokantaan. Ajamalla "
        "komennon ilman parametrejä, lisää komento tämän päivän "
        "osakilpaluksi. Jos komennolle antaa parametriksi päivämäärän "
        "muodossa dd.mm, tekee se osakilpilun kyseiselle päivälle.\n"
        "(esim. /kroke)\n"
        "(esim. /kroke 6.9)\n\n"
        "/sijoitus komennolla voit lisätä pelaajille sijotuksen "
        "osakilpailussa. Jotta sijoituksen voi lisätä, on kyseinen päivä "
        "oltava lisätty aiemmin /kroke komennolla. Lisäksi pelaajien on "
        "löydyttävä tietokannasta.\n"
        "(esim. /sijoitus 2, Timppa, Tomppa)\n\n"
        "/poista komennolla voit poistaa yksittäisen henkilön "
        "tietokannasta. Tällöin häviää tiedot henkilön liigamaksun tilasta "
        "ja jokainen osakilpailun sija.\n"
        "(esim. /poista Timppa)\n\n"
        "/nimi komennolla voit vaihtaa tietokannassa olevan pelaajan nimen. "
        "Anna ensimmäiseksi parametriksi vanha nimi ja toiseksi parametriksi "
        "uusi nimi.\n"
        "(esim. /nimi Timppa, Tomppa)\n\n"
        "/piste komennolla voit lisätä tai muuttaa yksittäisen pelaajan "
        "tietoja eri osakilpailuista. Jos pelaajalla ei ole vielä "
        "merkintää halutun päivän osakilpailussa, lisätään uusi tulos. "
        "Muussa tapauksessa vanhaa tulosta muutetaan. Ensimmäinen parametri "
        "on päivämäärä muodossa dd.mm, toinen parametri on pelaajan nimi ja "
        "kolmas parametri on sijoitus.\n"
        "(esim. /piste 6.9, Timppa, 1)\n\n"
        "".format(no))