Esempio n. 1
0
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
Esempio n. 2
0
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)
Esempio n. 3
0
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()
Esempio n. 4
0
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()
Esempio n. 5
0
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"]))
Esempio n. 6
0
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
Esempio n. 7
0
        # 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()
Esempio n. 8
0
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)
Esempio n. 9
0
    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"]
Esempio n. 10
0
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