django-ru / help-bot

0 stars 0 forks source link

[proposal] Бот для чата #1

Open amureki opened 6 years ago

amureki commented 6 years ago

Рассматриваем идею для бота.

Предварительные команды

  1. /rules /faq - скидывает сообщение с правилами
  2. /tutorials /doc - кидает ссылки на туториалы, документацию
  3. /code, который чистит сообщение и напоминает о правилах (или копипастит сообщение на dpaste/gist)
  4. /python - ссылки на пайтон коммьюнити
  5. /newbie - ссылка на бегиннерсов

Предварительные фичи

  1. Трекинг популярных django-related пакетов с PyPI

Интерфейс/Конфигурация

Простые настройки, константы через переменные окружения. Вещи вроде ссылок или правил пока можно напрямую закидывать в sqlite-базу (потом подумаем над интерфейсом для админов - через чат или отдельную страничку).

Стек

Открытые вопросы

  1. Где будет хоститься (у меня есть небольшой постоянный сервер, где уже висит бот для django_jobs, могу предложить его)
hulygun commented 6 years ago

Ещё вопрос: Для бота нужен только интерфейс или вместе с сервером?

amureki commented 6 years ago

@hulygun не будем переусложнять, пока просто код с ботом, возможные настройки через переменные окружения или небольшую sqlite-базу. Как только будут комплексные фичи, подумаем над сервером. :)

lorddaedra commented 6 years ago

копипаста моих сообщений из чатика:

наверное, ботов нужно несколько (мелких, каждый решает свою задачу)

к примеру, было бы полезно, если бы бот мог трекать пакеты pip'а, не только с гитхаба по тегам (как сейчас)

в идеале, чтобы он ещё и changelog'и показывать конкретно для каждого пакета

это бы сэкономило время

то есть мб прямо ссылку на changelog или копипасту оттуда (именно про новую версию)

hulygun commented 6 years ago

@amureki То есть только интерфейс. Переменные окружения будут содержать, наверно, только токены доступа, админов бота и общие настройки. в sqlite, думаю, хорошо бы хранить список "популярных" пакетов. Возможен вариант редиса в качестве базы

hulygun commented 6 years ago

в идеале, чтобы он ещё и changelog'и показывать конкретно для каждого пакета

Интересно, ченжлог можно засунуть в Instant View?

hulygun commented 6 years ago

@amureki Поставь ишью на меня. Сегодня-завтра начну писать

lorddaedra commented 6 years ago

Ещё вопрос: Для бота нужен только интерфейс или вместе с сервером?

вообще, если бы там был PostgreSQL, допустим, то можно было бы каждому пользователя сделать и через PyCharm бы, например, открывали и делали нужные запросы туда)

lorddaedra commented 6 years ago

я вижу тут три проекта

/code, который чистит сообщение и напоминает о правилах (или копипастит сообщение на dpaste/gist)

это лучше как отдельный проект, то есть отдельный репозиторий, отдельный файл, например, код этого проекта может быть project-code

Трекинг популярных django-related пакетов с PyPI

это тоже лучше как отдельный проект, например, project-packages

всё остальное мелкое и может быть, например, в project-common или ещё как-то раздробить на более мелкие проекты

у проектов нет никаких пересечений друг с другом, их объединяет лишь то, что они используются в 1 чатике и их пишут примерно те же люди :-)

для всех трёх проектов я бы рекомендовал https://github.com/python-telegram-bot/python-telegram-bot потому что тут всё готово, только импортировать и погнали)

project-common выглядит как самый простой проект, project-code выглядит как простой, но могут быть сложности и улучшения (например, угадывание типа языка или замена dpaste.de на gist если dpaste.de не работает...) то есть тут начать можно с самого простого и потом постепенно улучшать, есть куда...

project-packages является довольно сложным при грамотной реализации и где много куда можно улучшать, ну, первый вариант, не обязательно делать сложным, но это прямо чуть ли не отдельный стартап) при желании он легко превращается если не в стартап, то в полноценный отдельный проект, данный проект требует наличие базы данных, в других случаях вполне можно было бы просто захардкодить в файлах что-то и менять через pull-request'ы (впрочем тут не настаиваю - как удобнее)

а вот что можно было бы скопипастить или расшарить между этими проектами - некий workflow для сборки/дестирования/деплоя, первая версия может быть какой угодно, но в будущем, конечно, было бы разумно сделать с тестами и прочим таким)

hulygun commented 6 years ago

вообще, если бы там был PostgreSQL, допустим, то можно было бы каждому пользователя сделать и через PyCharm бы, например, открывали и делали нужные запросы туда)

Очень плохо. Это либо давать модерам ssh на сервак или разворачивать постгрю жопой наружу. Безопаснее хранить в окружении айдишники админов и реализовать необходимые методы для бота

lorddaedra commented 6 years ago

Очень плохо. Это либо давать модерам ssh на сервак или разворачивать постгрю жопой наружу. Безопаснее хранить в окружении айдишники админов и реализовать необходимые методы для бота

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

hulygun commented 6 years ago

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

БД необязательна, а вот разграничение прав на выполнение тех или иных команд было бы кстати. Заложить ALC на начальном этапе необходимо

lorddaedra commented 6 years ago

БД необязательна, а вот разграничение прав на выполнение тех или иных команд было бы кстати. Заложить ALC на начальном этапе необходимо

если мы управляем ботами путём редактирования yaml'ов в репозитории проекта, то, наверное, все команды можно сделать доступными для всех) ну, по крайней мере, я не вижу вот прямо чего-то такого, что нельзя было бы дать обычному члену сообщества, не модератору... увидел, что сосед большой фрагмент кода написал в сообщениях - почему бы не дать ему возможность отправить этот код на dpaste.de вместо модератора? если будет злоупотреблять ботом - можно ведь просто в личку написать предупреждение или типа того, будет злоупотреблять - забаним)

hulygun commented 6 years ago

вот что нашёл https://github.com/yoeo/guesslang ну или по старинке заюзать пигментс

hulygun commented 6 years ago

Ладно, пора декомпозировать это всё... попробую разделить на подзадачи

lorddaedra commented 6 years ago

вот что нашёл

https://github.com/github/linguist это выглядит лучше, его использует Github

lorddaedra commented 6 years ago

в первой версии project-code лучше без этой фичи, просто лишь бы как на dpaste.de выкладывалось (например, всем указывать тип python)

а уже потом детектить, там или js или python или django templates будет в большинстве случаев

amureki commented 6 years ago

Давайте в первую очередь введем команду /code чтоб руками маркировать это. Это уже солидно поможет чату, а парсинг добавим после, ибо не тривиальная задачка, можно потонуть.

lorddaedra commented 6 years ago

Где будет хоститься (у меня есть небольшой постоянный сервер, где уже висит бот для django_jobs, могу предложить его)

мне без разницы, один из вариантов такой:

https://seminar.io/2018/09/03/building-serverless-telegram-bot/

если кто-то хочет поиграться с FaaS, сделайте так, там должно быть платно, но очень дёшево