XMPP бот, рассылающий новостные RSS ленты, оформленные в BB коды.

Мною разработка бота прекращена.

Бот продолжает свою работу здесь: tester.qip.ru/rssbot Благодаря: Santiago26 и Commaster.

XMPP(jabber) бот, рассылающий новостные RSS ленты, оформленные в BB коды.

Язык программирования: JAVA
Среда разработки: Eclipse

Для хранения данных использовалась MySQL база данных:

CREATE TABLE IF NOT EXISTS `USERS` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `jabber` text NOT NULL,
  `id_rss` int(11) NOT NULL,
  `pause` int(11) NOT NULL DEFAULT '0',
  `bbcode` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `RSS_feeds` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `rss` text NOT NULL,
  `PublishedDate` text NOT NULL,
  PRIMARY KEY (`id`),
  KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;

Кэш записей хранился в автоматически создаваемых таблицах, где номер из имени таблицы соответствовал записи из таблицы RSS_feeds:

CREATE TABLE IF NOT EXISTS `RSS_1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` text NOT NULL,
  `PublishedDate` text NOT NULL,
  PRIMARY KEY (`id`),
  KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1;

Для работы с протоколом XMPP использовалась библиотека: SMACK
Для парсинга RSS лент использовалась библиотека: ROME
Для нормализации HTML кода использовалась библиотека: JSOUP
Для ведения логов работы программы использовалась библиотека: LOG4J
Для парсинга нормализированного HTML кода в BB код, использовались регулярные выражения.
Для работы с базой данных MySQL использовалась библиотека: JDBC

Исходный код бота

Команды для бота:
Подписка на ленту новостей:
s rss_url
где rss_url, URL адрес RSS ленты, на которую вы хотите подписаться.

Вывод списка лент, на которые вы подписаны и состояние паузы:
list

Удаление подписки на ленту новостей:
d 123
где 123, идентификатор вашей подписки, узнать который можно при помощи команды list.

Включение/Отключение паузы на определенную ленту:
p 123
где 123, идентификатор вашей подписки, узнать который можно при помощи команды list.

Включение общей паузы для всех подписок:
pause on
Отключение общей паузы для всех подписок:
pause off

Включение BB кодов в сообщениях:
bb on
Отключение BB кодов в сообщениях:
bb off

Проверка связи с ботом:
ping

Вывод справки:
help
.