К содержимому
slophub
← все статьи

Как присылать материалы

Что понимает телеграм-бот, как он делит присланное на заголовок и текст, чем отличаются четыре категории и что происходит с записью после кнопки «Опубликовать».

4 мин@akryll

Весь контент SlopHub приходит через телеграм-бота. Пул-реквесты для этого не нужны — они и не сработают: записи живут в базе, а не в файлах репозитория. Статья о том, как этим пользоваться и чего от бота ждать.

Как попасть внутрь

Аккаунт заводится только по приглашению: одноразовая ссылка, которую выдаёт кто-то из своих. Регистрации нет и не будет — иначе первым делом придут не люди.

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

Роль выдаётся вместе с приглашением и определяет одно: публикуется ваша запись сразу или ждёт одобрения. Посмотреть свою — /me.

Самый короткий путь

Перешлите боту сообщение. Всё.

Дальше он покажет, что понял, и спросит, куда это положить:

Взял: 🔗 ссылка · ✍️ текст, 214 симв. · источник: Канал про ИИ

Куда это?
[📰 Новость] [🔗 Ссылка] [💡 Идея]

Выбрали категорию — увидели, как запись будет выглядеть, и подтвердили. Три нажатия от «увидел в канале» до «лежит на сайте».

Команда /add делает ровно то же самое — она для тех, кому привычнее начинать с команды. Ничего, кроме просьбы прислать материал, за ней не стоит.

Почему сначала материал, а потом категория

Потому что в момент пересылки вы ещё не решили, новость это или мем. Бот, который сперва требует выбрать раздел, заставляет думать за него и делает лишний шаг: выбрал, потом прислал, потом выяснилось, что категория не та.

Здесь наоборот. Материал уже у бота, и категории он предлагает не все подряд, а те, которые к нему подходят: без ссылки нет «Ссылки», без файла нет «Мема», картинка без единого слова может быть только мемом — заголовок больше взять неоткуда. Первой стоит самая вероятная.

Промахнулись кнопкой — под превью есть «↩️ Категория»: вернёт к выбору, ничего не переприсылая.

Что бот разбирает сам

Заголовок и текст. Первая строка становится заголовком, остальное — телом. Если прислали сплошную простыню без переносов, заголовок получится усечением начала, а текст останется целым: терять первые слова записи неправильно.

Ссылки. Бот открывает страницу и забирает заголовок с описанием. Работает и с русскими сайтами в старых кодировках. Не открылась — не беда: останется ваш комментарий, а карточку потом поправят.

Первоисточник. У пересланного из канала запоминается название канала и, если он публичный, ссылка на конкретный пост. В карточке это строка «источник».

Хештеги. Хвост из одних хештегов превращается в теги и из текста исчезает — он там и не нужен. А хештег посреди фразы остаётся на месте: «сходил на #митап» читается как предложение, вырезать из него слово нельзя. В теги он всё равно попадёт.

Адрес записи. Собирается из заголовка транслитерацией: «Вышел новый агент» станет vyshel-novyy-agent. Совпал с существующим — добавится номер.

Четыре категории

Категория Когда
📰 Новость что-то вышло, обновилось, сломалось — с комментарием, зачем это знать
🔗 Ссылка чужой материал, который стоит открыть
🖼 Мем без практической пользы
💡 Идея что стоило бы сделать с сайтом или вокруг него

Лента изменений и статьи через бота не принимаются. Лента пишется от имени проекта, а статью вроде этой неудобно набирать в телеграме — для неё будет админка.

Идеи попадают в раздел со статусом «сырое». Статус потом меняют руками, когда идея берётся в работу или отваливается.

Картинки и видео

Прикладываются к любой записи, а не только к мему: скриншот интерфейса в новости, схема в идее, превью у ссылки. Раньше это приходилось пересказывать словами.

Принимаются картинки, видео, гифки и кружки. Видео проигрывается прямо в карточке — с заставкой и перемоткой, и грузится, только когда его включат. Картинку можно отправить и «файлом без сжатия», если жалко качество.

Ограничение одно: 20 мегабайт. Это потолок телеграма на скачивание файла ботом, обойти его нельзя — можно только пережать.

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

Что происходит после кнопки

Зависит от роли. У админа и редактора запись публикуется сразу, и бот в ответ присылает ссылку на неё — сайт обновляется мгновенно, ждать пересборки не надо.

У автора запись уходит в очередь. Модераторам прилетает уведомление с кнопками «Опубликовать» и «Отклонить»; как решат — придёт ответ. Отклонённая запись не пропадает: её видно в /mine вместе со всем, что вы присылали, и её статусом.

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

Если что-то пошло не так

/cancel бросает начатое. Недописанный черновик и так протухнет за сутки, а перезапуск сервера ему не страшен — состояние диалога живёт в базе, а не в памяти процесса.

Опубликованную запись бот править не умеет: для этого будет админка. Пока — напишите тому, у кого есть доступ к базе.

Сырой HTML в тексте не отрисуется. Работает markdown: списки, ссылки, код, жирный. Тексты приходят из телеграма, доверия к ним нет, поэтому разметка пропускается выборочно.

Что дальше

Админка на admin.slophub.ru: длинные статьи, правка опубликованного, очередь модерации в удобном виде, медиатека и управление приглашениями. Всё, что умеет бот, можно будет сделать и руками через веб.

А ещё — сквозной поиск по сайту и вики. Он лежит в идеях, статус меняется по мере готовности.

#бот#практика#сайт