Transmission Телеграм бот не работает на телефоне

Я уже писал ранее, что Notion выпустили свое API и я написал интеграцию с Telegram (подробнее тут) и я был несказанно рад этой новости! Писал я про это уже 4 месяца назад и я, сразу-же, сделал себе на коленке небольшого бота, который ставит мне задачи и через которого другие люди также могут ставить мне задачи.

Я очень люблю Notion — я пользуюсь им уже почти год и все больше и больше внедряю его в свои процессы. Вот уже несколько месяцев все свои личные задачи я веду через него. Я стараюсь прийти к тому, что в Notion лежали все задачи, которыми мне нужно заниматься.

Видео-версию можно увидеть на моем YouTube.

Но я для себя заметил, что добавление задач отнимает много времени — зайти в notion, открыть нужную доску, дождаться пока загрузится страница, добавить задачу. Разумеется, мой ленивый разум быстро нашел в этом причину чтобы не вести задачи. Но потом появилось API и я быстро накидал себе бота, который добавляет задачу на каждое сообщение в Telegram.

В рамках данного поста я поделился своим способом достижения этого результата на Typescript.

Почему чат-бот не отвечает. ТОП 10 советов

Первая версия бота

Первое, что я сделал с его появлением — простого Telegram бота, через которого мне можно ставить задачи. Работает он простым образом:

  1. Я пишу Telegram боту любой текст
  2. В notion, в моем списке задач, создается карточка, в названии которого лежит текст сообщения
  3. В ответ бот присылает мне оповещение о том, что задача создана и передает ссылку на карточку
  4. Также боту может написать человек, которому я дал право ставить мне задачи. Это тоже приводит к созданию карточки задачи с пометкой автора задачи.

Дальше этого бота расширять можно сколь угодно много. Но сегодня мы с вами сделаем простую базовую версию.

Подключение к Notion API

Для начала нужно получить token для работы. Сделать это можно по инструкции здесь. Также опишу этот процесс здесь:

  • notion.so/my-integrations переходим по этой ссылке
  • Нажимаем New Integration

  • Придумываем название интеграции

  • Попадаем на страницу с вашим токеном

Дальше этот токен можно скопировать кнопкой Copy и использовать его в своем приложении.

Создаем базу данных задач

Дальше нужно в любом удобном вам месте в Notion создать базу данных с Kan Ban представлением, добавить поля статуса и источника задачи. Или можете просто скопировать мой тестовый список задач и использовать его как шаблон.

Отлично! Теперь у нас есть база задач, которую вы можете наполнять руками через Notion! Но мы здесь с вами не для этого. Теперь нам необходимо настроить интеграцию между notion и telegram ботом.

Заготовка Telegram бота на typescript

Я подготовил проект, в котором реализовал базовую логику интеграции. Вы можете посмотреть его код на GitHub (версия 0.0.1). Внутри есть readme.md, в котором описано как запускать бота, а я пройдусь по основным моментам работы интеграции.

Базовая инициализация бота

const bot = new Telegraf(process.env!.TELEGRAM_BOT_TOKEN) const telegramownerid = Number(process.env!.TELEGRAM_OWNER_ID) const allowTelegramIds = process.env!.TELEGRAM_ALLOW_IDS.split(‘,’).map(e => Number(e)) console.log(< allowTelegramIds, telegramownerid >) bot.start((ctx) => ctx.reply(‘Welcome’)) bot.on(‘message’, async function (ctx: Context)

В рамках данной инициализации мы используем следующие переменные:

Обработка входящего сообщения

Сообщение, которое мы отправляем боту, приходит на наш сервер в виде объекта Context, у которого есть поле message с полями:

  • id сообщения
  • текст сообщения
  • информация об отправителе: имя, username и, самое главное, id
Еще по теме:  Как отключить геолокацию в Телеграмме на Айфоне

Разумеется есть много чего еще, но нам достаточно этого набора полей.

Подготовка объекта на отправку в notion

Для отправки задачи в Notion мы создаем объект

На 3 строчке есть переменная taskDb , туда нам необходимо разместить ID вашей базы данных. Получить её можно из ссылки. Где её взять можете увидеть из скрина ниже.

На 23 строчке в примере в переменную tgAuthor , в моем примере, подставляется username пользователя, чтобы потом можно было сообразить. Также можно увидеть другие поля в этом объекте:

  • Name — название задачи,
  • TGAuthor — автор задачи,
  • Status — статус, в который мы отправляем задачу. В нашем примере это Backlog,
  • Source — источник задачи. Проставляем Telegram.

После отправки запроса, в Notion, создается карточка задачи, с которой уже можно работать как вам угодно.

Обработка сообщений от других пользователей

В первой же версии я захотел сделать так, чтобы мне могли ставить задачи другие люди. Для решения этой задачи я добавил в env переменные значение TELEGRAM_ALLOW_IDS, где, через запятую, перечислил идентификаторы Telegram пользователей, которые могут ставить мне задачи.

Когда они ставят мне задачу бот также создает задачу в Notion и оповещает меня о том, что кто то осчастливил меня новой задачей.

Вместо заключения

Таким образом я получил себе верного помощника, который позволяет мне забывать меньше задач, а другим быть чуть более уверенным, что я не забуду про то, о чем меня попросили.

Бот активно дорабатывается и расширяется. Так что, в ближайшее время, будет еще контент про то, как можно автоматизировать свои рутинные действия.

Если вам интересны темы интеграции с Notion, то предлагаю прочитать пост про интеграцию Notion с Google Calendar

Источник: amorev.ru

H Бомбила бот для Telegram или как родился LibreTaxi в черновиках Recovery Mode

Я второй год жил в Сан-Франциско. Денег хватало ровно на то, чтобы оплатить квартиру, что-то поесть и доехать до работы. Все мои заявки на стартапы были отклонены в YCombinator и других стартап-инкубаторах. В ближайшее время мне не светила ни лучшая чем у меня есть работа, ни свой стартап. Мне позарез нужна была какая-то идея.

Ресурсов катастрофически не хватало. Не было денег, не было времени, не было друзей, которые были готовы прорубать себе путь к счастью в Силиконовой Долине в обмен на шанс. Казалось, всех всё устраивало — средненькая работка, средненькое жилье, жизнь середнячка. Я быстро пришел к выводу, что какой-либо серьезный стартап запилить не получится, нужно было какое-то решение.

И тут как гром в чистом небе появился он… Да, дорогие друзья, как вы, наверное догадались это был…

Паша Дуров с его конкурсом. Нет, я не встретился с ним лично, а всего лишь увидел о конкурсе для разработчиков Телеграм ботов. Это было в Апреле 2016 и по условиям надо было сделать своего бота до конца года. Предлагаемые деньги для Долины были не такими уж и большими, но тут совпало сразу несколько факторов.

Во-первых, я уже делал своего бота для Телеграма и мне понравилось. Он конвертировал валюты, используя API одной из бирж. Я делал его для себя и то, что получилось мне показалось это очень удобным.

Во-вторых, у меня было большое желание что-то, наконец, сделать. Я давно ничего не делал для себя и всего лишь работал на дядю составляя программы для ЭВМ на ЯВУ ruby и javascript.

В-третьих, конкурс. Шанс есть шанс, а вдруг получится? Однажды я уже использовал шанс — выиграл грин-карту в лотерею. Играл пять лет, но все-таки получилось. Может быть и в этот раз получится?

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

Еще по теме:  Не сохраняются темы в Телеграмме

Game changer

Да, Telegram стал game changer’ом. Посудите сами:

1. Пишешь 1 раз, работает сразу на всех устройствах. Это относится и к «сложной» функциональности: кнопки, меню, карты, картинки и т.д.

2. Встроенная система регистрации, если юзер обратился к боту, значит он уже зарегистрирован, его номер телефона подтвержден, анти-спам проверка пройдена

3. Готовый профиль: аватарки, возможность блокировки

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

Плюс кое-что еще. Другими словами, появился шанс без особых усилий и лишних трат и так скудных ресурсов создать MVP какого-либо продукта. Теперь нужна была идея!

На пути к MVP

Что же такого сделать? Где взять идею? Обстоятельства сложились сами, удача приплыла мне в руки и я за нее ухватился.

Дело в том, что мой друг в это время собеседовался в разные компании в Силиконовой Долине (уже работая тут). Мы постоянно делились задачами, решениями, алгоритмами, подходами и т.д. И вот в один из дней он сказал, что идет в компанию Убер (забегая вперед скажу, что он сейчас там работает). Разумеется не водителем, а программистом. В моей голове щелкнуло и мысль стала развиваться в этом направлении.

Кому нужен еще один Убер? Кому под силу конкурировать с 1000 программистами, которые сидят в одном здании на 555 Market street? Какие конкурентные преимущества должны быть у продукта, чтобы им пользовались люди? Откуда возьмутся деньги на маркетинг?

Я думал и размышлял, одновременно получая вести с Родины. А на Родине было все по-прежнему. Безработица увеличивалась, люди шли в такси. Один хороший друг, бывший трейдер, стал бомбилой в Питере, накопил за сезон немного денег и зимой уехал в Гоа. И у меня родилась идея и даже название для проекта!

Бомбила бот!

Почитывая новости в США про Убер я думал — регуляции, регуляции, опять эти регуляции. Там Убер запретили, тут хотят запретить, тут забастовки. А кто запретит бомбил? Никто, они как были, так и останутся всегда. Им нужно решение, недорого, без регистрации и смс.

Терни реализации

Телеграм, как платформа, дает многое. Но взамен многое забирает. Хорошо это или плохо? С одной стороны плохо. Ты не можешь сделать такой вещи как, например, постоянное отслеживание локации. С другой стороны, это стимулирует тебя не нагружать интерфейс, делать вещи проще.

Перед тем как начать программировать, надо было хотя бы определиться с примерным функционалом. К сожалению, сделать это оказалось достаточно сложно. В уравнении было довольно много неизвестных. Поэтому я остановился на основном:

* Бот должен быть мультиязычным. Я люблю русский язык, но я уже наполовину американец — через пару лет получу заветный паспорт. Мультиязычность для меня очень важна.

* Бот должен быть бесплатным. Я не могу конкурировать с Убером, т.к. моих ресурсов хватает только на поддержание собственного существования в пространстве и времени. Лишних денег нет, взять их негде, вера в инвесторов была подпорчена неудачным опытом в прошлом. Поэтому только бесплатно, заодно и меньше программировать.

* Бот должен быть с открытым исходным кодом. Денег на маркетинг нет, как конкурировать на рынке? Кому нужен еще один продукт, как конкурировать с теми 1000+ разработчиков, которые сидят на 555 Market street? Надежда на open source коммьюнити. Меня вдохновило видео от создателя Rocket Chat, который рассказывал о том, как JS и фреймворк Meteor помог привлечь серьезный интерес со стороны людей со всего мира к его проекту.

Еще по теме:  Как проверить Телеграмм аккаунт

* Бот должен быть на самом популярном языке — JavaScript, чтобы люди могли менять, исправлять, фиксить баги. Остановился на стандарте ES6, все равно по работе нужно его было более углубленно выучить.

* Бот должен быть с «нормальной» лицензией, которая позволяет делать все с исходным кодом. Остановился на MIT.

* Архитектура должна быть построена таким образом, чтобы при бане в Телеграме потребовались минимальные усилия для портирования его на другую платформу. Я, конечно, верю в Пашу Дурова и его принципы, надеюсь, что не придется портировать бота куда-либо еще. Но кто знает? Проекты покупаются, продаются, люди меняются. Если уж вкладывать усилия, то так, чтобы они не пропали потом. Поэтому начал разработку вообще для консоли. Первые 7 из 9 месяцев разработки Telegram API даже не трогал.

* Как еще я могу конкурировать с Убером, какие у меня сильные стороны? Мне надо двигаться быстро. Чтобы было меньше ошибок, нужны были хорошие тесты. Поэтому изначально стремился к максимальному покрытию. На практике оказалось, что инструменты для моего test runner’a (ava) все равно считают покрытие неправильно. Да и если покрытие 100%, то это лишь красивая циферка, которая на практике совсем не означает 100%. Поэтому измеритель отрубил, и стал просто покрывать тестами исходя из здравого смысла. К слову, получилось это неплохо. За все время разработки я ни разу не запускал отладчик, т.к. все равно ничего не ломалось.

Квантовый скачок времени

Апрель-декабрь. Время пролетело быстро. Были эмоции, переживания, страх того, что не получится. Были компромиссы, сложные задачи как с точки зрения UX, так и с технической. Были баги.

Типичный день выглядел так: подъем в 6:20, выход на работу в 7 утра. С 8 до 5 работа. В 6 вечера домой, с 6 до 9 или с 7 до 10 вечера — бот. На большее не хватало. Но иногда бывали праздники, выходные, на них я тоже программировал.

Было желание все бросить, особенно в самом начале, когда понимал СКОЛЬКО оставалось всего сделать. Но потом все-таки продолжал, разбивая задачу на мелкие подзадачи. Успокаивал себя тем, что если не успею до конца года, то не буду переживать. К слову, конкурс продлили до 2017. И я благодарен команде Телеграм за то, что они не объявили об этом в июне. Дедлайн работал на меня и подстегивал делать быстрее.

К слову, 29 декабря я засабмитил своего работающего бота на конкурс, получил своих первых 300 пользователей, протестировал в разных регионах мира, получил первый фидбек, хороший проект для добавления в свое резюме, значительную дозу эндорфина, и вообще у меня создалось ощущение, что 2016 прошел не зря.

Новое название — LibreTaxi

Я перепробовал много названий, обычно все домены были заняты. Но по аналогии с LibreOffice решил назвать его LibreTaxi — бесплатная альтернатива Уберу с исходным кодом, также как и LibreOffice был (и есть) бесплатной альтернативой Office с исходным кодом.

Что в итоге получилось

Получился телеграм-бот а-ля Uber/Яндекс.Такси, в котором:

* Бесплатная регистрация для всех водителей, сервис не берет денег в отличие от корпораций
* Можно торговаться и задавать цену
* Регистрация за 1 минуту без аппрува
* Водители могут задавать радиус для уведомления о заказах вокруг
* Люди могут создавать ботов для своих регионов на основе имеющегося исходного кода

Предлагаю вам посетить домашнюю страничку бота в Интернете, где вы сможете скопировать программу себе на НЖМД или дискету, ознакомиться с документацией и исходным кодом:

А можно добавить сразу в Телеграм: telegram.me/libretaxi_bot

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

Источник: sohabr.net

Рейтинг
( Пока оценок нет )
Загрузка ...