Доработать Go библиотеку для Telegram Bot API

Цена договорная • безналичный расчёт, электронные деньги
20 января 2018, 00:19 • 0 откликов • 43 просмотра
Нужна помощь в завершении open source Go библиотеки для Telegram Bot API.


https://github.com/rogozhka/tgwrap/

Документация Telegram Bot API: https://core.telegram.org/bots/api




Зачем еще одна библиотека, если несложным запросом находится некоторое количество проектов, которые позволяют использовать Telegram Bot API? Да еще с десятками контрибуторов. А у тебя вообще ни одной звезды и тишина в Issues (я парочку создал, но все равно тишина ;).




— обоснование проекта —


Кроме основной работы увлекаюсь написанием чат-ботов персональных помощников. Настало время подключаться к Телеграму и выходить из тестовых окон на вебсокетах. И вот тут открылся ахтунг.


Сел и внимательно прочитал спецификацию API от корки до корки, потом некоторые места еще раз. При внимательном рассмотрении оказывается, что проектов биндингов API много, но написаны без внимания к деталям и местами без понимания как работает язык. Возникли неудобные вопросы.


Функция Unmarshal очень умная и достаточно хорошо отлажена. Не надо городить свою распаковку джейсона и проверять на типы передаваемые параметры. Я задолбался вылавливать странные баги в колхозных обертках (извините, если интонация наезда, люди работают и спасибо на самом деле что есть хотя бы то, что есть).


Если в API параметр отмечен Optional, то какого извините вкорячивают его намертво в список аргументов? Есть одно исключение, когда опциональный параметр один(1шт) и можно оставить как есть, но в основной массе методов, идут целые простыни необязательных параметров. Не хочется думать что там поставить nil, 0 или «». Одного этого момента достаточно, чтобы сделать более другую реализацию.


— конец обоснования проекта —




Психанул и написал несколько методов так, как считаю правильным, потом начал описывать все объекты, потом добавил еще и получилось вполне аккуратно и расширяемо. Уходят нормально описанные объекты, приходят и возвращаются также объекты с полным соответствием API. Сейчас можно за 15 минут накидать бота, который шлет картинки с вебкамеры из локальных файлов. Документировано вообще все. Почему бы не поделиться кодом и не продолжить это серьезно?


Более того, если скрупулезно следовать заложенным принципам, все работает даже без тестов с первого раза. Мне пока полное покрытие не нужно, но почему бы не сделать хорошую надежную библиотеку с охватом всего API. В определенный день хочется принять первый платеж через бота. ;)


Можно ждать годами пулреквестов и ничего не дождаться. Вместо рекламы проекта я готов заплатить некие символические деньги за участие в написании методов.


Если вы пишете на Go и не находили причин/повода поиграть в гитхаб - вот он есть. Если вы шарите в Go на уровне эксперта - буду рад обоснованной критике и тоже можете поиграть со мной в гитхаб ;)




Что требуется сейчас:



  1. добавить недостающие объекты;

  2. добавить недостающие методы по шаблону существующих(не все методы одинаковы, не все может получиться, но хотя бы заготовки можно сделать);

  3. добавить тесты.


Каждый пункт имеет смысл при наличии предыдущего по каждому отдельному методу или все вместе в рамках метода.




Сколько денег:


50 рублей за скелет метода;


50 руб за реализацию метода на основе существующего скелета;


50 рублей за тест в отдельном файле;


или 150 за все вместе с нуля. Плачу, если будет сделано также как в образце или указываю обоснованные возражения.




Способ оплаты: через Яндекс или переводом на карту.




Проект под лицензией MIT, все участники будут упомянуты.






Пример реализованного метода (см. стиль коментов, что написано и как):
https://github.com/rogozhka/tgwrap/blob/master/wrap-send-message.go






Пример скелета (документировано все, недостает реализации):
https://github.com/rogozhka/tgwrap/blob/master/wrap-set-webhook.go



Пример теста (здесь без фанатизма, если Телеграм в ответ говорит ОК, то сойдет):
https://github.com/rogozhka/tgwrap/blob/master/wrap-send-message_test.go


Вполне допустим сценарий, если человек посидит пару вечеров и скрупулезно создаст заготовки для всех недостающих методов c подходящей документацией, правильными комментариями и т.д. (их около 60), а реализацию делать не захочет. Я все посмотрю внимательно и переведу 60*50. Это тоже хороший вклад. Или разным людям столько, сколько сделают. Будут люди писать тесты и реализации - хорошо. Если нет, будем искать варианты.



Порядок работы:



  • у вас есть аккаунт на гитхабе;

  • делаете форк себе, смотрите чего недостает;

  • делаете отдельные подписанные коммиты на каждый скелет метода и(или) реализацию и(или) тест или все вместе по одному методу;

  • go fmt -s ;

  • проверяете на https://goreportcard.com исправляете ошибки в комментариях если есть;

  • создаете pull request, чтобы в нем был законченный участок работы (один или несколько методов - лучше всего делать feature branch на каждый метод и отдельный pr), в заголовке кроме названия метода добавляете буквы FLSM, чтобы быстро было видно платный вклад;

  • в коде все комменты только по-английски (в документации телеграма все есть, придумывать не надо); в пул-реквестах в идеале по-английски, в крайнем случае по-русски;

  • проверяю в течение 1-2 дней, если есть замечания, замечаю;

  • уточняем реквизиты, делаю перевод, хоть за один метод;

  • по желанию повторить.






Приоритеты:
Добить основную секцию методов
Stickers
InlineMode
Games
Payments


Если в профиле гитхаба есть почта - я туда напишу после принятия ПР для согласования как платить. Вы можете в отклике написать свой аккаунт на гитхабе и контактный адрес, даже если ничего пока не сделали, но раздумываете, изучаете, возможно собираетесь поучаствовать. Чтобы была возможность оперативно уточнить детали.

Хорошего кодинга!