An open API service indexing awesome lists of open source software.

https://github.com/radio-t/rt-bot

Мета-репо для движения "создай своего бота"
https://github.com/radio-t/rt-bot

bots podcast radio-t

Last synced: 3 months ago
JSON representation

Мета-репо для движения "создай своего бота"

Awesome Lists containing this project

README

          

# Мета-репо для движения «создай своего бота»

[![Build Status](https://travis-ci.org/umputun/rt-bot.svg?branch=master)](https://travis-ci.org/umputun/rt-bot)

## Боты для чата подкаста Радио-Т

- Каждый бот представляет из себя полностью законченный микросервис с единой точкой входа `/event`
- `/event` вызывается для любого сообщения через `POST` с телом `{text: сообщение, username: id пользователя, display_name: имя пользователя}` (json)
- Бот может на это реагировать 2мя способами:
- вернуть 417 (Expectation Failed) если ему нечего сказать на сообщение
- вернуть 201 и body `{text: сообщение, bot: имя/id бота}` (json). Техт может быть markdown. EOL должны быть представлены как строки `\n` (в json должно быть `\\n`). Заголовок Content-Type в ответе должен быть `application/json`.
В чат текст сообщения вставляется инлайном после имени бота, поэтому если в сообщении есть сложная разметка (например таблицы), то стоит начать сообщение с `\n\n`
- Бот оформляется как контейнер с прилагаемым docker-compose.yml, для запуска которого должно хватить `git clone ... && docker-compose up -d`
- Бот (внутри контейнера) слушает на порту `8080`
- Бот может вызывать внешние сервисы, если есть такая необходимость.
- Нежелательно тянуть за собой внешние зависимости, типа баз данных, редисов и прочего.
- На запрос бот должен ответить за какое-то фиксированное время. Предлагаемый максимум 5 сек.
- Бот не получит след. сообщения пока не ответит на предыдущее.
- Бот можно писать на всем, чем хотите/умеете. Однако, результат должен быть разумен по размеру контейнера и используемым ресурсам.
- Бот должен быть **полностью собираемым вашим Dockerfile**. Не надо коммитить собранные бинарники и/или jar и прочее в этом роде.
- UPD: После разговора с авторами решили добавить `GET /info` (200) с ответом `{author: name, info: blah, commands: [xx, yyy]}`
- UPD: Бот **не будет** получать свои собственные сообщения
- UPD: Для бота должен быть определен конфиг в файле [`bot-spec.yml`](ci/README.md). Он используется для автоматического тестирования бота.

### Идеи для полезных и забавных ботов
- ведение псевдо-разумной дискуссии по варианту сири/алексы/гугла
- ответы на узкие вопросы, типа "какая погода в Москве сегодня"
- функции поиска по подкасту (шоунотам и логам)
- все остальное, что можете придумать

### Идеи для вредных ботов, которые не будут приняты
- разные бессмысленные гифки, особенно "анимационные"
- болтливые боты, которые реагируют на все, или слишком многое
- те, которые падают на ошибки и вместо того, что задумал автор, показывают эти ошибки в чат.
- разговаривающие матом или другим "крутым" слэнгом
- которые делают тоже самое, что и другие, уже реализованные боты

### Зачем вам это надо?
- для развлечения
- для добавления в чат чего-то полезного
- для славы и почета :) Мы расскажем о каждом вашем боте который будет принят и поощрим авторов, как минимум добрым словом.

### Как в этом поучаствовать?
- посмотреть на то, что сделали другие
- почитать [что пишут](https://radio-t.com/p/2016/11/06/bot/)
- сделать PR со своим ботом в отдельном каталоге. Это хозяйство должно собираться и подниматься локально, через compose build + up
- в этом PR не забыть изменить `etc/nginx.conf` и `docker-compose.yml` для вашего бота
- Приложить README.md для своего бота
- Не забыть определить конфиг [`bot-spec.yml`](ci/README.md).

### Как проверить бот в реальной жизни?
- Ваш бот будет установлен на https://bot.radio-t.com
- Можно убедиться, что он зарегистрирован сделав `GET` на https://bot.radio-t.com/list
- Можно к нему обратиться, послав `POST` на https://bot.radio-t.com/api/:botname/event и это прийдет в ваш /event
- Или послать `GET` на https://bot.radio-t.com/api/:botname/info и это прийдет в ваш /info
```
> http POST https://bot.radio-t.com/api/hello/event text=Привет username=user123 display_name=Вася
HTTP/1.1 201 Created
Connection: keep-alive
Content-Length: 31
Content-Type: application/json;charset=UTF-8
Date: Thu, 10 Nov 2016 19:46:38 GMT
Server: nginx
Strict-Transport-Security: max-age=63072000; includeSubdomains; preload

{
"bot": "hello",
"text": "Hello!"
}
```
- Проверить как это работает end-to-end можно и **нужно** [в тестовом чатике](https://gitter.im/umputun/test)
- UPD: запустить весь проект можно локально через `run_local.sh` в корне проекта. Доступен он будет на [https://localhost](https://localhost).