mirror of https://github.com/zulip/zulip.git
docs: Add Baremetrics to integrations
The baremetrics bot had existing documentation at zulip/python-zulip-api. I added the existing markdown file as well as a logo and relevant assets to appear on the /integrations page. Followed existing documentation for webhook integrations. Fixes #17534 fix lint tests use path config fix backend lint
This commit is contained in:
parent
b01d43f339
commit
bad1029796
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
|
@ -0,0 +1,41 @@
|
||||||
|
# Baremetrics bot
|
||||||
|
|
||||||
|
The Baremetrics bot is a Zulip bot that gives updates about customer behavior, financial performance, and
|
||||||
|
analytics for an organization using the [Baremetrics](https://baremetrics.com/) API.
|
||||||
|
|
||||||
|
To use the Baremetrics bot, you can simply call it with `@<botname>` followed
|
||||||
|
by a command, like so:
|
||||||
|
|
||||||
|
```
|
||||||
|
@Baremetrics help
|
||||||
|
```
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
Before usage, you will need to configure the bot by putting the value of the `<api_key>` in the config file.
|
||||||
|
To do this, follow the given steps:
|
||||||
|
|
||||||
|
1. Login at [Baremetrics Console](https://app.baremetrics.com/settings/api).
|
||||||
|
2. Note the `Live API Key`.
|
||||||
|
3. Open up `zulip_bots/bots/baremetrics/baremetrics.conf` in an editor and
|
||||||
|
change the value of the `<api_key>` attribute to the noted `Live API Key`.
|
||||||
|
|
||||||
|
## Developer Notes
|
||||||
|
|
||||||
|
Be sure to add the command and its description to their respective lists (named `commands` and `descriptions`)
|
||||||
|
so that it can be displayed with the other available commands using `@<botname> list-commands`. Also modify
|
||||||
|
the `test_list_commands_command` in `test_baremetrics.py`.
|
||||||
|
|
||||||
|
## Links
|
||||||
|
|
||||||
|
- [Baremetrics](https://baremetrics.com/)
|
||||||
|
- [Baremetrics Developer API](https://developers.baremetrics.com/reference)
|
||||||
|
- [Baremetrics Dashboard](https://app.baremetrics.com/setup)
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
`@Baremetrics list-commands` - This command gives a list of all available commands along with short
|
||||||
|
short descriptions.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
![](assets/list-commands.png)
|
|
@ -0,0 +1,63 @@
|
||||||
|
# Beeminder bot
|
||||||
|
|
||||||
|
The Beeminder bot can help you adding datapoints towards
|
||||||
|
your Beeminder goal from Zulip.
|
||||||
|
|
||||||
|
To use the Beeminder bot, you can simply call it with `@beeminder`
|
||||||
|
followed by a daystamp, value and an optional comment.
|
||||||
|
|
||||||
|
Syntax is like:
|
||||||
|
```
|
||||||
|
@beeminder daystamp, value, comment
|
||||||
|
```
|
||||||
|
|
||||||
|
**NOTE** : **Commas** between inputs are a must, otherwise,
|
||||||
|
you'll get an error.
|
||||||
|
|
||||||
|
## Setup and Configuration
|
||||||
|
|
||||||
|
Before running Beeminder bot you will need three things as follows :
|
||||||
|
|
||||||
|
1. **auth_token**
|
||||||
|
- Go to your [Beeminder](https://www.beeminder.com/) **account settings**.
|
||||||
|
Under **APPS & API** section you will find your **auth token**.
|
||||||
|
|
||||||
|
2. **username**
|
||||||
|
- Your Beeminder username.
|
||||||
|
|
||||||
|
3. **Goalname**
|
||||||
|
- The name of your Beeminder goal for which you want to
|
||||||
|
add datapoints from [Zulip](https://zulipchat.com/)
|
||||||
|
|
||||||
|
Once you have above information, you should supply
|
||||||
|
them in `beeminder.conf` file.
|
||||||
|
|
||||||
|
Run this bot as described in
|
||||||
|
[here](https://zulipchat.com/api/running-bots#running-a-bot).
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
You can give command to add datapoint in 4 ways:
|
||||||
|
|
||||||
|
1. `@beeminder daystamp, value, comment`
|
||||||
|
- Example usage: `@beeminder 20180125, 15, Adding datapoint`.
|
||||||
|
- This will add a datapoint to your Beeminder goal having
|
||||||
|
**daystamp**: `20180125`, **value**: `15` with
|
||||||
|
**comment**: `Adding datapoint`.
|
||||||
|
|
||||||
|
2. `@beeminder daystamp, value`
|
||||||
|
- Example usage: `@beeminder 20180125, 15`.
|
||||||
|
- This will add a datapoint in your Beeminder goal having
|
||||||
|
**daystamp**: `20180125`, **value**: `15` and **comment**: `None`.
|
||||||
|
|
||||||
|
3. `@beeminder value, comment`
|
||||||
|
- Example usage: `@beeminder 15, Adding datapoint`.
|
||||||
|
- This will add a datapoint in your Beeminder goal having
|
||||||
|
**daystamp**: `current daystamp`, **value**: `15` and **comment**: `Adding datapoint`.
|
||||||
|
|
||||||
|
4. `@beeminder value`
|
||||||
|
- Example usage: `@beeminder 15`.
|
||||||
|
- This will add a datapoint in your Beeminder goal having
|
||||||
|
**daystamp**: `current daystamp`, **value**: `15` and **comment**: `None`.
|
||||||
|
|
||||||
|
5. `@beeminder ` or `@beeminder help` will fetch you the `help message`.
|
|
@ -0,0 +1,39 @@
|
||||||
|
## Starting a Game
|
||||||
|
|
||||||
|
You can start a game with another user by typing
|
||||||
|
|
||||||
|
```
|
||||||
|
start with other user
|
||||||
|
```
|
||||||
|
|
||||||
|
or you can start a game with a computer with
|
||||||
|
|
||||||
|
```
|
||||||
|
start as <white or black> with computer
|
||||||
|
```
|
||||||
|
|
||||||
|
## Playing
|
||||||
|
|
||||||
|
After starting the game, you can make your move by typing
|
||||||
|
|
||||||
|
```
|
||||||
|
do <your move>
|
||||||
|
```
|
||||||
|
|
||||||
|
using [Standard Algebraic Chess Notation](https://goo.gl/rehi8n). For example,
|
||||||
|
`do e4` to move a pawn to *e4* or `do Nf3` to move a night to *f3* or `do O-O`
|
||||||
|
to castle.
|
||||||
|
|
||||||
|
|
||||||
|
## Ending the game
|
||||||
|
|
||||||
|
The bot will detect if a game is over. You can end one early by resigning
|
||||||
|
with the
|
||||||
|
|
||||||
|
```
|
||||||
|
resign
|
||||||
|
```
|
||||||
|
|
||||||
|
command.
|
||||||
|
|
||||||
|
(Or you could just stop responding.)
|
|
@ -0,0 +1,5 @@
|
||||||
|
# Connect Four Bot
|
||||||
|
|
||||||
|
The Connect Four bot is a Zulip bot that will allow users
|
||||||
|
to play a game of Connect Four against either another user,
|
||||||
|
or the computer.
|
|
@ -0,0 +1,70 @@
|
||||||
|
# Converter bot
|
||||||
|
|
||||||
|
This bot allows users to perform conversions for various measurement units.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Run this bot as described in [here](https://zulipchat.com/api/running-bots#running-a-bot).
|
||||||
|
|
||||||
|
Use this bot with the following command
|
||||||
|
|
||||||
|
`@convert <number> <unit_from> <unit_to>`
|
||||||
|
|
||||||
|
This will convert `number`, given in the unit `unit_from`, to the unit `unit_to`
|
||||||
|
and print the result.
|
||||||
|
|
||||||
|
* `number` can be any floating-point number, e.g. 12, 13.05, 0.002.
|
||||||
|
* `unit_from` and `unit_to` are two units from [the following](#supported-units) table in the same category.
|
||||||
|
* `unit_from` and `unit_to` can be preceded by [these](#supported-prefixes) prefixes.
|
||||||
|
|
||||||
|
### Supported units
|
||||||
|
|
||||||
|
| Category | Units |
|
||||||
|
| ----------------- | ----- |
|
||||||
|
| Area | square-centimeter (cm^2, cm2), square-decimeter (dm^2, dm2), square-meter (m^2, m2), square-kilometer (km^2, km2), square-inch (in^2, in2), square-foot (ft^2, ft2), square-yard (y^2, y2), square-mile (mi^2, mi2), are (a), hectare (ha), acre (ac) |
|
||||||
|
| Information | bit, byte |
|
||||||
|
| Length | centimeter (cm), decimeter (dm), meter (m), kilometer (km), inch (in), foot (ft), yard (y), mile (mi), nautical-mile (nmi) |
|
||||||
|
| Temperature | Kelvin (K), Celsius (C), Fahrenheit (F) |
|
||||||
|
| Volume | cubic-centimeter (cm^3, cm3), cubic-decimeter (dm^3, dm3), liter (l), cubic-meter (m^3, m3), cubic-inch (in^3, in3), fluid-ounce (fl-oz), cubic-foot (ft^3, ft3), cubic-yard (y^3, y3) |
|
||||||
|
| Weight | gram (g), kilogram (kg), ton (t), ounce (oz), pound (lb) |
|
||||||
|
| Cooking (metric only, U.S. and imperial units differ slightly) | teaspoon (tsp), tablespoon (tbsp), cup |
|
||||||
|
|
||||||
|
### Supported prefixes
|
||||||
|
|
||||||
|
| Prefix | Power of 10 |
|
||||||
|
| ------ | ----------- |
|
||||||
|
| atto | 10<sup>-18</sup> |
|
||||||
|
| pico | 10<sup>-15</sup> |
|
||||||
|
| femto | 10<sup>-12</sup> |
|
||||||
|
| nano | 10<sup>-9</sup> |
|
||||||
|
| micro | 10<sup>-6</sup> |
|
||||||
|
| milli | 10<sup>-3</sup> |
|
||||||
|
| centi | 10<sup>-2</sup> |
|
||||||
|
| deci | 10<sup>-1</sup> |
|
||||||
|
| deca | 10<sup>1</sup> |
|
||||||
|
| hecto | 10<sup>2</sup> |
|
||||||
|
| kilo | 10<sup>3</sup> |
|
||||||
|
| mega | 10<sup>6</sup> |
|
||||||
|
| giga | 10<sup>9</sup> |
|
||||||
|
| tera | 10<sup>12</sup> |
|
||||||
|
| peta | 10<sup>15</sup> |
|
||||||
|
| exa | 10<sup>18</sup> |
|
||||||
|
|
||||||
|
### Usage examples
|
||||||
|
|
||||||
|
| Message | Response |
|
||||||
|
| ------- | ------ |
|
||||||
|
| `@convert 12 celsius fahrenheit` | 12.0 celsius = 53.600054 fahrenheit |
|
||||||
|
| `@convert 0.002 kilomile millimeter` | 0.002 kilomile = 3218688.0 millimeter |
|
||||||
|
| `@convert 31.5 square-mile ha | 31.5 square-mile = 8158.4625 ha |
|
||||||
|
| `@convert 56 g lb` | 56.0 g = 0.12345887 lb |
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
* You can use multiple `@convert` statements in a message, the response will look accordingly:
|
||||||
|
![multiple-converts](assets/multiple-converts.png)
|
||||||
|
|
||||||
|
* Enter `@convert help` to display a quick overview of the converter's functionality.
|
||||||
|
|
||||||
|
* For bits and bytes, the prefixes change the figure differently: 1 kilobyte is 1024 bytes,
|
||||||
|
1 megabyte is 1048576 bytes, etc.
|
|
@ -0,0 +1,21 @@
|
||||||
|
# DefineBot
|
||||||
|
|
||||||
|
* This is a bot that defines a word that the user inputs. Whenever the user
|
||||||
|
inputs a message starting with '@define', the bot defines the word
|
||||||
|
that follows.
|
||||||
|
|
||||||
|
* The definitions are brought to the website using an API. The bot posts the
|
||||||
|
definition of the word to the stream from which the user inputs the message.
|
||||||
|
If the user inputs a word that does not exist or a word that is incorrect or
|
||||||
|
is not in the dictionary, the definition is not displayed.
|
||||||
|
|
||||||
|
* For example, if the user says "@define crash", all the meanings of crash
|
||||||
|
appear, each in a separate line.
|
||||||
|
|
||||||
|
![Correct Word](assets/correct_word.png)
|
||||||
|
|
||||||
|
* If the user enters a wrong word, like "@define cresh" or "@define crish",
|
||||||
|
then an error message saying no definition is available is displayed.
|
||||||
|
|
||||||
|
![Wrong Word](assets/wrong_word.png)
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
# DialogFlow bot
|
||||||
|
This bot allows users to easily add their own DialogFlow bots to zulip.
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
To add your DialogFlow bot:
|
||||||
|
Add the V1 Client access token from your agent's settings in the DialogFlow console to
|
||||||
|
`dialogflow.conf`, and write a short sentence describing what your bot does in the same file
|
||||||
|
as `bot_info`.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Run this bot as described
|
||||||
|
[here](https://zulipchat.com/api/running-bots#running-a-bot).
|
||||||
|
|
||||||
|
Mention the bot in order to say things to it.
|
||||||
|
|
||||||
|
For example: `@weather What is the weather today?`
|
||||||
|
|
||||||
|
|
||||||
|
## Limitations
|
||||||
|
When creating your DialogFlow bot, please consider these things:
|
||||||
|
|
||||||
|
- Empty input will not be sent to the bot.
|
||||||
|
- Only text can be sent to, and recieved from the bot.
|
|
@ -0,0 +1,41 @@
|
||||||
|
# Dropbox Bot
|
||||||
|
|
||||||
|
This bot links your [dropbox](https://www.dropbox.com) account to [zulip](https://chat.zulip.org).
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
- Create a dropbox app from [here](https://www.dropbox.com/developers/apps).
|
||||||
|
- Click the `generate` button under the **Generate access token** section.
|
||||||
|
- Copy the Access Token and paste it in a file named `dropbox_share.conf` as shown:
|
||||||
|
```
|
||||||
|
[dropbox_share]
|
||||||
|
ACCESS_TOKEN=<your_access_token>
|
||||||
|
```
|
||||||
|
- Follow the instructions as described in [here](https://zulipchat.com/api/running-bots#running-a-bot).
|
||||||
|
- Run the bot: `zulip-run-bot dropbox_share -b <Path/to/dropbox_share.conf> -c <Path/to/zuliprc>`
|
||||||
|
|
||||||
|
Use this bot with any of the following commands:
|
||||||
|
|
||||||
|
- `@dropbox mkdir` : Create a folder
|
||||||
|
- `@dropbox ls` : List contents of a folder
|
||||||
|
- `@dropbox write` : Save text to a file
|
||||||
|
- `@dropbox rm` : Remove a file/folder
|
||||||
|
- `@dropbox help` : See help text
|
||||||
|
- `@dropbox read`: Read contents of a file
|
||||||
|
- `@dropbox share`: Get a shareable link for a file/folder
|
||||||
|
- `@dropbox search`: Search for matching file/folder names
|
||||||
|
|
||||||
|
where `dropbox` may be the name of the bot you registered in the zulip system.
|
||||||
|
|
||||||
|
### Usage examples
|
||||||
|
|
||||||
|
- `dropbox ls -` Shows files/folders in the root folder.
|
||||||
|
- `dropbox mkdir foo` - Make folder named foo.
|
||||||
|
- `dropbox ls foo/boo` - Shows the files/folders in foo/boo folder.
|
||||||
|
- `dropbox write test hello world` - Write "hello world" to the file 'test'.
|
||||||
|
- `dropbox rm test` - Remove the file/folder test.
|
||||||
|
- `dropbox read foo` - Read the contents of file/folder foo.
|
||||||
|
- `dropbox share foo` - Get shareable link for the file/folder foo.
|
||||||
|
- `dropbox search boo` - Search for boo in root folder and get at max 20 results.
|
||||||
|
- `dropbox search boo --mr 10` - Search for boo and get at max 10 results.
|
||||||
|
- `dropbox search boo --fd foo` - Search for boo in folder foo.
|
|
@ -0,0 +1,16 @@
|
||||||
|
About EncryptBot:
|
||||||
|
EncryptBot Allows for quick ROT13 encryption in the middle of a chat.
|
||||||
|
|
||||||
|
What It Does:
|
||||||
|
The bot encrypts any message sent to it on any stream it is subscribed to with ROT13.
|
||||||
|
|
||||||
|
How It Works:
|
||||||
|
The bot will Use ROT13(A -> N, B -> O... and vice-versa) in a python
|
||||||
|
implementation to provide quick and easy encryption.
|
||||||
|
|
||||||
|
How to Use:
|
||||||
|
|
||||||
|
-Send the message you want to encrypt, add @encrypt to the beginning.
|
||||||
|
-The Encrypted message will be sent back to the stream the original
|
||||||
|
message was posted in to the topic <sender-email>'s encrypted text.
|
||||||
|
-Messages can be decrypted by sending them to EncryptBot in the same way.
|
|
@ -0,0 +1,21 @@
|
||||||
|
# File Uploader Bot
|
||||||
|
|
||||||
|
This bot allows the user to upload a file with a given path to the Zulip server.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Use this bot with any of the following commands:
|
||||||
|
|
||||||
|
- `@uploader <local_file_path>` : Upload a file, where `<local_file_path>` is the path to the file
|
||||||
|
- `@uploader help` : Display help message
|
||||||
|
|
||||||
|
### Usage examples
|
||||||
|
|
||||||
|
The following command will upload the file `/tmp/image.png` to the Zulip server:
|
||||||
|
```
|
||||||
|
@**uploader** /tmp/image.png
|
||||||
|
```
|
||||||
|
|
||||||
|
Here's an example response:
|
||||||
|
|
||||||
|
> [image.png](https://server.zulipchat.com/user_uploads/3787/RgoZReSsfMjlQSzvVxjIgAQy/image.png)
|
|
@ -0,0 +1,27 @@
|
||||||
|
# Flock Bot
|
||||||
|
|
||||||
|
With [Flock](https://flock.com/) bot, you can send messages to any of your
|
||||||
|
flock contact without having to leave Zulip.
|
||||||
|
|
||||||
|
Sending messages to a user is quite easy, syntax is:
|
||||||
|
`@botname recipient_name: hello`
|
||||||
|
where `recipient_name` is name of recipient and `hello` is the sample message.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
1. Before running Flock bot, you'll need a `token`. In order to get `token`,
|
||||||
|
Go to [Flock apps](https://dev.flock.com/apps) and create an app.
|
||||||
|
After successful installation, you'll get an `token` in response from servers.
|
||||||
|
|
||||||
|
1. Once you have `token`, you should supply it in `flock.conf` file.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Run this bot as described in
|
||||||
|
[here](https://zulipchat.com/api/running-bots#running-a-bot).
|
||||||
|
|
||||||
|
You can use this bot in one easy step:
|
||||||
|
|
||||||
|
`@botname recipient_firstName: message`
|
||||||
|
|
||||||
|
For help, do `@botname help`.
|
|
@ -0,0 +1,17 @@
|
||||||
|
# Front Bot
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
1. Go to the `Setting` of your Front app.
|
||||||
|
2. Copy the `JSON Web Token` from `Plugins & API` → `API`.
|
||||||
|
3. Replace `<api_key>` in `zulip_bots/bots/front/front.conf` with `JSON
|
||||||
|
Web Token`.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
![](assets/usage.png)
|
||||||
|
|
||||||
|
The name of the topic, from which you call the bot, must contain the ID of
|
||||||
|
the corresponding Front conversation. If you have received notifications
|
||||||
|
from this conversation using Front incoming webhook, you can use the topic
|
||||||
|
it has created.
|
|
@ -0,0 +1,42 @@
|
||||||
|
# GIPHY bot
|
||||||
|
|
||||||
|
The GIPHY bot is a Zulip bot that can fetch a GIF associated with
|
||||||
|
a given keyword from [GIPHY](https://giphy.com/).
|
||||||
|
|
||||||
|
To use the GIPHY bot, you can simply call it with `@Giphy` followed
|
||||||
|
by a keyword, like so:
|
||||||
|
|
||||||
|
```
|
||||||
|
@Giphy hello
|
||||||
|
```
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
Before you can proceed further, you'll need to go to the
|
||||||
|
[GIPHY Developers](https://developers.giphy.com/), and get a
|
||||||
|
GIPHY API key.
|
||||||
|
|
||||||
|
1. Click on the **Create an App** button on the top right corner.
|
||||||
|
2. Click on **Create an App** under the **Your Apps** section.
|
||||||
|
3. Enter a name and a description for your app and click on
|
||||||
|
**Create New App**.
|
||||||
|
4. And you're done! You should now have a GIPHY API key.
|
||||||
|
5. Open up `zulip_bots/bots/giphy/giphy.conf` in an editor and
|
||||||
|
and change the value of the `key` attribute to the API key
|
||||||
|
you generated above.
|
||||||
|
|
||||||
|
Run this bot as described in [here](https://zulipchat.com/api/running-bots#running-a-bot).
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
1. `@Giphy <keyword` - This command will fetch a GIF associated
|
||||||
|
with the given keyword. Example usage: `@Giphy hello`:
|
||||||
|
![](/static/generated/bots/giphy/assets/giphy-gif-found.png)
|
||||||
|
|
||||||
|
2. If a GIF can't be found for a given keyword, the bot will
|
||||||
|
respond with an error message:
|
||||||
|
![](/static/generated/bots/giphy/assets/giphy-gif-not-found.png)
|
||||||
|
|
||||||
|
3. If there's a connection error, the bot will respond with an
|
||||||
|
error message:
|
||||||
|
![](/static/generated/bots/giphy/assets/giphy-connection-error.png)
|
Binary file not shown.
After Width: | Height: | Size: 7.7 KiB |
|
@ -0,0 +1,20 @@
|
||||||
|
This bot links and details issues and pull requests.
|
||||||
|
To use it @-mention the bot then type an id:
|
||||||
|
Ids can be specified in three different forms:
|
||||||
|
- Id only: `#2000`
|
||||||
|
- Repository and id: `zulip#2000`
|
||||||
|
- Owner, repository and id `zulip/zulip#2000`
|
||||||
|
|
||||||
|
The id can occur at any time in the message. You
|
||||||
|
can also mention multiple ids in a single message. For example:
|
||||||
|
|
||||||
|
`@**GitHub Detail Bot** find me #5176 and zulip/zulip#4534 .`
|
||||||
|
|
||||||
|
You can configure a default owner and repository.
|
||||||
|
The configuration file should be located at `api/bots/github_detail/github_detail.conf`.
|
||||||
|
It should look like this:
|
||||||
|
```ini
|
||||||
|
[github_detail]
|
||||||
|
owner = <repository owner>
|
||||||
|
repo = <repository name>
|
||||||
|
```
|
Binary file not shown.
After Width: | Height: | Size: 2.0 KiB |
|
@ -0,0 +1,23 @@
|
||||||
|
# Google Search bot
|
||||||
|
|
||||||
|
This bot allows users to do Google search queries and have the bot
|
||||||
|
respond with the first search result. It is by default set to the
|
||||||
|
highest safe-search setting.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Run this bot as described
|
||||||
|
[here](https://zulipchat.com/api/running-bots#running-a-bot).
|
||||||
|
|
||||||
|
Use this bot with the following command
|
||||||
|
|
||||||
|
`@mentioned-bot <search terms>`
|
||||||
|
|
||||||
|
This will return the first link found by Google for `<search terms>`
|
||||||
|
and print the resulting URL.
|
||||||
|
|
||||||
|
If no `<search terms>` are entered, a help message is printed instead.
|
||||||
|
|
||||||
|
If there was an error in the process of running the search (socket
|
||||||
|
errors, Google search function failed, or general failures), an error
|
||||||
|
message is returned.
|
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
|
@ -0,0 +1,26 @@
|
||||||
|
# Google Translate bot
|
||||||
|
|
||||||
|
The Google Translate bot uses Google Translate to translate
|
||||||
|
any text sent to it.
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
This bot requires a google cloud API key. Create one
|
||||||
|
[here](https://support.google.com/cloud/answer/6158862?hl=en)
|
||||||
|
|
||||||
|
You should add this key to `googletranslate.conf`.
|
||||||
|
|
||||||
|
To run this bot, use:
|
||||||
|
`zulip-run-bots googletranslate -c <zuliprc file>
|
||||||
|
--bot-config-file <path to googletranslate.conf>`
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
To use this bot, @-mention it like this:
|
||||||
|
|
||||||
|
`@-mention "<text>" <target language> <source language(Optional)>`
|
||||||
|
|
||||||
|
`text` must be in quotation marks, and `source language`
|
||||||
|
is optional.
|
||||||
|
|
||||||
|
If `source language` is not given, it will automatically detect your language.
|
|
@ -0,0 +1,4 @@
|
||||||
|
Simple Zulip bot that will respond to any query with a "beep boop".
|
||||||
|
|
||||||
|
The helloworld bot is a boilerplate bot that can be used as a
|
||||||
|
template for more sophisticated/evolved Zulip bots.
|
|
@ -0,0 +1,46 @@
|
||||||
|
# idonethis bot
|
||||||
|
|
||||||
|
The idonethis bot is a Zulip bot which allows interaction with [idonethis](https://idonethis.com/)
|
||||||
|
through Zulip. It can peform actions such as viewing teams, list entries and creating entries.
|
||||||
|
|
||||||
|
To use the bot simply @-mention the bot followed by a specific command. See the usage section
|
||||||
|
below for a list of available commands.
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
Before proceeding further, ensure you have an idonethis account.
|
||||||
|
|
||||||
|
1. Go to [your idonethis settings](https://beta.idonethis.com/u/settings), scroll down
|
||||||
|
and copy your API token.
|
||||||
|
2. Open up `zulip_bots/bots/idonethis/idonethis.conf` in your favorite editor, and change
|
||||||
|
`api_key` to your API token.
|
||||||
|
3. Optionally, change the `default_team` value to your default team for creating new messages.
|
||||||
|
If this is not specified, a team will be required to be manually specified every time an entry is created.
|
||||||
|
|
||||||
|
Run this bot as described [here](https://zulipchat.com/api/running-bots#running-a-bot).
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
`<team>` can either be the name or ID of a team.
|
||||||
|
|
||||||
|
* `@mention help` view this help message.
|
||||||
|
![](/static/generated/bots/idonethis/assets/idonethis-help.png)
|
||||||
|
* `@mention teams list` or `@mention list teams`
|
||||||
|
List all the teams.
|
||||||
|
![](/static/generated/bots/idonethis/assets/idonethis-list-teams.png)
|
||||||
|
* `@mention team info <team>`.
|
||||||
|
Show information about one `<team>`.
|
||||||
|
![](/static/generated/bots/idonethis/assets/idonethis-team-info.png)
|
||||||
|
* `@mention entries list` or `@mention list entries`.
|
||||||
|
List entries from any team
|
||||||
|
![](/static/generated/bots/idonethis/assets/idonethis-entries-all-teams.png)
|
||||||
|
* `@mention entries list <team>` or `@mention list entries <team>`
|
||||||
|
List all entries from `<team>`.
|
||||||
|
![](/static/generated/bots/idonethis/assets/idonethis-list-entries-specific-team.png)
|
||||||
|
* `@mention entries create` or `@mention new entry` or `@mention create entry`
|
||||||
|
or `@mention new entry` or `@mention i did`
|
||||||
|
Create a new entry. Optionally supply `--team=<team>` for teams with no spaces or `"--team=<team>"`
|
||||||
|
for teams with spaces. For example `@mention i did "--team=product team" something` will create a
|
||||||
|
new entry `something` for the product team.
|
||||||
|
![](/static/generated/bots/idonethis/assets/idonethis-new-entry.png)
|
||||||
|
![](/static/generated/bots/idonethis/assets/idonethis-new-entry-specific-team.png)
|
|
@ -0,0 +1,6 @@
|
||||||
|
# Incrementor bot
|
||||||
|
|
||||||
|
This is a boilerplate bot that makes use of the
|
||||||
|
update_message function. For the first @-mention, it initially
|
||||||
|
replies with one message containing a `1`. Every time the bot
|
||||||
|
is @-mentioned, this number will be incremented in the same message.
|
|
@ -0,0 +1,81 @@
|
||||||
|
# Jira Bot
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
To use Jira Bot, first set up `jira.conf`. `jira.conf` takes 3 options:
|
||||||
|
|
||||||
|
- username (an email or username that can access your Jira),
|
||||||
|
- password (the password for that username), and
|
||||||
|
- domain (a domain like `example.atlassian.net`)
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### get
|
||||||
|
|
||||||
|
`get` takes in an issue key and sends back information about that issue. For example,
|
||||||
|
|
||||||
|
you:
|
||||||
|
|
||||||
|
> @**Jira Bot** get "BOTS-13"
|
||||||
|
|
||||||
|
Jira Bot:
|
||||||
|
|
||||||
|
> **Issue *BOTS-13*: Create Jira Bot**
|
||||||
|
>
|
||||||
|
> - Type: *Task*
|
||||||
|
> - Description:
|
||||||
|
> > Jira Bot would connect to Jira.
|
||||||
|
> - Creator: *admin*
|
||||||
|
> - Project: *Bots*
|
||||||
|
> - Priority: *Medium*
|
||||||
|
> - Status: *To Do*
|
||||||
|
|
||||||
|
### create
|
||||||
|
|
||||||
|
`create` creates an issue using its
|
||||||
|
|
||||||
|
- summary,
|
||||||
|
- project,
|
||||||
|
- type,
|
||||||
|
- description *(optional)*,
|
||||||
|
- assignee *(optional)*,
|
||||||
|
- priority *(optional)*,
|
||||||
|
- labels *(optional)*, and
|
||||||
|
- due date *(optional)*
|
||||||
|
|
||||||
|
For example, to create an issue with every option,
|
||||||
|
|
||||||
|
you:
|
||||||
|
|
||||||
|
> @**Jira Bot** create issue "Make an issue" in project "BOTS"' with type "Task" with description
|
||||||
|
> "This is a description" assigned to "skunkmb" with priority "Medium" labeled "issues, testing"
|
||||||
|
> due "2017-01-23"
|
||||||
|
|
||||||
|
Jira Bot:
|
||||||
|
|
||||||
|
> Issue *BOTS-16* is up! https://example.atlassian.net/browse/BOTS-16
|
||||||
|
|
||||||
|
### edit
|
||||||
|
|
||||||
|
`edit` is like create, but changes an existing issue using its
|
||||||
|
|
||||||
|
- summary,
|
||||||
|
- project *(optional)*,
|
||||||
|
- type *(optional)*,
|
||||||
|
- description *(optional)*,
|
||||||
|
- assignee *(optional)*,
|
||||||
|
- priority *(optional)*,
|
||||||
|
- labels *(optional)*, and
|
||||||
|
- due date *(optional)*.
|
||||||
|
|
||||||
|
For example, to change every part of an issue,
|
||||||
|
|
||||||
|
you:
|
||||||
|
|
||||||
|
> @**Jira Bot** edit issue "BOTS-16" to use summary "Change the summary" to use project
|
||||||
|
> "NEWBOTS" to use type "Bug" to use description "This is a new description" by assigning
|
||||||
|
> to "admin" to use priority "Low" by labeling "new, labels" by making due "2018-12-5"
|
||||||
|
|
||||||
|
Jira Bot:
|
||||||
|
|
||||||
|
> Issue *BOTS-16* was edited! https://example.atlassian.net/browse/BOTS-16
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Link Shortener Bot
|
||||||
|
|
||||||
|
Link Shortener Bot is a Zulip bot that will shorten URLs ("links") in a
|
||||||
|
conversation. It uses the [bitly URL shortener API] to shorten its links.
|
||||||
|
|
||||||
|
Use [this](https://dev.bitly.com/get_started.html) to get your API Key.
|
||||||
|
|
||||||
|
Links can be anywhere in the message, for example,
|
||||||
|
|
||||||
|
> @**Link Shortener Bot** @**Joe Smith** See
|
||||||
|
> https://github.com/zulip/python-zulip-api/tree/master/zulip_bots/zulip_bots/bots
|
||||||
|
> for a list of all Zulip bots.
|
||||||
|
|
||||||
|
and LS Bot would respond
|
||||||
|
|
||||||
|
> https://github.com/zulip/python-zulip-api/tree/master/zulip_bots/zulip_bots/bots:
|
||||||
|
> **https://bit.ly/2FF3QHu**
|
||||||
|
|
||||||
|
[bitly URL shortener API]: https://bitly.com/
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Mention bot
|
||||||
|
|
||||||
|
The Mention bot is a Zulip bot that can fetch Mentions associated with
|
||||||
|
a given keyword from the web using [Mention](https://mention.com/en/).
|
||||||
|
|
||||||
|
To use the Mention bot, you can simply call it with `@<botname>` followed
|
||||||
|
by a keyword, like so:
|
||||||
|
|
||||||
|
```
|
||||||
|
@Mention Apple
|
||||||
|
```
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
Before you can proceed further, you'll need to go to the
|
||||||
|
[Mention Dev](https://dev.mention.com/login), and get a
|
||||||
|
Mention API Access Token.
|
||||||
|
|
||||||
|
1. Login.
|
||||||
|
2. Enter the **App Name**, **Description**, **Website**, and **Redirect uris**. In this version, there
|
||||||
|
is no actual use of the Redirect Uri and Website.
|
||||||
|
3. After accepting the agreement, click on **Create New App**.
|
||||||
|
4. And you're done! You should now have an Access Token.
|
||||||
|
5. Open up `zulip_bots/bots/mention/mention.conf` in an editor and
|
||||||
|
change the value of the `<access_token>` attribute to the Access Token
|
||||||
|
you generated above.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
`@Mention <keyword>` - This command will fetch the most recent 20
|
||||||
|
mentions of the keyword on the web (Limitations of a free account).
|
||||||
|
Example:
|
||||||
|
![](assets/mentions_demo.png)
|
|
@ -0,0 +1,65 @@
|
||||||
|
# monkeytest.it bot
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
This bot provides a quick way to check a site from a chat.
|
||||||
|
Using their monkeytestit's API key, the user can check a website
|
||||||
|
for certain failures that user wants to see.
|
||||||
|
|
||||||
|
## Setting up API key
|
||||||
|
|
||||||
|
1. Get your monkeytest.it API key, located in your
|
||||||
|
[dashboard](https://monkeytest.it/dashboard).
|
||||||
|
|
||||||
|
2. Create your own `monkeytestit.conf` file by copying the existing one in
|
||||||
|
`bots/monkeytest/monkeytestit.conf`.
|
||||||
|
|
||||||
|
3. Inside the config file, you will see this:
|
||||||
|
```
|
||||||
|
[monkeytestit]
|
||||||
|
api_key = <api key here>
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Replace `<api key here>` with your API key
|
||||||
|
|
||||||
|
5. Save the configuration file.
|
||||||
|
|
||||||
|
## Running the bot
|
||||||
|
|
||||||
|
Let `<path_to_config>` be the path to the config file, and let
|
||||||
|
`<path_to_zuliprc>` be the path to the zuliprc file.
|
||||||
|
|
||||||
|
You can run the bot by running:
|
||||||
|
|
||||||
|
`zulip-run-bot -b <path_to_config> monkeytestit --config-file
|
||||||
|
<path_to_zuliprc>`
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
**Note**: You **must** not forget to put `http://` or `https://`
|
||||||
|
before a website. Otherwise, the check will fail.
|
||||||
|
|
||||||
|
### Simple check with default settings
|
||||||
|
|
||||||
|
To check a website with all enabled checkers, run:
|
||||||
|
`check https://website`
|
||||||
|
|
||||||
|
### Check with options
|
||||||
|
|
||||||
|
To check a website with certain enabled checkers, run:
|
||||||
|
`check https://website <checker_options>`
|
||||||
|
|
||||||
|
The checker options are supplied to: `on_load`, `on_click`, `page_weight`,
|
||||||
|
`seo`, `broken_links`, `asset_count` **in order**.
|
||||||
|
|
||||||
|
Example 1: Disable `on_load`, enable the rest
|
||||||
|
command: `check https://website 0`
|
||||||
|
|
||||||
|
Example 2: Disable `asset_count`, enable the rest
|
||||||
|
command: `check https//website 1 1 1 1 1 0`
|
||||||
|
|
||||||
|
Example 3: Disable `on_load` and `page_weight`, enable the rest
|
||||||
|
command: `check https://website 0 1 0`
|
||||||
|
|
||||||
|
So for instance, if you wanted to disable `asset_count`, you have
|
||||||
|
to supply every params before it.
|
|
@ -0,0 +1,80 @@
|
||||||
|
# Salesforce bot
|
||||||
|
|
||||||
|
The Salesforce bot can get records from your Salesforce database.
|
||||||
|
It can also show details about any Salesforce links that you post.
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
1. Create a user in Salesforce that the bot can use to access Salesforce.
|
||||||
|
Make sure it has the appropriate permissions to access records.
|
||||||
|
2. In `salesforce.conf` paste the Salesforce `username`, `password` and
|
||||||
|
`security_token`.
|
||||||
|
3. Run the bot as explained [here](https://zulipchat.com/api/running-bots#running-a-bot)
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
### Standard query
|
||||||
|
![Standard query](assets/query_example.png)
|
||||||
|
|
||||||
|
### Custom query
|
||||||
|
![Custom query](assets/top_opportunities_example.png)
|
||||||
|
|
||||||
|
### Link details
|
||||||
|
![Link details](assets/link_details_example.png)
|
||||||
|
|
||||||
|
## Optional Configuration (Advanced)
|
||||||
|
|
||||||
|
The bot has been designed to be able to configure custom commands and objects.
|
||||||
|
|
||||||
|
If you wanted to find a custom object type, or an object type not included with the bot,
|
||||||
|
like `Event`, you can add these by adding to the Commands and Object Types in `utils.py`.
|
||||||
|
|
||||||
|
A Command is a phrase that the User asks the bot. For example `find contact bob`. To make a Command,
|
||||||
|
the corresponding object type must be made.
|
||||||
|
|
||||||
|
Object types are Salesforce objects, like `Event`, and are used to tell the bot which fields of the object the bot
|
||||||
|
should ask for and display.
|
||||||
|
|
||||||
|
To show details about a link posted, only the Object Type for the object needs to be present.
|
||||||
|
|
||||||
|
Please read the
|
||||||
|
[SOQL reference](https://goo.gl/6VwBV3)
|
||||||
|
to make custom queries, and the [simple_salesforce documentation](https://pypi.python.org/pypi/simple-salesforce)
|
||||||
|
to make custom callbacks.
|
||||||
|
|
||||||
|
### Commands
|
||||||
|
|
||||||
|
For example: "find contact tim"
|
||||||
|
|
||||||
|
In `utils.py`, the commands are stored in the list `commands`.
|
||||||
|
|
||||||
|
Parameter | Required? | Type | Description | Default
|
||||||
|
--------- | --------- | ---- | ----------- | -------
|
||||||
|
commands | [x] | list[str] | What the user should start their command with | `None`
|
||||||
|
object | [x] | str | The Salesforce object type in `object_types` | `None`
|
||||||
|
query | [ ] | str | The SOQL query to access this object* | `'SELECT {} FROM {} WHERE Name LIKE %\'{}\'% LIMIT {}'`
|
||||||
|
description | [x] | str | What does the command do? | `None`
|
||||||
|
template | [x] | str | Example of the command | `None`
|
||||||
|
rank_output | [ ] | boolean | Should the output be ranked? (1., 2., 3. etc.) | `False`
|
||||||
|
force_keys | [ ] | list[str] | Values which should always be shown in the output | `[]`
|
||||||
|
callback | [ ] | callable** | Custom handling behaviour | `None`
|
||||||
|
|
||||||
|
**Note**: *`query` must have `LIMIT {}` at the end, and the 4 parameters are `fields`, `table` (from `object_types`),
|
||||||
|
`args` (the search term), `limit` (the maximum number of terms)
|
||||||
|
|
||||||
|
**`callback` must be a function which accepts `args: str`(arguments passed in by the user, including search term),
|
||||||
|
`sf: simple_salesforce.api.Salesforce` (the Salesforce handler object, `self.sf`), `command: Dict[str, Any]`
|
||||||
|
(the command used from `commands`)
|
||||||
|
|
||||||
|
### Object Types
|
||||||
|
In `utils.py` the object types are stored in the dictionary `object_types`.
|
||||||
|
|
||||||
|
The name of each object type corresponds to the `object` referenced in `commands`.
|
||||||
|
|
||||||
|
Parameter | Required? | Type | Description
|
||||||
|
--------- | --------- | ---- | -----------
|
||||||
|
fields* | [x] | str | The Salesforce fields to fetch from the database.
|
||||||
|
name | [x] | str | The API name of the object**.
|
||||||
|
|
||||||
|
**Note**: * This must contain Name and Id, however Id is not displayed.
|
||||||
|
** Found in the salesforce object manager.
|
|
@ -0,0 +1,41 @@
|
||||||
|
# StackOverflow Bot
|
||||||
|
|
||||||
|
The StackOverflow bot is a Zulip bot that will search Stackoverflow
|
||||||
|
for a provided set of keywords or a question, and fetch a link to the associated
|
||||||
|
query. The link is returned to the same stream
|
||||||
|
it was @mentioned in
|
||||||
|
|
||||||
|
The Stackoverflow bot uses the
|
||||||
|
[StackExchange API](http://api.stackexchange.com/docs)
|
||||||
|
to obtain the search results it returns
|
||||||
|
|
||||||
|
Using the StackOverflow bot is as simple as mentioning @\<stackoverflow-bot-name\>,
|
||||||
|
followed by the query:
|
||||||
|
|
||||||
|
```
|
||||||
|
@<stackoverflow-bot-name> <query>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
Beyond the typical obtaining of the zuliprc file, no extra setup is required to use the StackOverflow Bot
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
1. ```@<stackoverflow-bot-name> <query>``` -
|
||||||
|
fetches the link to the appropriate StackOverflow questions.
|
||||||
|
|
||||||
|
* For example, `@<stackoverflow-bot-name> rest api`
|
||||||
|
will return the links having questions related to rest api.
|
||||||
|
<br>
|
||||||
|
|
||||||
|
2. If there are no questions related to the query,
|
||||||
|
the bot will respond with an error message:
|
||||||
|
|
||||||
|
`I am sorry. The search query you provided is does not have any related results.`
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
3. If no query is provided, the bot will return the help text:
|
||||||
|
|
||||||
|
```Please enter your message after @mention-bot```
|
|
@ -0,0 +1,37 @@
|
||||||
|
# Tic-Tac-Toe Bot
|
||||||
|
|
||||||
|
This bot allows you to play tic-tac-toe in a private message with the bot.
|
||||||
|
Multiple games can simultaneously be played by different users, each playing
|
||||||
|
against the computer.
|
||||||
|
|
||||||
|
The bot only responds to messages starting with @mention of the bot(botname).
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
This bot does not require any special setup. Just run it according to the
|
||||||
|
instructions in [this guide](https://zulipchat.com/api/running-bots#running-a-bot).
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
* `@mention-botname new` - start a new game (but not if you are already
|
||||||
|
playing a game.) You must type this first to start playing!
|
||||||
|
|
||||||
|
* `@mention-botname help` - return a help message.
|
||||||
|
|
||||||
|
* `@mention-botname quit` - quit the current game.
|
||||||
|
|
||||||
|
* `@mention-botname <coordinate>` - make a move at the entered coordinate.
|
||||||
|
For example, `@mention-botname 1,1` . After this, the bot will make its
|
||||||
|
move, or declare the game over if the user or bot has won.
|
||||||
|
|
||||||
|
Coordinates are entered in a (row, column) format. Numbering is from top to
|
||||||
|
bottom and left to right.
|
||||||
|
Here are the coordinates of each position. When entering coordinates, parentheses
|
||||||
|
and spaces are optional.
|
||||||
|
|
||||||
|
(1, 1) | (1, 2) | (1, 3)
|
||||||
|
|
||||||
|
(2, 1) | (2, 2) | (2, 3)
|
||||||
|
|
||||||
|
(3, 1) | (3, 2) | (3, 3)
|
||||||
|
|
||||||
|
Invalid commands will result in an "I don't understand" response from the bot,
|
||||||
|
with a suggestion to type `@mention-botname help`.
|
|
@ -0,0 +1,41 @@
|
||||||
|
# Trello bot
|
||||||
|
|
||||||
|
The Trello bot is a Zulip bot that enables interaction with Trello using the
|
||||||
|
[Trello API](https://developers.trello.com).
|
||||||
|
|
||||||
|
To use the Trello bot, you can simply call it with `@<botname>` followed
|
||||||
|
by a command, like so:
|
||||||
|
|
||||||
|
```
|
||||||
|
@Trello help
|
||||||
|
```
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
Before usage, you will need to configure the bot by putting the value of the `<api_key>`,
|
||||||
|
`<access_token>`, and `<user_name>` in the config file.
|
||||||
|
To do this, follow the given steps:
|
||||||
|
|
||||||
|
1. Go to [this]( https://trello.com/app-key) link after logging in at
|
||||||
|
[Trello]( https://trello.com/).
|
||||||
|
2. Generate an `access_token` and note it down. Continue to get your
|
||||||
|
`api_key`.
|
||||||
|
3. Go to your profile page in Trello and note down your `username`.
|
||||||
|
4. Open up `zulip_bots/bots/trello/trello.conf` in an editor and
|
||||||
|
change the values of the `<api_key>`, `<access_token>`, and `<user_name>`
|
||||||
|
attributes to the corresponding noted values.
|
||||||
|
|
||||||
|
## Developer Notes
|
||||||
|
|
||||||
|
Be sure to add the additional commands and their descriptions to the `supported_commands`
|
||||||
|
list in `trello.py` so that they can be displayed with the other available commands using
|
||||||
|
`@<botname> list-commands`. Also modify the `test_list_commands_command` in
|
||||||
|
`test_trello.py`.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
`@Trello list-commands` - This command gives a list of all available commands along with
|
||||||
|
short descriptions.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
![](assets/list_commands.png)
|
|
@ -0,0 +1,44 @@
|
||||||
|
# Virtual fs bot
|
||||||
|
|
||||||
|
This bot allows users to store information in a virtual file system,
|
||||||
|
for a given stream or private chat.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Run this bot as described in
|
||||||
|
[here](https://zulipchat.com/api/running-bots#running-a-bot).
|
||||||
|
|
||||||
|
Use this bot with any of the following commands:
|
||||||
|
|
||||||
|
`@fs mkdir` : create a directory
|
||||||
|
`@fs ls` : list a directory
|
||||||
|
`@fs cd` : change directory
|
||||||
|
`@fs pwd` : show current path
|
||||||
|
`@fs write` : write text
|
||||||
|
`@fs read` : read text
|
||||||
|
`@fs rm` : remove a file
|
||||||
|
`@fs rmdir` : remove a directory
|
||||||
|
|
||||||
|
where `fs` may be the name of the bot you registered in the zulip system.
|
||||||
|
|
||||||
|
### Usage examples
|
||||||
|
|
||||||
|
`@fs ls` - Initially shows nothing (with a warning)
|
||||||
|
`@fs pwd` - Show which directory we are in: we start in /
|
||||||
|
`@fs mkdir foo` - Make directory foo
|
||||||
|
`@fs ls` - Show that foo is now created
|
||||||
|
`@fs cd foo` - Change into foo (and do a pwd, automatically)
|
||||||
|
`@fs write test hello world` - Write "hello world" to the file 'test'
|
||||||
|
`@fs read test` - Check the text was written
|
||||||
|
`@fs ls` - Show that the new file exists
|
||||||
|
`@fs rm test` - Remove that file
|
||||||
|
`@fs cd /` - Change back to root directory
|
||||||
|
`@fs rmdir foo` - Remove foo
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
* In a stream, the bot must be mentioned; in a private chat, the bot
|
||||||
|
will assume every message is a command and so does not require this,
|
||||||
|
though doing so will still work.
|
||||||
|
|
||||||
|
* Use commands like `@fs help write` for more details on a command.
|
|
@ -0,0 +1,16 @@
|
||||||
|
# WeatherBot
|
||||||
|
|
||||||
|
* This is a bot that sends weather information to a selected stream on
|
||||||
|
request.
|
||||||
|
|
||||||
|
* Weather information is brought to the website using an
|
||||||
|
OpenWeatherMap API. The bot posts the weather information to the
|
||||||
|
stream from which the user inputs the message. If the user inputs a
|
||||||
|
city that does not exist, the bot displays a "Sorry, city not found"
|
||||||
|
message.
|
||||||
|
|
||||||
|
* Before using this bot, you have to generate an OpenWeatherMap API
|
||||||
|
key and replace the dummy value in weather.conf.
|
||||||
|
|
||||||
|
![Example Usage](assets/screen1.png)
|
||||||
|
![Wrong City](assets/screen2.png)
|
|
@ -0,0 +1,41 @@
|
||||||
|
# Wikipedia Bot
|
||||||
|
|
||||||
|
The Wikipedia bot is a Zulip bot that will search Wikipedia
|
||||||
|
for a provided keyword, and fetch a link to the associated
|
||||||
|
Wikipedia article. The link is returned to the same stream
|
||||||
|
it was @mentioned in
|
||||||
|
|
||||||
|
The Wikipedia bot uses the
|
||||||
|
[MediaWiki API](https://www.mediawiki.org/wiki/API:Main_page)
|
||||||
|
to obtain the search results it returns
|
||||||
|
|
||||||
|
Using the Wikipedia bot is as simple as mentioning @\<wikipedia-bot-name\>,
|
||||||
|
followed by the keyword:
|
||||||
|
|
||||||
|
```
|
||||||
|
@<wikipedia-bot-name> <keyword>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
Beyond the typical obtaining of the zuliprc file, no extra setup is required to use the Wikipedia Bot
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
1. ```@<wikipedia-bot-name> <keyword>``` -
|
||||||
|
fetches the link to the appropriate Wikipedia article.
|
||||||
|
|
||||||
|
* For example, `@<wikipedia-bot-name> Zulip`
|
||||||
|
will return the link `https://en.wikipedia.org/wiki/Zulip`
|
||||||
|
<br>
|
||||||
|
|
||||||
|
2. If the keyword does not return an article link,
|
||||||
|
the bot will respond with an error message:
|
||||||
|
|
||||||
|
`I am sorry. The search term you provided is not found`
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
3. If no keyword is provided, the bot will return the help text:
|
||||||
|
|
||||||
|
```Please enter your message after @mention-bot```
|
|
@ -0,0 +1,52 @@
|
||||||
|
# Wit.ai Bot
|
||||||
|
|
||||||
|
Wit.ai Bot uses [wit.ai](https://wit.ai/) to parse natural language.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
1. Go to https://wit.ai/ and sign up.
|
||||||
|
|
||||||
|
2. Create your Wit.ai app, or follow
|
||||||
|
[this quickstart guide](https://wit.ai/docs/quickstart).
|
||||||
|
|
||||||
|
3. Create a `.conf` file containing a `token` field for your Wit.ai token,
|
||||||
|
and a `help_message` field for a message to display to confused users,
|
||||||
|
e.g.,
|
||||||
|
|
||||||
|
```
|
||||||
|
[witai]
|
||||||
|
token = QWERTYUIOP1234
|
||||||
|
help_message = Ask me about my favorite food!
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Create a new file named `witai_handler.py`, and inside of it, create a
|
||||||
|
function called `handle` with one parameter `response`. Inside of `handle`,
|
||||||
|
write code for whatever you want to do with the Wit.ai response. It should
|
||||||
|
return a `string` to respond to the user with. For example,
|
||||||
|
|
||||||
|
```python
|
||||||
|
def handle(response):
|
||||||
|
if response['entities']['intent'][0]['value'] == 'favorite_food':
|
||||||
|
return 'pizza'
|
||||||
|
if response['entities']['intent'][0]['value'] == 'favorite_drink':
|
||||||
|
return 'coffee'
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Add `witai_handler.py`'s location as `handler_location` in your
|
||||||
|
configuration file, e.g.,
|
||||||
|
|
||||||
|
```
|
||||||
|
[witai]
|
||||||
|
token = QWERTYUIOP1234
|
||||||
|
handler_location = /Users/you/witai_handler_directory/witai_handler.py
|
||||||
|
```
|
||||||
|
|
||||||
|
6. Call
|
||||||
|
|
||||||
|
```bash
|
||||||
|
zulip-run-bot witai \
|
||||||
|
--config-file <your zuliprc> \
|
||||||
|
--bot-config-file <the config file>
|
||||||
|
```
|
||||||
|
|
||||||
|
to start the bot.
|
|
@ -0,0 +1,37 @@
|
||||||
|
xkcd bot is a Zulip bot that can fetch a comic strip from xkcd. To use
|
||||||
|
the xkcd bot, you can simply call it with `@xkcd` followed by a command,
|
||||||
|
like so:
|
||||||
|
|
||||||
|
```
|
||||||
|
@xkcd <command>
|
||||||
|
```
|
||||||
|
|
||||||
|
Run this bot as described in [here](https://zulipchat.com/api/running-bots#running-a-bot).
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
The xkcd bot has four commands:
|
||||||
|
|
||||||
|
1. `help` - This command is used to list all commands that can be used
|
||||||
|
with this bot. Example usage: `@xkcd help`:
|
||||||
|
![](/static/generated/bots/xkcd/assets/xkcd-help.png)
|
||||||
|
|
||||||
|
2. `latest` - This command is used to fetch the latest comic strip from
|
||||||
|
xkcd. Example usage: `@xkcd latest`:
|
||||||
|
![](/static/generated/bots/xkcd/assets/xkcd-latest.png)
|
||||||
|
|
||||||
|
3. `random`- This command is used to fetch a random comic strip from xkcd.
|
||||||
|
Example usage: `@xkcd random`:
|
||||||
|
![](/static/generated/bots/xkcd/assets/xkcd-random.png)
|
||||||
|
|
||||||
|
4. `<comic_id>` - To fetch a comic strip based on ID, you can supply the
|
||||||
|
ID to the bot as a parameter (`@xkcd <comic_id>`). For example, if you
|
||||||
|
want to fetch a comic strip with ID 1234, type `@xkcd 1234`:
|
||||||
|
![](/static/generated/bots/xkcd/assets/xkcd-specific-id.png)
|
||||||
|
If the ID requested doesn't exist, the bot will post a message that
|
||||||
|
the comic strip associated with that ID is not available, like so:
|
||||||
|
![](/static/generated/bots/xkcd/assets/xkcd-wrong-id.png)
|
||||||
|
|
||||||
|
5. If you type a command that isn't recognized by the bot, it will respond
|
||||||
|
the information printed by the `@xkcd help` command:
|
||||||
|
![](/static/generated/bots/xkcd/assets/xkcd-wrong-command.png)
|
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
|
@ -0,0 +1,68 @@
|
||||||
|
# Overview
|
||||||
|
|
||||||
|
This is the documentation for how to set up and run the yoda bot. (`yoda.py`)
|
||||||
|
|
||||||
|
This directory contains library code for running Zulip
|
||||||
|
bots that react to messages sent by users.
|
||||||
|
|
||||||
|
This bot will allow users to translate a sentence into 'Yoda speak'.
|
||||||
|
It looks for messages starting with at-mention of the botname. You will need to have a
|
||||||
|
Mashape API key. Please see instructions for getting one below.
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
Before running this bot, make sure to get a Mashape API key.
|
||||||
|
Go to this link:
|
||||||
|
<https://market.mashape.com/ismaelc/yoda-speak/overview>
|
||||||
|
This is the API that powers the `yoda`. You can read more about it
|
||||||
|
on this page.
|
||||||
|
|
||||||
|
![yoda api overview](assets/yoda-speak-api.png)
|
||||||
|
|
||||||
|
Click on the **Sign Up Free** button at the top and create
|
||||||
|
an account. Then click on the **Documentation** tab. Scroll down to the
|
||||||
|
bottom, and click on the **Test Endpoint** button.
|
||||||
|
This will add the Yoda Speak API to your default application. You can
|
||||||
|
also add it to a different application if you wish. Now click on the
|
||||||
|
**Applications** tab at the top. Select the application that you added
|
||||||
|
the Yoda Speak API to. Click on the blue **GET THE KEYS** button.
|
||||||
|
|
||||||
|
On the pop-up that comes up, click on the **COPY** button.
|
||||||
|
This is your Mashape API key. It is used
|
||||||
|
to authenticate. Store it in the `yoda.conf` file in the bot's
|
||||||
|
directory.
|
||||||
|
|
||||||
|
Example input:
|
||||||
|
|
||||||
|
@mention-bot You will learn how to speak like me someday.
|
||||||
|
|
||||||
|
If you need help while the bot is running just input `@mention-bot help`.
|
||||||
|
|
||||||
|
## Running the bot
|
||||||
|
|
||||||
|
Here is an example of running the "yoda" bot from
|
||||||
|
inside a Zulip repo:
|
||||||
|
|
||||||
|
cd ~/zulip/api
|
||||||
|
zulip-run-bot yoda --config-file ~/.zuliprc-prod
|
||||||
|
|
||||||
|
Once the bot code starts running, you will see a
|
||||||
|
message explaining how to use the bot, as well as
|
||||||
|
some log messages. You can use the `--quiet` option
|
||||||
|
to suppress some of the informational messages.
|
||||||
|
|
||||||
|
The bot code will run continuously until you kill them with
|
||||||
|
control-C (or otherwise).
|
||||||
|
|
||||||
|
### Configuration
|
||||||
|
|
||||||
|
For this document we assume you have some prior experience
|
||||||
|
with using the Zulip API, but here is a quick review of
|
||||||
|
what a `.zuliprc` files looks like. You can connect to the
|
||||||
|
API as your own human user, or you can go into the Zulip settings
|
||||||
|
page to create a user-owned bot.
|
||||||
|
|
||||||
|
[api]
|
||||||
|
email=someuser@example.com
|
||||||
|
key=<your api key>
|
||||||
|
site=https://zulip.somewhere.com
|
|
@ -0,0 +1,65 @@
|
||||||
|
# YouTube bot
|
||||||
|
|
||||||
|
The YouTube bot is a Zulip bot that can search for videos from [YouTube](https://www.youtube.com/).
|
||||||
|
|
||||||
|
To use the YouTube bot, you can simply call it with `@YouTube` followed
|
||||||
|
by a keyword(s), like so:
|
||||||
|
|
||||||
|
```
|
||||||
|
@YouTube funny cats
|
||||||
|
```
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
Before starting you will need a Developer's API key to run the bot.
|
||||||
|
To obtain a API key, follow the following steps :
|
||||||
|
|
||||||
|
1. Create a project in the [Google Developers Console](https://console.developers.google.com/)
|
||||||
|
|
||||||
|
2. Open the [API Library](https://console.developers.google.com/apis/library?project=_)
|
||||||
|
in the Google Developers Console. If prompted, select a project or create a new one.
|
||||||
|
In the list of APIs, select `Youtube Data API v3` and make sure it is enabled .
|
||||||
|
|
||||||
|
3. Open the [Credentials](https://console.developers.google.com/apis/credentials?project=_) page.
|
||||||
|
|
||||||
|
4. In the Credentials page , select *Create Credentials > API key*
|
||||||
|
|
||||||
|
5. Open `zulip_bots/bots/youtube/youtube.conf` in an editor and
|
||||||
|
and change the value of the `key` attribute to the API key
|
||||||
|
you generated above.
|
||||||
|
|
||||||
|
6. And that's it ! See Configuration section on configuring the bot.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
This section explains the usage of options `youtube.conf` file in configuring the bot.
|
||||||
|
- `key` - Used for setting the API key. See the above section on setting up the bot.
|
||||||
|
|
||||||
|
- `number_of_results` - The maximum number of videos to show when searching
|
||||||
|
for a list of videos with the `@YouTube list <keyword>` command.
|
||||||
|
|
||||||
|
- `video_region` - The location to be used for searching.
|
||||||
|
The bot shows only the videos that are available in the given `<video_region>`
|
||||||
|
|
||||||
|
Run this bot as described in [here](https://zulipchat.com/api/running-bots#running-a-bot).
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
1. `@YouTube <keyword>`
|
||||||
|
- This command search YouTube with the given keyword and gives the top result of the search.
|
||||||
|
This can also be done with the command `@YouTube top <keyword>`
|
||||||
|
- Example usage: `@YouTube funny cats` , `@YouTube top funny dogs`
|
||||||
|
![](/static/generated/bots/youtube/assets/youtube-search.png)
|
||||||
|
|
||||||
|
2. `@YouTube list <keyword>`
|
||||||
|
- This command search YouTube with the given keyword and gives a list of videos associated with the keyword.
|
||||||
|
- Example usage: `@YouTube list origami`
|
||||||
|
![](/static/generated/bots/youtube/assets/youtube-list.png)
|
||||||
|
|
||||||
|
2. If a video can't be found for a given keyword, the bot will
|
||||||
|
respond with an error message
|
||||||
|
![](/static/generated/bots/youtube/assets/youtube-not-found.png)
|
||||||
|
|
||||||
|
3. If there's a error while searching, the bot will respond with an
|
||||||
|
error message
|
||||||
|
![](/static/generated/bots/youtube/assets/youtube-error.png)
|
|
@ -573,6 +573,13 @@ BOT_INTEGRATIONS: List[BotIntegration] = [
|
||||||
BotIntegration(
|
BotIntegration(
|
||||||
"xkcd", ["bots", "misc"], display_name="xkcd", logo="images/integrations/logos/xkcd.png"
|
"xkcd", ["bots", "misc"], display_name="xkcd", logo="images/integrations/logos/xkcd.png"
|
||||||
),
|
),
|
||||||
|
BotIntegration(
|
||||||
|
"baremetrics",
|
||||||
|
["bots"],
|
||||||
|
display_name="Baremetrics",
|
||||||
|
logo="images/integrations/logos/baremetrics.png",
|
||||||
|
doc="../../tools/setup/static/generated/bots/baremetrics/doc.md",
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
HUBOT_INTEGRATIONS: List[HubotIntegration] = [
|
HUBOT_INTEGRATIONS: List[HubotIntegration] = [
|
||||||
|
|
Loading…
Reference in New Issue