def __list_all_modules(): from os.path import dirname, basename, isfile import glob # This generates a list of modules in this folder for the * in __main__ to work. mod_paths = glob.glob(dirname(__file__) + "/*.py") all_modules = [ basename(f)[:-3] for f in mod_paths if isfile(f) and f.endswith(".py") and not f.endswith('__init__.py') ] if LOAD or NO_LOAD: to_load = LOAD if to_load: if not all( any(mod == module_name for module_name in all_modules) for mod in to_load): LOGGER.error("Invalid loadorder names. Quitting.") quit(1) else: to_load = all_modules if NO_LOAD: LOGGER.info("Not loading: {}".format(NO_LOAD)) return [item for item in to_load if item not in NO_LOAD] return to_load return all_modules
def shellExecute(bot: Bot, update: Update): cmd = update.message.text.split(' ', maxsplit=1) if len(cmd) == 1: sendMessage("No command provided!", bot, update) return LOGGER.info(cmd) output = shell(cmd[1]) if output[1].decode(): LOGGER.error(f"Shell: {output[1].decode()}") if len(output[0].decode()) > 4000: with open("shell.txt", 'w') as f: f.write(f"Output\n-----------\n{output[0].decode()}\n") if output[1]: f.write(f"STDError\n-----------\n{output[1].decode()}\n") with open("shell.txt", 'rb') as f: bot.send_document(document=f, filename=f.name, reply_to_message_id=update.message.message_id, chat_id=update.message.chat_id) else: if output[1].decode(): sendMessage(f"<code>{output[1].decode()}</code>", bot, update) return else: sendMessage(f"<code>{output[0].decode()}</code>", bot, update)
def main(): test_handler = CommandHandler("test", test) start_handler = CommandHandler("start", start, pass_args=True) start_callback_handler = CallbackQueryHandler(send_start, pattern=r"bot_start") dispatcher.add_handler(start_callback_handler) help_handler = CommandHandler("help", get_help) help_callback_handler = CallbackQueryHandler(help_button, pattern=r"help_") settings_handler = CommandHandler("settings", get_settings) settings_callback_handler = CallbackQueryHandler(settings_button, pattern=r"stngs_") donate_handler = CommandHandler("donate", donate) migrate_handler = MessageHandler(Filters.status_update.migrate, migrate_chats) # dispatcher.add_handler(test_handler) dispatcher.add_handler(start_handler) dispatcher.add_handler(help_handler) dispatcher.add_handler(settings_handler) dispatcher.add_handler(help_callback_handler) dispatcher.add_handler(settings_callback_handler) dispatcher.add_handler(migrate_handler) dispatcher.add_handler(donate_handler) # dispatcher.add_error_handler(error_callback) # add antiflood processor Dispatcher.process_update = process_update if WEBHOOK: LOGGER.info("Using webhooks.") updater.start_webhook(listen="127.0.0.1", port=PORT, url_path=TOKEN) if CERT_PATH: updater.bot.set_webhook(url=URL + TOKEN, certificate=open(CERT_PATH, 'rb')) else: updater.bot.set_webhook(url=URL + TOKEN) else: LOGGER.info(" angelbot..is..running....") updater.start_polling(timeout=15, read_latency=4) if len(argv) not in (1, 3, 4): Client.disconnect() else: Client.run_until_disconnected() updater.idle()
def main(): test_handler = CommandHandler("test", test) start_handler = CommandHandler("start", start, pass_args=True) IMDB_HANDLER = CommandHandler('imdb', imdb, pass_args=True) IMDB_SEARCHDATAHANDLER = CallbackQueryHandler(imdb_searchdata) start_callback_handler = CallbackQueryHandler(send_start, pattern=r"bot_start") dispatcher.add_handler(start_callback_handler) help_handler = CommandHandler("help", get_help) help_callback_handler = CallbackQueryHandler(help_button, pattern=r"help_") settings_handler = CommandHandler("settings", get_settings) settings_callback_handler = CallbackQueryHandler(settings_button, pattern=r"stngs_") source_handler = CommandHandler("source", source) migrate_handler = MessageHandler(Filters.status_update.migrate, migrate_chats) M_CONNECT_BTN_HANDLER = CallbackQueryHandler(m_connect_button, pattern=r"main_connect") # dispatcher.add_handler(test_handler) dispatcher.add_handler(start_handler) dispatcher.add_handler(help_handler) dispatcher.add_handler(settings_handler) dispatcher.add_handler(help_callback_handler) dispatcher.add_handler(settings_callback_handler) dispatcher.add_handler(migrate_handler) dispatcher.add_handler(source_handler) dispatcher.add_handler(M_CONNECT_BTN_HANDLER) dispatcher.add_handler(IMDB_HANDLER) dispatcher.add_handler(IMDB_SEARCHDATAHANDLER) # dispatcher.add_error_handler(error_callback) # add antiflood processor Dispatcher.process_update = process_update if WEBHOOK: LOGGER.info("Using webhooks.") updater.start_webhook(listen="127.0.0.1", port=PORT, url_path=TOKEN) if CERT_PATH: updater.bot.set_webhook(url=URL + TOKEN, certificate=open(CERT_PATH, 'rb')) else: updater.bot.set_webhook(url=URL + TOKEN) else: LOGGER.info("Cinderella running...") updater.start_polling(timeout=15, read_latency=4) updater.idle()
def post_telegraph(bot: Bot, update: Update, args: List[str]): short_name = "「ZoldyckFamily」" msg = update.effective_message # type: Optional[Message] telegraph = Telegraph() r = telegraph.create_account(short_name=short_name) auth_url = r["auth_url"] LOGGER.info(auth_url) title_of_page = " ".join(args) page_content = msg.reply_to_message.text page_content = page_content.replace("\n", "<br>") response = telegraph.create_page( title_of_page, html_content=page_content ) msg.reply_text("https://telegra.ph/{}".format(response["path"]))
def migrate_chats(bot: Bot, update: Update): msg = update.effective_message # type: Optional[Message] if msg.migrate_to_chat_id: old_chat = update.effective_chat.id new_chat = msg.migrate_to_chat_id elif msg.migrate_from_chat_id: old_chat = msg.migrate_from_chat_id new_chat = update.effective_chat.id else: return LOGGER.info("Migrating from %s, to %s", str(old_chat), str(new_chat)) for mod in MIGRATEABLE: mod.__migrate__(old_chat, new_chat) LOGGER.info("Successfully migrated!") raise DispatcherHandlerStop
# Stop processing with any other handler. except DispatcherHandlerStop: self.logger.debug( 'Stopping further handlers due to DispatcherHandlerStop') break # Dispatch any error. except TelegramError as te: self.logger.warning( 'A TelegramError was raised while processing the Update') try: self.dispatch_error(update, te) except DispatcherHandlerStop: self.logger.debug('Error handler stopped further handlers') break except Exception: self.logger.exception( 'An uncaught error was raised while handling the error') # Errors should not stop the thread. except Exception: self.logger.exception( 'An uncaught error was raised while processing the update') if __name__ == '__main__': LOGGER.info("Successfully loaded modules: " + str(ALL_MODULES)) main()
def new_member(bot: Bot, update: Update): chat = update.effective_chat user = update.effective_user msg = update.effective_message chat_name = chat.title or chat.first or chat.usernam should_welc, cust_welcome, welc_type = sql.get_welc_pref(chat.id) welc_mutes = sql.welcome_mutes(chat.id) user_id = user.id human_checks = sql.get_human_checks(user_id, chat.id) if should_welc: sent = None new_members = update.effective_message.new_chat_members for new_mem in new_members: # Give the owner a special welcome if new_mem.id == OWNER_ID: update.effective_message.reply_photo( MEANII_IMG, "Oh, my lub just join your family 💙\nIf you want to know more about him just visit his personal website anilchauhanxda.github.io" ) return "#USER_JOINED\nBot Owner Just Joined The Chat" # Give the ALLUKA elif new_mem.id in ALLUKA: update.effective_message.reply_photo( ALLUKA_IMG, "Woah! I just join this family!\n <i>If you're nice to me, you have to be nice to Nanika too!! If you're going to protect me, you have to protect Nanika too!! But if you're going to be mean to Nanika, I hate you!!</i>\n To know about my family do /familylist ", parse_mode=ParseMode.HTML, disable_web_page_preview=True) bot.send_sticker(chat.id, BAN_STICKER) return "{}\n#USER_JOINED\n<b>User</b>:{}\n<b>ID</b>:{}".format( html.escape(chat.title), mention_html(user.id, user.first_name), user.id) # Welcome SUNNY elif new_mem.id in HISOKA: update.effective_message.reply_photo( HISOKA_IMG, "blop! blop! <b>Hisoka Morow</b> join your family!\n <i>'My greatest pleasure comes when such people crumple to their knees and I look down upon their disbelieving faces as their plans fail.♥'</i>\nTo know about my family do /familylist ", parse_mode=ParseMode.HTML, disable_web_page_preview=True) bot.send_sticker(chat.id, HISOKA_WELCOME) return "{}\n#USER_JOINED\n<b>User</b>:{}\n<b>ID</b>:{}".format( html.escape(chat.title), mention_html(user.id, user.first_name), user.id) # Welcome BHAVIK elif new_mem.id in GING: update.effective_message.reply_photo( GING_IMG, "haye!! <b>Ging</b> is just join your family!!\n <i>I'm enjoying the journey. So if your destination is the same as mine, enjoy the side trips. A lot. Something more important than the thing you're hunting could be right there by the side of the road.'</i>\nTo know about my family do /familylist ", parse_mode=ParseMode.HTML, disable_web_page_preview=True) return "{}\n#USER_JOINED\n<b>User</b>:{}\n<b>ID</b>:{}".format( html.escape(chat.title), mention_html(user.id, user.first_name), user.id) # Welcome Whitelisted elif new_mem.id in SHIZUKU: update.effective_message.reply_photo( SHIZUKU_IMG, "oh!! <b>Shizuku Murasaki</b> (シズク゠ムラサã‚, Shizuku Murasaki) is just join your family!! \n<i>'Breaking the rules means rejecting the Spiders, and Chrollo, too. That I never want to do.'</i> \nTo know about my family do /familylist ", parse_mode=ParseMode.HTML, disable_web_page_preview=True) return "{}\n#USER_JOINED\n<b>User</b>:{}\n<b>ID</b>:{}".format( html.escape(chat.title), mention_html(user.id, user.first_name), user.id) elif new_mem.id in SILVA: update.effective_message.reply_photo( SILVA_IMG, "Woaw!! My father is just enter!!<b>Silva Zoldyck </b> (シズク゠ムラサã‚, Shizuku Murasaki) is just join this family!! \n<i>''Never overreach your limits...! Make your move only when you're 100% positive you can make the kill. Otherwise, bide your time...!! It's foolish to show your hand when the odds are against you.'</i> \nTo know about my family do /familylist ", parse_mode=ParseMode.HTML, disable_web_page_preview=True) return "{}\n#USER_JOINED\n<b>User</b>:{}\n<b>ID</b>:{}".format( html.escape(chat.title), mention_html(user.id, user.first_name), user.id) elif new_mem.id in GON: update.effective_message.reply_photo( GON_IMG, "Woaw!! <b>Gon Freecss (ゴン゠フリークス, Gon FurÄ«kusu)</b>is just join this family!! \n<i>''I can't stand being on the losing end forever!!'</i> \nTo know about my family do /familylist ", parse_mode=ParseMode.HTML, disable_web_page_preview=True) return "{}\n#USER_JOINED\n<b>User</b>:{}\n<b>ID</b>:{}".format( html.escape(chat.title), mention_html(user.id, user.first_name), user.id) elif new_mem.id in ILLUMI_ZOLDYCK: update.effective_message.reply_photo( ILLUMI_ZOLDYCK_IMG, "Haye!! My elder brother <b>Illumi Zoldyck (イルミ゠ゾルディック, Irumi Zorudikku) is just join this family!!</b> just enter here.\n<i>''Now I can tell you, that you would not make a good Hunter. Your calling is as an assassin. There's no fire in you, just darkness. It sustains you, drains you of any desire. Your only joy is in causing death, and even that is fleeting. That is how Dad and I molded you.'</i> \nTo know about my family do /familylist ", parse_mode=ParseMode.HTML, disable_web_page_preview=True) return "{}\n#USER_JOINED\n<b>User</b>:{}\n<b>ID</b>:{}".format( html.escape(chat.title), mention_html(user.id, user.first_name), user.id) elif new_mem.id in LEORIO: update.effective_message.reply_photo( LEORIO_IMG, "woh!! The simple guy <b>Leorio Paradinight</b> is just join this family!!\n<i>'I'm a simple guy. Figured I'd become a doctor... so I could cure some kid with the same disease, tell his parents they owed me nothing! Me... A doctor! Now there's a joke!! Do you know how much it costs to even try to become a doctor? The mind boggles!! It's always about money! Always!! That's why I want it!'</i> \nTo know about my family do /familylist ", parse_mode=ParseMode.HTML, disable_web_page_preview=True) return "{}\n#USER_JOINED\n<b>User</b>:{}\n<b>ID</b>:{}".format( html.escape(chat.title), mention_html(user.id, user.first_name), user.id) elif new_mem.id in BISCUIT: update.effective_message.reply_photo( BISCUIT_IMG, "Haye!! The sleeveless girl <b>Biscuit Krueger</b> is just join this family!!\n<i>'After 50 years of lying through my teeth, I can tell whether someone's telling the truth.'</i> \nTo know about my family do /familylist ", parse_mode=ParseMode.HTML, disable_web_page_preview=True) return "{}\n#USER_JOINED\n<b>User</b>:{}\n<b>ID</b>:{}".format( html.escape(chat.title), mention_html(user.id, user.first_name), user.id) elif new_mem.id in CHROLLO: update.effective_message.reply_photo( CHROLLO_IMG, "wow!! The founder and leader of the Phantom Troupe <b>Chrollo Lucilfer</b> is just join your family!!\n<i>'Making the abilities yours while exploring the darkness within the soul of the original owner... that's the true pleasure of Skill Hunter.'</i> \nTo know about my family do /familylist ", parse_mode=ParseMode.HTML, disable_web_page_preview=True) return "{}\n#USER_JOINED\n<b>User</b>:{}\n<b>ID</b>:{}".format( html.escape(chat.title), mention_html(user.id, user.first_name), user.id) elif new_mem.id in KILLUA: update.effective_message.reply_photo( KILLUA_IMG, "wow!! My bro <b>Killua Zoldyck </b> is just join your family!!\n<i>'I'm so tired of killing... I just want to be a kid. Hanging out, doing stuff with Gon. That's it.'</i> \nTo know about my family do /familylist ", parse_mode=ParseMode.HTML, disable_web_page_preview=True) return "{}\n#USER_JOINED\n<b>User</b>:{}\n<b>ID</b>:{}".format( html.escape(chat.title), mention_html(user.id, user.first_name), user.id) elif new_mem.id in MERUEM: update.effective_message.reply_photo( MERUEM_IMG, "wow!! <b>Meruem </b> is HERE!!\n<i>'Who am I? Why am I here? A king with no name. A borrowed castle. My subjects are mindless drones. If this is the mandate of Heaven I have been given... I fear... I fear nothing... except the tedium that it will bring!!!'</i> \nTo know about my family do /familylist ", parse_mode=ParseMode.HTML, disable_web_page_preview=True) return "{}\n#USER_JOINED\n<b>User</b>:{}\n<b>ID</b>:{}".format( html.escape(chat.title), mention_html(user.id, user.first_name), user.id) elif new_mem.id in KITE: update.effective_message.reply_photo( KITE_IMG, "wow!! <b>Kite (カイト)</b> is HERE!!\n<i>'Kite is killed by Neferpitou, but is soon rebuilt into a manipulated puppet to train the ants. He is later captured by Knuckle and Shoot.'</i> \nTo know about my family do /familylist ", parse_mode=ParseMode.HTML, disable_web_page_preview=True) return "{}\n#USER_JOINED\n<b>User</b>:{}\n<b>ID</b>:{}".format( html.escape(chat.title), mention_html(user.id, user.first_name), user.id) # Don't welcome yourself elif new_mem.id == bot.id: update.effective_message.reply_text( "Heya!! thank you for choosing me :)") continue else: # If welcome message is media, send with appropriate function if welc_type != sql.Types.TEXT and welc_type != sql.Types.BUTTON_TEXT: ENUM_FUNC_MAP[welc_type](chat.id, cust_welcome) return # else, move on first_name = new_mem.first_name or "PersonWithNoName" # edge case of empty name - occurs for some bugs. if cust_welcome: if cust_welcome == sql.DEFAULT_WELCOME: cust_welcome = random.choice( sql.DEFAULT_WELCOME_MESSAGES).format( first=first_name) #LOGGER.info("Custom Message: {}".format(cust_welcome)) if new_mem.last_name: fullname = "{} {}".format(first_name, new_mem.last_name) else: fullname = first_name count = chat.get_members_count() mention = mention_markdown(new_mem.id, first_name) if new_mem.username: username = "******" + escape_markdown(new_mem.username) else: username = mention valid_format = escape_invalid_curly_brackets( cust_welcome, VALID_WELCOME_FORMATTERS) res = valid_format.format( first=escape_markdown(first_name), last=escape_markdown(new_mem.last_name or first_name), fullname=escape_markdown(fullname), username=username, mention=mention, count=count, chatname=escape_markdown(chat.title), id=new_mem.id) buttons = sql.get_welc_buttons(chat.id) keyb = build_keyboard(buttons) else: res = random.choice( sql.DEFAULT_WELCOME_MESSAGES).format(first=first_name) LOGGER.info("res is {}".format(res)) keyb = [] keyboard = InlineKeyboardMarkup(keyb) sent = send(update, res, keyboard, random.choice(sql.DEFAULT_WELCOME_MESSAGES).format( first=escape_markdown( first_name))) # type: Optional[Message] #User exceptions from welcomemutes if is_user_ban_protected(chat, new_mem.id, chat.get_member( new_mem.id)) or human_checks: continue #Join welcome: soft mute if welc_mutes == "soft": bot.restrict_chat_member(chat.id, new_mem.id, can_send_messages=True, can_send_media_messages=False, can_send_other_messages=False, can_add_web_page_previews=False, until_date=(int(time.time() + 24 * 60 * 60))) #Join welcome: strong mute if welc_mutes == "strong": new_join_mem = "[{}](tg://user?id={})".format( new_mem.first_name, user.id) msg.reply_text( "{}, click the button below to prove you're not bot". format(new_join_mem), reply_markup=InlineKeyboardMarkup([[ InlineKeyboardButton( text="Yes, I'm not bot 🤖", callback_data="user_join_({})".format( new_mem.id)) ]]), parse_mode=ParseMode.MARKDOWN) bot.restrict_chat_member(chat.id, new_mem.id, can_send_messages=False, can_send_media_messages=False, can_send_other_messages=False, can_add_web_page_previews=False) prev_welc = sql.get_clean_pref(chat.id) if prev_welc: try: bot.delete_message(chat.id, prev_welc) except BadRequest as excp: pass if sent: sql.set_clean_welcome(chat.id, sent.message_id) return "{}\n#USER_JOINED\n<b>User</b>:{}\n<b>ID</b>:{}".format( html.escape(chat.title), mention_html(user.id, user.first_name), user.id)
mod_paths = glob.glob(dirname(__file__) + "/*.py") all_modules = [ basename(f)[:-3] for f in mod_paths if isfile(f) and f.endswith(".py") and not f.endswith('__init__.py') ] if LOAD or NO_LOAD: to_load = LOAD if to_load: if not all( any(mod == module_name for module_name in all_modules) for mod in to_load): LOGGER.error("Invalid loadorder names. Quitting.") quit(1) else: to_load = all_modules if NO_LOAD: LOGGER.info("Not loading: {}".format(NO_LOAD)) return [item for item in to_load if item not in NO_LOAD] return to_load return all_modules ALL_MODULES = sorted(__list_all_modules()) LOGGER.info("Modules to load: %s", str(ALL_MODULES)) __all__ = ALL_MODULES + ["ALL_MODULES"]
from alluka.modules.helper_funcs.alternate import send_message LOADED_LANGS_ID = [] LANGS_TEXT = {} FUNC_LANG = {} for x in os.listdir('alluka/modules/langs'): if os.path.isdir('alluka/modules/langs/' + x): continue x = x.replace('.py', '') LOADED_LANGS_ID.append(x) imported_langs = importlib.import_module("alluka.modules.langs." + x) FUNC_LANG[x] = imported_langs LANGS_TEXT[x] = imported_langs.__lang__ LOGGER.info("{} languages loaded: {}".format(len(LOADED_LANGS_ID), LOADED_LANGS_ID)) def tl(message, text): if type(message) == int or type(message) == str and message[1:].isdigit(): getlang = sql.get_lang(message) if getlang == 'None' or not getlang: getlang = 'id' else: getlang = sql.get_lang(message.chat.id) if getlang == 'None' or not getlang: if message.from_user.language_code: if message.from_user.language_code in LOADED_LANGS_ID: sql.set_lang(message.chat.id, message.from_user.language_code) getlang = message.from_user.language_code