본문 바로가기
Programming/Python

카카오톡 플러스친구 스마트채팅 만들기 7 - 설정 & 그룹 설정

by NAMP 2018. 5. 9.

카카오톡 플러스친구 스마트채팅 만들기 7 - 설정 & 그룹 설정

설정

#설정 버튼을 누를 경우를 처리합니다.

class Message(Resource):
    
    def post(self):
        select = Select(self.args)
        setting = Setting(self.args)
        
        if self.content == Const.BTN_SELECT_LUNCH:
            return select.show_restaurant_list()
        elif self.content == Const.BTN_SETTING:
            return setting.show_setting_list()        

setting.show_setting_list() 함수를 호출합니다.

from firebase_admin import firestore

from conf.const import Const
from conf.firebaseInit import fs
from conf.util import Util
from events.args import Args


class Setting(Args):
    def show_setting_list(self):
        try:
            user = fs.collection(Const.COL_USER).document(self.user_key).get()
            group = user.get(Const.FIELD_GROUP)
        except:
            return Select.show_group_list()

        rst = {
            "message": {
                "text": '현재 [{}] 그룹으로 설정되어 있습니다.'.format(group)
            },
            "keyboard": {
                "type": "buttons",
                "buttons": [Const.BTN_ADD_RESTAURANT, Const.BTN_DELETE_RESTAURANT, Const.BTN_SETTING_GROUP, Const.BTN_DOANTE, Const.BTN_GOTO_START]
            }
        }
        return Util.send_response(rst)   
  • 식당 추가
  • 식당 삭제
  • 그룹 설정
  • 후원하기
  • 시작으로

버튼 목록을 반환합니다.

 

그룹 설정

#그룹 선택 버튼이 눌러진 경우를 처리합니다. content를 비교하고 그룹목록을 버튼으로 반환합니다.

class Message(Resource):

    def post(self):
        select = Select(self.args)
        setting = Setting(self.args)
        result = Result(self.args)
    
        if self.content == Const.BTN_SELECT_LUNCH:
            return select.show_restaurant_list()
        elif self.content == Const.BTN_SETTING_GROUP:
            return select.show_group_list()
class Select(Args):
    def show_group_list(self):
        # 상태 설정
        fs.collection(Const.COL_USER).document(self.user_key).update({
            Const.FIELD_STATE: Const.STATE_SELECT_GROUP
        }, firestore.CreateIfMissingOption(True))

        # 그룹 목록 가져오기
        groups = fs.collection(Const.COL_GROUP).get()
        group_list = []
        for doc in groups:
            group_list.append(doc.id)

        group_list.append(Const.BTN_GOTO_START)

        rst = {
            "message": {
                "text": '그룹을 선택해 주세요'
            },
            "keyboard": {
                "type": "buttons",
                "buttons": group_list
            }
        }

        return Util.send_response(rst)

댓글