]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - data/rbot/plugins/rss.rb
rss plugin: all watchers are now informed of feed updates when anybody asks for the...
[user/henk/code/ruby/rbot.git] / data / rbot / plugins / rss.rb
index 483355c748fe107980f7b329daeec3907ce1868e..094b4571bf6b5ca56e28bae4e6cddf653d8807b5 100644 (file)
@@ -414,7 +414,25 @@ class RSSFeedsPlugin < Plugin
 \r
     m.reply "lemme fetch it..."\r
     title = items = nil\r
-    fetched = fetchRss(feed, m, false)\r
+    we_were_watching = false\r
+\r
+    if @watch.key?(feed.handle)\r
+      # If a feed is being watched, we run the watcher thread\r
+      # so that all watchers can be informed of changes to\r
+      # the feed. Before we do that, though, we remove the\r
+      # show requester from the watchlist, if present, lest\r
+      # he gets the update twice.\r
+      if feed.watched_by?(m.replyto)\r
+        we_were_watching = true\r
+        feed.rm_watch(m.replyto)\r
+      end\r
+      @bot.timer.reschedule(@watch[feed.handle], 0)\r
+      if we_were_watching\r
+        feed.add_watch(m.replyto)\r
+      end\r
+    else\r
+      fetched = fetchRss(feed, m, false)\r
+    end\r
     return unless fetched or feed.xml\r
     if not fetched and feed.items\r
       m.reply "using old data"\r