Beispiel #1
0
async def c**k(query):
    cock_size = randint(0, 46)
    if cock_size == 46:
        cock_size = 1488

    person = choice(locale.persons)

    await bot.answer_inline_query(query.id, [
        InlineQueryResultArticle(
            id=5,
            title="Вычислить кок сайз",
            description="Новая иновационная система вычисляет длину члена"
                        " очень точно. Достаточно приложить хуй к экрану",
            input_message_content=InputTextMessageContent(
                message_text=f"🏳️‍🌈 Размер моего хуя *{cock_size}см*",
                parse_mode="Markdown"
            )
        ),

        InlineQueryResultArticle(
            id=6,
            title="Кто я из Профсоюза?",
            description="Определяет кто вы в профсоюзе. Точность 100%",
            input_message_content=InputTextMessageContent(
                message_text=f"В профсоюзе я *{person['name']}*\n\n"
                             f"__{person['description']}__",
                parse_mode="Markdown"
            )
        )
    ], cache_time=1)
async def inline_echo(inline_query: InlineQuery):
    text = inline_query.query
    answers: List[str] = seller.sell(text)
    moan: str = seller.vegetable_moan()
    sell_count = await get_user_stat(inline_query.from_user.id)
    sell_stat: str = f"我已经卖了 {sell_count} 句菜{',我 zc' if sell_count > 20 else ''}"

    stat_hash: str = hashlib.md5(sell_stat.encode()).hexdigest()
    stat_set.add(stat_hash)

    answers_hash = {
        answer: hashlib.md5(answer.encode()).hexdigest()
        for answer in answers
    }
    for answer, _hash in answers_hash.items():
        answer_map[_hash] = answer

    items = [InlineQueryResultArticle(id=hashlib.md5(moan.encode()).hexdigest(),
                                      title="菜喘",
                                      input_message_content=InputTextMessageContent(moan))] + \
            ([InlineQueryResultArticle(id=_hash,
                title=answer,
                input_message_content=InputTextMessageContent(answer)
            ) for answer, _hash in answers_hash.items()] if not MOAN_ONLY else []) + \
            [InlineQueryResultArticle(id=stat_hash,
                                      title="卖菜统计",
                                      input_message_content=InputTextMessageContent(sell_stat))]

    await bot.answer_inline_query(inline_query.id,
                                  results=items,
                                  cache_time=0,
                                  is_personal=True)
Beispiel #3
0
async def inline_echos(inline_query: InlineQuery):
    results = []
    query = inline_query.query
    if 1 <= len(query) <= 32 and re.search('[^a-zA-Z0-9_]', query) is None and re.sub('[0-9]', '', query) \
            and re.search('__', query) is None and query[:1].isdigit() is False:
        queries = {}
        for key in [query + postfix for postfix in ['', 'bot', '_bot']]:
            queries[key] = {
                'title': f't.me/{key} ',
                'desc': None}
            if 5 <= len(key) <= 32:
                queries[key]['desc'] = t_me + key
            else:
                queries[key]['title'] += '🚫'
                queries[key]['desc'] = 'Sorry, this link is too '
                if len(query) < 5:
                    queries[key]['desc'] += 'short'
                else:
                    queries[key]['desc'] += 'long'

        futures = [queries[key]['desc'] for key in queries if queries[key]['desc'].startswith(t_me)]
        if len(futures) > 0:
            with concurrent.futures.ThreadPoolExecutor(max_workers=10) as future_executor:
                futures = [future_executor.submit(requests.get, future) for future in futures]
                for future in concurrent.futures.as_completed(futures):
                    soup = BeautifulSoup(future.result().content, 'html.parser')
                    get_key = soup.find('meta', {'name': 'twitter:app:url:googleplay'})
                    is_username_exist = soup.find('a', class_='tgme_action_button_new')
                    if soup.find('meta', {'name': 'twitter:app:url:googleplay'}):
                        key = get_key.get('content')
                        if key:
                            key = re.sub(t_me, '', key)
                            if is_username_exist is None:
                                queries[key]['title'] += '✅'
                                queries[key]['desc'] = 'This link is available'
                            else:
                                queries[key]['title'] += '🚫'
                                queries[key]['desc'] = 'Sorry, this link is already occupied'
        for key in queries:
            title = queries[key]['title']
            description = queries[key]['desc']
            content = InputTextMessageContent('t.me/' + key)
            if description.startswith(t_me):
                title += '🚫'
                description = 'Something’s wrong, wait a bit and try again'
            results.append(Article(id=rand(), title=title, input_message_content=content, description=description))
    else:
        description = None
        if len(query) == 0:
            title = 'You can use a-z, 0-9 and underscores.'
            description = 'Minimum length is 2 characters.'
        elif re.sub('[a-zA-Z0-9_]', '', query):
            title = 'Only 0-9, a-z, and underscores allowed.'
        elif re.search('[^0-9]', query) is None or re.search('__', query) or query[:1].isdigit():
            title = 'This link is invalid'
        else:
            title = 'Sorry, this link is too long'
        content = InputTextMessageContent(t_me + re.sub('[^a-zA-Z0-9_]', '', query))
        results.append(Article(id=rand(), title=title, input_message_content=content, description=description))
    await bot.answer_inline_query(inline_query.id, results=results)
Beispiel #4
0
async def some_callback_handler(inline_query: InlineQuery = None,
                                callback_query: CallbackQuery = None):
    userId = inline_query.from_user.id

    if callback_query:
        doingTimersFrom.remove(userId)
        return

    if userId in doingTimersFrom:
        doingTimersFrom.remove(userId)

        items = [
            InlineQueryResultArticle(
                id=str(time()),
                title="Завершаю таймер...",
                thumb_url=foxLogoPreview,
                input_message_content=InputTextMessageContent(
                    "ну и что ты тут ожидаешь увидеть?"))
        ]
    else:
        items = [
            InlineQueryResultArticle(
                id=str(time()),
                title="Не могу найти таймер",
                description="возможно, ни одного не запущено вами",
                thumb_url=foxLogoPreview,
                input_message_content=InputTextMessageContent(
                    "Вы можете запустить таймер, выполнив запрос \"timer\""))
        ]

    await bot.answer_inline_query(inline_query.id, results=items, cache_time=0)
Beispiel #5
0
async def get_all_groups(inline_query: InlineQuery):
    limit = 20
    offset = 0 if inline_query.offset == '' else int(inline_query.offset)
    results = []
    data = await select_groups_limit(inline_query.query, offset, limit)
    if data:
        for group in data:
            results.append(
                InlineQueryResultArticle(
                    id=str(group.id),
                    title=group.group,
                    input_message_content=(InputTextMessageContent(
                        group.group)),
                ))
    else:
        not_found = 'Нет такой группы'
        results = [
            InlineQueryResultArticle(
                id=str(hashlib.md5(not_found.encode()).hexdigest()),
                title=not_found,
                input_message_content=InputTextMessageContent(not_found),
                thumb_url=ERROR)
        ]
    next_offset = str(offset + limit) if len(data) >= limit else ''
    await inline_query.answer(results=results, next_offset=next_offset)
Beispiel #6
0
async def main(query: InlineQuery):
    wolfram = db.get_wolfram()
    text = query.query[:-3].strip().lower()
    result_id: str = md5(
        (str(query.id) + str(datetime.now())).encode()).hexdigest()
    user = db.get_user(query.from_user.id)
    if not user.wolfram_free:
        item = InlineQueryResultArticle(
            id=result_id,
            title=exceptions.limit,
            input_message_content=InputTextMessageContent(exceptions.limit))
    else:
        user.reduce('wolfram', 1)
        wolfram.reduce(1)
        if await wolfram.check_request(text):
            with open(f'{wolfram.id}_{wolfram.limit}.png', 'rb') as file:
                msg = await bot.send_document(PICS, file)
            wolfram.delete_photos()
            item = InlineQueryResultCachedDocument(
                id=result_id,
                document_file_id=msg.document.file_id,
                title=query.query)
        else:
            item = InlineQueryResultArticle(
                id=result_id,
                title=exceptions.wolfram,
                input_message_content=InputTextMessageContent(
                    exceptions.wolfram))
    await query.answer([item])
Beispiel #7
0
async def query_text(query):
    params = query.query.split(maxsplit=1)

    q = params[1]
    lang = params[0].split(":", maxsplit=1)
    lang = "ru" if len(lang) == 0 else lang[1]

    if not (lang in LANGS_LIST):
        return

    wiki = Wikipya(lang)

    try:
        search = await wiki.search(q, 3)
    except Exception as e:
        print(e)
        await bot.answer_inline_query(query.id, [
            InlineQueryResultArticle(
                id=0,
                title="При выполнении запроса возникла ошибка",
                description=e,
                input_message_content=InputTextMessageContent(
                    message_text=bold("При выполнении запроса возникла ошибка:") +
                                 code(e),
                    parse_mode="HTML"
                )
            )
        ])

        return

    buttons = []
    for item in search:
        page = await wiki.page(item)
        page.blockList = WIKIPYA_BLOCKLIST
        soup = BeautifulSoup(page.text, "lxml")
        text = page.fixed

        btn_defaults = {"id": page.pageid, "title": page.title,
                        "description": soup.text[:100],
                        "thumb_width": 48, "thumb_height": 48,
                        "input_message_content": InputTextMessageContent(
                            message_text=text,
                            parse_mode="HTML"
                        )}

        try:
            img = await page.image(75)
            buttons.append(InlineQueryResultArticle(**btn_defaults,
                                                    thumb_url=img.source))

        except NotFound:
            default_image = ("https://upload.wikimedia.org/wikipedia"
                             "/commons/thumb/8/80/Wikipedia-logo-v2.svg/"
                             "75px-Wikipedia-logo-v2.svg.png")
            buttons.append(InlineQueryResultArticle(**btn_defaults,
                                                    thumb_url=default_image))

    await bot.answer_inline_query(query.id, buttons)
Beispiel #8
0
async def empty_query(query: InlineQuery):
    user_id = query.from_user.id
    user_group = await get_user_group(user_id=user_id)
    weekday_names = ("понедельник", "вторник", "среда", "четверг", "пятница",
                     "суббота")
    all_days_schedules = []
    current_week_info = await get_week_info()
    next_week_info = await get_week_info(for_next_week=True)

    # schedules for current week
    for weekday in range(1, 7):
        weekday_schedule: ScheduleGroupTypeDay = await get_day_schedule_by_userid(
            user_id=user_id, weekday=weekday)
        weekday_schedule_text = await schedule_to_text.convert(weekday_schedule
                                                               )
        # converting needed weekday names (if weekday == 'среда', we want to write it as 'среду' since that's the right spelling)
        weekday_name = weekday_names[weekday - 1]
        weekday_formatted = weekday_name
        if (weekday_name.endswith("а")):
            weekday_formatted = weekday_name[:-1] + "у"
        all_days_schedules.append(
            InlineQueryResultArticle(
                id=f"{weekday_schedule.group_name_with_type_and_day}",
                title=f"{user_group} / {weekday_name} / ТЕКУЩАЯ",
                input_message_content=InputTextMessageContent(
                    message_text=weekday_schedule_text),
                description=
                f"Расписание группы {user_group} на {weekday_formatted}, неделя - {current_week_info[1]}."
            ))

    # schedules for next week
    for weekday in range(1, 7):
        weekday_schedule: ScheduleGroupTypeDay = await get_day_schedule_by_userid(
            user_id=user_id, weekday=weekday, week_type=next_week_info[0])
        weekday_schedule_text = await schedule_to_text.convert(weekday_schedule
                                                               )
        # converting needed weekday names (if weekday == 'среда', we want to write it as 'среду' since that's the right spelling)
        weekday_name = weekday_names[weekday - 1]
        weekday_formatted = weekday_name
        if (weekday_name.endswith("а")):
            weekday_formatted = weekday_formatted[:-1] + "у"
        all_days_schedules.append(
            InlineQueryResultArticle(
                id=f"{weekday_schedule.group_name_with_type_and_day}",
                title=f"{user_group} / {weekday_name} / {next_week_info[1]}",
                input_message_content=InputTextMessageContent(
                    message_text=weekday_schedule_text),
                description=
                f"Расписание группы {user_group} на {weekday_formatted}, неделя - {next_week_info[1]}."
            ))
    #cache time set to 0, otherwise bot mishandles empty queries
    await query.answer(results=all_days_schedules,
                       cache_time=0,
                       is_personal=True)
Beispiel #9
0
async def inline(inline_query: InlineQuery):
    text = inline_query.query or '输入以翻译 Input to Translate...'
    user = inline_query.from_user.username
    user_id = inline_query.from_user.id
    end_str = ''
    if len(text) >= 256:
        end_str = '\n\n(达到长度限制,请私聊翻译全文)'
    if text == '输入以翻译 Input to Translate...':
        pass
    else:
        cprint(f'[inline, @{user}, #{user_id}] {text} ', 'white', 'on_cyan')
        capture_message(f'[inline, @{user}, #{user_id}] {text} ')
        zh_str = translate_text(text, 'zh')
        en_str = translate_text(text, 'en')
        jp_str = translate_text(text, 'ja')
        pt_str = translate_text(text, 'pt')
        items = [
            InlineQueryResultArticle(
                id=0,
                title=f'{en_str}'.strip(),
                description='🇺🇸 English',
                thumb_width=0,
                input_message_content=InputTextMessageContent(
                    f'{en_str}{end_str}', disable_web_page_preview=True),
            ),
            InlineQueryResultArticle(
                id=1,
                title=f'{zh_str}'.strip(),
                description='🇨🇳 中文',
                thumb_width=0,
                input_message_content=InputTextMessageContent(
                    f'{zh_str}{end_str}', disable_web_page_preview=True),
            ),
            InlineQueryResultArticle(
                id=2,
                title=f'{jp_str}'.strip(),
                description='🇯🇵 にほんご',
                thumb_width=0,
                input_message_content=InputTextMessageContent(
                    f'{jp_str}{end_str}', disable_web_page_preview=True),
            ),
            InlineQueryResultArticle(
                id=3,
                title=f'{pt_str}'.strip(),
                description='🇵🇹 Português',
                thumb_width=0,
                input_message_content=InputTextMessageContent(
                    f'{pt_str}{end_str}', disable_web_page_preview=True),
            )
        ]
        await bot.answer_inline_query(inline_query.id,
                                      results=items,
                                      cache_time=300)
Beispiel #10
0
async def query_text(query):
    params = query.query.split(maxsplit=1)

    q = params[1]
    lang = params[0].split(":", maxsplit=1)
    lang = "ru" if len(lang) == 1 else lang[1]

    if not (lang in LANGS_LIST):
        return

    wiki = Wikipya(lang)

    try:
        search = await wiki.search(q, 3)
    except Exception as e:
        print(e)
        await bot.answer_inline_query(query.id, [
            InlineQueryResultArticle(
                id=0,
                title="При выполнении запроса возникла ошибка",
                description=e,
                input_message_content=InputTextMessageContent(
                    message_text=bold("При выполнении запроса возникла ошибка:") +
                                 code(e),
                    parse_mode="HTML"
                )
            )
        ])

        return

    buttons = []

    for item in search:
        page = await wiki.page(item)
        page.blockList = WIKIPYA_BLOCKLIST

        soup = BeautifulSoup(page.text, "lxml")
        text = page.fixed

        btn_defaults = {"id": page.pageid, "title": page.title,
                        "description": soup.text[:100],
                        "input_message_content": InputTextMessageContent(
                            message_text=text,
                            parse_mode="HTML"
                        )}

        buttons.append(InlineQueryResultArticle(**btn_defaults))

    await bot.answer_inline_query(query.id, buttons)
Beispiel #11
0
async def c**k(query):
    cock_size = randint(0, 46)

    if cock_size == 46:
        cock_size = 1488

    person = choice(_("triggers.persons")[0])

    await bot.answer_inline_query(query.id, [
        InlineQueryResultArticle(
            id=4,
            title="Озвучить текст",
            description="Для использования введите @jdan734_bot <запрос>",
            input_message_content=InputTextMessageContent(
                message_text="Мне нечего озвучивать. Введи текст"
            )
        ),

        InlineQueryResultArticle(
            id=5,
            title="Найти в Википедии",
            description="Для использования введите @jdan734_bot wiki <запрос>",
            input_message_content=InputTextMessageContent(
                message_text="Мне нечего находить. Введи запрос"
            )
        ),

        InlineQueryResultArticle(
            id=6,
            title="Вычислить c**k size",
            description="Новая иновационная система вычисляет длину члена"
                        " очень точно. Достаточно приложить хуй к экрану",
            input_message_content=InputTextMessageContent(
                message_text=f"🏳️‍🌈 Размер моего хуя *{cock_size}см*",
                parse_mode="Markdown"
            )
        ),

        InlineQueryResultArticle(
            id=7,
            title="Кто я из Профсоюза?",
            description="Определяет кто вы в профсоюзе. Точность 100%",
            input_message_content=InputTextMessageContent(
                message_text=f"В профсоюзе я *{person['name']}*\n\n"
                             f"__{person['description']}__",
                parse_mode="Markdown"
            )
        )
    ], cache_time=1)
Beispiel #12
0
async def search(query: types.InlineQuery):
    searching = query.query
    print(0, searching)
    if len(searching) > 0:
        try:
            id = int(searching)
            print(2, id)
            found = await com.one_item(id=id)
            print(3, found)
            item_id = found['id']
            await query.answer(results=[],
                               switch_pm_text='Перейти к покупке',
                               switch_pm_parameter=item_id)
        except:
            pass
        try:
            new = searching.upper()
            sorting = await com.like(new)
            print(1, sorting)
            results = []
            for one in sorting:
                results.append(
                    InlineQueryResultArticle(
                        id=one['id'],
                        title=one['name'],
                        thumb_url=one['photo'],
                        description=f'Цена: {one["price"]} рублей',
                        input_message_content=InputTextMessageContent(
                            message_text=f"Вы выбрали {one['name']}"),
                        reply_markup=inline_to_bot(id=one['id'])))
            await query.answer(results=results)
        except:
            pass
    if searching == '':
        go = await com.sort()
        results = []
        for all in go:
            print(3, all['name'])
            results.append(
                InlineQueryResultArticle(
                    id=all['id'],
                    title=all['name'],
                    thumb_url=all['photo'],
                    description=f'Цена: {all["price"]} рублей',
                    input_message_content=InputTextMessageContent(
                        message_text=f"Вы выбрали {all['name']}"),
                    reply_markup=inline_to_bot(id=all['id'])))
        await query.answer(results=results)
Beispiel #13
0
async def translatorInlineQueryHandler(inline_query: InlineQuery):
    text = inline_query.query.strip()[10:].strip()

    eng = "`qwertyuiop[]asdfghjkl;'zxcvbnm,./~@#$^&QWERTYUIOP{}ASDFGHJKL:\"|ZXCVBNM<>?"
    rus = "ёйцукенгшщзхъфывапролджэячсмитьбю.Ё\"№;:?ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭ/ЯЧСМИТЬБЮ,"

    rusLetters = "оеаинтсрвлкмдпуяыьгзбчйхжшюцщэфъё"

    messageLanguage = eng
    languageToTranslate = rus

    for _ in rusLetters:
        if _ in text.lower():
            messageLanguage = rus
            languageToTranslate = eng
            break

    translatedText = text.translate(
        text.maketrans(messageLanguage, languageToTranslate))

    items = [
        InlineQueryResultArticle(
            id=str(time()),
            title='Переведённый текст:',
            description=translatedText,
            thumb_url=
            'https://i.ibb.co/S6mcw2F/1200px-Wikipedia-logo-svg-svg.png',
            input_message_content=InputTextMessageContent(translatedText))
    ]

    await bot.answer_inline_query(inline_query.id, results=items, cache_time=0)
Beispiel #14
0
async def inline_echo(inline_query: InlineQuery):
    text = inline_query.query
    answers: List[str] = [
        sentence for sentence in corpus.common if text in sentence
    ] if text else corpus.common
    try:
        answers = sorted(random.sample(answers, 5))
    except ValueError:
        answers = sorted(answers[:5])

    answers_hash = {
        answer: hashlib.md5(answer.encode()).hexdigest()
        for answer in answers
    }
    for answer, _hash in answers_hash.items():
        answer_map[_hash] = answer

    items = [
        InlineQueryResultArticle(
            id=_hash,
            title=answer,
            input_message_content=InputTextMessageContent(answer))
        for answer, _hash in answers_hash.items()
    ]

    await bot.answer_inline_query(inline_query.id,
                                  results=items,
                                  cache_time=10,
                                  is_personal=True)
Beispiel #15
0
async def inline_echo(inline_query: InlineQuery):
    print(inline_query.query)
    city = inline_query.query
    print("City ", city)
    url = "http://api.openweathermap.org/data/2.5/weather?q="
    url = url + city
    url = url + "&appid=" + weather_api_token
    url = url + "&units=metric"
    responds = requests.get(url).json()
    temperature = str(responds["main"]["temp"])
    icon = str(responds["weather"][0]["icon"])
    # text = inline_query.query or 'echo'
    text = "Температура в " + city + ": " + temperature + "°C"
    input_content = InputTextMessageContent("Температура в " + city + ": " +
                                            temperature + "°C")
    result_id = "1"
    icon = "http://openweathermap.org/img/wn/" + icon + "@2x.png"
    item = InlineQueryResultArticle(
        id=result_id,
        title=text,
        input_message_content=input_content,
        thumb_url=icon,
    )
    return await bot.answer_inline_query(inline_query.id,
                                         results=[item],
                                         cache_time=1)
Beispiel #16
0
async def translate_inline_0(query: InlineQuery):
    text = query.query[:-2].strip().lower()
    user = db.get_user(query.from_user.id)
    result_id: str = md5((text + str(query.id)).encode()).hexdigest()
    if user.translate_free < len(text) or len(text) > 1900:
        result = content = exceptions.limit
    else:
        args = Parser.get_translation_args(text)
        translator = db.get_translator()
        translator.reduce(len(text))
        user.reduce('translate', len(text))
        if len(args) == 1:
            result = await translator.translate(*args,
                                                lang_to=user.lang_translate.ui)
        else:
            result = await translator.translate(*args)
        if result:
            lang_from = db.get_language(result["lang_from"].lower())
            lang_to = db.get_language(result["lang_to"].lower())
            content = texts.translate_0.format(lang_from.value, lang_to.value,
                                               args[0], result["text"])
        else:
            content = exceptions.translator
        result = result["text"] if result else exceptions.translator
    item = InlineQueryResultArticle(
        id=result_id,
        title=result,
        input_message_content=InputTextMessageContent(content))
    await query.answer([item])
Beispiel #17
0
async def get_inline_series_href(href):
    soup = BeautifulSoup(requests.get(url + href).text, 'lxml')
    best_films = soup.find_all('div', 'uiSectionV8Content')
    result = []
    counter = 0
    for film in best_films:
        if counter == 12:
            break
        film = film.find('a', 'uiH2')
        film_href = film.get('href')
        try:
            item_desctiption, film_image = get_film_content(film_href)
        except Exception:
            pass
        message = InputTextMessageContent(item_desctiption, parse_mode='html')
        film_insert = film.next
        keyboard = kb.generate_series_keyboard(film_href)
        result.append(
            InlineQueryResultArticle(id=str(counter),
                                     title=film_insert,
                                     thumb_url=film_image,
                                     thumb_height=500,
                                     thumb_width=500,
                                     input_message_content=message,
                                     reply_markup=keyboard))
        counter += 1
    return result
Beispiel #18
0
async def timerInlineHandler(inline_query: InlineQuery):
    secCount = evalSecondsCount(inline_query.query)

    if secCount > 7200 or secCount < 1:
        articleTitle = "Таймер не будет запущен"
        isWrong = True
    else:
        articleTitle = 'Запускает таймер'
        isWrong = False

    awaitingButton = inline_keyboard.InlineKeyboardButton(
        'Запускаю...', callback_data='awaiting')

    awaitingKeyboard = inline_keyboard.InlineKeyboardMarkup(row_width=1). \
     insert(awaitingButton)

    items = [
        InlineQueryResultArticle(id=str(time()),
                                 title=articleTitle,
                                 description=f"на {secCount} секунд",
                                 reply_markup=awaitingKeyboard,
                                 thumb_url=foxLogoPreview,
                                 input_message_content=InputTextMessageContent(
                                     f"Таймер на {secCount} сек."))
    ]
    if not isWrong:
        await bot.answer_inline_query(inline_query.id,
                                      results=items,
                                      cache_time=0)
Beispiel #19
0
    async def order_history_inline(self, query):
        user_id = str(query.from_user.id)
        # get carts with is_archived = True
        user = await BotService.get_user_by_telegram_id(query.from_user.id)
        # cart_query = Cart.objects(user=user, is_archived=True)
        cart_query = session.query(Cart).filter_by(user=user.telegram_id, is_archived=True)
        if not cart_query:
            return await self._bot.send_message(user_id, "No archived carts found")

        carts = [cart for cart in cart_query]
        results = []
        for i, cart in enumerate(carts):
            temp_res = InlineQueryResultArticle(
                id=i + 1,
                title=f'DATE: {cart.archive_date.strftime(self.datetime_fmt)}',
                description=f'TOTAL: {cart.get_total_str()}',
                input_message_content=InputTextMessageContent(
                    disable_web_page_preview=False,
                    message_text=await self.get_bill_text(cart.get_cart_products_freq_dict(),
                                                          cart.get_total_str(),
                                                          cart.archive_date)
                ),
            )
            results.append(temp_res)
        if results:
            await self._bot.answer_inline_query(query.id, results, cache_time=0)
Beispiel #20
0
async def line(query):
    title = f't.me/{query} '
    content = InputTextMessageContent(query)
    if 5 <= len(query) <= 32:
        try:
            response = requests.get(t_me + query)
        except IndexError and Exception:
            await asyncio.sleep(0.01)
            try:
                response = requests.get(t_me + query)
            except IndexError and Exception:
                response = None
        if response:
            soup = BeautifulSoup(response.text, 'html.parser')
            is_username_exist = soup.find('a', class_='tgme_action_button_new')
            if is_username_exist is None:
                description = 'This link is available'
                title += '✅'
            else:
                title += '🚫'
                description = 'Sorry, this link is already occupied'
        else:
            title += '🚫'
            description = 'Something’s wrong, wait a bit and try again'
    else:
        title += '🚫'
        description = 'Sorry, this link is too '
        if len(query) < 5:
            description += 'short'
        else:
            description += 'long'
    return Article(id=rand(), title=title, input_message_content=content, description=description)
Beispiel #21
0
async def inline_echo(inline_query: InlineQuery):
    try:
        owm = await connector(token=owm_token)
        place = inline_query.query
        observation = owm.weather_at_place(place)
        w = observation.get_weather()
        temp = w.get_temperature('celsius')["temp"]
        wind = w.get_wind()['speed']
        detailed_status = w.get_detailed_status()

        if place != '':
            check, obs, speed, temp, max_, min_, status1 = await get_weather_inline_func(
                place=place, owm=owm)
            if check is True:
                text = ("В локации <b>" + place + "</b> сейчас " + status1 +
                        "\nВетер – " + str(round(wind)) + " км\ч\n🌡 – " +
                        str(round(temp)) + " ℃")
                input_content = InputTextMessageContent(text)
                result_id: str = hashlib.md5(place.encode()).hexdigest()
                item = InlineQueryResultArticle(
                    id=result_id,
                    title=f'Показать погоду в ' + place,
                    input_message_content=input_content,
                )
    except:
        print('cant check weather')
    try:
        stat_inline['stat'] += 1
        save()
        print('инлай был отправлен ' + place)
        await bot.answer_inline_query(inline_query.id,
                                      results=[item],
                                      cache_time=1)
    except Exception as e:
        print(e)
Beispiel #22
0
    async def handle_inline_query(self, inline_query: InlineQuery):
        """Handle inline query.

        :param inline_query: query
        """
        logger = self.logger_var.get()
        query = inline_query.query
        logger.info('Inline request', query=query)
        if not query:
            await self.bot.answer_inline_query(inline_query.id, results=[])
            return
        try:
            song_infos = await self._find_songs(query)
        except NotFound:
            await self.bot.answer_inline_query(inline_query.id, results=[])
            return
        articles = []
        for song_info in song_infos:
            # Use hashed concatenated IDs as a result id
            id_ = ''.join(song_info.ids)
            result_id = hashlib.md5(id_.encode()).hexdigest()
            title = f'{song_info.artist} - {song_info.title}'
            platform_urls, platform_names = self._format_urls(song_info)
            reply_text = f'{title}\n{platform_urls}'
            reply = InputTextMessageContent(reply_text, parse_mode='HTML')
            article = InlineQueryResultArticle(
                id=result_id,
                title=title,
                input_message_content=reply,
                thumb_url=song_info.thumbnail_url,
                description=platform_names,
            )
            articles.append(article)
        await self.bot.answer_inline_query(inline_query.id, results=articles)
Beispiel #23
0
async def query_say(query):
    query.query = query.query.strip()

    if query.query.endswith(".") or \
       query.query.endswith("?") or \
       query.query.endswith("!"):
        btns = [
            InlineQueryResultAudio(
                id=1,
                title=query.query[:-1],
                audio_url=chez.say(query.query)
            )
        ]

        await bot.answer_inline_query(query.id, btns)
    else:
        btns = [
            InlineQueryResultArticle(
                id=1,
                title="Поставь точку в конце!",
                description="Надо. Вставь.",
                input_message_content=InputTextMessageContent(
                    message_text="ПРОСТО ВСТАВЬ ТОЧКУ."
                )
            )
        ]

        await bot.answer_inline_query(query.id, btns)
async def playlist_search(query: types.InlineQuery):
    q = query.query.lstrip('.pl ')
    if await utils.answer_empty_inline_query(query, q):
        return
    offset = int(query.offset) if query.offset.isdecimal() else 0

    search_results = await deezer_api.search(q, 'playlist')
    inline_results = [
        InlineQueryResultArticle(id=result.link,
                                 title=result.title or 'playlist',
                                 description=result.description,
                                 thumb_url=result.picture_small,
                                 thumb_width=56,
                                 thumb_height=56,
                                 input_message_content=InputTextMessageContent(
                                     result.link))
        for result in search_results[offset:offset + 5]
    ]

    if offset + 6 < len(search_results):
        next_offset = str(offset + 5)
    else:
        next_offset = 'done'
    await bot.answer_inline_query(inline_query_id=query.id,
                                  results=inline_results,
                                  next_offset=next_offset,
                                  cache_time=30)
Beispiel #25
0
async def query_text(query):
    q = query.query.split(maxsplit=1)[1]

    wiki = Wikipya("ru")
    search = await wiki.search(q, 3)

    buttons = []
    for item in search:
        page = await wiki.page(item)
        soup = BeautifulSoup(page.text, "lxml")
        text = page.fixed

        btn_defaults = {"id": page.pageid, "title": page.title,
                        "description": soup.text[:100],
                        "thumb_width": 48, "thumb_height": 48,
                        "input_message_content": InputTextMessageContent(
                            message_text=text,
                            parse_mode="HTML"
                        )}

        try:
            img = await page.image(75)
            buttons.append(InlineQueryResultArticle(**btn_defaults,
                                                    thumb_url=img.source))

        except NotFound:
            default_image = locale.default_wiki_image
            buttons.append(InlineQueryResultArticle(**btn_defaults,
                                                    thumb_url=default_image))

    await bot.answer_inline_query(query.id, buttons)
Beispiel #26
0
async def inline(inline_query: InlineQuery):
    text = inline_query.query or '翻译…'
    user = inline_query.from_user.username
    user_id = inline_query.from_user.id
    if len(text) >= 256:
        end_str = '\n\n(达到行内查询长度限制,请私聊 bot 翻译全文)\n🤖 By @fanyi_bot'
    else:
        end_str = '\n\n🤖 By @fanyi_bot'
    if text == '翻译…':
        pass
    else:
        cprint(f'[inline, @{user}, #{user_id}] {text} ', 'white', 'on_cyan')
        zh_str = trans_c(text, 'zh').replace(end_str, '')
        en_str = trans_c(text, 'en').replace(end_str, '')
        items = [
            InlineQueryResultArticle(
                id=0,
                title=f'检测并翻译到中英文 / Auto detection',
                description=f'{zh_str[2:40]}... {en_str[2:40]}...'.replace(
                    '🇨🇳', '').replace('🇺🇸', '').strip(),
                thumb_width=0,
                input_message_content=InputTextMessageContent(
                    f'{zh_str}\n\n{en_str}{end_str}',
                    disable_web_page_preview=True),
            ),
            InlineQueryResultArticle(
                id=1,
                title='英文 / English',
                description=f'{en_str}'.replace('🇨🇳', '').replace('🇺🇸',
                                                                  '').strip(),
                thumb_width=0,
                input_message_content=InputTextMessageContent(
                    f'{en_str}{end_str}', disable_web_page_preview=True),
            ),
            InlineQueryResultArticle(
                id=2,
                title='中文 / Simplefiled Chinese',
                description=f'{zh_str}'.replace('🇨🇳', '').replace('🇺🇸',
                                                                  '').strip(),
                thumb_width=0,
                input_message_content=InputTextMessageContent(
                    f'{zh_str}{end_str}', disable_web_page_preview=True),
            )
        ]
        await bot.answer_inline_query(inline_query.id,
                                      results=items,
                                      cache_time=300)
Beispiel #27
0
 def _textArticle(self, query, newhash, content):
     input_content = InputTextMessageContent(''.join(content))
     textart = InlineQueryResultArticle(
         id=newhash,
         title=f'Information for {query!r}',
         input_message_content=input_content,
     )
     return textart
Beispiel #28
0
async def inline_ping(query: InlineQuery):
    if query.from_user.id in client_ids:
        content = InputTextMessageContent('mini Nailerine has started')
        result = InlineQueryResultArticle(id='1',
                                          title='f',
                                          input_message_content=content,
                                          description='f')
        await query.answer([result], cache_time=1, is_personal=True)
Beispiel #29
0
def make_input_list(items, command):
    input_list = list(
        map(
            lambda item: InlineQueryResultArticle(
                id=hashlib.md5(item.encode()).hexdigest(),
                title=item,
                input_message_content=InputTextMessageContent(
                    f'/{command} {item}')), items))
    return input_list
Beispiel #30
0
async def help_0(query: InlineQuery):
    result_id: str = md5(
        (str(query.id) + str(datetime.now())).encode()).hexdigest()
    item = InlineQueryResultArticle(
        id=result_id,
        title=texts.help_0,
        input_message_content=InputTextMessageContent(
            texts.help_1.format(bot_name=(await bot.get_me()).username),
            disable_web_page_preview=True))
    await query.answer([item])