Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
amureki opened this issue Nov 14, 2018 · 18 comments
Open

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

amureki opened this issue Nov 14, 2018 · 18 comments
Assignees
Labels
enhancement New feature or request

Comments

@amureki
Copy link
Member

amureki commented Nov 14, 2018

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

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

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

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

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

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

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

Стек

  • Python 3.6+
  • БД (когда понадобится): sqlite, либо yml какой-нибудь. Не уверен насчет redis, все же это in-memory store, не persistent.

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

  1. Где будет хоститься (у меня есть небольшой постоянный сервер, где уже висит бот для django_jobs, могу предложить его)
@hulygun
Copy link
Collaborator

hulygun commented Nov 14, 2018

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

@amureki
Copy link
Member Author

amureki commented Nov 14, 2018

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

@lorddaedra
Copy link

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

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

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

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

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

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

@hulygun
Copy link
Collaborator

hulygun commented Nov 14, 2018

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

@hulygun
Copy link
Collaborator

hulygun commented Nov 14, 2018

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

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

@hulygun
Copy link
Collaborator

hulygun commented Nov 14, 2018

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

@amureki amureki transferred this issue from django-ru/faq Nov 14, 2018
@amureki amureki added the enhancement New feature or request label Nov 14, 2018
@lorddaedra
Copy link

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

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

@lorddaedra
Copy link

lorddaedra commented Nov 14, 2018

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

/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
Copy link
Collaborator

hulygun commented Nov 14, 2018

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

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

@lorddaedra
Copy link

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

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

@hulygun
Copy link
Collaborator

hulygun commented Nov 14, 2018

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

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

@lorddaedra
Copy link

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

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

@hulygun
Copy link
Collaborator

hulygun commented Nov 14, 2018

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

@hulygun
Copy link
Collaborator

hulygun commented Nov 14, 2018

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

@lorddaedra
Copy link

lorddaedra commented Nov 14, 2018

вот что нашёл

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

@lorddaedra
Copy link

lorddaedra commented Nov 14, 2018

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

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

@amureki
Copy link
Member Author

amureki commented Nov 14, 2018

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

@lorddaedra
Copy link

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

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

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants