Source code for modules.diabeetus

# -*- coding: utf-8 -*-

import requests
import sys
from event import Event

if sys.version_info > (3, 0, 0):
    try:
        from .basemodule import BaseModule
    except (ImportError, SystemError):
        from modules.basemodule import BaseModule
else:
    try:
        from basemodule import BaseModule
    except (ImportError, SystemError):
        from modules.basemodule import BaseModule


[docs]class Diabeetus(BaseModule):
[docs] def post_init(self): diabeetus = Event('__.diabeetus__') diabeetus.define(msg_definition='^\\.[Dd]iabeetus') diabeetus.subscribe(self) self.bot.register_event(diabeetus, self) self.api_url = "https://bonkscout.herokuapp.com/api/v1/entries/current.json" self.LOW = 69 self.HIGH = 200 self.trend = { "Flat": "→", "FortyFiveDown": "↘", "FortyFiveUp": "↗", "SingleDown": "↓", "SingleUp": "↑", "DoubleDown": "⇊", "DoubleUp": "⇈", "TripleDown": "⇓", "TripleUp": "⇑" }
[docs] def get_glucose(self, channel): """get the glucose""" r = requests.get(self.api_url) try: r.raise_for_status() except requests.exceptions.HTTPError: self.say( channel, "Encountered an error contacting the NightScout API") return entry = r.json() try: # grab the relevant data we want for formatting glucose = entry[0]['sgv'] if (glucose <= self.LOW): color = '\x0304' elif (glucose >= self.HIGH): color = '\x0308' else: color = '\x0303' arrow = self.trend[entry[0]['direction']] except KeyError: self.say( channel, "Unable to get glucose data from results. Sorry.") return # return the formatted string return "Bonk's blood sugar is " + color + \ str(glucose) + "\x0F mg/dL, trending " + arrow
[docs] def handle(self, event): self.say(event.channel, self.get_glucose(event.channel))