Обновление Альфреда

29 January 2017

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

Сегодня я добавил поддержку кастомной клавиатуры и инлайновых кнопок. После выбора кнопки "Показать случайную статью", Альфред отправляет сообщение со случайной статьей, а под сообщением создает две кнопки: "В архив" и "Удалить". После прочтения статьи её можно удобно переместить либо в архив, либо в корзину. После нажатия на любую из этих кнопок, Альфред показывает оповещение с выполненным действием, отключает предпоказ ссылки, добавляет в начале сообщения "Статья в архиве" или "Статья удалена", а также убирает старые кнопки, а вместо них создает кнопку "Еще одну". После нажатия на эту кнопку, она исчезает и Альфред отправляет новое сообщение с новыми кнопками "В архив" и "Удалить". Это позволяет не отвлекаться на интерфейс и быстрее разбирать свои статьи.

А теперь про боль. Я очень много времени потратил на отладку. У телеграма очень скупое описание АПИ, совсем без примеров. В дополнение к этому, пришлось обновить версию Ноды, чтобы новая версия обертки над АПИ телеграма заработала, а в 6 версии Ноды перестало работать .hasOwnProperty, которое используется в зависимой библиотеке для этой обертки. Но у нас же опенспорс, скажете вы. Я нашел пулл реквест от 26 октября, который исправляет эту ошибку. Но библиотеку видимо забросили и никто этот пулл реквест не принимает. В итоге мне пришлось сделать форк обертки над АПИ, чтобы заменить адрес зависимой библиотеки, форком, который решает проблему, и все заработало! Хэштег джаваскрипт, хэштег опенсорс, хэштег джуниорфорлайф.

UPD: Через месяц после моего комментария пулл реквест приняли. Хвала опенсорсу!