Да, я таки реализовал управление через отправку сообщений RSS-транспорту. Отметил это версией 1.5. Слать сообщения можно любой ленте либо транспорту напрямую (если добавить его в ростер).
Поначалу сделал реакцию на команды только с админских JID’ов, раз уж они есть. Потом несколько команд вынес за пределы этой проверки – теперь владельцы лент могут редактировать описание, интервал обновления и теги. Итого на сейчас из команд:
- updateall – обновить все ленты
- update NAME – обновить ленту NAME
- purgelast NAME – удалить последнюю запись для ленты NAME. Иначе говоря, при следующем обновлении считать, что данная новость непрочитана (и она будет доставлена всем пользователям повторно)
- purgeall NAME – удалить все записи для ленты NAME.
- + NAME URL INTERVAL DESCRIPTION [SETTAGS: TAG1,TAG2,TAG3] – добавить в базу ленту NAME с адресом URL, периодом обновления INTERVAL и описанием DESCRIPTION. При необходимости можно указать теги, следующие за ключевым словом “SETTAGS:”.
- showall – вывести все зарегистрированные ленты (сообщение может быть большим, поэтому только для админа).
Эти команды доступны всем – но, само-собой, в привязке к JID’у. Т.е., нельзя, например, поменять теги на чужой ленте:
- settags NAME TAG1,TAG2,TAG3… – установить теги для ленты NAME
- setupd NAME 3600 – установить период обновления ленты NAME в 3600 секунд (нельзя поставить ниже 60 секунд)
- setdesc NAME Description for feed – установить описание ленты NAME
- showmyprivate – вывести свои приватные ленты
- showmyfeeds – вывести ленты, зарегистрированные мной
Для обоих вариантов есть встроенная справка по команде help. Вывод тех команды, которые выводят список лент, сделаны в том же стиле, что и занесение лент в базу – т.е., можно напрямую вставить строку, которой поделился кто-то, в интерфейс своего транспорта и обменяться таким образом лентами.
Для удобства кода оформил отправку сообщения через отдельную функцию: теперь как отдача контента лент, так и реакция ботов на сообщения идет через нее. Опции минимизированы под текущий вариант – т.е., если захочется вернуть формат headline или передавать subject/url – придется немного расширить ее функции.