Example #1
0
async def select_lang_keyboard(message, strings):
    markup = InlineKeyboardMarkup(row_width=2)

    lang_info = await get_chat_lang_info(message.chat.id)

    if message.chat.type == 'private':
        text = strings['your_lang'].format(
            lang=lang_info['flag'] + " " + lang_info['babel'].display_name)
        text += strings['select_pm_lang']

    # TODO: Connected chat lang info

    else:
        text = strings['chat_lang'].format(
            lang=lang_info['flag'] + " " + lang_info['babel'].display_name)
        text += strings['select_chat_lang']

    for lang in LANGUAGES.values():
        lang_info = lang['language_info']
        markup.insert(InlineKeyboardButton(
            lang_info['flag'] + " " + lang_info['babel'].display_name,
            callback_data=select_lang_cb.new(lang=lang_info['code']))
        )

    markup.add(InlineKeyboardButton(strings['crowdin_btn'], url='https://crowdin.com/project/sophiebot'))

    await message.reply(text, reply_markup=markup)
Example #2
0
async def select_lang_keyboard(message, strings, edit=False):
    markup = InlineKeyboardMarkup(row_width=2)
    task = message.reply if edit is False else message.edit_text

    lang_info = await get_chat_lang_info(message.chat.id)

    if message.chat.type == 'private':
        text = strings['your_lang'].format(lang=lang_info['flag'] + " " +
                                           lang_info['babel'].display_name)
        text += strings['select_pm_lang']

    # TODO: Connected chat lang info

    else:
        text = strings['chat_lang'].format(lang=lang_info['flag'] + " " +
                                           lang_info['babel'].display_name)
        text += strings['select_chat_lang']

    for lang in LANGUAGES.values():
        lang_info = lang['language_info']
        markup.insert(
            InlineKeyboardButton(
                lang_info['flag'] + " " + lang_info['babel'].display_name,
                callback_data=select_lang_cb.new(
                    lang=lang_info['code'],
                    back_btn=False if edit is False else True)))

    markup.add(
        InlineKeyboardButton(strings['crowdin_btn'],
                             url='https://crowdin.com/project/nao-tomori/'))
    if edit:
        markup.add(
            InlineKeyboardButton(strings['back'], callback_data='go_to_start'))
    with suppress(MessageNotModified):
        await task(text, reply_markup=markup)
Example #3
0
def button_parser(chat_id, texts, pm=False, aio=False, row_width=None):
    buttons = InlineKeyboardMarkup(row_width=row_width) if aio else []
    pattern = r'\[(.+?)\]\((button|btn)(.+?)(:.+?|)(:same|)\)(\n|)'
    raw_buttons = re.findall(pattern, texts)
    text = re.sub(pattern, '', texts)
    for raw_button in raw_buttons:
        name = raw_button[0]
        action = raw_button[2]
        argument = raw_button[3][1:].lower() if raw_button[3] else ''

        if action in BUTTONS:
            cb = BUTTONS[action]
            string = f'{cb}_{argument}_{chat_id}' if argument else f'{cb}_{chat_id}'
            if aio:
                start_btn = InlineKeyboardButton(
                    name, url=f'https://t.me/{BOT_USERNAME}?start=' + string)
                cb_btn = InlineKeyboardButton(name, callback_data=string)
            else:
                start_btn = Button.url(
                    name, f'https://t.me/{BOT_USERNAME}?start=' + string)
                cb_btn = Button.inline(name, string)

            if cb.endswith('sm'):
                btn = cb_btn if pm else start_btn
            elif cb.endswith('cb'):
                btn = cb_btn
            elif cb.endswith('start'):
                btn = start_btn
            elif cb.startswith('url'):
                btn = Button.url(name, argument)
        elif action == 'url':
            if argument[0] == '/' and argument[1] == '/':
                argument = argument[2:]
            btn = InlineKeyboardButton(
                name, url=argument) if aio else Button.url(name, argument)
        else:
            # If btn not registred
            btn = None
            if argument:
                text += f'\n[{name}].(btn{action}:{argument})'
            else:
                text += f'\n[{name}].(btn{action})'
                continue

        if aio:
            buttons.insert(btn) if raw_button[4] else buttons.add(btn)
        else:
            if len(buttons) < 1 and raw_button[4]:
                buttons.add(btn) if aio else buttons.append([btn])
            else:
                buttons[-1].append(btn) if raw_button[4] else buttons.append(
                    [btn])

    if not aio and len(buttons) == 0:
        buttons = None

    if not text or text == ' ':  # TODO: Sometimes we can return text == ' '
        text = None

    return text, buttons
Example #4
0
async def del_filter(message, chat, strings):
    handler = get_args_str(message)
    chat_id = chat['chat_id']
    filters = await db.filters.find({
        'chat_id': chat_id,
        'handler': handler
    }).to_list(9999)
    if not filters:
        await message.reply(
            strings['no_such_filter'].format(chat_name=chat['chat_title']))
        return

    # Remove filter in case if we found only 1 filter with same header
    filter = filters[0]
    if len(filters) == 1:
        await db.filters.delete_one({'_id': filter['_id']})
        await update_handlers_cache(chat_id)
        await message.reply(
            strings['del_filter'].format(handler=filter['handler']))
        return

    # Build keyboard row for select which exactly filter user want to remove
    buttons = InlineKeyboardMarkup(row_width=1)
    text = strings['select_filter_to_remove'].format(handler=handler)
    for filter in filters:
        action = FILTERS_ACTIONS[filter['action']]
        buttons.add(
            InlineKeyboardButton(
                # If module's filter support custom del btn names else just show action name
                '' + action['del_btn_name'](message, filter)
                if 'del_btn_name' in action else filter['action'],
                callback_data=filter_remove_cp.new(id=str(filter['_id']))))

    await message.reply(text, reply_markup=buttons)
Example #5
0
async def select_time(state, strings, action, chat_id, msg_id):
    async with state.proxy() as data:
        data['time_sel_msg'] = msg_id

    await NewFilter.time.set()  # For manual select time

    text = strings['select_time']
    text += strings['select_time_tip']
    text += strings['select_time_btns']
    buttons = InlineKeyboardMarkup(row_width=2).add(
        InlineKeyboardButton(strings['time_f'],
                             callback_data=new_filter_time_cb.new(time=False)),
        InlineKeyboardButton(strings['time_2h'],
                             callback_data=new_filter_time_cb.new(time='2h')),
        InlineKeyboardButton(strings['time_5h'],
                             callback_data=new_filter_time_cb.new(time='5h')),
        InlineKeyboardButton(strings['time_24h'],
                             callback_data=new_filter_time_cb.new(time='24h')),
        InlineKeyboardButton(strings['time_2d'],
                             callback_data=new_filter_time_cb.new(time='2d')),
        InlineKeyboardButton(strings['time_1w'],
                             callback_data=new_filter_time_cb.new(time='7d')))

    buttons.add(
        InlineKeyboardButton(strings['back'],
                             callback_data='add_filter_actions'))

    buttons.add(InlineKeyboardButton(strings['exit'], callback_data='cancel'))

    await bot.edit_message_text(text, chat_id, msg_id, reply_markup=buttons)
    return
Example #6
0
async def set_access(user: User, data: dict):
    bot_user = User.get(User.user_id == data['user_id'])
    bot_user.access = data['mode']

    keyboard = InlineKeyboardMarkup()
    callback_data = {
        'action': 'set_access',
        'user_id': bot_user.user_id,
        'mode': not bot_user.access
    }
    if bot_user.access:
        btn_text = STRESS['access_granted_btn']
        msg_text = STRESS['access_granted_msg']
    else:
        btn_text = STRESS['access_denied_btn']
        msg_text = STRESS['access_denied_msg']
    keyboard.insert(
        InlineKeyboardButton(text=btn_text,
                             callback_data=json.dumps(callback_data)))
    await bot.edit_message_reply_markup(ACCESS_CONTROL_CHANNEL_ID,
                                        bot_user.access_msg_id,
                                        reply_markup=keyboard)

    if bot_user.access:
        bot_user.state = 'default'
        keyboard = ReplyKeyboardMarkup(resize_keyboard=True,
                                       one_time_keyboard=True)
        keyboard.add(KeyboardButton('Главное меню'))
    else:
        keyboard = ReplyKeyboardRemove()
    bot_user.save()
    await bot.send_message(bot_user.user_id, msg_text, reply_markup=keyboard)
Example #7
0
def inline_keyboard(*buttons, row_width=2):
    """ Собирает по полученным кнопкам InlineKeyboard """
    keyboard = InlineKeyboardMarkup()
    keyboard.row_width = row_width
    buttons = [b.value if isinstance(b, InlineButtons) else b for b in buttons]
    keyboard.add(*buttons)
    return keyboard
async def new_shedule_1_potok_handler(callback : types.CallbackQuery, state : FSMContext):
    await callback.answer()
    await state.update_data(id_shedule = 1)
    keyboard = InlineKeyboardMarkup()
    keyboard.add(InlineKeyboardButton(text = "Назад", callback_data="new_shedule_back"))
    await callback.message.edit_text("Отправьте новый текст с расписанием", reply_markup=keyboard)
    await AdminStateMainMenu.write_new_shedule.set()
async def admin_whos(callback: types.CallbackQuery):
    await callback.answer()
    user = DataBaseFunc.get_user(callback.from_user.id)
    keyboard = InlineKeyboardMarkup()
    keyboard.add(InlineKeyboardButton(text="Назад", callback_data="admin_in_admin_menu"))
    await callback.message.edit_text(text=AdminHelper.get_whos_admin(user), reply_markup=keyboard)
    await AdminStateMainMenu.whos.set()
Example #10
0
async def change_lang(message, lang, e=False, back_btn=False):
    chat_id = message.chat.id
    await change_chat_lang(chat_id, lang)

    strings = await get_strings(chat_id, 'language')

    lang_info = LANGUAGES[lang]['language_info']

    text = strings['lang_changed'].format(lang_name=lang_info['flag'] + " " +
                                          lang_info['babel'].display_name)
    text += strings['help_us_translate']

    markup = InlineKeyboardMarkup()

    if 'translators' in lang_info:
        markup.add(
            InlineKeyboardButton(
                strings['see_translators'],
                callback_data=translators_lang_cb.new(lang=lang)))

    if back_btn == 'True':
        # Callback_data converts boolean to str
        markup.add(
            InlineKeyboardButton(strings['back'], callback_data='go_to_start'))

    if e:
        with suppress(MessageNotModified):
            await message.edit_text(text,
                                    reply_markup=markup,
                                    disable_web_page_preview=True)
    else:
        await message.reply(text,
                            reply_markup=markup,
                            disable_web_page_preview=True)
Example #11
0
def full_wallets_inl():
    keyboard = InlineKeyboardMarkup(row_width=2)
    keyboard.add(
        InlineKeyboardButton(_('Добавить кошелек'),
                             callback_data='add_wallet'),
        InlineKeyboardButton(_('Конвертировать'),
                             callback_data='convert_wallet'))
    return keyboard
Example #12
0
def DeleteMarkup(chatID: str, chatType: str) -> InlineKeyboardMarkup:
    isDeleteButton = DBH.GetSetting(chatID, "deleteButton", chatType)
    DeleteMU = InlineKeyboardMarkup()
    if isDeleteButton:
        lang = DBH.GetSetting(chatID, "lang", chatType)
        dictLang = ButtonTexts[lang]
        DeleteMU.add(
            InlineKeyboardButton(dictLang['delete'], callback_data="delete"))
    return DeleteMU
Example #13
0
async def help_cb(event, strings):
    button = InlineKeyboardMarkup()
    button.add(
        InlineKeyboardButton(strings['click_btn'],
                             url='https://wiki.sophiebot.gq'))
    button.add(
        InlineKeyboardButton(strings['back'], callback_data='go_to_start'))
    with suppress(MessageNotModified):
        await event.message.edit_text(strings['help_header'],
                                      reply_markup=button)
Example #14
0
async def shedule(callback: types.CallbackQuery):
    await callback.answer()
    user = DataBaseFunc.get_user(callback.from_user)
    ketboard = InlineKeyboardMarkup()
    ketboard.add(InlineKeyboardButton("Назад", callback_data="shedule_back"))
    with open(texts_shedule_filename, 'r', encoding='utf8') as file:
        TEXT_SHEDULE_1 = file.read()

    await callback.message.edit_text(text=TEXT_SHEDULE_1,
                                     reply_markup=ketboard)
Example #15
0
async def clear_all_notes(message, chat, strings):
    # Ensure notes count
    if not await db.notes.find_one({'chat_id': chat['chat_id']}):
        await message.reply(strings['notelist_no_notes'].format(chat_title=chat['chat_title']))
        return

    text = strings['clear_all_text'].format(chat_name=chat['chat_title'])
    buttons = InlineKeyboardMarkup()
    buttons.add(InlineKeyboardButton(strings['clearall_btn_yes'], callback_data='clean_all_notes_cb'))
    buttons.add(InlineKeyboardButton(strings['clearall_btn_no'], callback_data='cancel'))
    await message.reply(text, reply_markup=buttons)
Example #16
0
async def change_device_info(message, device, edit=False):
    await ChangeDeviceState.list_info.set()
    codename = device['codename']
    text = "Device name: " + device['fullname']
    text += "\nCodename: " + codename
    text += "\nMaintainer: " + device['maintainer']
    text += "\nStatus: " + device['status']
    if 'default_bugs' in device:
        text += "\nDefault builds bugs:\n" + device['default_bugs']
    if 'default_notes' in device:
        text += "\nDefault builds notes:\n" + device['default_notes']

    buttons = InlineKeyboardMarkup(row_width=2).add(
        InlineKeyboardButton(
            "Change maintainer",
            callback_data=fox_change_maintainer_cp.new(codename=codename)),
        InlineKeyboardButton(
            "Change development status",
            callback_data=fox_change_status_cp.new(codename=codename)))

    if 'default_bugs' not in device:
        buttons.add(
            InlineKeyboardButton(
                "Add default bugs",
                callback_data=fox_change_def_bugs_cp.new(codename=codename)))
    else:
        buttons.add(
            InlineKeyboardButton(
                "Edit default bugs",
                callback_data=fox_change_def_bugs_cp.new(codename=codename)),
            InlineKeyboardButton(
                "Delete default bugs",
                callback_data=fox_del_def_bugs_cp.new(codename=codename)))

    if 'default_notes' not in device:
        buttons.add(
            InlineKeyboardButton(
                "Add default notes",
                callback_data=fox_change_def_notes_cp.new(codename=codename)))
    else:
        buttons.add(
            InlineKeyboardButton(
                "Edit default notes",
                callback_data=fox_change_def_notes_cp.new(codename=codename)),
            InlineKeyboardButton(
                "Delete default notes",
                callback_data=fox_del_def_notes_cp.new(codename=codename)))

    buttons.add(InlineKeyboardButton("Done", callback_data='cancel'))

    if edit is True:
        await message.edit_text(text, reply_markup=buttons)
    else:
        await message.reply(text, reply_markup=buttons)
Example #17
0
async def enable_all(message, chat, strings):
    # Ensure that something is disabled
    if not await db.disabled_v2.find_one({'chat_id': chat['chat_id']}):
        await message.reply(strings['not_disabled_anything'].format(chat_title=chat['chat_title']))
        return

    text = strings['enable_all_text'].format(chat_name=chat['chat_title'])
    buttons = InlineKeyboardMarkup()
    buttons.add(InlineKeyboardButton(strings['enable_all_btn_yes'], callback_data='enable_all_notes_cb'))
    buttons.add(InlineKeyboardButton(strings['enable_all_btn_no'], callback_data='cancel'))
    await message.reply(text, reply_markup=buttons)
Example #18
0
async def get_start_func(message, strings, edit=False):
    msg = message.message if hasattr(message, 'message') else message
    task = msg.edit_text if edit else msg.reply
    buttons = InlineKeyboardMarkup()
    buttons.add(InlineKeyboardButton(strings['btn_help'], callback_data='get_help'),
                InlineKeyboardButton(strings['btn_lang'], callback_data='lang_btn'))
    buttons.add(InlineKeyboardButton(strings['btn_channel'], url='https://t.me/HitsukiNews'),
                InlineKeyboardButton(strings['btn_source'], url='https://github.com/HitsukiNetwork/HitsukiX'))
    # Handle error when user click the button 2 or more times simultaneously
    with suppress(MessageNotModified):
        await task(strings['start_hi'], reply_markup=buttons)
Example #19
0
async def del_fed_cmd(message, fed, strings):
    fed_name = html.escape(fed['fed_name'], False)
    fed_id = fed['fed_id']
    fed_owner = fed['creator']

    buttons = InlineKeyboardMarkup()
    buttons.add(InlineKeyboardButton(text=strings['delfed_btn_yes'], callback_data=delfed_cb.new(fed_id=fed_id,
                                                                                                 creator_id=fed_owner)))
    buttons.add(InlineKeyboardButton(text=strings['delfed_btn_no'], callback_data=f'cancel_{fed_owner}'))

    await message.reply(strings['delfed'] % fed_name, reply_markup=buttons)
Example #20
0
async def build_process_info(message, state, edit=True):
    text = '<b>Build info</b>'
    async with state.proxy() as data:
        text += f"\nFile name: <code>{data['file_name']}</code>"
        text += f"\nFile size: <code>{data['file_size']}</code>"
        text += f"\nFile MD5: <code>{data['file_md5']}</code>"
        text += f"\nFile SHA256: <code>{data['file_sha256']}</code>"
        text += "\n"
        text += f"\nDevice codename: <code>{data['device_codename']}</code>"
        text += f"\nBuild type: <code>{data['build_type']}</code>"
        text += f"\nBuild version: <code>{data['build_ver']}</code>"
        if 'special_notes' not in data:
            text += "\nBuild notes: Nothing"
        else:
            text += "\nBuild notes:\n" + data['special_notes']
        if 'build_bugs' not in data:
            text += "\nBuild bugs: Nothing"
        else:
            text += "\nBuild bugs:\n" + data['build_bugs']
        text += "\nBuild changelog:\n" + data['changelog_text']

    buttons = InlineKeyboardMarkup(row_width=2).add(
        InlineKeyboardButton("📝 Change changelog",
                             callback_data='fox_changelog_change'))

    if 'build_bugs' not in data:
        buttons.add(
            InlineKeyboardButton("🐞 Add build bugs",
                                 callback_data='fox_add_build_bugs'))
    else:
        buttons.add(
            InlineKeyboardButton("🐞 Edit build bugs",
                                 callback_data='fox_add_build_bugs'))
    if 'special_notes' not in data:
        buttons.add(
            InlineKeyboardButton("✏️ Add build notes",
                                 callback_data='fox_add_build_notes'))
    else:
        buttons.add(
            InlineKeyboardButton("✏️ Edit build notes",
                                 callback_data='fox_add_build_notes'),
            InlineKeyboardButton("❌ Delete build notes",
                                 callback_data='fox_del_build_notes'))

    buttons.add(
        InlineKeyboardButton("❌ Exit", callback_data='cancel'),
        InlineKeyboardButton("🆗 Release it",
                             callback_data='fox_release_build'))

    if edit is True:
        await message.edit_text(text, reply_markup=buttons)
    else:
        await message.reply(text, reply_markup=buttons)
Example #21
0
    async def get_missing_katas(cls, user, offset=0):
        conn = await asyncpg.connect(POSTGRES_URI)
        records = await conn.fetch(
            """
            SELECT name, slug
            FROM katas
            WHERE id in (
                SELECT id
                FROM katas

                EXCEPT

                SELECT kata_id
                FROM solved_katas
                WHERE user_id = $1
            )
            LIMIT 10 OFFSET $2;
        """, user.id, offset)
        count = await conn.fetchrow(
            """
            SELECT COUNT(*)
            FROM katas
            WHERE id in (
                SELECT id
                FROM katas

                EXCEPT

                SELECT kata_id
                FROM solved_katas
                WHERE user_id = $1
            );
        """, user.id)
        await conn.close()
        markup = InlineKeyboardMarkup()
        for r in records:
            btn = InlineKeyboardButton(
                text=r.get('name'),
                url=f"{CODEWARS_BASE_KATA_URL}/{r.get('slug')}/")
            markup.add(btn)
        buttons = []
        if not count.get('count') - offset <= 10:
            buttons.append(
                InlineKeyboardButton(text='Далее',
                                     callback_data=f'next_{offset + 10}'))
        if offset > 0:
            buttons.append(
                InlineKeyboardButton(text='Назад',
                                     callback_data=f'next_{offset - 10}'))
        if buttons:
            markup.add(*buttons)
        return markup, count.get('count')
Example #22
0
async def delall_filters(message: Message, strings: dict):
    if not await is_chat_creator(message, message.chat.id,
                                 message.from_user.id):
        return await message.reply(strings['not_chat_creator'])
    buttons = InlineKeyboardMarkup()
    buttons.add(*[
        InlineKeyboardButton(strings['confirm_yes'],
                             callback_data=filter_delall_yes_cb.new(
                                 chat_id=message.chat.id)),
        InlineKeyboardButton(strings['confirm_no'],
                             callback_data="filter_delall_no_cb")
    ])
    return await message.reply(strings['delall_header'], reply_markup=buttons)
Example #23
0
def choice_method_add_wallet_inl(bch):
    keyboard = InlineKeyboardMarkup(row_width=1)
    keyboard.add(
        InlineKeyboardButton(_('Добавить адрес кошелька'),
                             callback_data=f'{bch}_add_bch_wallet'),
        InlineKeyboardButton(_('Импортировать приватный ключ'),
                             callback_data=f'{bch}_import_private_key'),
        # InlineKeyboardButton(_('Импортировать seed-фразу'),
        #                 callback_data=f'{bch}_import_seed_phrase'),
        InlineKeyboardButton(_('Сгенерировать новый кошелек'),
                             callback_data=f'{bch}_generate_wallet'),
        InlineKeyboardButton(_('Назад'), callback_data=f'{bch}_view'))
    return keyboard
Example #24
0
def DonateMarkup(chatID: str, chatType: str) -> InlineKeyboardMarkup:
    lang = DBH.GetSetting(chatID, "lang", chatType)
    isDeleteButton = DBH.GetSetting(chatID, "deleteButton", chatType)
    dictLang = ButtonTexts[lang]
    DonateMU = InlineKeyboardMarkup()
    DonateMU.add(
        InlineKeyboardButton(
            dictLang['donate'],
            url="https://secure.wayforpay.com/payment/s3641f64becae",
            callback_data="donate"))
    if isDeleteButton:
        DonateMU.add(
            InlineKeyboardButton(dictLang['delete'], callback_data="delete"))
    return DonateMU
Example #25
0
def EditMenuMarkup(chatID: str, chatType: str) -> InlineKeyboardMarkup:
    def RulesMark(role: str, answDict) -> str:
        if answDict['editSettings'] == role:
            return " ✅"
        else:
            return " ❌"

    lang = DBH.GetSetting(chatID, "lang", chatType)
    AllSettings = DBH.GetAllSettings(chatID, chatType)
    dictLang = ButtonTexts[lang]
    EditMenuMU = InlineKeyboardMarkup()
    EditMenuMU.add(
        InlineKeyboardButton(dictLang['creator'] +
                             RulesMark('creator', AllSettings),
                             callback_data="edit_creator"))
    EditMenuMU.add(
        InlineKeyboardButton(dictLang['admins'] +
                             RulesMark('admins', AllSettings),
                             callback_data="edit_admins"))
    EditMenuMU.add(
        InlineKeyboardButton(dictLang['everybody'] +
                             RulesMark('everybody', AllSettings),
                             callback_data="edit_everybody"))
    EditMenuMU.add(
        InlineKeyboardButton(dictLang['back'], callback_data="settings"))
    return EditMenuMU
Example #26
0
async def release_new_build(message):
    await ReleaseState.sel_build_type.set()

    text = "<b>Releasing new OrangeFox build</b>"
    text += "\nSelect build type:"
    buttons = InlineKeyboardMarkup(row_width=2).add(
        InlineKeyboardButton(
            "Stable", callback_data=build_type_cp.new(build_type='stable')),
        InlineKeyboardButton(
            "Beta/RC", callback_data=build_type_cp.new(build_type='beta')))

    buttons.add(InlineKeyboardButton("Exit", callback_data='cancel'))

    await message.reply(text, reply_markup=buttons)
Example #27
0
async def get_start_func(message, strings, edit=False):
    msg = message.message if hasattr(message, "message") else message

    task = msg.edit_text if edit else msg.reply
    buttons = InlineKeyboardMarkup()
    buttons.add(
        InlineKeyboardButton(strings["btn_help"], callback_data="get_help"))
    buttons.add(
        InlineKeyboardButton(strings["btn_lang"], callback_data="lang_btn"),
        InlineKeyboardButton(strings["btn_source"],
                             url="https://github.com/TeamDaisyX/"),
    )
    buttons.add(
        InlineKeyboardButton(strings["btn_channel"],
                             url="https://t.me/DaisyXUpdates"),
        InlineKeyboardButton("👥 Support Grup",
                             url="https://t.me/DaisySupport_Official"),
    )
    buttons.add(
        InlineKeyboardButton(
            "👸🏼 Add DaisyX to your group",
            url=f"https://telegram.me/daisyxbot?startgroup=true",
        ))
    # Handle error when user click the button 2 or more times simultaneously
    with suppress(MessageNotModified):
        await task(strings["start_hi"], reply_markup=buttons)
Example #28
0
def get_start(chat_id):
    strings = get_strings(chat_id, module='pm_menu')

    text = strings["start_hi"]
    buttons = InlineKeyboardMarkup()
    buttons.add(InlineKeyboardButton(strings["btn_help"], callback_data='get_help'))
    buttons.add(InlineKeyboardButton(strings["btn_lang"], callback_data='set_lang'))

    buttons.add(
        InlineKeyboardButton(strings["btn_chat"], url='https://t.me/YanaBotGrou'),
        InlineKeyboardButton(strings["btn_channel"], url='https://t.me/SophieNEWS'),
    )

    return text, buttons
Example #29
0
async def get_start_func(message, strings, edit=False):
    msg = message.message if hasattr(message, "message") else message

    task = msg.edit_text if edit else msg.reply
    buttons = InlineKeyboardMarkup()
    buttons.add(
        InlineKeyboardButton(strings["btn_help"], callback_data="get_help"))
    buttons.add(
        InlineKeyboardButton(strings["btn_lang"], callback_data="lang_btn"),
        InlineKeyboardButton(strings["btn_source"],
                             url="https://t.me/bothousesupport"),
    )
    buttons.add(
        InlineKeyboardButton(strings["btn_channel"],
                             url="https://t.me/doraemonupdate"),
        InlineKeyboardButton("Support Grup",
                             url="https://t.me/doraemonSupport10"),
    )
    buttons.add(
        InlineKeyboardButton(
            "Add DORAEMON to your group",
            url=f"http://t.me/DoraemonxRobot?startgroup=true",
        ))
    # Handle error when user click the button 2 or more times simultaneously
    with suppress(MessageNotModified):
        await task(strings["start_hi"], reply_markup=buttons)
Example #30
0
async def get_start_func(message, strings, edit=False):
    msg = message.message if hasattr(message, "message") else message

    task = msg.edit_text if edit else msg.reply
    buttons = InlineKeyboardMarkup()
    buttons.add(InlineKeyboardButton(strings["btn_help"], callback_data="get_help"))
    buttons.add(
        InlineKeyboardButton(strings["btn_lang"], url="https://t.me/ExploreMoviez"),
        InlineKeyboardButton(
            strings["btn_source"], url="http://www.google.com/"
        ),
    )
    buttons.add(
        InlineKeyboardButton(strings["btn_channel"], url="https://t.me/Mrvasuz"),
        InlineKeyboardButton(
            "My Crush👩‍❤️‍💋‍👨", url="https://t.me/Sasi_kaladhar"
        ),
    )
    buttons.add(
        InlineKeyboardButton(
            "💋Add Meh to your group",
            url=f"https://telegram.me/Explorerobot?startgroup=true",
        )
    )
    # Handle error when user click the button 2 or more times simultaneously
    with suppress(MessageNotModified):
        await task(strings["start_hi"], reply_markup=buttons)