Exemplo n.º 1
0
def kbbi(message):
    app.logger.debug('Detected kbbi command {!r}'.format(message.text))
    try:
        if message.text.startswith('/kbbi'):
            _, term = message.text.split(' ', maxsplit=1)
        else:
            term = message.text
    except ValueError:
        app.logger.debug('Cannot split text {!r}'.format(message.text))
        bot.reply_to(message, 'Cari apa lu?', force_reply=True)
    else:
        app.logger.debug('Extracted kbbi term {!r}'.format(term))
        try:
            defs = lookup_kbbi_definition(term)
        except HTTPError:
            bot.reply_to(message, 'Aduh ada error nich')
        except ConnectionError:
            bot.reply_to(message, "Koneksi lagi bapuk nih :'(")
        else:
            if defs:
                response = '\n'.join(
                    format_def(i, d) for i, d in enumerate(defs, start=1))
                bot.reply_to(message, response, parse_mode='Markdown')
            else:
                bot.reply_to(message, 'Gak ada bray')
Exemplo n.º 2
0
def test_lookup_kbbi_term_not_found(mocker):
    class FakeResponse:
        def json(self):
            raise ValueError

        def raise_for_status(self):
            pass

    mocker.patch('tululbot.utils.kbbi.requests.get', return_value=FakeResponse(),
                 autospec=True)

    rv = lookup_kbbi_definition('asdf asdf')

    assert rv == []
Exemplo n.º 3
0
def test_lookup_kbbi(mocker):
    class FakeResponse:
        def json(self):
            return {
                'kateglo': {
                    'definition': [
                        {
                            'lex_class_ref': 'nomina',
                            'def_text': 'foo bar',
                            'sample': 'foo bar foo bar'
                        },
                        {
                            'lex_class_ref': 'adjektiva',
                            'def_text': 'baz quux',
                            'sample': 'baz baz quux quux'
                        }
                    ]
                }
            }

        def raise_for_status(self):
            pass

    fake_term = 'asdf asdf'
    mock_get = mocker.patch('tululbot.utils.kbbi.requests.get', return_value=FakeResponse(),
                            autospec=True)

    rv = lookup_kbbi_definition(fake_term)

    assert len(rv) == 2
    assert {
        'class': 'nomina',
        'def_text': 'foo bar',
        'sample': 'foo bar foo bar'
    } in rv
    assert {
        'class': 'adjektiva',
        'def_text': 'baz quux',
        'sample': 'baz baz quux quux'
    } in rv
    mock_get.assert_called_once_with('http://kateglo.com/api.php',
                                     params={'format': 'json', 'phrase': fake_term})
Exemplo n.º 4
0
def kbbi(message):
    app.logger.debug('Detected kbbi command {!r}'.format(message.text))
    try:
        if message.text.startswith('/kbbi'):
            _, term = message.text.split(' ', maxsplit=1)
        else:
            term = message.text
    except ValueError:
        app.logger.debug('Cannot split text {!r}'.format(message.text))
        bot.reply_to(message, 'Cari apa lu?', force_reply=True)
    else:
        app.logger.debug('Extracted kbbi term {!r}'.format(term))
        try:
            defs = lookup_kbbi_definition(term)
        except HTTPError:
            bot.reply_to(message, 'Aduh ada error nich')
        except ConnectionError:
            bot.reply_to(message, "Koneksi lagi bapuk nih :'(")
        else:
            if defs:
                response = '\n'.join(format_def(i, d) for i, d in enumerate(defs, start=1))
                bot.reply_to(message, response, parse_mode='Markdown')
            else:
                bot.reply_to(message, 'Gak ada bray')