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()))
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 })
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!')
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, } )
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
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()))
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)
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)
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 })
def delete(self): db.collection(u'strava').document(u'state').collection(str( self._state)).document('version 0').delete()