diff --git a/priceybot2/chatbot.py b/priceybot2/chatbot.py index 6ae4664..db0ce3c 100644 --- a/priceybot2/chatbot.py +++ b/priceybot2/chatbot.py @@ -21,22 +21,29 @@ Hangouts Chat bot that responds to events and messages from a room asynchronousl import logging +import random from flask import Blueprint, render_template, request, json from google.oauth2 import service_account from googleapiclient.discovery import build +from priceybot2 import models, db logging.basicConfig(filename='example.log', level=logging.DEBUG) chatbot = Blueprint('chatbot', __name__) -scopes = ['https://www.googleapis.com/auth/chat.bot'] +scopes = [ + 'https://www.googleapis.com/auth/chat.messages', + 'https://www.googleapis.com/auth/chat.bot', + ] credentials = service_account.Credentials.from_service_account_file('./priceybot2/config/service-acct.json') # credentials, project_id = google.auth.default() credentials = credentials.with_scopes(scopes=scopes) chat = build('chat', 'v1', credentials=credentials) + + @chatbot.route('/bot/', methods=['POST']) def home_post(): """Respond to POST requests to this endpoint. @@ -130,3 +137,65 @@ def home_get(): """ return render_template('home.html') + + +@chatbot.route('/bot/members/', methods=['GET']) +def members(space): + if space == "": + return {'text': "Please specify a space"} + try: + members = chat.spaces().members().list(parent=f'spaces/{space}').execute() + except Exception: + return {'text': "Space not found"} + + for member in members['memberships']: + uid = int(member['member']['name'].split('/')[-1]) + display_name = member['member']['displayName'] + + + user = models.User.query.filter_by(google_id=uid).first() + + if user: + print(f"User with UID of {uid} already exists in the DB") + continue + + new_user = models.User(name=display_name, google_id=uid) + db.session.add(new_user) + print(f"Adding user {display_name}") + db.session.commit() + + return {'text': "x"} + +@chatbot.route('/bot/messages/') +def get_messages(space): + messages = dir(chat.spaces().messages()) + print(messages) + return "x" + +@chatbot.route('/bot/randomquote/', methods=['GET']) +def send_random_quote(space): + if space == "": + return {'text': "Please specify a space"} + try: + quote = random.choice(models.Quote.query.all()) + except Exception: + return "Failed to get random quote" + + chat.spaces().messages().create( + parent=f'spaces/{space}', + body={'text': quote.quote} + ).execute() + + return f"Sent random quote to space {space}" + +@chatbot.route('/bot/sendquote/', methods=['POST']) +def send_quote(space): + if request.json.get('quote_id') is None: + return "Fuck off" + quote = models.Quote.query.filter_by(id=request.json.get('quote_id')).first() + chat.spaces().messages().create( + parent=f'spaces/{space}', + body={'text': quote.quote} + ).execute() + + return "Sent quote"