Coder Social home page Coder Social logo

radio-t / rt-bot Goto Github PK

View Code? Open in Web Editor NEW
130.0 130.0 46.0 31.56 MB

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

Perl 3.19% C# 6.88% Go 10.98% Shell 0.28% Java 3.32% Clojure 2.29% Python 35.81% PHP 11.48% Makefile 0.07% JavaScript 16.24% TypeScript 2.36% Kotlin 5.61% Ruby 1.48%
bots podcast radio-t

rt-bot's People

Contributors

alehano avatar astoliarov avatar bessarabov avatar budnik avatar constructor-igor avatar exelban avatar gangstajs avatar hixon10 avatar khaale avatar mshemanskyi avatar mylog00 avatar popov1024 avatar pqr avatar progsly avatar rabinzon avatar roman-lugovkin avatar scorpil avatar selevit avatar simy4 avatar singleton11 avatar ssgreg avatar strayge avatar terbooter avatar timocov avatar umputun avatar usrenmae avatar vovanz avatar vparth avatar yatsenko avatar zin4uk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rt-bot's Issues

чиним кошмар у ужас /info

Вот вам правила для /info:

  1. не включать свой твитер - он раскрывается в гиттере
  2. не использовать болд и любое другое оформление нигде вообще в /info ответе.

Все остальное форматирование для вас будет сделано.

GET /info

UPD: После разговора с авторами решили добавить GET /info (200) с ответом {author: name, info: blah, commands: [xx, yyy]}

Но что делать ботам, которые реагируют не на команду, а на ключевое слово, или работают по какой-нибудь другой логике? Оставить commands пустым?

Тестовый сетап

Я подниму бота на gitter канале umputun/test чтоб все авторы могли поиграться и потестирвоать это хозяйство в реальной жизни

Grabpage-bot отвечает 502 Bad Gateway

Привет,

Grabpage-bot отвечает 502 на тестовый запрос

curl --request POST \ --url https://bot.radio-t.com/api/grabpage-bot/event \ --header 'content-type: application/json' \ --data '{ "text" : "Bla bla bla www.mail.ru" }'

bot-4-bots - таблицы не отображаются в ответе

Ответ бота не рендерится в таблицу, а отображается в исходном виде (хотя ссылки при этом форматируются нормально):

Bot Name | Created On ↓ | Created By | Last Changed On | Last Changed By
---------|-------------------|------------|-----------------|----------------
bot-4-bots|12/28/2016|khaale|01/06/2017|khaale|
docker-bot|12/26/2016|Vitaly Pryakhin|01/01/2017|Vitaly Pryakhin|
random-bot|12/24/2016|Rabinzon|12/29/2016|Rabinzon|
money_bot|12/09/2016|exelban|12/25/2016|exelban|

вместо

Bot Name Created On ↓ Created By Last Changed On Last Changed By
bot-4-bots 12/28/2016 khaale 01/06/2017 khaale
docker-bot 12/26/2016 Vitaly Pryakhin 01/01/2017 Vitaly Pryakhin
random-bot 12/24/2016 Rabinzon 12/29/2016 Rabinzon
money_bot 12/09/2016 exelban 12/25/2016 exelban

Можно ли посмотреть на дамп сообщения, которое radio-t бот постит в gitter от имени бота? Возможно, дело в каком-нибудь дополнительном форматировании.

Добавить в кармического бота возможность просмотра top-100 пользователей

Как вам идея запилить команду /karma-top [n], которая будет выводить список n пользователей с самой большой кармой (в порядке убывания).
Ограничить n каким-нибудь разумным значением. По умолчанию пусть будет 10.

Search bot сломался

Search bot ничего не находит.
Надо перезапустить. И как логи посмотреть что там за ошибка?

Memberries бот очень долго запускается

@popov1024, есть проблема в том, что бот memberries долго запускается (после запуска самого контейнера).
Как я понимаю, там происходит какая-то инициализация и бот ничего не отвечает по HTTP.
И в тестах происходит ошибка 502 Bad Gateway.
Это нужно починить.

Лучший вариант - перевести долгую часть инициализации в шаг сборки контейнера.

Как воспроизвести:

cd memberries
mv _bot_spec.yml bot_spec.yml

После этого закоммитить и сделать PR. Увидишь, что тест не проходит.
Я увеличивал параметр BOTS_WAIT_TIMEOUT до 60 секунд, но это не помогает.

Добавить конфиги к ботам

Для ботов поддерживаются конфиги, которые описывают базовую информацию о боте и его тесткейсы.
На основе этих конфигов происходит функциональное тестирование бота в travis.
В будущем, по нему же, возможно, будет происходить автоматическая регистрация бота.

Нужно запилить конфигурационные файлы для всех ботов.

Пример конфига для карма-бота:

bot_name: "karma-bot"

defaults:
  username: "test-user"
  display_name: "Test User"

ignored_commands:
  - "Ignored message 1"
  - "Ignored message 2"
  - "Ignored message 3"

test_cases:
  - command: "/karma selevit"
    result: "^Карма пользователя @selevit: \\d+.$"

  - command:
      username: "selevit"
      text: "selevit +1"
    result: "^Вы не можете изменять свою карму!$"

  - command: "selevit++"
    result: "^Карма пользователя @selevit увеличена \\(текущее значение: \\d+\\).$"

Автоматический push образов в docker hub

  1. При успешной сборке ботов в ветке мастер, все docker-образы должны отправляться в docker-hub.
  2. Имя пользователя в docker-hub и доступы для авторизации должны передаваться через переменные окружения. Секретные ключи, такие как пароли или API-токены не должны выводиться в лог при сборке в travis.
  3. Если репозитория в docker hub еще не существует, его нужно создать через API. Нужно сделать автоматически собираемый репозиторий со ссылкой на Dockerfile конкретного бота. Настроить автосборку только только на master-ветке.
  4. После успешной сборки и тестирования всех ботов в master, нужно в любом случае сделать push всех собранных контейнеров в docker hub. Либо дождаться успешной сборки со стороны docker-hub и после этого закончить выполнение билда.
  5. Для ускорения сборки ботов в travis, нужно сперва делать docker pull всех ботов из travis. Это позволит избежать тотального пересбора ботов на каждое изменение.
  6. В docker-compose для всех ботов вместе с ключом build нужно добавить еще ключ image, откуда будет пулиться и пушиться этот бот. Имя пользователя docker-hub (в docker-compose.yml) должно быть настраиваемым через переменную окружения. По умолчанию используется значение rt-bot.

Боты в действии

Как увидеть существующих ботов в действии?
Зашел в чятик https://chat.radio-t.com или https://gitter.im/radio-t/chat, написал /karma.
Карма бот должен на это что-то ответить? Ничего не происходит.
Или пишу Гвидо, гвидо-бот в ответ должен запостить картинку. Нифига не происходит.
Чего я не понимаю?

Автоматический деплоймент

  • Добавить на bot.radio-t.com API для этого дела - GET /deploy. С http auth.
  • Поменять загрузку всех внешнких ботов с одноразовой (во времq старта), на периодическую (дергать /list каждую минуту, и догружать/перегружать если появился/исчез бот)
  • Добавить вызов API для deplpy со стороны CI

API для использования микросервисов вне чата

Коллеги, приветствую.

Как вы считаете, не стоит ли ботам, помимо чата, иметь собственные API, используя которые они могли бы общаться между собой в обход чата?
Например, у нас уже есть несколько независимых реализаций функции, которая определяет номер текущего выпуска. Было бы здорово, если бы можно было просто обратиться к rtnumber-bot через API. В последствие можно было бы сделать микросервисы, которые сообщали бы и другую полезную информацию: кто из гостей и ведущих присутствует в эфире, какая тема обсуждается в данный момеyт и т.п.

money_bot

Есть еще идея добавить курсы валют. Например в чате можно будет вписать USD_EUR и получить курс долара к евро.
Есть ли смысл делать это?

run_local.sh - ssl сертификаты всегда создаются заново

В скрипте ./run_local.sh условие в if-е выглядит странно, оно проверяет либо отсутствие SSL_KEY файла, либо наличие SSL_CERT: if [ ! -f "$SSL_KEYS_DIR/$SSL_KEY" ] || [ -f "$SSL_KEYS_DIR/$SSL_CERT" ].
В результате сертификаты всегда пересоздаются.

Тут есть какие-то глубокие мотивы, или просто забыли ! во второй части условия?

grabpage-bot public api key

Как-то несекьюрно наружу API Key для сервиса pagelr.com выставлять, тем более что он платный.

Нет, эти сумашедшие гифки не наш путь

Я таки прибью бота который крутит эти дикие гифки и добавлю рекомендацию каких ботов лучше не делать. Если есть идеи по списку нежелательнх видов ботов, то оставляйте здесь, подумаем.

Добавить проверку наличия всех ботов в /list

В nginx.conf есть локация /list, которая возвращает список всех ботов.
Нужно проверить, что все боты в этой локации имеют bot-spec.yml.
И что все боты, у которых прописан конфиг, там зарегистрированы.
Сделать это нужно на этапе запуска функциональных тестов (ci/run_bot_tests.py).

Задача блокируется тикетом #126

Проект не поднимается локально

virtualbox с убунтой (Ubuntu 14.04.4 LTS) и докером (version 1.12.0) на win7
Делаю git clone ... & docker-compose up
При запуске контейнер nginx-bot ругается

nginx-bot         | start nginx
nginx-bot         | ssl_key=le-key.pem, ssl_cert=le-crt.pem
nginx-bot         | '/etc/nginx/conf.d' -> '/etc/nginx/conf.d.disabled'
nginx-bot         | start letsencrypt updater
nginx-bot         | trying to update letsencrypt ...
nginx-bot         | Failed authorization procedure. bot.radio-t.com (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://bot.radio-t.com/.well-known/acme-challenge/uo16YjdUUmXQ28_WVvN6HG9N9Tw-SfdaVBvPk3GPSSQ: "<html>
nginx-bot         | <head><title>404 Not Found</title></head>
nginx-bot         | <body bgcolor="white">
nginx-bot         | <center><h1>404 Not Found</h1></center>
nginx-bot         | <hr><center>"
nginx-bot         | IMPORTANT NOTES:
nginx-bot         |  - The following errors were reported by the server:
nginx-bot         | 
nginx-bot         |    Domain: bot.radio-t.com
nginx-bot         |    Type:   unauthorized
nginx-bot         |    Detail: Invalid response from
nginx-bot         |    http://bot.radio-t.com/.well-known/acme-challenge/uo16YjdUUmXQ28_WVvN6HG9N9Tw-SfdaVBvPk3GPSSQ:
nginx-bot         |    "<html>
nginx-bot         |    <head><title>404 Not Found</title></head>
nginx-bot         |    <body bgcolor="white">
nginx-bot         |    <center><h1>404 Not Found</h1></center>
nginx-bot         |    <hr><center>"
nginx-bot         | 
nginx-bot         |    To fix these errors, please make sure that your domain name was
nginx-bot         |    entered correctly and the DNS A record(s) for that domain
nginx-bot         |    contain(s) the right IP address.
nginx-bot         | cp: can't stat '/etc/letsencrypt/live/bot.radio-t.com/privkey.pem': No such file or directory
nginx-bot         | cp: can't stat '/etc/letsencrypt/live/bot.radio-t.com/fullchain.pem': No such file or directory
nginx-bot         | '/etc/nginx/conf.d.disabled' -> '/etc/nginx/conf.d'
nginx-bot         | reload nginx with ssl
nginx-bot         | 2016/11/14 08:21:51 [emerg] 26#26: BIO_new_file("/etc/nginx/ssl/le-crt.pem") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/nginx/ssl/le-crt.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)
nginx-bot         | nginx: [emerg] BIO_new_file("/etc/nginx/ssl/le-crt.pem") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/nginx/ssl/le-crt.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)

При попытке открыть URL по IP виртуалки
http://192.168.0.30/list
редиректит на
https://_/list

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.