Перейти до змісту

wiki-bot (проєкт)

Telegram-бот користувача (@Big_Wiki_Data_bot) для поповнення бази знань. Один файл bot.py (~230 рядків), Python 3.11, фреймворк aiogram v3, запуск через polling. Статус: розгорнуто 2026-07-09 у bot/ цієї бази (venv + run-bot.bat), сайт вікі — MkDocs Material поверх wiki/ (run-wiki.bat).

Приймає текст, файли (документи/фото/аудіо/відео/голосові) та посилання; пише markdown-сторінки в raw/inbox/ і файли в raw/files/ — черга для /ingest, реалізація патерну inbox-захоплення.

Ключові механізми: slugify() (kebab-case, кирилиця зберігається), unique_path() (без перезапису), fetch_title() (витяг <title> через httpx), is_allowed() (білий список Telegram ID з .env).

Відмінності від початкової версії із zip (raw/wiki-bot.zip):

  • Пише в raw/inbox|files бази знань, а не у власний docs/ (тека налаштовується через WIKI_DIR у .env).
  • fetch_title() читає максимум 64 КБ і лише HTML — велике відео/архів за посиланням більше не втягується в пам'ять.
  • Зберігаються всі URL з повідомлення (дедупліковані, зі своїми заголовками), а не лише перший.
  • Помилка завантаження файлу >20 МБ (ліміт Bot API) повідомляється користувачу, а не мовчазний збій.
  • Порожній BOT_TOKEN — чіткий вихід з підказкою; порожній ALLOWED_USER_IDS — попередження в лог.

Конфігурація: bot/.env (BOT_TOKEN, ALLOWED_USER_IDS, опційно WIKI_DIR); файл у .gitignore.

Повний розбір: підсумок джерела. Ширший контекст: Персональна вікі.