# Howdoi bot

This bot will allow users to get technical answers from
[StackOverflow](https://stackoverflow.com). It is build on top of the
python command line tool [howdoi](https://github.com/gleitz/howdoi) by
Benjamin Gleitzman.

## Usage

Simply prepend your questions with one of the following commands. The
answer will be formatted differently depending the chosen command.

| Command     | Respond                                                |
| ----------- | ------------------------------------------------------ |
| `@howdowe`  | Concise answer to the same stream.                     |
| `@howdowe!` | Same as `@howdowe` but with full answer and URL of the solutions. |
| `@howdoi`   | Concise answer replied to sender via private message.  |
| `@howdoi!`  | Same as `@howdoi` but with full answer and URL of the solutions. |

## Screenshots

#### Example 1

Question -> `@howdowe use supervisor in elixir`

  ![howdowe question](assets/question_howdowe.png)

Answer ->  Howdoi would try to **only** respond with the coding section
of the answer.

  ![howdowe answer](assets/answer_howdowe.png)

#### Example 2

Question -> `@howdoi! stack vs heap`

  ![howdoi! question](assets/question_howdoi_all.png)

Answer -> Howdoi would return the **full** stackoverflow answer via
**private message** to the original sender. The URL of the answer can be
seen at the bottom of the message.

  ![howdoi! answer](assets/answer_howdoi_all.png)

**Note:**

* Line wrapped is enabled with a maximum line length of 85 characters.
This could be adjusted in the source code (`HowdoiHandler.MAX_LINE_LENGTH`).

* *Howdoi* generally perform better if you ask a question using keywords
instead of a complete sentences (eg: "How do i make a decorator in Python"
-> "python decorator").

* __[*Limitation*]__ If a answer contains multiple code blocks, the `@howdoi`
and `@howdowe` commands would only return the first coding section, use
`@howdo[we|i]!` in that case.