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.")]
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"
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)))
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()
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 []
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 []
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.")
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"
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]
def setlang(lang): utilities.config["lang"] = lang utilities.save_config() utilities.load_plugins() return "Lang set " + lang
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()
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))