/binput

A Bottery extension. Adds "input" command to bottery views.

Primary LanguagePythonMIT LicenseMIT

A Bottery Extension

🔋 Bottery - a framework for building bots

Build Status CircleCI

# quick example of a input bot
On an Application:
app = App()
input = InputHandler(app)

On Patterns:
hang_user_pattern_input = HangUserPattern(input_example)
input.set_hang(hang_user_pattern_input, 'project')
patterns = [
    hang_user_pattern_input,
    Pattern('project', input_example),

On a View:

    # This block will be executed on first call
    if not app.input_queue:
        app.hang_in(message)
        app.input(message, 'name', 'Enter Project Name:')
        app.input(message, 'language', 'Enter Project Language: ',
                  ['python2', 'python3'])
        return app.print_next_input(message) # To return first message of queue

    # On next calls, this block wil be executed

    stay, response = app.next_input_queue(message)
    if stay:
        return response # Contains message from Input Command
    # Queue ended, now you could save resulting Project and exit view
    app.hang_out(message)
    return 'Project created: ' + + ' '.join('{}:{}'.format(key, val) for key, val in response.items()) # Response contains user entries

The complete example is packaged within this repository

Usage

Just import it on a bottery project.

# On bottery app
from botteryext.binput.inputhandler import InputHandler
import botteryext.binput.localizations

app = App()
ih = InputHandler(App)

# On patterns.py
from botteryext.binput.patterns import HangUserPattern
hang_user_pattern = HangUserPattern(aview)
ih.set_hang(hang_user_pattern, 'apattern')

patterns = [
    hang_user_pattern,
    Pattern('project', input_example),
***
# On views
from inputapp import ih

Installing

$ git clone https://github.com/IvanBrasilico/binput.git
$ pip install -e .

Creating a project

Refer to bottery documentation