dr.botzo/weather/ircplugin.py

55 lines
1.6 KiB
Python

import logging
from ircbot.lib import Plugin
from weather.lib import get_conditions_for_query, get_forecast_for_query
log = logging.getLogger('weather.ircplugin')
class Weather(Plugin):
"""Have IRC commands to do IRC things (join channels, quit, etc.)."""
def start(self):
"""Set up the handlers."""
self.connection.reactor.add_global_regex_handler(['pubmsg', 'privmsg'], r'^!weather\s+(.*)$',
self.handle_weather, -20)
super(Weather, self).start()
def stop(self):
"""Tear down handlers."""
self.connection.reactor.remove_global_regex_handler(['pubmsg', 'privmsg'], self.handle_weather)
super(Weather, self).stop()
def handle_weather(self, connection, event, match):
"""Handle IRC input for a weather queries."""
# see if there was a specific command given in the query, first
query = match.group(1)
queryitems = query.split(" ")
if len(queryitems) <= 0:
return
# search for commands
if queryitems[0] == 'conditions':
# current weather query
results = get_conditions_for_query(queryitems[1:])
return self.bot.reply(event, results)
elif queryitems[0] == 'forecast':
# forecast query
results = get_forecast_for_query(queryitems[1:])
return self.bot.reply(event, results)
else:
# assume they wanted current weather
results = get_conditions_for_query(queryitems)
return self.bot.reply(event, results)
plugin = Weather