Beispiel #1
0
def riavvia(infos):
    if not Manager.has_a_bot(infos.user.uid):
        return
    if not Core.is_online(infos.token):
        return
    if not infos.user.is_owner and infos.user.uid not in infos.admins:
        return
    Core.detach_bot(infos.token)
    time.sleep(0.5)
    Core.attach_bot(infos.token)
    infos.reply("Riavviato.")
Beispiel #2
0
def detach_bot(infos):
    bid = infos.user.message.text
    res = Core.detach_bot(None, bid=bid)
    msg = "Qualcosa non va..."
    if res:
        msg = "Bot stoppato con successo, kitsu."
    infos.reply(msg)
Beispiel #3
0
def stats(infos):
    t = time.time()
    if infos.user.uid != Manager.get_owner_id():
        return
    text = "In questo momento sto mantenendo online %s bot.\n" % Core.count_bots()
    text += "Il tempo di elaborazione di questo messaggio è di %s ms, " % LowLevel.get_time(t)
    text += "quindi il carico di lavoro è leggero.\n\nFoos version: %s" % ver

    Dialoger.send(infos, None, special_text=text)
Beispiel #4
0
def change_token(infos):
    token = infos.text
    try:
        bot = HTTPLL.getMe(token)

    except NotFound404:
        infos.reply("Token non valida.")
        return

    except Exception as err:
        infos.reply("Eccezione: %s" % err)
        return

    nbid = bot["id"]
    obids = Manager.get_botid_from_prop_id(infos.user.uid)

    if len(obids) == 0:
        infos.reply("Non hai un bot!")
        return

    if len(obids) == 1:
        if obids[0] != nbid:
            infos.reply("Devi darmi la chiave dello stesso tuo bot!")
            return

    elif nbid not in obids:
        infos.reply(
            "Non riconsco questo bot.\nPuoi cambiare token, non bot...")
        return

    bots = json.loads(open("Files/jsons/bots.json").read())
    bots.pop(Manager.get_token_from_bot_id(nbid))
    bots[token] = {"bot_id": nbid, "user_id": infos.user.uid}

    with open("Files/jsons/bots.json", "w") as fl:
        fl.write(json.dumps(bots))

    infos.reply("Token sostituita!")

    Core.attach_bot(token)

    infos.reply("Ora il bot dovrebbe essere on!")
Beispiel #5
0
def elimina_bot(infos):
    try:
        if not infos.user.is_owner:
            return
        if not Core.is_online(infos.token):
            Dialoger.send(infos, None, special_text="M-ma io non sono online...")

        uid = str(infos.user.uid)
        bid = infos.bid

        if not infos.text:
            code = str(random.randint(1000, 9999))
            Dialoger.send(infos, None,
                          special_text="Se mi elimini perderai tutti i dati!\n"
                                       "Scrivi \"/elimina_bot %s\" se ne sei sicuro..." % code)
            Unreloaded.set_delete_code(uid, code)
            return

        if Unreloaded.get_delete_code(uid) == "":
            code = str(random.randint(1000, 9999))
            Dialoger.send(infos, None, special_text="Non avevo ancora generato il codice, eccolo: %s." % code)
            Unreloaded.set_delete_code(uid, code)
            return

        if infos.text != Unreloaded.get_delete_code(uid):
            Dialoger.send(infos, None, special_text="Codice sbagliato, era: %s" % Unreloaded.get_delete_code(uid))
            return

        Dialoger.send(infos, None, special_text="Procedo...")
        Log.d("Elimino il bot %s di %s" % (bid, uid))
        Core.detach_bot(infos.token)
        Manager.delete_bot(bid)

        Dialoger.send(infos, None, special_text="Addio...")
    except Exception as err:
        Log.e(err)
Beispiel #6
0
def spegni(infos):
    if not Manager.has_a_bot(infos.user.uid):
        return

    if not Core.is_online(infos.token):
        return

    if not infos.user.is_owner:
        return

    if not infos.text:
        Dialoger.send(infos, None, special_text="Se mi spegni non potrai più avviarmi fino al riavvio di"
                                                " Kitsu!\nScrivi /spegni ok se ne sei sicuro")
        return

    if infos.text.lower() != "ok":
        return Dialoger.send(infos, None, special_text="Scrivi /spegni ok se ne sei sicuro!")

    try:
        Dialoger.send(infos, None, special_text="Spegnimento...")
        Core.detach_bot(infos.token)

    except Exception as err:
        Dialoger.send(infos, None, special_text="Si è verificato un errore...\n(%s)" % err)
# coding=utf-8

# Copyright (c) 2018 Kaikyu

# 888    d8P  d8b 888                                                .d8888b.                888
# 888   d8P   Y8P 888                                               d88P  Y88b               888
# 888  d8P        888                                               888    888               888
# 888d88K     888 888888 .d8888b  888  888 88888b.   .d88b.         888         .d88b.   .d88888  .d88b.
# 8888888b    888 888    88K      888  888 888 "88b d8P  Y8b        888        d88""88b d88" 888 d8P  Y8b
# 888  Y88b   888 888    "Y8888b. 888  888 888  888 88888888  8888  888    888 888  888 888  888 88888888
# 888   Y88b  888 Y88b.       X88 Y88  888 888  888 Y8b.            Y88b  d88P Y88..88P Y88b 888 Y8b.
# 888    Y88b 888  "Y888  88888P'  "Y88888 888  888  "Y8888          "Y8888P"   "Y88P"   "Y88888  "Y8888

from Utils import Logger as Log

from Core import ThreadedCore as Core
from Core import Manager
from Core import HTTPLL

if __name__ == "__main__":
    Log.i("Starting Kitsu, version 3.0.")
    Core.attach_bot(Manager.get_token_list())
    HTTPLL.sendMessage(Manager.get_main_bot_token(), Manager.get_owner_id(),
                       "Booted.")
    Core.idle()
Beispiel #8
0
def newbot(infos):
    user = infos.user.username
    uid = infos.user.uid
    say = infos.reply

    if uid not in auth:
        say("Per potermi utilizzare devi effettuare una donazione a PayPal.me/KaikyuDev di 5 euro,"
            "includendo come messaggio il tuo ID, se non sai il tuo ID esegui il comando /myid.\n\n"
            "I server, così come il tempo, hanno un valore.")
        return

    if uid in limits:
        limit = limits[uid]
    else:
        limit = 1

    if infos.text == "token":
        say("Non devi scrivere \"token\", devi darmi la **token** del tuo **bot**.",
            markdown=True)
        HTTPLL.sendMessage(
            infos.token, Manager.get_owner_id(),
            "@%s ha usato /newbot \"token\" lol" % infos.user.username)
        return

    if Manager.get_bot_count() >= max_bots and "!!" not in infos.text:
        say("Tutti i posti sono stati occupati.\nSegui @KitsuneCode per sapere quando ce ne saranno altri ~"
            )
        return

    msg = "Nuovo bot da %s (ID: %s)" % (user, uid)

    if infos.text == "":
        say("La sintassi del comando è semplice:\n/newbot token\nRiprova...")
        return Log.a("[Bot: @%s | %s] user: %s ID: %s 'newbot senza chiave'" %
                     (infos.username, infos.bid, user, uid))

    key = infos.text.replace("!!", "")
    if Manager.is_token_used(key):
        Log.a("[Bot: @%s | %s] user: %s ID: %s 'newbot chiave usata'" %
              (infos.username, infos.bid, user, uid))
        return say("Questa chiave è già usata...")

    if Manager.count_bots(uid) >= limit:
        Log.a("[Bot: @%s | %s] user: %s ID: %s 'newbot utente ha già un bot'" %
              (infos.username, infos.bid, user, uid))
        return say(
            "A quanto pare non puoi fare altri bot ne hai già %s su %s..." %
            (Manager.count_bots(uid), limit))

    if ":" not in key or len(key) != 45:
        say("%s non credo che questa sia una chiave valida." % user)
        return Log.a("[Bot: @%s | %s] user: %s ID: %s 'newbot chiave errata'" %
                     (infos.username, infos.bid, user, uid))

    try:
        tbot = HTTPLL.getMe(key)
        txt = "Eccomi master.\nQuesta è una [guida](%s) sul miofunzionamento.\nUnisciti al [gruppo ufficiale](%s) per avere " \
              "le novità in tempo reale." % ("telegra.ph/Come-creare-un-KitsuBot-08-20", "t.me/KitsuBotsGroup")
        HTTPLL.sendMessage(key, uid, text=txt, parse_mode="markdown")
        msg += "\nHa usato la token %s\n" % key
    except Exception as err:
        Log.d(
            "L'utente non ha avviato il proprio bot, o c'è qualche problema (%s)"
            % err)
        return say("Sicuro di aver avviato il tuo bot in privato?")

    if Manager.add_bot(uid, tbot["id"], tbot["token"]):
        say("Registrato con successo!\nTutti i prossimi comandi dovrai eseguirli dal tuo bot: @%s\n"
            "Il tuo bot è il %sesimo su %s!" %
            (tbot["username"], Manager.get_bot_count(), max_bots))
    else:
        Log.d("Qualcosa è andato storto...")
        return say("Qualcosa è andato storto!")

    msg += "Nome %s\nUsername @%s\nID: %s" % (tbot["first_name"],
                                              tbot["username"], tbot["id"])

    HTTPLL.sendMessage(infos.token, Manager.get_owner_id(), msg)
    Core.attach_bot(key)