Giter Club home page Giter Club logo

unilecsbot's Introduction

UniLecs

UniLecs - 🤘🏻Задачи, головоломки, книги и другие радости программиста.

Главные площадки нашего сообщества находятся в телеграме и в ВК.

📫 Есть идеи и предложения, пишите @amdavletov

unilecsbot's People

Contributors

albertdavletov avatar davletov avatar lostinkadath avatar unilecs avatar xmichael446 avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar

unilecsbot's Issues

Solutions receiving

А как у нас реализована сейчас фича получения задач от пользователя?

Насколько я понял, идет пересылка ссылки на гист еще одному боту:

    time_at_now = time.strftime("%H:%M:%S %Y.%m.%d", time.localtime())
    form = '''Feedback from {0} - @{1} ({2});\nDate: {3};\nText: {4}'''.format(message.from_user.first_name,
                                                                               message.from_user.username,
                                                                               message.from_user.id,
                                                                               time_at_now,
                                                                               message.text)
    bot.send_message('@unilecs_test', form)

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

У кого какие мысли?

Database integration

Разработать базу данных задач.
Проработать интерфейс общения бота с БД:

  • добавление задачи в базу;
  • изменение параметров уже существующих задач;
  • поиск заданий:
    • по названию,
    • по номеру,
    • по сложности,
    • по тегам.

Внедрение сущности Task

Проработать создание и дальнейшую работу бота с классом Task.
Предлагается следующее содержание класса Task:

  • название задачи,
  • ссылка на задачу,
  • ссылка на решение,
  • категория сложности,
  • список тегов...

Создать словарь <номер_задачи : объект Task>, настроить работу бота через него.
Проработать возможность обновления и кеширования такого словаря (чтобы каждый раз не подсасывать списки из внешних источников).

Autodeploy merged/pushed code in to specified branches on server

Привет
Можно настроить автодеплой кода на сервере при push/merge (хотя это одно и тоже для Github Actions) c помощью Github Actions. Если вам нравится такая идея, я мог бы заняться ею.
Для этого мне понадобится некоторое участие repo owner, в зависимости от типа сервера (Хероку, VPS), настройка ssh ключей и прочего (нужно будет просто в секретные ключи репозитория все записать, данные я не буду видеть, но буду знать что они там)

Integrate TasksDatabase to bot

Связан с #7, #9.

Надо научить бота пользоваться всеми возможностями разработанного класса TasksDatabase:

  • искать задачу по номеру;
  • искать задачу по названию;
  • искать задачу по тегам;
  • искать задачу по уровню сложности;
  • (private) добавлять новые задачи;
  • (private) редактировать старые задачи.

Case independent search by task name

Связан с #7.

На данный момент поиск задач по имени реализован на основе запроса LIKE, который не поддерживает регистронезависимое сравнение для кириллических символов. А хотелось бы сделать поиск задач по имени полностью регистронезависимым. Для поиска по имени "Сумма" должны выдаваться как результаты:

  • 118: Сумма на дереве;
    так и результаты:
  • 29: Найти все пары чисел в массиве, сумма которых равна,
  • 106: Частичная сумма,
  • 127: Интервальная сумма.

На данный момент есть несколько вариантов решения этой задачи:

  1. Хранить в базе поле с названием задачи для отображения и дополнительное поле с названием задачи в нижнем регистре. по которому проводить поиск;
  2. Формировать запрос, закладываясь на то, что первый символ может быть заглавной буквой. Например, если пользователь ищет "сумма", то в запрос включать как "сумма", так и "Сумма";
  3. Пошерстить сеть на предмет готовых решений в виде библиотек;
  4. Озаботиться созданием хранимой процедуры типа такой.

Быстрый старт в ЯП

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

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.