def cmd(send, msg, args):
    """Gets the weather.

    Syntax: {command} <[--date (date)] [--hour (hour)] (location)|--set (default)>
    Powered by Weather Underground, www.wunderground.com

    """
    apikey = args['config']['api']['weatherapikey']
    parser = arguments.ArgParser(args['config'])
    parser.add_argument('--date', action=arguments.DateParser)
    parser.add_argument('--hour', type=int)
    parser.add_argument('--set', action='store_true')
    parser.add_argument('string', nargs='*')
    try:
        cmdargs = parser.parse_args(msg)
    except arguments.ArgumentException as e:
        send(str(e))
        return
    if isinstance(cmdargs.string, list):
        cmdargs.string = " ".join(cmdargs.string)
    if cmdargs.set:
        set_default(args['nick'], cmdargs.string, args['db'], send, apikey)
        return
    if cmdargs.hour is not None and cmdargs.hour > 23:
        send("Invalid Hour")
        cmdargs.hour = None
    nick = args['nick'] if args['name'] == 'weather' else '`bjones'
    if not cmdargs.string:
        cmdargs.string = get_default(nick, args['db'], send, args['config'], args['source'])
    if cmdargs.hour is not None:
        get_hourly(cmdargs, send, apikey)
    elif cmdargs.date:
        get_forecast(cmdargs, send, apikey)
    else:
        get_weather(cmdargs, send, apikey)
Gets the weather.

    Syntax: {command} <[--date (date)] [--hour (hour)] (location)|--set (default)>
    Powered by Weather Underground, www.wunderground.com