示例#1
0
    def make_reply(self, msg, username, first_name):
        reply = None

        if msg is not None:

            if msg == "ping":
                Log.a("pong")
                reply = "pong"
                return reply

            if msg == "info":
                Log.a("info")
                reply = "Shamiko-Project, version 0.0.5.1"
                return reply

            if "give" and "cookie" in msg:
                Log.a("cookie")
                reply = "Of course!"
                return reply

            if msg == "hello there":
                Log.a("Hello there")
                reply = "Hello @" + username + ". I am Yuko ( ^ ω ^)"
                return reply

            if msg == "hello":
                Log.a("hello")
                reply = "Hi " + first_name + " ^^"
                return reply
示例#2
0
def status(bot, update):
    try:
        g_name = update["message"]["chat"]["title"]
        by = update["message"]["from"]["username"]
        byid = update["message"]["from"]["id"]
        gid = update["message"]["chat"]["id"]

        if update["message"]["new_chat_members"]:
            join_user_name = update["message"]["new_chat_members"][0]['first_name']
            if "username" in update["message"]["new_chat_members"][0]:
                join_user_username = update["message"]["new_chat_members"][0]['username']
            else:
                join_user_username = join_user_name
            join_user_id = update["message"]["new_chat_members"][0]['id']

            if join_user_id == bot["id"]:
                text = "Aggiunta a: %s\nUtente: @%s" % (g_name, by)
                bpht = None  # ToDo Get Propic Method
                if bpht:
                    HTTPLL.sendPhoto(Manager.get_main_bot_token(), Manager.get_owner_id(), bpht, caption=text)
                else:
                    HTTPLL.sendMessage(Manager.get_main_bot_token(), Manager.get_owner_id(), text)

        elif update["message"]["left_chat_member"]:
            left_user_name = update["message"]["left_chat_member"]['first_name']
            left_user_id = update["message"]["left_chat_member"]['id']

            if left_user_id == bot["id"]:
                HTTPLL.sendMessage(Manager.get_main_bot_token(), Manager.get_owner_id(), text="Rimossa da: %s\nUtente @%s" % (g_name, by))
                Log.a("[%s] Rimossa da un gruppo da %s" % (bot["first_name"], by))

    except Exception as err:
        Log.e(err)
        pprint.pprint(update)
示例#3
0
    def reply_to_usermessage(self, msg, sendname, takename):

        if msg is not None:

            if "yuko pat her" in msg:
                Log.a("pat her")
                reply = "Hai! *smiles and jumps on " + takename + "'s arms*"
                return reply
示例#4
0
def default_list(infos):
    say = infos.reply
    try:
        text = "Le sezioni default al momento sono:\n\n"
        text += "complimenti\nbene\ninsulti\ngiorno\nscuse\nringraziamenti\nnotte\nsaluti\namare\n"
        text += "\nVedendo il contenuto di essi puoi facilmente kitsucapire a cosa servono ~"
        say(text)
        Log.a("[Bot: @%s | %s] user: %s ID: %s 'list_risposte riuscito'" % (infos.username, infos.bid,
                                                                            infos.user.username, infos.user.uid))
    except Exception as err:
        say(Utils.get_phrase("error"))
        Log.e(err)
示例#5
0
def warn_token(key):
    ids = Manager.get_bot_from_token(key)
    pid = ids["user_id"]
    bid = ids["bot_id"]

    try:
        HTTPLL.sendMessage(
            Manager.get_main_bot_token(), pid,
            "Il tuo bot è stato scollegato per token revokata o invalida,"
            " registra la sua nuova token per tornare ad utilizzarlo!")
    except Exception:
        pass

    if Manager.delete_bot(bid):
        Log.a("Master, ho scollegato il bot di %s per token revocata." % pid)
示例#6
0
def status(bot, update):
    try:
        g_name = update["message"]["chat"]["title"]
        gid = update["message"]["chat"]["id"]
        if "username" in update["message"]["from"]:
            by = update["message"]["from"]["username"]
        else:
            by = "[no username]"
        byid = update["message"]["from"]["id"]
        # gid = update["message"]["chat"]["id"]
        propid = Manager.get_prop_id(bot["token"])

        if update["message"]["new_chat_members"]:
            join_user_name = update["message"]["new_chat_members"][0]['first_name']
            # join_user_username = update["message"]["new_chat_members"][0]['username']
            join_user_id = update["message"]["new_chat_members"][0]['id']

            if join_user_id == bot["id"]:
                text = "Aggiunta a: %s\nUtente: @%s" % (g_name, by)

                bpht = HTTPLL.getChatPhoto(bot["token"], gid)
                if bpht:
                    HTTPLL.sendPhoto(bot["token"], propid, bpht, caption=text)
                else:
                    HTTPLL.sendMessage(bot["token"], propid, text)

                Log.a("[Bot: %s | @%s] Aggiunto a %s da %s" % (bot["username"], bot["id"], g_name, byid))
                Dialoger.send(Infos(bot, update), "newgroup", special_token=bot["token"])
            else:
                state = DBs.read_obj(gid, bot["id"], "groups")["ext"]
                if not state or state == "0":
                    Dialoger.send(Infos(bot, update), "welcome", special_name=join_user_name,
                                  special_token=bot["token"])

        elif update["message"]["left_chat_member"]:
            left_user_id = update["message"]["left_chat_member"]['id']

            if left_user_id == bot["id"]:
                Log.i("bot quitt")
                Unreloaded.gbots[str(update["message"]["chat"]["id"])].remove(bot["id"])
                HTTPLL.sendMessage(bot["token"], propid, "Rimossa da: %s\nUtente @%s" % (g_name, by))
                Log.a("[%s] Rimosso da un gruppo da %s" % (bot["first_name"], by))

    except Exception as err:
        Log.e(err)
示例#7
0
def list_risps(infos):
    say = infos.reply
    try:

        if infos.user.lang_n != 0:
            dialogs = "dialogs_eng.json"
        else:
            dialogs = "dialogs.json"

        lang_itm = "IT" if infos.user.lang_n == 0 else "EN"

        if infos.text == "":
            say("Devi specificare il trigger da cui eliminare le risposte.")
            return

        trigger = infos.text.lower()

        dials = json.loads(
            open("Files/bot_files/%s/%s" % (infos.bid, dialogs)).read())

        if trigger not in dials:
            say("Non ho trovato questa sezione.. kitsu...")
            return

        if not dials[trigger]:
            say("Non ci sono gia' frasi in questa sezione kitsu!")
            return

        msg = "Ecco le frasi (%s) per `%s`:\n\n" % (lang_itm, trigger)
        frasi = dials[trigger]
        x = 1
        for frase in frasi:
            msg += "`%s`) `%s`\n\n" % (x, frase)
            x += 1

        msg += "\nTotale di %s frasi!" % len(frasi)

        say(msg, markdown=True)

        Log.a("%s <- %s -> [list_risposte]" % (infos.bid, infos.user.uid))
    except Exception as err:
        say("S-si è verificato un errore...")
        Log.e(err)
示例#8
0
def list_risps_form(infos):
    say = infos.reply
    try:

        if infos.user.lang_n != 0:
            dialogs = "dialogs_eng.json"
        else:
            dialogs = "dialogs.json"

        if infos.text == "":
            say("Devi specificare il trigger per cui listare le risposte.")
            return

        trigger = infos.text.lower()

        dials = json.loads(
            open("Files/bot_files/%s/%s" % (infos.bid, dialogs)).read())

        if trigger not in dials:
            say("Non ho trovato questa sezione.. kitsu...")
            return

        if not dials[trigger]:
            say("Non ci sono gia' frasi in questa sezione kitsu!")
            return

        com = "Ecco a te:\n`%s" % trigger
        for frase in dials[trigger]:
            com += " | %s" % frase
        com += "`"

        say(com, markdown=True)

        Log.a("%s <- %s -> [list_risposte_form]" % (infos.bid, infos.user.uid))
    except Exception as err:
        say("S-si è verificato un errore...")
        Log.e(err)
示例#9
0
def add_interazione(infos):
    say = infos.reply
    try:
        if infos.user.lang_n != 0:
            dialogs = "dialogs_eng.json"
        else:
            dialogs = "dialogs.json"

        lang_itm = "IT" if infos.user.lang_n == 0 else "EN"

        user = infos.user.username
        uid = infos.user.uid

        if infos.text == "":
            say("Devi specificare il nome della sezione da creare.")
            return Log.a("[Bot: @%s | %s] user: %s ID: %s 'senza trigger'" %
                         (infos.username, infos.user.uid, user, uid))

        trigger = infos.text.lower()
        dials = json.loads(
            open("Files/bot_files/%s/%s" % (infos.bid, dialogs)).read())
        if trigger in dials:
            return say("Questa sezione e' gia' presente ~")
        else:
            dials[trigger] = []

        with open("Files/bot_files/%s/%s" % (infos.bid, dialogs),
                  "w") as file_d:
            file_d.write(json.dumps(dials))

        say("Sezione aggiunta! (%s)\nAggiungici cio' che vuoi ~" % lang_itm)
        Log.a("[Bot: @%s | %s] user: %s ID: %s 'add_frase riuscito'" %
              (infos.username, infos.user.uid, user, uid))

    except Exception as err:
        Log.e(err)
        say("S-si è verificato un errore...")
示例#10
0
            except:
                new_chat_member_ = None

            try:
                gone_chat_member_ = item["message"]["left_chat_member"]
            except:
                gone_chat_member_ = None

            Log.i(from_)
            Log.i(chat_)

            if new_chat_member_ is not None:

                new_chat_member_name_ = item["message"][
                    "new_chat_participant"]["username"]
                Log.a("welcome")
                reply = "Welcome @" + new_chat_member_name_ + " to " + chat_name_ + " ^^"
                bot.send_message(reply, chat_)

            if gone_chat_member_ is not None:

                gone_chat_member_name_ = item["message"]["left_chat_member"][
                    "first_name"]
                Log.a("Left")
                reply = "Goodby " + gone_chat_member_name_ + " ;__;"
                bot.send_message(reply, chat_)

            try:
                reply_to_message_ = item["message"]["reply_to_message"]
            except:
                reply_to_message_ = None
示例#11
0
def send(infos,
         sezione,
         antispam=True,
         to_id=None,
         special_name=None,
         special_group_name=None,
         special_user_name=None,
         no_log=False,
         special_token=None,
         special_bid=None,
         special_text=None,
         ignore_specials=False,
         recorsivity=None,
         add=None,
         parse="markdown"):
    text = "<vuoto>"
    try:
        quote = False
        inter_bot_id = None
        sezione_inter = None
        quitta = False
        no_prew = False

        if sezione:
            infos.trigger = sezione
        else:
            infos.trigger = ""

        if recorsivity:
            if recorsivity > 3:
                return
            else:
                recorsivity += 1
        else:
            recorsivity = 1

        if not to_id:
            to_id = infos.cid

        if special_group_name:
            infos.name = special_group_name
        if special_user_name:
            infos.user.name = special_user_name

        if special_token:
            infos.token = special_token

        if special_bid:
            infos.bid = special_bid

        if not special_text:

            text = Dialogs.get_text(infos, sezione)
            if add:
                try:
                    text += add
                except Exception:
                    pass
            if not text:
                return False

            if text.lower() == "skip" or text.lower() == "+skip+":
                return True

            if antispam:
                if Unreloaded.antispam(infos):
                    return True

        else:
            text = special_text

        text = Dialogs.section_replacer(infos, text)

        if infos.api:
            return text

        if "[warn]" in text:
            return BotsFoos.warn(infos)

        if "[unwarn]" in text:
            return BotsFoos.unwarn(infos)

        if "+exe+" in text:
            infos.master_message("Master, +exe+ is deprecated:\n`" + text +
                                 "`\nIn `" + sezione + "`",
                                 parse_mode="markdown")
            Log.a("[%s] U: %s %s" %
                  (infos.bot_name, infos.user.username, sezione))
            return

        if not ignore_specials:
            text = Utils.replacer(infos, text)
            text = Actions.action(infos, text, sezione)
            if not text:
                return

        if type(text) is bool:
            return

        if "[noprew]" in text:
            text = text.replace("[noprew]", "")
            no_prew = True

        if "[quote]" in text:
            text = text.replace("[quote]", "")
            quote = infos.user.message.id

        if "[quote2]" in text:
            text = text.replace("[quote2]", "")
            if infos.to_user:
                quote = infos.to_user.message.id

        if "[quit]" in text:
            text = text.replace("[quit]", "")
            quitta = True

        match = re.search("\[(\d+)\]", text)
        if match:
            if int(match.group(1)) not in Manager.get_bots_id():
                return HTTPLL.sendMessage(
                    infos.token, Manager.get_prop_id(infos.token),
                    "%s non è un ID valido." % match.group(1))

            result = text.split("[" + match.group(1) + "]")

            trigs = json.loads(
                open("Files/bot_files/%s/%s" %
                     (match.group(1), "triggers.json")).read())

            if "autorizzati" not in trigs:
                HTTPLL.sendMessage(
                    infos.token, infos.prop_id,
                    "%s non ti ha autorizzato." % match.group(1))

            elif infos.bid not in trigs["autorizzati"]:
                HTTPLL.sendMessage(
                    infos.token, infos.prop_id,
                    "%s non ti ha autorizzato." % match.group(1))
                # infos.reply("Autorizzati: %s" % )
            else:
                inter_bot_id = int(match.group(1))
                sezione_inter = result[1]

            text = result[0]

        if special_name:
            text = text.replace("+newuser+", special_name)

        if not text:
            return

        text, kb = Utils.get_keyboard(text)
        if text == "":
            return

        try:
            caption = None
            if "+stk+" in text:
                stk = text.split("()")[1]
                HTTPLL.sendSticker(infos.token, chat_id=to_id, sticker=stk)
                return True

            if "+pht+" in text:
                elems = text.split("()")
                pht = elems[1]
                if len(elems) == 3:
                    caption = elems[2]
                HTTPLL.sendChatAction(infos.token, to_id, 'upload_photo')
                time.sleep(0.3)
                HTTPLL.sendPhoto(infos.token,
                                 chat_id=to_id,
                                 photo=pht,
                                 caption=caption,
                                 reply_to_message_id=quote)
                return True

            if "+doc+" in text:
                elems = text.split("()")
                doc = elems[1]
                if len(elems) == 3:
                    caption = elems[2]
                HTTPLL.sendDocument(infos.token,
                                    to_id,
                                    doc,
                                    caption=caption,
                                    reply_to_message_id=quote)
                return True

            if "+aud+" in text or "+voi+" in text:
                aud = text.split("()")[1]
                HTTPLL.sendVoice(infos.token,
                                 to_id,
                                 aud,
                                 reply_to_message_id=quote)
                return True

            if "+vid+" in text:
                elems = text.split("()")
                vid = elems[1]
                if len(elems) == 3:
                    caption = elems[2]
                HTTPLL.sendVideo(infos.token,
                                 to_id,
                                 vid,
                                 caption=caption,
                                 reply_to_message_id=quote)
                return True
        except Exception as err:
            Log.w("Errore nell'invio del media: %s" % err)
            return False

        text = Utils.escape_markdown(text)

        text = text.replace("<b>", "*").replace("</b>", "*")
        text = text.replace("<c>", "`").replace("</c>", "`")
        text = text.replace("<i>", "_").replace("</i>", "_")

        text = Utils.link_elab(text, infos)

        text = re.sub("\/\w+\\_\w+", "$&", text).replace("\\\\_", "\\_")

        match = re.search("\B<q>.+</q>\B", text)
        if match:
            iquote = "[%s](tg://user?id=%s)" % (str(match.group(0)).replace(
                "<q>", "").replace("</q>", ""), infos.user.uid)
            text = re.sub("\B<q>.+</q>\B", iquote, text)

        result = re.finditer(re.compile(r"\*.+?\*"), text)
        if result:
            for res in result:
                text = text.replace(res.group(),
                                    res.group(0).replace("\_", "_"))

        HTTPLL.sendChatAction(infos.token, to_id, 'typing')
        HTTPLL.sendMessage(infos.token,
                           chat_id=to_id,
                           text=text,
                           parse_mode=parse,
                           disable_web_page_preview=no_prew,
                           reply_to_message_id=quote,
                           reply_markup=kb)

        if not no_log:
            Log.a("%s <- %s -> [%s]" % (infos.bid, infos.user.uid, sezione))

        if infos.chat_private:
            return
        if quitta:
            HTTPLL.leaveChat(infos.token, infos.cid)
        if inter_bot_id and sezione_inter:
            try:
                send(infos,
                     sezione_inter,
                     special_token=Manager.get_token_from_bot_id(inter_bot_id),
                     antispam=False,
                     special_bid=inter_bot_id,
                     recorsivity=recorsivity)
            except Exception:
                pass
        return True

    except Error.Unauthorized:
        if not to_id:
            Log.e("Qualcosa non va, l'ID era None...")
            return "ERR"
        DBs.remove_id(infos.entity, to_id)
        return "ERR"

    except Error.BadRequest as err:
        if "chat not found" in str(err):
            return

        if "group chat was migrated" in str(err):
            DBs.remove_id(infos.entity, to_id)
            return "ERR"

        Log.e("Bot %s -> BadRequest (%s)" % (infos.bot_name, err))

        if infos.user.is_owner:
            infos.reply(
                "Master non sono riuscita ad inviare questo messaggio:\n"
                "`%s`\nSegnalalo a @Kaikyu o controlla la formattazione." %
                text,
                markdown=True)
        return "ERR"

    except Error.NotEnoughtRights:
        DBs.remove_id(infos.entity, to_id)
        return "ERR"

    except Exception as err:
        msg = "Ho trovato un errore: riga {} {} {}".format(
            sys.exc_info()[-1].tb_lineno,
            type(err).__name__, err)
        HTTPLL.sendMessage(infos.token, infos.prop_id, msg)
        Log.e(msg)
        if "can't parse" in str(err).lower():
            # noinspection PyTypeChecker
            send(infos,
                 "",
                 to_id=Manager.get_prop_id(infos.token),
                 special_text=
                 "C'è un problema con la formattazione del messaggio:\n\n%s" %
                 text,
                 parse=None,
                 antispam=False)
        return "ERR"
示例#12
0
def del_default(infos):
    say = infos.reply
    try:
        user = infos.user.username
        uid = infos.user.uid

        if infos.user.lang_n != 0:
            triggers = "triggers_eng.json"
        else:
            triggers = "triggers.json"

        lang_itm = "IT" if infos.user.lang_n == 0 else "EN"

        if infos.text == "":
            say("Cosa devo kitsueliminare?")
            return Log.a("[Bot: @%s | %s] user: %s ID: %s 'senza trigger'" %
                         (infos.username, infos.user.uid, user, uid))

        trigger = infos.text.lower()
        try:
            sec = trigger.split(" | ")[0]
            parola = trigger.split(" | ")[1]
        except:
            say("La sintassi e' \"/del_default default | trigger\"!")
            return Log.a(
                "[Bot: @%s | %s] user: %s ID: %s 'del_risposte senza args necs'"
                % (infos.username, infos.user.uid, user, uid))
        trigs = json.loads(
            open("Files/bot_files/%s/%s" % (infos.bid, triggers)).read())

        if sec not in trigs:
            say("Non credo esista questo default...")
            return Log.a(
                "[Bot: @%s | %s] user: %s ID: %s 'del_risposte senza avere il trigger'"
                % (infos.username, infos.user.uid, user, uid))

        if not trigs[sec]:
            say("Ma questo default e' kitsuvuoto...")
            return Log.a(
                "[Bot: @%s | %s] user: %s ID: %s 'del_risposte senza frasi'" %
                (infos.username, infos.user.uid, user, uid))

        if parola not in trigs[sec]:
            say("Questo trigger non e' in %s, kitsu e.e" % sec)
            return Log.a(
                "[Bot: @%s | %s] user: %s ID: %s 'del_risposte senza frasi'" %
                (infos.username, infos.user.uid, user, uid))

        if parola + " " in trigs[sec]:
            trigs[sec] = trigs[sec].replace(parola + " ", "")
        else:
            trigs[sec] = trigs[sec].replace(" " + parola, "")
        with open("Files/bot_files/%s/%s" % (infos.bid, triggers),
                  "w") as file_d:
            file_d.write(json.dumps(trigs))

        say("Default (%s) kitsueliminato!! ~" % lang_itm)
        Log.a("[Bot: @%s | %s] user: %s ID: %s 'del_default riuscito'" %
              (infos.username, infos.user.uid, user, uid))
    except Exception as err:
        say("S-si è verificato un errore...")
        Log.e(err)
示例#13
0
def unkown_command(infos):
    if not infos.chat_private:
        return

    Dialoger.send(infos, None, special_text="Comando sconosciuto, kitsu!")
    Log.a("Comando sconosciuto")
示例#14
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)
示例#15
0
def MayaRun():
    update_id = None
    Log.d("Run Maya")
    while True:

        updates = bot.get_updates(offset=update_id)
        updates = updates["result"]
        print(updates)
        print(update_id)

        if updates:

            for item in updates:

                update_id = item["update_id"]
                try:

                    message = str(item["message"]["text"])

                except:

                    message = None

                from_ = item["message"]["from"]["id"]
                chat_ = item["message"]["chat"]["id"]
                first_name_ = item["message"]["from"]["first_name"]

                try:
                    username_ = item["message"]["from"]["username"]
                except:
                    username_ = None

                try:
                    chat_name_ = item["message"]["chat"]["title"]
                except:
                    chat_name_ = None

                try:
                    new_chat_member_ = item["message"]["new_chat_participant"]
                except:
                    new_chat_member_ = None

                try:
                    gone_chat_member_ = item["message"]["left_chat_member"]
                except:
                    gone_chat_member_ = None

                Log.i(from_)
                Log.i(chat_)

                if new_chat_member_ is not None:

                    new_chat_member_name_ = item["message"][
                        "new_chat_participant"]["first_name"]
                    Log.a("welcome")
                    reply = "Welcome " + new_chat_member_name_ + " to " + chat_name_ + " ^^"
                    bot.send_message(reply, chat_)
                    stk = pars.ReadSticker("manomp", "welcome")
                    bot.send_sticker(chat_, stk)

                if gone_chat_member_ is not None:

                    gone_chat_member_name_ = item["message"][
                        "left_chat_member"]["first_name"]
                    Log.a("Left")
                    reply = "Goodbye " + gone_chat_member_name_
                    if from_ == "MayaChan":
                        bot.send_message(reply, chat_)

                try:
                    reply_to_message_ = item["message"]["reply_to_message"]
                except:
                    reply_to_message_ = None

                if reply_to_message_ is not None:

                    reply_to_message_name_ = item["message"][
                        "reply_to_message"]["from"]["first_name"]
                    reply_id_ = item["message"]["reply_to_message"]["from"][
                        "id"]
                    reply = repum.reply_to_usermessage(message, first_name_,
                                                       reply_to_message_name_,
                                                       chat_, from_, reply_id_)
                    bot.send_message(reply, chat_)

                if reply_to_message_ is None:

                    if from_ == chat_:
                        reply, parse_mode = trigger.make_reply(
                            message, username_, first_name_)
                        bot.send_message(reply, from_, parse_mode)

                    if from_ != chat_:
                        reply, parse_mode = trigger.make_reply(
                            message, username_, first_name_)
                        bot.send_message(reply, chat_, parse_mode)