Metadata-Version: 2.0
Name: slash-command-decorator
Version: 0.0.3
Summary: Useful Slack Slash Command decorators for AWS Lambda.
Home-page: https://github.com/penta515/slash-command-decorator
Author: penta515
Author-email: penta0515@gmail.com
License: UNKNOWN
Platform: UNKNOWN
Requires-Dist: slacker

# slash-command-decorator
slash-command-decorator is a simple decorator for the use of AWS Lambda as the [Slack Slash Command](https://api.slack.com/slash-commands) backend.

[![CircleCI](https://circleci.com/gh/penta515/slash-command-decorator.svg?style=svg)](https://circleci.com/gh/penta515/slash-command-decorator) [![Code Climate](https://codeclimate.com/github/penta515/slash-command-decorator/badges/gpa.svg)](https://codeclimate.com/github/penta515/slash-command-decorator)

## Installation
The latest release of slash-command-decorator can be installed via pip

```
$ pip install slash-command-decorator
```

An alternative install method would be manually installing it leveraging `setup.py`

```
$ git clone https://github.com/penta515/slash-command-decorator
$ cd slash-command-decorator
$ python setup.py install
```

## Set Query String in event

In handler function `event.body` parameter, it is necessary to set up URL query string that was tranmitted by Slack 


###Example event.body

```python
"token=aCec9XZPS6klbnAAAAAAAAAA&team_id=T0AAAAAAA&team_domain=test-domain&channel_id=C0AAAAAAA&channel_name=general&user_id=U0AAAAAAA&user_name=hoge&command=%2Fcommand&text=hoge&response_url=https%3A%2F%2Fhooks.slack.com%2Fcommands%2FT0JQU92NA%2F1234567890%2Faaaaaaaaaaaaaaaaaaa"
```

## Usage examples
Usage examples are included in the [samples directory](https://google.co.jp)

```python
from slash_command_decorator.slash_command import SlashCommand
from slash_command_decorator import (
    lambda_manager,
    respond_to_option
)

SLACK_API_TOKEN = "xoxp-12345678901-12345678901-12345678901-hogefugapiyo"
CONFIG = {
    "username": "Slash Command",
    "icon_emoji": ":penguin:"
}

@lambda_manager
def lambda_handler(event, context):
    @respond_to_option("^help$")
    def help_option(reaction):
        reaction.ephemeral("HELP!")

    @respond_to_option("^hoge$")
    def hoge_option(reaction):
        reaction.in_channel("HOGE!")

    @respond_to_option("^fuga$")
    def fuga_option(reaction):
        reaction.send("FUGA!")

    @respond_to_option("^piyo$")
    def piyo_option(reaction):
        reaction.reply("PIYO!")

    SlashCommand(
        token=SLACK_API_TOKEN,
        config=CONFIG
    ).start(
        help_option,
        hoge_option,
        fuga_option,
        piyo_option
    )
```

###Types of Responses
####1.ephemeral 

```python
@respond_to_option("^help$")
def help_option(reaction):
    reaction.ephemeral("HELP!")
```

![ephemeral](https://github.com/penta515/slash-command-decorator/blob/develop/images/help.gif)

####2.in_channel

```python
@respond_to_option("^hoge$")
def hoge_option(reaction):
    reaction.in_channel("HOGE!")
```

![in_channel](https://github.com/penta515/slash-command-decorator/blob/develop/images/hoge.gif)

####3.send

```python
@respond_to_option("^fuga$")
def fuga_option(reaction):
    reaction.send("FUGA!")
```

![in_channel](https://github.com/penta515/slash-command-decorator/blob/develop/images/fuga.gif)

####4.reply

```python
@respond_to_option("^PIYO$")
def piyo_option(reaction):
    reaction.reply("PIYO!")
```

![in_channel](https://github.com/penta515/slash-command-decorator/blob/develop/images/piyo.gif)

## Running tests

```
$ py.test tests
```

## License

[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE) 


