Exemplo n.º 1
0
async def run(message, matches, chat_id, step, crons=None):
    response = []

    if matches == "up":
        if message.is_reply:
            msg = await message.get_reply_message()
            if msg.file:
                strin = await downloadFile(msg)
                return [message.reply(strin)]
            else:
                return [message.reply("reply to an File please !")]
        else:
            return [message.reply("reply to an File please !")]
        pass
        return response
    elif matches[0] == "del":
        plugin = matches[1]
        if os.path.isfile("plugins/%s" % ((plugin + ".py"))):

            if plugin in utilities.config["plugins"]:
                utilities.config["plugins"].remove(plugin)
                utilities.save_config()
                utilities.load_plugins()
            os.remove("plugins/%s" % ((plugin + ".py")))
            return [message.reply("plugin has been deleted.")]
        else:
            return [message.reply("no plugin found with this name.")]
Exemplo n.º 2
0
def remove_plugin(plugin_name):
    if plugin_name == "plugins":
        return "You Can not disable plugins plugin !! :|"
    if plugin_name not in utilities.config["plugins"]:
        return "This plugin is not active"
    utilities.config["plugins"].remove(plugin_name)
    utilities.save_config()
    utilities.load_plugins()
    return "Plugin " + plugin_name + " Disable Successfully"
Exemplo n.º 3
0
def add_plugin(plugin_name):
    if plugin_name in utilities.config["plugins"]:
        return "This plugin is already active"
    if not exists(join(utilities.WD, "plugins", plugin_name + ".py")):
        return "There is no file that name is " + plugin_name + " in plugins directory"
    utilities.config["plugins"].append(plugin_name)
    utilities.save_config()
    utilities.load_plugins()
    return ("Plugin " + plugin_name + " Enable Successfully\n" +
            stringify(utilities.load_plugin(plugin_name)))
Exemplo n.º 4
0
async def saveBotId():
    me = await utilities.client.get_me()
    utilities.prLightGray("name : " + me.first_name)
    if me.username:
        utilities.prYellow("username : https://t.me/" + me.username)
    if me.bot:
        utilities.prGreen("botType : API")
    else:
        utilities.prGreen("botType : CLI")
    utilities.prBlack("---------------------------")
    utilities.config["bot_id"] = (me).id
    utilities.config["isbot"] = (me).bot
    utilities.save_config()
Exemplo n.º 5
0
async def run(message, matches, chat_id, step, crons=None):
    upd = ""
    for line in runGitPull():
        upd = upd + line.decode("utf-8")
    if "Already" in upd:
        return [message.reply("❏︙تم عاده تشغيل البوت وتم تحديث السورس")]
    else:
        utilities.config = utilities.get_config()
        utilities.config["updateChat"] = message.chat_id
        utilities.save_config()
        await message.reply("❏︙جاري تحديث السورس رجاء الانتضار منفضلك")
        restartBot()
    return []
Exemplo n.º 6
0
async def run(message, matches, chat_id, step, crons=None):
    upd = ""
    for line in runGitPull():
        upd = upd + line.decode("utf-8")
    if "Already" in upd:
        return [message.reply("The source is up to date.")]
    else:
        utilities.config = utilities.get_config()
        utilities.config["updateChat"] = message.chat_id
        utilities.save_config()
        await message.reply(
            "The source has been updated,the bot will restart please wait."
        )
        restartBot()
    return []
Exemplo n.º 7
0
def add_plugin(plugin_name):
    if plugin_name in utilities.config["plugins"]:
        return "This plugin is already active"
    if not exists(join(utilities.WD, "plugins", plugin_name + ".py")):
        return "There is no file that name is " + plugin_name + " in plugins directory"
    try:
        utilities.load_plugin(plugin_name)
        utilities.config["plugins"].append(plugin_name)
        utilities.save_config()
        utilities.load_plugins()
        return ("Plugin " + plugin_name + " Enable Successfully\n" +
                stringify(utilities.load_plugin(plugin_name)))
    except Exception as e:
        print(str(e))
        return ("There is error while install " + plugin_name +
                " check developers for more info.")
Exemplo n.º 8
0
def add_inactive_plugin():
    plugin_files = [
        files for files in os.listdir(join(utilities.WD, "plugins"))
        if re.search("^(.*)\.py$", files)
    ]
    plugins = []
    for plugin_file in plugin_files:
        plugin_file = plugin_file.replace(".py", "")
        if plugin_file == "__init__":
            continue
        if plugin_file not in utilities.config["plugins"]:
            plugins.append(plugin_file)
    for plugin_name in plugins:
        if plugin_name in utilities.config["plugins"]:
            return "This plugin is already active"
        if not exists(join(utilities.WD, "plugins", plugin_name + ".py")):
            return ("There is no file that name is " + plugin_name +
                    " in plugins directory")
        utilities.config["plugins"].append(plugin_name)
    utilities.save_config()
    utilities.load_plugins()
    return "Plugins activated successfully"
Exemplo n.º 9
0
async def run(message, matches, chat_id, step, crons=None):
    response = None
    if matches[1:] == "plugins":
        response = message.reply(show_plugin(), parse_mode="html")
    if matches[0] == "enable":
        response = message.reply(add_plugin(matches[1]))
    if matches[0] == "disable":
        response = message.reply(remove_plugin(matches[1]))
    if matches == "reload":
        response = message.reply(reload_plugin())
    if matches[0] == "setlang":
        response = message.reply(setlang(matches[1]))
    if matches == "enableAll":
        response = message.reply(add_inactive_plugin())
    if matches[0] == "flood":
        if matches[1] == "enable":
            utilities.config["flood"] = True
            utilities.save_config()
            response = message.reply("Flood has been enabled.")
        else:
            utilities.config["flood"] = False
            utilities.save_config()
            response = message.reply("Flood has been disable.")
    return [response]
Exemplo n.º 10
0
def setlang(lang):
    utilities.config["lang"] = lang
    utilities.save_config()
    utilities.load_plugins()
    return "Lang set " + lang
Exemplo n.º 11
0
    except Exception as e:
        print(str(e))
        await event.reply("Error : " + str(e))


async def clock():
    while True:
        if len(utilities.crons) != 0:
            for data in utilities.crons:
                if data["time"] < datetime.datetime.now():
                    for plugin in utilities.plugins:
                        if "cron" in plugin:
                            return_values = await plugin["cron"](data)
                            for return_value in return_values:
                                if return_value:
                                    await (return_value)
                    utilities.crons.remove(data)
        await asyncio.sleep(1)


if "updateChat" in utilities.config:
    loop.create_task(
        utilities.client.send_message(utilities.config["updateChat"],
                                      "The bot restart successfully."))
    del utilities.config["updateChat"]
    utilities.save_config()
loop.create_task(clock())
loop.create_task(saveBotId())
utilities.prCyan("Started Receveving Messages ...")
utilities.client.run_until_disconnected()
Exemplo n.º 12
0
async def my_event_handler(event):
    try:
        message = event.message
        chat_id = event.chat_id
        from_id = event.sender_id
        plugins = utilities.plugins
        mutedUsers = getMutedUser(chat_id, from_id)
        if mutedUsers:
            remMuteUser(chat_id, from_id)
        if message.raw_text:
            matches = re.findall("^[#/!](cancel)$", event.raw_text,
                                 re.IGNORECASE)
            if len(matches) > 0 and matches[0] == "cancel":
                if from_id in utilities.user_steps:
                    del utilities.user_steps[from_id]
                    return await message.reply("Canceling successfully !")
        if from_id in utilities.user_steps:
            for plugin in plugins:
                if plugin["name"] == utilities.user_steps[from_id]["name"]:
                    for pattern in plugin["patterns"]:
                        if re.search(pattern, event.raw_text,
                                     re.IGNORECASE | re.MULTILINE):
                            matches = re.findall(pattern, event.raw_text,
                                                 re.IGNORECASE | re.DOTALL)
                            break
                        else:
                            matches = ["xxxxxxxxxx"]
                    if plugin["sudo"]:
                        if utilities.check_sudo(from_id):
                            return_values = await plugin["run"](
                                message,
                                matches[0],
                                chat_id,
                                utilities.user_steps[from_id]["step"],
                            )
                            for return_value in return_values:
                                if return_value:
                                    try:
                                        await (return_value)
                                    except Exception as e:
                                        print("step :" + str(e))
                        else:
                            return
                    else:
                        return_values = await plugin["run"](
                            message,
                            matches[0],
                            chat_id,
                            utilities.user_steps[from_id]["step"],
                        )
                        if return_values:
                            for return_value in return_values:
                                await (return_value)
                    break
            return
        elif message.raw_text is not None and message.raw_text != "":
            if "flood" not in utilities.config:
                utilities.config["flood"] = True
                utilities.save_config()
            if utilities.config["flood"]:
                pv = utilities.red.get("flood-" + str(message.sender_id)) or 0
                # print("flood-" + str(message.sender_id), pv)
                if pv == 0:
                    utilities.flood[message.sender_id] = True
                utilities.red.set("flood-" + str(message.sender_id),
                                  (int(pv) + 1),
                                  ex=1)
                if (int(pv) + 1) == 5 and utilities.flood[message.sender_id]:
                    await message.reply("please do not flood...")
                    utilities.prRed(
                        str(message.sender_id) +
                        " : is causing flood please stop...")
                    utilities.flood[message.sender_id] = False
                    return
                elif (int(pv) + 1) >= 5:
                    return
            for plugin in plugins:
                for pattern in plugin["patterns"]:
                    if re.search(pattern, event.raw_text,
                                 re.IGNORECASE | re.MULTILINE):
                        if ("bot" in plugin and
                                utilities.config["isbot"] != plugin["bot"]):
                            if plugin["bot"]:
                                await event.reply("for bot-api only")
                            else:
                                await event.reply("for bot-cli only")
                            return
                        matches = re.findall(
                            pattern,
                            event.raw_text,
                            re.IGNORECASE | re.MULTILINE | re.DOTALL,
                        )
                        if plugin["sudo"]:
                            if utilities.check_sudo(event.sender_id):
                                return_values = await plugin["run"](
                                    event,
                                    matches[0],
                                    chat_id,
                                    0,
                                    crons=utilities.crons)

                                for return_value in return_values:
                                    if return_value:
                                        try:
                                            await (return_value)
                                        except Exception as e:
                                            print("text main :" + str(e))
                            else:
                                continue

                        else:
                            return_values = await plugin["run"](
                                event,
                                matches[0],
                                chat_id,
                                0,
                                crons=utilities.crons)
                            if return_values:
                                for return_value in return_values:
                                    await (return_value)
        elif message.media is not None or message.file is not None:
            match = ""
            if message.photo:
                match = "__photo__"
            if message.gif:
                match = "__gif__"
            for plugin in plugins:
                for pattern in plugin["patterns"]:
                    if re.search(pattern, match, re.IGNORECASE | re.MULTILINE):
                        matches = re.findall(pattern, match, re.IGNORECASE)
                        if plugin["sudo"]:
                            if utilities.check_sudo(event.sender_id):
                                return_values = await plugin["run"](event,
                                                                    matches[0],
                                                                    chat_id, 0)
                                for return_value in return_values:
                                    try:
                                        await (return_value)
                                    except Exception as e:
                                        print("media :" + str(e))
                            else:
                                return
                        else:
                            return_values = await plugin["run"](event,
                                                                matches[0],
                                                                chat_id, 0)
                            if return_values:
                                for return_value in return_values:
                                    await (return_value)

    except Exception as e:
        print(str(e))
        await event.reply("Error : " + str(e))