Browse Source

Add !watchers command to count page watchers.

tags/v0.2
Ben Kurtovic 8 years ago
parent
commit
07d87dc7a4
2 changed files with 51 additions and 0 deletions
  1. +2
    -0
      CHANGELOG
  2. +49
    -0
      earwigbot/commands/watchers.py

+ 2
- 0
CHANGELOG View File

@@ -2,6 +2,7 @@ v0.2 (unreleased):

- Added 'rc' hook type to allow IRC commands to respond to RC watcher events.
- Added !stalk/!watch.
- Added !watchers.
- Added !epoch as a subcommand of !time.
- Expanded and improved !remind.
- Improved general behavior of !access and !threads.
@@ -15,6 +16,7 @@ v0.2 (unreleased):
- Added and improved lazy importing for various dependencies.
- Fixed a bug in job scheduling.
- Improved client-side SQL buffering; made Category objects iterable.
- Default to using HTTPS for new sites.
- Updated documentation.

v0.1 (released August 31, 2012):


+ 49
- 0
earwigbot/commands/watchers.py View File

@@ -0,0 +1,49 @@
# -*- coding: utf-8 -*-
#
# Copyright (C) 2009-2015 Ben Kurtovic <ben.kurtovic@gmail.com>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

from earwigbot.commands import Command

class Watchers(Command):
"""Get the number of users watching a given page."""
name = "watchers"

def process(self, data):
if not data.args:
msg = "Which page do you want me to count the watchers of?"
self.reply(data, msg)
return

site = self.bot.wiki.get_site()
query = site.api_query(action="query", prop="info", inprop="watchers",
titles=" ".join(data.args))
page = query["query"]["pages"].values()[0]
title = page["title"].encode("utf8")

if "invalid" in page:
msg = "\x0302{0}\x0F is an invalid page title."
self.reply(data, msg.format(title))
return

watchers = page["watchers"]
plural = "" if watchers == 1 else "s"
msg = "\x0302{0}\x0F has \x02{1}\x0F watcher{2}."
self.reply(data, msg.format(title, watchers, plural))

Loading…
Cancel
Save