-# -*- coding: utf-8 -*-
"""Get data from database and publish them."""
from json import dumps
from random import randint
from requests import post
-from cbconf import Conf
-from cbdb import Db
-
-class CoffeebotGetter:
- """This class connects configuration, database access and publishing."""
- def __init__(self):
- self.cfg = Conf()
- self.db = Db(self.cfg.getCoffeeDbPath())
+from coffee_getter.db import Db
+import coffee_getter.conf as conf
+
+
+class Bot:
+ isuff = {1: "st", 2: "nd", 3: "rd", 4: "th", 5: "th"}
+
+ def __init__(self, db_path=False):
+ if db_path:
+ self.db = Db(db_path)
+ else:
+ self.db = Db(conf.DB_PATH)
self.msg = ""
self.top = []
self.topeq = []
- self.isuff = {1: "st", 2: "nd", 3: "rd", 4: "th", 5: "th"}
- return None
- def getMsg(self):
- """Return message."""
+ def get_msg(self):
return self.msg
- def sendMsgToSlack(self):
- """Send message to Slack Bot."""
- return post(self.cfg.getCoffeebotURL(), dumps({"text": self.msg}))
+ def send_msg_to(self, where="slack"):
+ if where == "slack":
+ where = conf.COFFEEBOT_SLACK_URL
+ else:
+ raise ValueError(f"Unknown `where` = {where}.")
+ return post(where, dumps({"text": self.msg}))
def get_drink_smile(self, drink):
"""Return Slack smile for ``drink``.
}
return smiles[drink]
- def getHeroComment(self):
+ def get_hero_comment(self):
"""Return comment for hero."""
hsuff = [
", oops",
ri = randint(0, len(hsuff) - 1)
return hsuff[ri]
- def getSomeSmile(self):
+ def get_some_smile(self):
"""Return some Slack smile."""
smiles = [
":party_parrot:",
ri = randint(0, len(smiles) - 1)
return smiles[ri]
- def computeEqualDrinkers(self):
+ def compute_equal_drinkers(self):
"""Compute equally drunken drinkers."""
self.topeq = []
if len(self.top) <= 0:
"""Get list of top drinks, update message."""
self.msg = "*Top drinks*\n"
self.top = self.db.get_top_drinks()
- self.computeEqualDrinkers()
+ self.compute_equal_drinkers()
i = 1
for drinks in self.topeq[:3]:
c = drinks[0][1]
self.msg += "\n"
i += 1
- def loadTopMateDrinkers(self):
+ def load_top_mate_drinkers(self):
"""Get list of top Mate drinkers, update message."""
self.msg = "*Top 5 Club-Mate drinkers*\n"
- self.top = self.db.getTopMateDrinkers()
- self.computeEqualDrinkers()
+ self.top = self.db.get_top_mate_drinkers()
+ self.compute_equal_drinkers()
totl = [c for (un, c) in self.top]
tot = sum(totl)
i = 1
self.msg += " who drank "
self.msg += "`{:.2f}` liters".format(c)
if i == 1:
- self.msg += self.getHeroComment()
+ self.msg += self.get_hero_comment()
self.msg += "\n"
i += 1
self.msg += "\n"
self.msg += "Oh, and together we drank *{:.2f}* liters {}".format(
tot,
- self.getSomeSmile()
+ self.get_some_smile()
)
return
"""Get list of top tea drinkers, update message."""
self.msg = "*Top 5 tea drinkers*\n"
self.top = self.db.get_top_tea_drinkers()
- self.computeEqualDrinkers()
+ self.compute_equal_drinkers()
tot = sum([c for (un, c) in self.top])
i = 1
for drinkers in self.topeq[:5]:
self.msg += "\n"
self.msg += "Oh, and together we drank *{}* teas {}".format(
tot,
- self.getSomeSmile()
+ self.get_some_smile()
)
- def loadDrunkSum(self, *args, **kwargs):
+ def load_drunk_sum(self, *args, **kwargs):
"""Get list of drunken ``flavor`` from ``dtf`` to ``dtt``, update msg.
Keyword arguments:
dtf -- Date and time *from*.
dtt -- Date and time *to*.
"""
- self.top = self.db.getDrunkSum(*args, **kwargs)
+ self.top = self.db.get_drunk_sum(*args, **kwargs)
if args:
flavor = args[0]
dtf = args[1]
self.msg += "---"
return
- def loadDrunkList(self, *args, **kwargs):
+ def load_drunk_list(self, *args, **kwargs):
"""Get list of drunken ``flavor`` from ``dtf`` to ``dtt``, update msg.
Keyword arguments:
dtf -- Date and time *from*.
dtt -- Date and time *to*.
"""
- self.top = self.db.getDrunkSum(*args, **kwargs)
+ self.top = self.db.get_drunk_sum(*args, **kwargs)
d = self.db.getDrunkList(*args, **kwargs)
if args:
flavor = args[0]