示例#1
0
    def test_read(self):
        users_ref = db.collection(u'strava').document(u'runner').collection(
            u'name')
        docs = users_ref.stream()

        for doc in docs:
            print(u'{} => {}'.format(doc.id, doc.to_dict()))
示例#2
0
 def test_firebase(self):
     doc_ref = db.collection(u'strava').document(u'runner').collection(
         u'name').document('stuff')
     doc_ref.set({
         u'first': u'Mike',
         u'last': u'Chirico',
         u'born': 1815
     })
示例#3
0
def admin(ack, body, say, command, respond, client):
    user_id = body['user_id']
    user = db.collection('sevabot-users').document(user_id).get().to_dict()
    print(user)
    if not user['is_admin']:
        say('Sorry, you are not an admin!')
    else:
        say('Hello admin!')
示例#4
0
def message_wordle(message, say):
    number, score = message["text"].split("\n")[0].split(" ")[1:]
    number = int(number)
    score = int(score[0])
    user = f"<@{message['user']}>"

    say(f"<@{message['user']}> has a wordle score of {score}/6 for {number}")

    # store data in firebase

    # sevabot-wordle

    obj_ref = db.collection("sevabot-wordle").document(str(number))

    if obj_ref.get().to_dict() is None:
        obj_ref.set({"number": number, "scores": []})

    obj_ref.update(
        {
            "number": number,
            "scores": firestore.ArrayUnion([{"name": user, "score": score}]),
        }
    )

    # sevabot-wordle-users
    users_ref = db.collection("sevabot-wordle-users").document(user)
    average = 0
    count = 0
    if users_ref.get().to_dict() is None:
        users_ref.set({"id": user, "count": 0, "average": 0, "scores": []})
    else:
        average = users_ref.get().to_dict()["average"]
        count = users_ref.get().to_dict()["count"]

    new_average = (
        sum(x["score"] for x in users_ref.get().to_dict()["scores"]) + score
    ) / (count + 1)

    users_ref.update(
        {
            "count": users_ref.get().to_dict()["count"] + 1,
            "scores": firestore.ArrayUnion([{"number": number, "score": score}]),
            "average": new_average,
        }
    )
示例#5
0
    def __init__(self, db, lastname, id):
        users_ref = db.collection(u'strava').document(lastname).collection(
            str(id))
        docs = users_ref.stream()

        for doc in docs:
            result = doc.to_dict()
            # print(u'{} => {}'.format(doc.id, doc.to_dict()))
        self._result = result
示例#6
0
    def read(self):
        doc_ref = db.collection(u'strava').document(u'state').collection(
            str(self._state))
        docs = doc_ref.stream()

        self._records = []
        for doc in docs:
            self.records.append(doc.to_dict())
            print(u'{} => {}'.format(doc.id, doc.to_dict()))
示例#7
0
def wordle(ack, say, body):
    ack()
    wordle_ref = db.collection("sevabot-wordle")
    query = wordle_ref.order_by("number",
                                direction=firestore.Query.DESCENDING).limit(1)
    document = query.get()[0].to_dict()
    number = document["number"]
    scores = document["scores"]
    scores = sorted(scores, key=lambda x: x["score"])
    blocks = build_leaderboard(number, scores)
    say(blocks=blocks)
示例#8
0
def wordle_all_time(ack, say, body):
    ack()
    users_ref = db.collection("sevabot-wordle-users").stream()
    scores = []
    for user in users_ref:
        user = user.to_dict()
        scores.append({"name": user["id"], "score": user["average"]})
    scores = sorted(scores, key=lambda x: x["score"])
    print(scores)

    blocks = build_leaderboard("ALL TIME", scores)
    say(blocks=blocks)
示例#9
0
 def insert(self):
     now = datetime.datetime.now()
     timeStamp = now.strftime("%Y-%m-%dT%H:%M:%S.%s")
     timeStamp_epoch = now.timestamp()
     doc_ref = db.collection(u'strava').document(str('state')).collection(
         str(self._state)).document('version 0')
     doc_ref.set({
         u'state': self._state,
         u'status': 'initial',
         u'timeStamp': timeStamp,
         u'timeStamp_epoch': timeStamp_epoch
     })
示例#10
0
 def delete(self):
     db.collection(u'strava').document(u'state').collection(str(
         self._state)).document('version 0').delete()