Google Calendar в Telegram: мой опыт создания бота

Привет, друзья!
Сегодня хочу поделиться историей о том, как я пришёл к созданию своего бота для интеграции Google Calendar с Telegram. Это решение родилось из моей личной боли и желания сделать свою жизнь удобнее. Возможно, мой опыт будет полезен и вам.

Schedio бот, который напомнит о встрече в Telegram
Schedio бот, который напомнит о встрече в Telegram

Проблема, с которой всё началось

Я активно использую Google Calendar для планирования встреч, звонков и задач. Но есть одна проблема: я не всегда вовремя проверяю календарь. Telegram, напротив, — это приложение, которое у меня всегда под рукой. Я провожу в нём большую часть дня: общаюсь с коллегами, веду переписку в бесконечных чатиках. Из-за того, что Google Calendar прячется в одной из множества вкладок, иной раз пропускал начало встречи или тратил время на поиск ссылки на созвон в последний момент.

Почему существующие решения не подошли

Я начал искать готовые решения. Оказалось, что их не так много. Некоторые боты, которые раньше работали, уже давно заброшены. Другие предлагают только базовые уведомления за фиксированное время до начала события, но не дают возможности быстро посмотреть расписание на день или перейти на звонок в один клик. Например, если я стою в ожидании лифта на лестничной площадке и хочу быстро посмотреть, какие встречи у меня сегодня, мне приходится открывать приложение Google Calendar. Это неудобно, особенно когда ты занят или находишься в процессе переписки в Telegram.

Как я решил проблему

Решение пришло быстро, а решимости сделать самостоятельно пришлось настояться некоторое время. У этого была своя незамысловатая причина: у меня не было опыта программирования. Я никогда раньше не писал код и не работал с API. Однако я решил, что это не повод отказываться от идеи. Обложив себя GPT-моделями, я приступил к написанию кода.

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

Получился бот Schedio. Вот что он умеет:

  • Авторизация через Google OAuth для доступа к календарю;
  • Бот присылает напоминания о встречах прямо в Telegram;
  • Если во встрече есть онлайн-звонок (Zoom, Teams, Google Meet), бот добавляет кнопку для быстрого перехода;
  • Я могу одним сообщением посмотреть все события на сегодня или завтра. Это особенно удобно, когда нужно быстро уточнить расписание, не открывая приложение календаря, особенно если его нет;
  • Бот напоминает о следующей встрече за 10 минут (или 0, 5, 15) до начала;
  • Если мне надо быстро с кем-то созвониться, а ссылки под рукой нет, можно быстро через бота создать ссылку на Google Meet.

Какие выводы я сделал от работы с GPT-моделями

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

2. GPT-моделями нужно уметь пользоваться. Нельзя просто дать короткое описание и ждать идеального результата. GPT — это не человек с опытом и пониманием контекста. Скорее, это как малоопытный, но очень способный сотрудник.

Чтобы получить хороший результат, нужно:

  • Четко объяснить, на каком этапе задачи ты находишься.
  • Дать контекст и подробно описать, чего ты ожидаешь.

Только так можно получить что-то вменяемое.

3. GPT не идеален. Даже если всё расписано подробно, модель не всегда выдает ожидаемый результат. Ты можешь получить хороший результат, но не идеальный. Если ты не разбираешься в теме, как в моём случае, придётся действовать методом проб и ошибок: делать запрос, получать ответ, проверять его, логировать ошибки и повторять заново. GPT отлично справляется с объяснением, как что-то работает, но не всегда может сразу дать готовое решение. Это как знать, как устроен двигатель, и попробовать собрать его с первого раза — не всегда получится.

4. Когда GPT полезен?

- Когда ты точно знаешь, чего хочешь, и понимаешь, как этого достичь. В таком случае GPT экономит время. Это касается как написания вот такого кода для простых и понятных функций. То же могу сказать по своему опыту на основном месте работы (да-да, бота я писал для души), где получилось написать объемные бизнес-требования по алгоритмам за достаточно короткий срок. GPT дает рыбу, а дальше сам докидываешь мясо.

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

Когда GPT не подходит? Если ты не понимаешь, что именно нужно, и тебя не волнует качество результата. Ерунда на входе — ерунда на выходе.

5. GPT учит декомпозиции задач. Из-за ограничений на длину ответов GPT часто выдает сжатые ответы. Это заставляет тебя разбивать большие задачи на более мелкие и просить уточнить детали. Такой подход развивает полезный навык — умение декомпозировать задачи.

6. Результат зависит от модели. Я использовал бесплатные версии ChatGPT, DeepSeek и GigaChat.

  • ChatGPT и DeepSeek показывают схожее качество в написании кода, хотя их подходы немного различаются.
  • GigaChat пока отстает. Например, для SQL-запросов сложнее «SELECT *» ChatGPT справлялся лучше при одинаковом исходном запросе.
  • YandexGPT я не пробовал, так что о нем ничего сказать не могу.

Подытог

Самое главное - поставленная задача была реализована эффективно и за достаточно короткий срок. Результатом я доволен как со стороны технического решения, так и дизайна. GPT модели - прекрасные апгрейды для кожаного мешка, который их использует. Главное знать и понимать как с ними взаимодействовать.

Что дальше?

Мыслей и идей как развивать и какие функции добавить - море. Но развивать бота впустую, только для себя, — сомнительная идея. Мне важно, чтобы инструмент нашёл свою аудиторию и был полезен как можно большему количеству людей. Поэтому я решил поделиться им с вами.

Попробуйте сами

Если вы тоже хотите упростить свою жизнь и больше не пропускать встречи, попробуйте моего бота. Он уже доступен по ссылке ниже: Schedio_bot

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

P.S. Если у вас есть друзья или коллеги, которые активно используют Google Calendar и Telegram, расскажите им о боте. Думаю, им тоже будет полезно!