diff --git a/one.feature b/one.feature new file mode 100644 index 0000000..fa254f8 --- /dev/null +++ b/one.feature @@ -0,0 +1,61 @@ +#language: ru + +# спецификация поведения телеграм бота, +# реализующего комментирование сообщний канала в группе с топиками. +# cc-by-sa 4.0 © зажигин богдан, 2023 + + + +Функция: комментирование сообщений канала в группе с топиками + +Предыстория: + Пусть дистрибьютер зарегистировал <бот>а через BotFather + И получил его <ключ> для Telegram Bot API (TBAPI) + И запустил <приложен>ие передав <ключ> + + Примеры: + | бот | ключ | приложен | + | @ditbot | 4839574812:AAFD39kkdpWt3ywyRZergyOLMaJhac60qc | github.com/zaboal/ditbot | + + +Правило: <бот> добавлен со всеми необходимыми правами в чат, и инициатор сценария — его админ + согласно типам TBAPI, канал и группа — чаты + + Структура сценария: добавление канала в вайтлист группы + Если админ напишет в группе «/<команд> <канал>» + Тогда <приложен>ие внесёт <канал> в вайтлист + + Примеры: + | команд | групп | канал | + | whitelist | @zbagab | @zbalog | + + + Структура сценария: активирование канала в топиках группы + Пусть <канал> есть в вайтлисте <групп>ы + Если админ <канал>а напишет боту «/<команд> <канал> <групп>» + Тогда <бот> создаст одноимённый с <канал>ом <топик> в <групп>е + И пометит в базе данных как обслуживаемый + + Примеры: + | команд | канал | групп | топик | + | activate | @zbalog | @zbagab | находки забоала | + + +Структура сценария: привязка постов к группе + Пусть <канал> помечен как обслуживаемый <групп>ой + Когда в <канал> отправляется сообщение + Тогда <бот> его копирует + И удаляет из канала + И прогнозирует <ссылк>у на репост в <групп>е + И добавляет кнопку с данной <ссылк>ой + И отправляет в <канал> и <топик> + + +Структура сценария: комментирование поста + Пусть <пост> привязан к группе + Когда <пользовател>ь нажимает на кнопку под ним + Тогда его перенаправляет к его <репост>у в <чат>е + + Примеры: + | пост | пользовател | репост | чат | + | zbalog/150 | zaboal | ditgab/13/29 | ditgab | diff --git a/one.schema.yaml b/one.schema.yaml new file mode 100644 index 0000000..8f01bef --- /dev/null +++ b/one.schema.yaml @@ -0,0 +1,48 @@ +# схема базы данных бота для telegram’а, +# реализующего комментирование сообщений канала в группе с топиками. +# cc-by-sa 4.0 © зажигин богдан, 2023 + + + +title: "Группы и их список обсулижваемых/необслуживаемых каналов" + +type: array +minItems: 1 +uniqueItems: true + +items: + title: "Каналы привязанные к группе с топиками" + type: object + required: + - group_id + - whitelist + properties: + group_id: + title: "Идентификатор группы" + description: "Согласно строке «id» из core.telegram.org/bots/api#chat." + type: integer + whitelist: + type: array + minItems: 1 + items: + type: object + required: + - channel_id + dependentRequired: + active: + - channel_id + properties: + channel_id: + title: "Идентификатор канала" + description: "Согласно строке «id» из core.telegram.org/bots/api#chat." + type: integer + examples: + - 1001973121320 + - 1001523889521 + active: + title: "Обслуживание" + description: "Каналы сначала добавляются к группе, как возможные для привязки к топику, и только потом могут быть активированы." + type: boolean + examples: + - true + - false diff --git a/readme.adoc b/readme.adoc new file mode 100644 index 0000000..f8e81df --- /dev/null +++ b/readme.adoc @@ -0,0 +1,5 @@ += Спецификация бота для Telegram’а, реализующего комментирование сообщений канала в группе с топиками + +Спецификация поведения описана в link:one.feature[`one.feature`] на Gherkin’е, а схемы базы данных в link:one.schema.yaml[`one.schema.yaml`] на JSON Schem’е в формате YAML. Перевести его в JSON формат можно на сайте https://www.json2yaml.com/convert-yaml-to-json[json2yaml.com]. + +Разработка программ согласно концепциям разрешено исключительно c указанием авторства «Зажигина Богдана Алексеевича» согласно тексту лицензции https://creativecommons.org/licenses/by/4.0/legalcode.ru[creativecommons.org/licenses/by/4.0/legalcode.ru], если не указано другое.