system.develop

system.develop

Кодер
На Пикабу
Дата рождения: 22 мая
101 рейтинг 8 подписчиков 4 подписки 39 постов 0 в горячем

Напоминалки в TG Notion

Серия TG Notion

В TG Notion появились напоминалки для задач. Раньше бот умел только хранить задачи и показывать чекбоксы. Теперь можно поставить дату и время — и бот пришлёт уведомление в Telegram.

Но пока я это делал, собрал пару залуп. О них и расскажу.
Первая залупа — хранение времени. Сначала я хранил напоминание строкой вида «13.08.2026 15:00» и сравнивал с текущей минутой. Работало, пока бот не перезапустился. После рестарта напоминания, которые должны были прийти в этот момент, просто терялись.

Перевёл на timestamp в миллисекундах и выборку remind_at <= now. Теперь даже если бот проспал — при следующей проверке догонит.
Вторая залупа — миграция базы. Поле remind_at не добавлялось в существующую таблицу через CREATE TABLE IF NOT EXISTS. SQLite так не умеет — нужен ALTER TABLE. А он падает, если колонка уже есть. Пришлось оборачивать в try/catch и игнорировать ошибку. Мелочь, а потратил час.

Третья залупа — форма выбора времени. Сначала сделал кривой input, который не открывал календарь. Потом сделал кнопку с нативным пикером — вроде заработало. Но при повторном открытии формы вместо сохранённого времени показывался «Invalid date». Оставил как есть — косметика, потом поправлю.

Итог:

Напоминалки работают. Ставишь задаче дату и время, бот присылает уведомление.

Всё это — часть моего бота TG Notion. Там есть личные задачи, заметки, общие доски. Пользуйтесь.
Все обновления и внутренняя кухня - у меня на КАНАЛЕ!)

Показать полностью
3

Как я запилил общую доску в Телеграм, которая работает прямо из чате

Серия TG Notion

Привет, Пикабу. Я разработчик-одиночка, в свободное время пилю ботов для Телеграма. Недавно столкнулся с проблемой: мы с друзьями ведём несколько проектов, и идеи постоянно терялись в чатах. Гуглодоки, Notion — это всё неудобно, когда нужно быстро накидать мысль и чтобы все сразу увидели.

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

Что получилось

Создаёшь доску, нажимаешь «Поделиться», выбираешь чат — и в этот чат падает карточка с названием доски и тремя кнопками: «Добавить», «Открыть доску», «Обновить». Все участники чата видят эту карточку и могут добавлять заметки. Выглядит как встроенный виджет.

Как это работает технически: бот на Node.js, база SQLite, всё крутится на европейском сервере (чтобы РКН не мешал). Самое сложное было — заставить доску появляться в чате как инлайн-сообщение с кнопками. Телеграм штука капризная: вебхук отваливался с ошибкой 502, allowed_updates сбрасывались при каждом деплое, а кнопки внутри карточки отказывались работать. Две недели ебли с дебагом, но в итоге победил.

Как это работает для пользователя

  • Заходите в бота, создаёте доску.

  • Отправляете её в любой чат или канал.

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

  • Кнопка «Обновить» показывает актуальный список заметок.

  • Кнопка «Открыть доску» открывает полный интерфейс с редактированием и удалением.

Никаких ссылок на сторонние сервисы, всё внутри Телеграма.

Что дальше

Сейчас доска работает с заметками. В планах добавить:

  • Права на редактирование (только автор может менять свою заметку)

  • Задачи с чекбоксами (отдельным слоем)

  • Уведомления в чат при новых заметках

    Предложка
    У меня на канале уже есть такая доска, она создана для того чтобы пользователи могли предлать свои идеи по улучшению или добавлению новых фич.
    Переходите по ссылке, ваше мне очень важно для меня!
    Ссылка на бота: Telega_notion_bot

    Если есть вопросы — задавайте в комментариях. Если есть желание потестировать и поломать — велком.

Показать полностью

Допиливая TG Notion

Допиливая TG Notion

Доска день 2: удаление, шаринг и стартаппарат

Вчера доска заработала. Сегодня начал её допиливать до состояния, в котором ей можно пользоваться без мата. Список задач был простой:

  • Удаление заметок внутри доски.

  • Удаление самой доски.

  • Кнопка «Поделиться» прямо в доске (а не только при создании).

  • Ссылка, которая открывает доску сразу в Mini App, а не в браузере.

Сначала запилил API для удаления:

javascript

// DELETE /api/boards/:hash/notes/:id const boardNoteDeleteMatch = pathname.match(/^\/api\/boards\/([a-f0-9]+)\/notes\/(\d+)$/); if (boardNoteDeleteMatch && req.method === 'DELETE') { const ok = boardsApi.deleteNote(boardNoteDeleteMatch[1], parseInt(boardNoteDeleteMatch[2])); res.writeHead(ok ? 200 : 404, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ ok })); return; } // DELETE /api/boards/:hash const boardDeleteMatch = pathname.match(/^\/api\/boards\/([a-f0-9]+)$/); if (boardDeleteMatch && req.method === 'DELETE') { const hash = boardDeleteMatch[1]; const board = db.prepare('SELECT id FROM boards WHERE hash = ?').get(hash); if (board) { db.prepare('DELETE FROM board_notes WHERE board_id = ?').run(board.id); db.prepare('DELETE FROM boards WHERE id = ?').run(board.id); } res.writeHead(200, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ ok: true })); return; }

На фронте добавил контекстное меню (троеточие) для каждой заметки и для самой доски. Чтобы удалять можно было не через API-запросы вручную, а кнопкой.

Заодно прикрутил «Поделиться» прямо в открытой доске. Теперь ссылку можно кинуть в любой чат, не выходя из доски.

И тут начался пиздец.

Ссылка вида https://tgnotion.bothost.tech/boards/<hash> открывала доску в браузере, а не в Mini App. Надо было сделать так, чтобы она открывалась прямо в Telegram, без лишних переходов.

Сначала попробовал через https://t.me/Telega_notion_bot/boards/<hash> — бот ругался, что приложение не найдено.

Потом через ?startapp=boards_<hash> — бот открывался, но показывал мои личные заметки, а не нужную доску.

Потому что startapp передаёт параметр во фронт, но я его не читал.

Надо было добавить обработку в app2.js:

javascript

const startParam = tg.initDataUnsafe?.start_param || new URLSearchParams(location.search).get('tgWebAppStartParam'); if (startParam?.startsWith('boards_')) { viewBoard(startParam.slice('boards_'.length)); }

Теперь ссылка формата https://t.me/Telega_notion_bot?startapp=boards_%3Chash%3E сразу открывает нужную доску в Mini App. Без браузера, без лишних кликов.

А ещё мы почти сделали доску прямо в чате.

Идея: бот отправляет в чат сообщение с названием доски и списком заметок. Под сообщением кнопки: «Добавить заметку», «Удалить», «Обновить». При нажатии бот обновляет это же сообщение.

Это не Mini App, но доска висит в чате как живое сообщение. Прямо там можно работать. Технически это возможно через editMessageText и инлайн-клавиатуру.

Пока оставил на потом. Но идея крутая — сделаю как-нибудь на досуге.

Итог дня:

  • Удаление заметок и досок — есть.

  • Кнопка «Поделиться» внутри доски — есть.

  • Ссылка открывает доску сразу в Mini App — есть.

  • Доска в чате — в планах.

Особая благодарность @Vijay Taitoo ☭ за свежий взгляд и помощь.
Коллективный интеллект иногда решает быстрее, чем ИИ.

Тестируй:
https://t.me/Telega_notion_bot

Показать полностью 1
3

TG Notion продолжение...

Серия TG Notion
TG Notion продолжение...

Сегодня я зашел в TG Notion с одной целью — прикрутить общие доски. Чтобы любой человек мог кинуть ссылку в чат, и там сразу открывалась совместная заметка. Без регистраций, без логинов, без этого ебучего «дай доступ» в Notion.

План был простой:

  1. Сделать API для создания досок.

  2. Сделать API для работы с заметками внутри доски.

  3. Сделать фронт, который это все открывает.

Ага, план был простой.

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

Я чуть не разбил монитор.

Дальше — роутинг. Ты думаешь, что если написать /boards/:hash, то сервер отдаст страницу. А он отдает JSON. Потому что сверху сработал API-роут. Ты переписываешь — он отдает 404.

И тут начинается коллективный интеллект.

В чат залетает Vijay Taitoo ☭ (в миру — Никита). И он тупо видит то, что я сам не видел, потому что уже замылил глаз.

«Ты сначала стабилизируй базу, потом уже строй этажи.»
«Там проблема не в доске, а в том, что роут страницы и роут API дерутся между собой.»
«Если ссылка открывается в браузере — у тебя фронт ищет стили как /boards/style.css, а надо /style.css.»

Он не писал за меня код. Он просто смотрел со стороны. Это называется — КИ (Коллективный Интеллект). В отличие от ИИ, который выдает идеальный код, но молчит, когда ты загоняешь себя в тупик.

Потому что ИИ — это инструмент. А живой человек видит полотно целиком.

После двух часов плясок с req.url, pathname и fs.readFile, я переписал API и фронт так, чтобы доски открывались внутри Mini App, а ссылка выглядела как:

https://tgnotion.bothost.tech/boards/333a6575

И знаете что? Она заработала.

Когда я кинул ссылку в чат, Никита зашел, написал «Doors», сохранил — и заметка тут же появилась у меня. Это была не радость. Это было удовлетворение от того, что система не сломалась.

Сейчас доска умеет:

  • 📋 Создавать общую доску.

  • ✏️ Добавлять заметки (видит кто добавил).

  • 🔗 Делиться ссылкой (при создании).

  • 🎨 Работает внутри Telegram Mini App, а не как тупая страница.

Остались мелочи:

  • Кнопка удалить/редактировать.

  • Автообновление (чтобы видеть изменения в реальном времени).

  • Поиск по доске.

  • Предпросмотр ссылки (чтобы было видно название доски, а не хеш).

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

TG Notion — https://t.me/Telega_notion_bot
КАНАЛ

Показать полностью 1
4

Устал открывать Notion. Сделал всё в Telegram

Серия TG Notion

Привет Пикабу. Сижу в Telegram круглосуточно — работа, созвоны, проекты, всё там. И вечно надо что-то записать: идею, задачу, список покупок. А для этого раньше приходилось открывать Notion, искать блоки, разбираться в интерфейсе. Бесит.

Я подумал: а нахуя мне этот Notion, если я всё равно в Telegram? И просто сделал своего бота. Пока что он умеет только две вещи:
— записывать заметки;
— вести список задач.

Всё. Никаких тебе папок, тегов, иерархий, настроек. Написал — сохранил. Всё просто и быстро.

И знаете что? Я буквально вчера его задеплоил, а уже 70 человек сидят и тестируют. Ни копейки не потратил на рекламу — просто кинул пост на Хабре. Люди заходят, пробуют и пишут мне в личку: "Слушай, а добавь сюда общие доски, чтобы командой работать?" Или: "А можно будет делиться заметками с другом?".

И я реально прислушиваюсь. Потому что я не хочу делать продукт, который никому не нужен. У меня есть канал, где мы голосуем, что добавить следующим. И новые фичи я делаю только если людям это реально надо.

Дальше в планах:
— общие доски (тодолист для команды);
— шеринг заметок (делиться карточкой в чат);
— напоминалки (чтобы бот сам напоминал о дедлайнах);
— интеграция с Notion и Google Docs (чтобы можно было экспортировать);
— ну и английский язык, конечно.

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

Если тебе интересно — вот бот, попробуй:
https://t.me/Telega_notion_bot

А вот мой GitHub:
https://github.com/Elrick-from-Malnibone/tg-notion-node

Кто попробует — пиши в комменты, что добавить следующим. Я реально читаю.

Какую фичу запилить следующей?
Всего голосов:
Показать полностью 1

Взял легендарную Go-библиотеку urfave/cli и скормил её Голему Результат — на скрине

ля тех, кто не в контексте: urfave/cli — это штука, на которой написаны тысячи консольных утилит. 23 тысячи звёзд на GitHub, почти 58 тысяч проектов висят на ней как на зависимости. Короче, золотой стандарт. Казалось бы, всё должно быть идеально.

Голем так не считает 👇

Взял легендарную Go-библиотеку urfave/cli и скормил её Голему Результат — на скрине

Что нашёл по безопасности:

  • Запуск подпроцессов с подстановкой переменных — потенциальная дыра для инъекций

  • Переполнение uintptr на 32-битных системах

  • Файлы с правами 0644 вместо 0600

  • Необработанные ошибки в скриптах сборки

И пара косяков по стилю — разнобой в именах параметров и кривые комментарии.

Каждую проблему объяснил и показал как чинить.

Бот: @Golem666bot

Показать полностью 1

Прогнал репу с 29к звёзд через Bandit — нашёл 12 проблем безопасности

Прогнал репу с 29к звёзд через Bandit — нашёл 12 проблем безопасности

Request without timeout, хардкод паролей в тестах, проглатывание исключений. @Golem666bot объяснил каждую и показал как чинить.

Показать полностью 1

Bandit + Ruff + нейросеть в одном Telegram-боте: как я перестал тонуть в отчётах линтеров

Всем привет.

Пишу на Python несколько лет. Bandit ищет уязвимости в коде, Ruff орёт про стиль и баги, pip-audit проверяет зависимости на CVE. И каждый раз — портянка из десятков строк, в которой легко упустить важное.

Сделал Telegram-бота Голема. Он собирает всё в один читаемый отчёт и объясняет, что с этим делать.

Как работает:

  1. Кидаете ZIP с проектом или ссылку на GitHub

  2. Бот параллельно запускает три тулзы:

  • Bandit — безопасность кода

  • Ruff — стиль и баги

  • pip-audit — уязвимости в зависимостях

    3. Собирает все проблемные строки с контекстом

    4.Отправляет в LLM, которая формирует читаемый отчёт: где проблема, почему критично, как исправить

Что с этим делать дальше:

Жмёте /fix — Голем автоматически правит часть проблем (то, что умеет Ruff). Не всё, но работает.

Что ещё умеет:

  • Анализирует Go-проекты (gosec + staticcheck)

  • Просто общается на темы кода: спросите про asyncio, context, архитектуру — объяснит, покажет примеры

  • Пушить проекты в гитхаб, напишет ридми если надо

В планах:

  • Добавление новых языков (JavaScript/TypeScript, Rust)

  • Автодеплой проектов прямо из Telegram

  • Глубокая интеграция с GitHub (создание репозиториев, пулл-реквесты)

Бот: @Golem666bot

Кидайте свои Python-проекты Голему. Посмотрим, что он у вас найдёт. А если есть вопросы по коду — просто спросите.

Показать полностью 3
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества