Как присылать материалы
Что понимает телеграм-бот, как он делит присланное на заголовок и текст, чем отличаются четыре категории и что происходит с записью после кнопки «Опубликовать».
Весь контент SlopHub приходит через телеграм-бота. Пул-реквесты для этого не нужны — они и не сработают: записи живут в базе, а не в файлах репозитория. Статья о том, как этим пользоваться и чего от бота ждать.
Как попасть внутрь
Аккаунт заводится только по приглашению: одноразовая ссылка, которую выдаёт кто-то из своих. Регистрации нет и не будет — иначе первым делом придут не люди.
Паролей в системе тоже нет. Ссылка приводит в бота, бот заводит аккаунт, дальше всё узнаёт по телеграму. Вход на сайт устроен так же: страница показывает кнопку, бот подтверждает, что это вы, вкладка пускает внутрь.
Роль выдаётся вместе с приглашением и определяет одно: публикуется ваша запись
сразу или ждёт одобрения. Посмотреть свою — /me.
Самый короткий путь
Перешлите боту сообщение. Всё.
Дальше он покажет, что понял, и спросит, куда это положить:
Взял: 🔗 ссылка · ✍️ текст, 214 симв. · источник: Канал про ИИ
Куда это?
[📰 Новость] [🔗 Ссылка] [💡 Идея]
Выбрали категорию — увидели, как запись будет выглядеть, и подтвердили. Три нажатия от «увидел в канале» до «лежит на сайте».
Команда /add делает ровно то же самое — она для тех, кому привычнее начинать
с команды. Ничего, кроме просьбы прислать материал, за ней не стоит.
Почему сначала материал, а потом категория
Потому что в момент пересылки вы ещё не решили, новость это или мем. Бот, который сперва требует выбрать раздел, заставляет думать за него и делает лишний шаг: выбрал, потом прислал, потом выяснилось, что категория не та.
Здесь наоборот. Материал уже у бота, и категории он предлагает не все подряд, а те, которые к нему подходят: без ссылки нет «Ссылки», без файла нет «Мема», картинка без единого слова может быть только мемом — заголовок больше взять неоткуда. Первой стоит самая вероятная.
Промахнулись кнопкой — под превью есть «↩️ Категория»: вернёт к выбору, ничего не переприсылая.
Что бот разбирает сам
Заголовок и текст. Первая строка становится заголовком, остальное — телом. Если прислали сплошную простыню без переносов, заголовок получится усечением начала, а текст останется целым: терять первые слова записи неправильно.
Ссылки. Бот открывает страницу и забирает заголовок с описанием. Работает и с русскими сайтами в старых кодировках. Не открылась — не беда: останется ваш комментарий, а карточку потом поправят.
Первоисточник. У пересланного из канала запоминается название канала и, если он публичный, ссылка на конкретный пост. В карточке это строка «источник».
Хештеги. Хвост из одних хештегов превращается в теги и из текста исчезает — он там и не нужен. А хештег посреди фразы остаётся на месте: «сходил на #митап» читается как предложение, вырезать из него слово нельзя. В теги он всё равно попадёт.
Адрес записи. Собирается из заголовка транслитерацией: «Вышел новый агент»
станет vyshel-novyy-agent. Совпал с существующим — добавится номер.
Четыре категории
| Категория | Когда |
|---|---|
| 📰 Новость | что-то вышло, обновилось, сломалось — с комментарием, зачем это знать |
| 🔗 Ссылка | чужой материал, который стоит открыть |
| 🖼 Мем | без практической пользы |
| 💡 Идея | что стоило бы сделать с сайтом или вокруг него |
Лента изменений и статьи через бота не принимаются. Лента пишется от имени проекта, а статью вроде этой неудобно набирать в телеграме — для неё будет админка.
Идеи попадают в раздел со статусом «сырое». Статус потом меняют руками, когда идея берётся в работу или отваливается.
Картинки и видео
Прикладываются к любой записи, а не только к мему: скриншот интерфейса в новости, схема в идее, превью у ссылки. Раньше это приходилось пересказывать словами.
Принимаются картинки, видео, гифки и кружки. Видео проигрывается прямо в карточке — с заставкой и перемоткой, и грузится, только когда его включат. Картинку можно отправить и «файлом без сжатия», если жалко качество.
Ограничение одно: 20 мегабайт. Это потолок телеграма на скачивание файла ботом, обойти его нельзя — можно только пережать.
Подпись к картинке работает как обычный текст: первая строка — заголовок, остальное — описание. Без подписи мем получит имя вида «Видео от 4 августа», и это скучно — лучше подписать.
Что происходит после кнопки
Зависит от роли. У админа и редактора запись публикуется сразу, и бот в ответ присылает ссылку на неё — сайт обновляется мгновенно, ждать пересборки не надо.
У автора запись уходит в очередь. Модераторам прилетает уведомление с кнопками
«Опубликовать» и «Отклонить»; как решат — придёт ответ. Отклонённая запись не
пропадает: её видно в /mine вместе со всем, что вы присылали, и её статусом.
Двое модераторов, нажавших на одно уведомление, друг другу не помешают: второму бот скажет, что с записью уже разобрались.
Если что-то пошло не так
/cancel бросает начатое. Недописанный черновик и так протухнет за сутки, а
перезапуск сервера ему не страшен — состояние диалога живёт в базе, а не в
памяти процесса.
Опубликованную запись бот править не умеет: для этого будет админка. Пока — напишите тому, у кого есть доступ к базе.
Сырой HTML в тексте не отрисуется. Работает markdown: списки, ссылки, код,
жирный. Тексты приходят из телеграма, доверия к ним нет, поэтому разметка
пропускается выборочно.
Что дальше
Админка на admin.slophub.ru: длинные статьи, правка опубликованного, очередь
модерации в удобном виде, медиатека и управление приглашениями. Всё, что умеет
бот, можно будет сделать и руками через веб.
А ещё — сквозной поиск по сайту и вики. Он лежит в идеях, статус меняется по мере готовности.