58 lines
1.9 KiB
Python
58 lines
1.9 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', r'^!weather\s+(.*)$',
|
||
|
getattr(self, 'handle_weather'), -20)
|
||
|
self.connection.reactor.add_global_regex_handler('privmsg', r'^^!weather\s+(.*)$',
|
||
|
getattr(self, 'handle_weather'), -20)
|
||
|
|
||
|
super(Weather, self).start()
|
||
|
|
||
|
def stop(self):
|
||
|
"""Tear down handlers."""
|
||
|
|
||
|
self.connection.reactor.remove_global_regex_handler('pubmsg', getattr(self, 'handle_weather'))
|
||
|
self.connection.reactor.remove_global_regex_handler('privmsg', getattr(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
|