wiki-bot — Telegram-бот для поповнення MkDocs-вікі¶
Джерело: raw/wiki-bot.zip — невеликий Python-проєкт, який користувач доопрацьовує. Особиста вікі на MkDocs Material, що поповнюється через Telegram-бота. Проєкт натхненний патерном llm-wiki (гіст Карпаті) — див. Персональна вікі.
Що всередині¶
bot.py(~200 рядків) — сам бот, див. wiki-bot.mkdocs.yml— сайт «Моя Вікі», тема MkDocs Material, моваuk, світла/темна палітри indigo, пошук зlang: uk, навігація генерується автоматично з файлів уdocs/.docs/index.md— головна сторінка з інструкцією користування.docs/inbox/,docs/files/— порожні теки, куди бот пише записи та файли.requirements.txt— mkdocs≥1.6, mkdocs-material≥9.5, aiogram≥3.13, httpx≥0.27, python-dotenv≥1.0..env.example—BOT_TOKENвід @BotFather таALLOWED_USER_IDS(порожній список = доступ усім; README не рекомендує).
Поведінка бота¶
Побудований на aiogram v3 (async, polling). Реалізує патерн швидкого захоплення в inbox:
| Вхід | Результат |
|---|---|
| Текст | Сторінка в docs/inbox/ (перший рядок → заголовок, обрізаний до 80 символів) |
| Файл / фото / аудіо / відео / голос | Файл у docs/files/ + сторінка-картка (зображення вбудовується, решта — посилання на завантаження) |
| Посилання (+ нотатка) | Закладка: бот тягне <title> сторінки через httpx, зберігає URL і нотатку |
Деталі реалізації:
slugify()робить безпечні kebab-case імена файлів, кирилиця зберігається.unique_path()уникає перезапису: додає суфікс-2,-3, …- Кожна сторінка отримує шапку
*Додано через Telegram · дата час*. - Авторизація:
is_allowed()перевіряє Telegram ID протиALLOWED_USER_IDS;/startпоказує користувачу його ID. - Заголовок закладки:
<title>сторінки → нотатка → сам URL (fallback-ланцюжок).
Запуск¶
Два процеси паралельно: mkdocs serve (сайт на 127.0.0.1:8000, автоперезбирання)
та python bot.py. README радить: git для бекапу, systemd/Планувальник завдань
для автозапуску, mkdocs serve -a 0.0.0.0:8000 для доступу з телефона в
локальній мережі.
Відкриті питання¶
Усі три питання нижче закриті 2026-07-09 доопрацьованою версією бота
в bot/bot.py — див. wiki-bot, розділ
«Відмінності від початкової версії». Тут збережено як опис стану джерела
(zip лишається незмінним у raw/).
- ~~Вікі бота і ця база знань — дві різні вікі~~ → потоки з'єднано: бот
пише в
raw/inbox/таraw/files/цієї бази. - ~~
fetch_title()без обмеження розміру відповіді~~ → ліміт 64 КБ, лише HTML. - ~~Обробляється лише перший URL з повідомлення~~ → зберігаються всі URL.