Exemplo n.º 1
0
def joke(text):
    if 'ㅠ' in text:
        head_section = SectionBlock(text='회원님~ 울면 근손실 일어나요~\n울지마요~')
        block1 = ImageBlock(image_url='http://bitly.kr/8iTBeh',
                            alt_text='이미지 오류')
        return [head_section, block1]
    elif '배고파' in text:
        head_section = SectionBlock(text='이걸 보고도 밥이 목구녕으로 넘어가요?\n단식하세요 회원님~')
        block1 = ImageBlock(image_url='http://bitly.kr/PopTfn',
                            alt_text='이미지 오류')
        return [head_section, block1]
    elif '언더아머' in text:
        head_section = SectionBlock(
            text='언더아머는 3대 500치는 회원님들만 착용 가능합니다.\n단속걸리지 않게 조심하세요 회원님~')
        block1 = ImageBlock(image_url='http://bitly.kr/Q0ANbf',
                            alt_text='이미지 오류')
        return [head_section, block1]
    else:
        a = random.randint(1, 4)
        if a == 1:
            head_section = SectionBlock(text='운동만이 살길입니다 회원님~\n오늘도 식단관리 화이팅~!')
            block1 = ImageBlock(image_url='http://bitly.kr/f9TIze',
                                alt_text='이미지 오류')
            return [head_section, block1]
        elif a == 2:
            head_section = SectionBlock(text='운동은 마음가짐입니다 회원님~\n열심히 노력하셔야 해요!')
            block1 = ImageBlock(image_url='http://bitly.kr/5sNxFM',
                                alt_text='이미지 오류')
            return [head_section, block1]
        else:
            head_section = SectionBlock(text='몸도 중요하지만 회원님~\n몸완얼인것도 아시죠??')
            block1 = ImageBlock(image_url='http://bitly.kr/3bBR3R',
                                alt_text='이미지 오류')
            return [head_section, block1]
Exemplo n.º 2
0
 def test_json_simple(self):
     section = SectionBlock(text=MarkdownTextObject(text="some text"),
                            block_id="a_block").to_dict()
     json = {
         "text": {
             "text": "some text",
             "type": "mrkdwn",
             "verbatim": False
         },
         "block_id": "a_block",
         "type": "section",
     }
     self.assertDictEqual(section, json)
Exemplo n.º 3
0
 def test_document_2(self):
     input = {
         "type": "section",
         "text": {
             "text": "A message *with some bold text* and _some italicized text_.",
             "type": "mrkdwn",
         },
         "fields": [
             {"type": "mrkdwn", "text": "High"},
             {"type": "plain_text", "emoji": True, "text": "String"},
         ],
     }
     self.assertDictEqual(input, SectionBlock(**input).to_dict())
Exemplo n.º 4
0
    def test_json(self):
        self.assertDictEqual(
            {
                "text": {"text": "some text", "type": "mrkdwn"},
                "block_id": "a_block",
                "type": "section",
            },
            SectionBlock(text="some text", block_id="a_block").to_dict(),
        )

        self.assertDictEqual(
            {
                "text": {"text": "some text", "type": "mrkdwn"},
                "fields": [
                    {"text": "field0", "type": "mrkdwn"},
                    {"text": "field1", "type": "mrkdwn"},
                    {"text": "field2", "type": "mrkdwn"},
                    {"text": "field3", "type": "mrkdwn"},
                    {"text": "field4", "type": "mrkdwn"},
                ],
                "type": "section",
            },
            SectionBlock(
                text="some text", fields=[f"field{i}" for i in range(5)]
            ).to_dict(),
        )

        button = LinkButtonElement(text="Click me!", url="http://google.com")
        self.assertDictEqual(
            {
                "type": "section",
                "text": {"text": "some text", "type": "mrkdwn"},
                "accessory": button.to_dict(),
            },
            SectionBlock(text="some text", accessory=button).to_dict(),
        )
Exemplo n.º 5
0
 def test_document_3(self):
     input = {
         "type": "section",
         "text": {
             "text": "*Sally* has requested you set the deadline for the Nano launch project",
             "type": "mrkdwn",
         },
         "accessory": {
             "type": "datepicker",
             "action_id": "datepicker123",
             "initial_date": "1990-04-28",
             "placeholder": {"type": "plain_text", "text": "Select a date"},
         },
     }
     self.assertDictEqual(input, SectionBlock(**input).to_dict())
Exemplo n.º 6
0
def on_view2_submit(rqst: ViewRequest):

    # same technique as on_main_modal_submit; in this case disable the submit
    # button only allow the User to click the "Done" (close) button.

    modal = Modal(rqst)

    view = modal.view
    view.title = PlainTextObject(text='Final Modal View')
    view.close = PlainTextObject(text='Done')
    view.submit = None

    view.add_block(SectionBlock(text=MarkdownTextObject(text='Final bit.')))

    return modal.update()
Exemplo n.º 7
0
def on_main_modal_submit(
    rqst: ViewRequest,
    input_values: Dict
):
    params = session[SESSION_KEY]['params']

    # The input_values is a dictionary of key=action_id and value=user-input
    # since all action_id are formulated with dots (.), just use the
    # last token as the variable name when form

    results = {
        k.rpartition('.')[-1]: v
        for k, v in input_values.items()
    }

    results.update(dict(
        clicks=params['clicks'],
        checkboxes=params['checkboxes'],
    ))

    modal = Modal(rqst, view=View(
        type="modal",
        title=PlainTextObject(text='Modal Results'),
        close=PlainTextObject(text='Done'),
        clear_on_close=True,
        blocks=[
            SectionBlock(
                text=PlainTextObject(text="Input results in raw JSON")
            ),
            SectionBlock(
                text=MarkdownTextObject(text="```" + json.dumps(results, indent=3) + "```")
            )
        ]
    ))

    return modal.push()
Exemplo n.º 8
0
 def test_json_with_accessory(self):
     button = LinkButtonElement(text=PlainTextObject(text="Click me!"),
                                url="http://google.com")
     section = SectionBlock(text=MarkdownTextObject(text="some text"),
                            accessory=button).to_dict()
     coded = {
         "text": {
             "text": "some text",
             "type": "mrkdwn",
             "verbatim": False
         },
         "accessory": button.to_dict(),
         "type": "section",
     }
     self.assertDictEqual(section, coded)
Exemplo n.º 9
0
def findFood(food_name):
    with open("food5.csv", 'rt', encoding='UTF8') as file:
        kal = 0
        for i in file:
            if food_name == i.split(',')[0].strip():
                kal = float(i.split(',')[1].strip())
        if kal == 0:
            head_section = SectionBlock(
                text="*" + food_name + "*" + " 의 칼로리에 대한 정보는 없네요 회원님 ㅠㅠ\n다른 음식을 찾아보시겠어요??"
            )
            block1 = ImageBlock(
                image_url='https://lh3.googleusercontent.com/9JbVrSd_VM5gtIES8nV1hFv9INJ5aOatExiwP9BOMjRL5StZKojJiZwNjvzyO5fJdToeh9fuoNEZwOkVEzWIj0znMJs3zVJtU__dfTzeQpBb72tI7v_H6UL654Up-Dz8UlvRg1QtCoE_qFR7_rjp60j-uVnw6H7v60nOc5sLzo0cFdxWJmo9NMvxPdHKVCsqLBLVresLeyL6Ulndh2ayShzKb4DCHnbH2kYBVQJ7HFNLuN_8wU5Z9lc0D97ppiX9awxoXqMgqvvS9epaBeg5Jn0KNEM4BdyAxTqbZcakZdCD3s8HjwJ0K0BOrbugNcKI9GPwsJ0Zjzoq9LUb6Yz8mJpoVAuMKMPJemI0NXCPLLzisjNzR6kCLI7Rc2BHSyIJkc4aEGWCMBTFKtd54SIQuv9lkCvK3kTOKfjS39G1-YDfGfWcbgU83l6TMPxOMQlU7l6328vd_QXOWe8c4WVv2Mh6toJnWXCwIwCghaxMGmqc5qwj96gUlBir-l1CooBPp1Ln-iurmhc1CeySEsCyfS2wa0Xz4AN8VNwMwOHHTJT6fgepWfZIrqby57GsyJ3fuBRekvQIkK_XIQmBYGnwmwGdcBF46j3bSMuAals0PraWUv8NptJaB2U48eGJfbV3H3NnqCniTyhkSuzklrnjjcN8F-Pukus=w530-h375-no',
                alt_text='이미지 오류'
            )
            return [head_section, block1]

    head_section = SectionBlock(
        text="*" + food_name + "*" + " 의 칼로리는 " + "*" + str(kal) + "*" + " 이네요.\n생각보다 높아서 걱정인데....\n정말 드시겠어요 회원님...??"
    )
    block1 = ImageBlock(
        image_url='https://lh3.googleusercontent.com/Jrn3NDI3XofgtKIMK-_lyY7vQn2Na6GvEr4DCPNtEh-bTb7IWlVAuGw3ypduDBgAgcs5h1ukAHrPhVaGf62CZ62896nfLqWYsrpr27_Y_R7FzezsWA0pd4x4g4PWdCD5uKRyUIyDfo0padPBrSNNjdD1CoBhZVibqueexsMXLX3iqv7tiyULWnDB-Ll6y7VgIGgo4iw7ONEbL8VoQ9apWbbg-Koo9mNZhKMRiRSUJAeSe6chB8NSqzurj7Np7ZpORa45pTb4iR5fgr4j3nQGVNccGuJ_2H6yDtpoPNuPhPaDzBtcw99djbqGESM3QYNRPnvu3s3vWmQw7eQA9ZRmSv51qCoj78e3udOkRCqC13RAmfVVsEGVu06AZNcwZQ_pu4BbImM01-OO0iu9OdX4gkM3dTUHlka4BdKfl4oGOp8gU986jkKNComnse0Ex1SD6qDEg_MTzDQ-yEPdkCVr0ZXC6Guj5bYJLDFqFoDK5F0pHKjt7YJcqsyZFxHgFi-dGtSKddv4NERsVUWt2_I6OHUNZaGTMGY6ctdXN7zZ99sep64kGE_EZ1m0rtmT3Qgf8k6AjlX1wdlwQpOiHlYIZz0V7P3V7YA9ZTh9LCeekQrtcp0k2ytrt4fgnTak6gGn6xpzbRAE8FCjcRtJSV9k63PHmcuY4LQ=w640-h960-no',
        alt_text='이미지 오류'
    )
    return [head_section, block1]
Exemplo n.º 10
0
def main(rqst: Union[InteractiveMessageRequest, CommandRequest]) -> None:

    block_id = cmd.prog + '.main.button'

    # create a Slack message that will be used to respond to the User's
    # interaction which was the invocation of the /demo command.

    resp = Response(rqst)

    # -------------------------------------------------------------------------
    # define the button callback handler to send a response back to the
    # User telling the time when they pressed the button
    # -------------------------------------------------------------------------

    @rqst.app.ic.block_action.on(block_id)
    def on_button(btn_rqst: BlockActionRequest, btn_action: ActionEvent):

        btn_resp = Response(btn_rqst)

        btn_resp.send_response(
            text=(f"At timestamp `{btn_action.data['action_ts']}`, "
                  f"you pressed: *{btn_action.value.title()}*"))

    # -------------------------------------------------------------------------
    # create a message to send to the User that has two buttons; and when
    # they click either one, the above callback will be executed.
    # -------------------------------------------------------------------------

    user_id = rqst.user_id

    resp['blocks'] = extract_json([
        SectionBlock(text=f'Hi there <@{user_id}>!'),
        DividerBlock(),
        ActionsBlock(block_id=block_id,
                     elements=[
                         ButtonElement(text='Press for Bad',
                                       style='danger',
                                       action_id=f'{block_id}.bad',
                                       value='bad'),
                         ButtonElement(text='Press for Good',
                                       style="primary",
                                       action_id=f'{block_id}.good',
                                       value='good')
                     ]),
        DividerBlock()
    ])

    resp.send()
def main(rqst: AnyRequest):

    modal = Modal(
        rqst,
        callback=on_main_modal_submit,
        view=View(title='First Modal View',
                  callback_id=cmd.prog + ".view1",
                  close='Cacel',
                  submit='Start'),
    )

    modal.view.add_block(SectionBlock(text='Click the Start button to begin.'))

    res = modal.open()
    if not res.get('ok'):
        rqst.app.log.error(res)
Exemplo n.º 12
0
 def action_go_to_alerts(self, request: GladosRequest, **kwargs):
     # self.bot.validate_slack_signature(request)
     self.bot.send_message(
         message=Message(
             text="Going to alerts",
             blocks=[
                 SectionBlock(
                     text="Confirm Action",
                     accessory=ButtonElement(
                         text="Acknowledge", action_id="ack", value="ack"
                     ),
                 )
             ],
         ),
         channel=request.json.user.id,
     )
def on_boop_button(rqst):

    params = session[SESSION_KEY]['params']

    params['boops'] += 1
    boops = params['boops']

    modal = Modal(rqst)

    view = modal.view
    view.blocks.pop(0)
    view.blocks.insert(0, SectionBlock(text=f'Boop {boops}'))

    res = modal.update()
    if not res.get('ok'):
        rqst.app.log.error(f'failed to boop: {res}')
def on_main_modal_submit(rqst: ViewRequest):

    # define the modal and view based on the received view request from
    # api.slack.com as a result of this instance, the code can then "update"
    # the view by returning the update payload as a resposse message.

    modal = Modal(rqst)

    view = modal.view
    view.title = 'Second Modal View'
    view.callback_id = cmd.prog + ".view2"
    modal.callback = on_view2_submit

    view.add_block(SectionBlock(text="New bits."))

    return modal.update()
Exemplo n.º 15
0
def main(rqst: AnyRequest):

    # create a Modal and view, setting the callback so that when the User
    # clicks the "Next" button the code in on_main_modal_submit will be used as
    # the handler.

    Modal(rqst,
          callback=on_main_modal_submit,
          view=View(type="modal",
                    title='First Modal View',
                    callback_id=cmd.prog + ".view1",
                    close='Cancel',
                    submit='Next',
                    blocks=[
                        SectionBlock(text=MarkdownTextObject(
                            text="This is the *first* modal view."))
                    ])).open()
Exemplo n.º 16
0
 def update_message(self, request: GladosRequest, **kwargs):
     message = Message(
         text=request.json.message,
         blocks=[
             ContextBlock(elements=[
                 MarkdownTextObject(
                     text=
                     f"Message Updated: {datetime.now().isoformat(sep=' ', timespec='minutes')}"
                 )
             ]),
             SectionBlock(text=MarkdownTextObject(
                 text=request.json.message)),
         ],
     )
     return self.bot.update_message(channel=request.json.channel,
                                    ts=request.json.ts,
                                    message=message)
Exemplo n.º 17
0
 def test_json_with_fields(self):
     self.assertDictEqual(
         SectionBlock(text=MarkdownTextObject(text="some text"),
                      fields=[
                          MarkdownTextObject(text=f"field{i}")
                          for i in range(5)
                      ]).to_dict(),
         {
             "text": {
                 "text": "some text",
                 "type": "mrkdwn",
                 "verbatim": False
             },
             "fields": [
                 {
                     "text": "field0",
                     "type": "mrkdwn",
                     "verbatim": False
                 },
                 {
                     "text": "field1",
                     "type": "mrkdwn",
                     "verbatim": False
                 },
                 {
                     "text": "field2",
                     "type": "mrkdwn",
                     "verbatim": False
                 },
                 {
                     "text": "field3",
                     "type": "mrkdwn",
                     "verbatim": False
                 },
                 {
                     "text": "field4",
                     "type": "mrkdwn",
                     "verbatim": False
                 },
             ],
             "type":
             "section",
         },
     )
 async def test_with_blocks(self):
     url = os.environ[SLACK_SDK_TEST_INCOMING_WEBHOOK_URL]
     webhook = AsyncWebhookClient(url)
     response = await webhook.send(
         text="fallback",
         blocks=[
             SectionBlock(
                 block_id="sb-id",
                 text=MarkdownTextObject(
                     text="This is a mrkdwn text section block."),
                 fields=[
                     PlainTextObject(text="*this is plain_text text*",
                                     emoji=True),
                     MarkdownTextObject(text="*this is mrkdwn text*"),
                     PlainTextObject(text="*this is plain_text text*",
                                     emoji=True),
                 ]),
             DividerBlock(),
             ActionsBlock(elements=[
                 ButtonElement(
                     text=PlainTextObject(text="Create New Task",
                                          emoji=True),
                     style="primary",
                     value="create_task",
                 ),
                 ButtonElement(
                     text=PlainTextObject(text="Create New Project",
                                          emoji=True),
                     value="create_project",
                 ),
                 ButtonElement(
                     text=PlainTextObject(text="Help", emoji=True),
                     value="help",
                 ),
             ], ),
         ])
     self.assertEqual(200, response.status_code)
     self.assertEqual("ok", response.body)
Exemplo n.º 19
0
    def section(
        self,
        *,
        text: Union[str, TextObject] = None,
        block_id: Optional[str] = None,
        fields: List[str] = None,
        accessory: Optional[BlockElement] = None,
    ) -> "ModalBuilder":
        """A section is one of the most flexible blocks available.
        It can be used as a simple text block, in combination with
        text fields, or side-by-side with any of the available block elements.

        https://api.slack.com/reference/block-kit/blocks#section

        Args:
            text: The text for the block, in the form of string or a text object.
                Maximum length for the text in this field is 3000 characters.
            block_id: A string acting as a unique identifier for a block.
                You can use this block_id when you receive an interaction
                payload to identify the docs-src of the action. If not
                specified, one will be generated. Maximum length for this
                field is 255 characters. block_id should be unique for each
                message and each iteration of a message.
                If a message is updated, use a new block_id.
            fields: optional: a sequence of strings that will be rendered using
                MarkdownTextObjects. Any strings included with fields will be rendered
                in a compact format that allows for 2 columns of side-by-side text.
                Maximum number of items is 10.
                Maximum length for the text in each item is 2000 characters.
            accessory: an optional BlockElement to attach to this SectionBlock as
                secondary content
        """
        self._blocks.append(
            SectionBlock(text=text,
                         block_id=block_id,
                         fields=fields,
                         accessory=accessory))
        return self
def on_main_modal_submit(rqst):
    modal = Modal(rqst)
    view = modal.view
    view.callback_id = cmd.prog + ".view2"
    view.title = PlainTextObject(text='Awaiting Boop')

    params = session[SESSION_KEY]['params']
    delay = params['delay']

    view.blocks[0] = SectionBlock(text=PlainTextObject(
        text=f"Launching async task for {delay} sec update"))

    view.submit = None

    rqst.app.log.debug(modal.view.hash)

    Thread(target=delayed_update_view,
           kwargs={
               'rqst': rqst,
               'view': modal.view,
               'delay': delay
           }).start()

    return modal.update()
Exemplo n.º 21
0
from slack.web.classes.blocks import DividerBlock, SectionBlock
from slack.web.classes.elements import ButtonElement, ExternalDataSelectElement
from slack.web.classes.messages import Message
from slack.web.classes.objects import MarkdownTextObject

from glados import EventRoutes, GladosBot, GladosPlugin, GladosRequest, RouteType
from glados.slack_classes.views import Home

HOME_VIEW = Home(blocks=[
    SectionBlock(text=MarkdownTextObject(
        text="*Welcome to GLaDOS From Lambda!*")),
    DividerBlock(),
    SectionBlock(
        text="*Security Events*",
        fields=["*New Alerts*\n20", "*Open Cases*\n5"],
        accessory=ButtonElement(text="Go To Security Alerts",
                                action_id="gotoSecurityAlerts",
                                value="go"),
    ),
    DividerBlock(),
    SectionBlock(
        text="*Service Tickets*",
        fields=["*Total Tickets*\n23"],
        accessory=ButtonElement(text="Go To Service Desk",
                                action_id="gotoServiceDesk",
                                value="go"),
    ),
    DividerBlock(),
    SectionBlock(
        text="Test External Menu",
        accessory=ExternalDataSelectElement(placeholder="Loading",
Exemplo n.º 22
0
def main(rqst):

    app: SlackApp = rqst.app
    params = session[SESSION_KEY]['params']

    # define the event ID for when the User clicks the Submit button on the
    # Modal. bind that event to the code handler that will process the data.

    event_id = cmd.prog + ".view1"
    app.ic.view.on(event_id, on_main_modal_submit)

    priv_data = {
        'name': 'Jeremy',
        'state': "NC"
    }

    # create a Modal instace, which will also defined a View when one is not
    # provided.  Tie the submit callback ID to the envent_id value

    modal = Modal(rqst)
    view = modal.view = View(
        type="modal",
        title=PlainTextObject(text="Awesome Modal"),
        callback_id=event_id,
        close=PlainTextObject(text="Cancel"),
        submit=PlainTextObject(text="Next"),
        private_metadata=str(priv_data))

    # -------------------------------------------------------------------------
    # Create a button block:
    # Each time the User clicks it a counter will be incremented by 1.
    # The button click count is stored in the session params.
    # -------------------------------------------------------------------------

    button1 = view.add_block(SectionBlock(
        text=PlainTextObject(text="It's Block Kit...but _in a modal_"),
        block_id=event_id + ".button1"))

    button1.accessory = ButtonElement(
        text='Click me', value='0',
        action_id=button1.block_id,
        style='danger'
    )

    params['clicks'] = 0

    # noinspection PyUnusedLocal
    @app.ic.block_action.on(button1.block_id)
    def remember_button(btn_rqst: BlockActionRequest):
        session[SESSION_KEY]['params']['clicks'] += 1

    # -------------------------------------------------------------------------
    # Create a Checkboxes block:
    # When the User checks/unchecks the items, they are stored to the session.
    # -------------------------------------------------------------------------

    checkbox_options = [
        Option(label='Box 1', value='A1'),
        Option(label='Box 2', value='B2')
    ]

    params['checkboxes'] = checkbox_options[0].value

    checkbox = view.add_block(SectionBlock(
        text=PlainTextObject(text='Nifty checkboxes'),
        block_id=event_id + ".checkbox"))

    checkbox.accessory = CheckboxesElement(
            action_id=checkbox.block_id,
            options=checkbox_options,
            initial_options=[checkbox_options[0]]
        )

    @app.ic.block_action.on(checkbox.block_id)
    def remember_check(cb_rqst: BlockActionRequest, action: ActionEvent):
        session[SESSION_KEY]['params']['checkboxes'] = action.value

    # -------------------------------------------------------------------------
    # Create an Input block:
    # Required single line of text.
    # -------------------------------------------------------------------------

    view.add_block(InputBlock(
        label=PlainTextObject(text='First input'),
        element=PlainTextInputElement(
            action_id=event_id + ".text1",
            placeholder='Type in here'
        )
    ))

    # -------------------------------------------------------------------------
    # Create an Input block:
    # Optional multi-line text area, maximum 500 characters.
    # -------------------------------------------------------------------------

    host_selector = view.add_block(InputBlock(
        label=PlainTextObject(text='Next input selector ... start typing'),
        optional=True,
        block_id=event_id + ".ext1",
        element=ExternalDataSelectElement(
                    placeholder='hosts ..',
                    action_id=event_id + ".ext1",)
        ))

    @app.ic.select.on(host_selector.element.action_id)
    def select_host_from_dynamic_list(_rqst):
        return {
            'options': extract_json([
                Option(label=val, value=val)
                for val in ('lx5e1234', 'lx5w1234', 'lx5e4552')
            ])
        }

    # -------------------------------------------------------------------------
    # Create an Input Datepicker block
    # -------------------------------------------------------------------------

    view.add_block(InputBlock(
        label=PlainTextObject(text="Pick a date"),
        element=DatePickerElement(
            action_id=event_id + ".datepicker",
            placeholder='A date'
        )
    ))

    # -------------------------------------------------------------------------
    # Create an Input to select from static list, optional.
    # -------------------------------------------------------------------------

    view.add_block(InputBlock(
        label=PlainTextObject(text="Select one option"),
        optional=True,
        element=SelectElement(
            placeholder='Select one of ...',
            action_id=event_id + ".select_1",
            options=[
                Option(label='this', value='this'),
                Option(label='that', value='that')
            ]
        )
    ))

    # -------------------------------------------------------------------------
    # Create an Input to allow the User to select multiple items
    # from a static list.
    # -------------------------------------------------------------------------

    view.add_block(InputBlock(
        label=PlainTextObject(text="Select many option"),
        element=StaticMultiSelectElement(
            placeholder=PlainTextObject(text='Select any of ...'),
            action_id=event_id + ".select_N",
            options=[
                Option(label='cat', value='cat'),
                Option(label='dog', value='dog'),
                Option(label='monkey', value='monkey')
            ]
        )
    ))

    res = modal.open(callback=on_main_modal_submit)

    if not res.get('ok'):
        app.log.error(json.dumps(res, indent=3))
Exemplo n.º 23
0
def first_recom(text):
    blocks = []
    if '메뉴' in text:
        food_and_location = text.split()[2:]
        blocks.append(crawl_one_restaurant(food_and_location))
    elif '선택' in text:
        block = SectionBlock(
            text="선택을 선택했구냠!! 너의 취향에 따라 메뉴를 추천해줄테니 골라보겠느냠!\n"
            "먼저 기준을 골라보겠냠?\n"
            "`~날씨` : 오늘 날씨에 딱 맞는 메뉴를 추천해주겠다냠!\n"
            "`~분위기` : 예쁜, 가성비, 깔끔 등 다양한 키워드로 특별한 날을 기념해 보는건 어떠냠?\n"
            "`~방문목적` 데이트, 회식, 혼술, 가족외식 등 목적에 따라 추천도 해주겠다냠!!\n"
            "`~편의시설` 강아지, 주차, 24시간 등 특별한 상황도 추천해주겠다냠!!\n"
            "`~인싸맛집` : 방송에 나온 핫한 식당을 가서 핵인싸로 거듭나는건 어떠냠!!\n"
            "위에 코드 중 하나를 선택해서 설명을 들어라냠!")
        blocks.append(block)
    elif '날씨' in text:
        if len(text.split()) < 3 or text.split()[2] == "":
            blocks.append(
                SectionBlock(
                    text="`~날씨 <키워드>` 형식으로 입력해보겠냠 키워드는 *비오는 날, 여름, 겨울 등*으로 해보겠냠"
                ))
        else:
            food = text.split()[2]
            blocks.append(crawl_one_restaurant(food))

    elif '분위기' in text:
        if len(text.split()) < 3 or text.split()[2] == "":
            blocks.append(
                SectionBlock(
                    text="`~분위기 <키워드>` 형식으로 입력해보겠냠 키워드는 *고급, 조용한, 예쁜 등*으로 해보겠냠"
                ))
        else:
            food = text.split()[2:]
            blocks.append(crawl_one_restaurant(food))

    elif '방문목적' in text:
        if len(text.split()) < 3 or text.split()[2] == "":
            blocks.append(
                SectionBlock(
                    text=
                    "`~방문목적 <키워드>` 형식으로 입력해보겠냠 키워드는 *회식, 데이트, 가족외식, 기념일 등*으로 해보겠냠"
                ))
        else:
            food = text.split()[2:]
            blocks.append(crawl_one_restaurant(food))

    elif '편의시설' in text:
        if len(text.split()) < 3 or text.split()[2] == "":
            blocks.append(
                SectionBlock(
                    text=
                    "`~편의시설 <키워드>` 형식으로 입력해보겠냠 키워드는 *무료주차, 발렛주차, 24시간 등*으로 해보겠냠"
                ))
        else:
            food = text.split()[2:]
            blocks.append(crawl_one_restaurant(food))

    elif '인싸맛집' in text:
        if len(text.split()) < 3 or text.split()[2] == "":
            blocks.append(
                SectionBlock(
                    text=
                    "`~인싸맛집 <키워드>` 형식으로 입력해보겠냠 키워드는 *수요미식회, 백종원의3대천왕, 생활의달인 등*으로 해보겠냠"
                ))
        else:
            food = text.split()[2:]
            blocks.append(crawl_one_restaurant(food))
    else:

        blocks.append(
            SectionBlock(text="`@<봇이름> 냠냠`으로 시작하면 안되냠. 이유는 없다 그냥 귀엽지않냠"))

    return blocks
Exemplo n.º 24
0
 def test_issue_628(self):
     elem = SectionBlock(text="1234567890" * 300)
     elem.to_dict()  # no exception
     with self.assertRaises(SlackObjectFormationError):
         elem = SectionBlock(text="1234567890" * 300 + "a")
         elem.to_dict()
Exemplo n.º 25
0
 def test_text_or_fields_populated(self):
     with self.assertRaises(SlackObjectFormationError):
         SectionBlock().to_dict()
Exemplo n.º 26
0
sys.path.insert(1, f"{dirname(__file__)}/../..")
logging.basicConfig(level=logging.DEBUG)
# ------------------


def legacy():
    from slack.web.classes.blocks import SectionBlock
    from slack.web.classes.objects import TextObject

    fields = []
    fields.append(TextObject(text='...', type='mrkdwn'))
    block = SectionBlock(text='', fields=fields)
    assert block is not None


from slack_sdk.models.blocks import SectionBlock, TextObject

fields = []
fields.append(TextObject(text='...', type='mrkdwn'))
block = SectionBlock(text='', fields=fields)
assert block is not None

#
# pip install mypy
# mypy integration_tests/samples/issues/issue_868.py | grep integration_tests
#

# integration_tests/samples/issues/issue_868.py:26: error: Argument "fields" to "SectionBlock" has incompatible type "List[TextObject]"; expected "Optional[List[Union[str, Dict[Any, Any], TextObject]]]"
# integration_tests/samples/issues/issue_868.py:26: note: "List" is invariant -- see http://mypy.readthedocs.io/en/latest/common_issues.html#variance
# integration_tests/samples/issues/issue_868.py:26: note: Consider using "Sequence" instead, which is covariant
Exemplo n.º 27
0
 def test_fields_length(self):
     with self.assertRaises(SlackObjectFormationError):
         SectionBlock(fields=[f"field{i}" for i in range(11)]).to_dict()
Exemplo n.º 28
0
def eatFood(food_name,user,uu):

    with open("food5.csv", 'rt', encoding='UTF8') as file:
        kal = 0
        for i in file:
            if food_name == i.split(',')[0].strip():
                kal = float(i.split(',')[1].strip())
        if kal == 0:
            head_section = SectionBlock(
                text="*" + food_name + "*" + " 의 칼로리에 대한 정보는 없네요 회원님 ㅠㅠ\n다른 음식을 찾아보시겠어요??"
            )
            block1 = ImageBlock(
                image_url='https://lh3.googleusercontent.com/9JbVrSd_VM5gtIES8nV1hFv9INJ5aOatExiwP9BOMjRL5StZKojJiZwNjvzyO5fJdToeh9fuoNEZwOkVEzWIj0znMJs3zVJtU__dfTzeQpBb72tI7v_H6UL654Up-Dz8UlvRg1QtCoE_qFR7_rjp60j-uVnw6H7v60nOc5sLzo0cFdxWJmo9NMvxPdHKVCsqLBLVresLeyL6Ulndh2ayShzKb4DCHnbH2kYBVQJ7HFNLuN_8wU5Z9lc0D97ppiX9awxoXqMgqvvS9epaBeg5Jn0KNEM4BdyAxTqbZcakZdCD3s8HjwJ0K0BOrbugNcKI9GPwsJ0Zjzoq9LUb6Yz8mJpoVAuMKMPJemI0NXCPLLzisjNzR6kCLI7Rc2BHSyIJkc4aEGWCMBTFKtd54SIQuv9lkCvK3kTOKfjS39G1-YDfGfWcbgU83l6TMPxOMQlU7l6328vd_QXOWe8c4WVv2Mh6toJnWXCwIwCghaxMGmqc5qwj96gUlBir-l1CooBPp1Ln-iurmhc1CeySEsCyfS2wa0Xz4AN8VNwMwOHHTJT6fgepWfZIrqby57GsyJ3fuBRekvQIkK_XIQmBYGnwmwGdcBF46j3bSMuAals0PraWUv8NptJaB2U48eGJfbV3H3NnqCniTyhkSuzklrnjjcN8F-Pukus=w530-h375-no',
                alt_text='이미지 오류'
            )
            return [head_section, block1]

    with open(user, "a+") as userfile:
        data = food_name + "/" + str(kal) + "\n"
        userfile.write(data)

    if sumOfcal(user) > getBaseUser(user):
        head_section = SectionBlock(
            text="*" + food_name + "*" + " 을 먹어서 지금 " + "*" + str(
                round(sumOfcal(user) - getBaseUser(user))) + "*" + " 칼로리를 초과했습니다.\n"+uu+" 회원님 갑시다, 진실의 방으로"
        )
        block1 = ImageBlock(
            image_url='https://lh3.googleusercontent.com/zqYPnV3JrUx6Dc4e5XyejXpgToe9AgvLRQS9tZehGM3QJ5bgzn4ecnNbean_vehAc6lanCI_msyG90jiElDMthDEWm1a9ksEPSL9hXGWfvpvB59a_1FvhHV2I3fqgdGpzpeqVOCpdq7Sdgg8sPRR_K3j2Kzwl615_KU88EgQObn_JP_30eMoRXWuqIJOFhlRLyd-nubo9UmnBSWn0t92qu2ZUecdGvpmwqY0sIuOjSo4YORvW-VYYcFureJJRVDpwJh845vWRSPn0rn6amlk61j7Eaevse4X6ML2hJME7yiXxfjfCf1P_ZbxRlJoViPZXJayd_dPmWMTESf6WDDMEo8F4udtzkBo2N1MYgoJdaivWC00wA5zq-tXotVQTkJkZwAjUiDImjlYsCGW39sdZoo9y7uscK1wNcZkYrmnTa0o-LZQ-7r-4d63A67CdSFzPlfKrzkpRqawjCsKwMf_bv7ussAWSz1NhEf36bmHowhCjd14oCpgO4ZHEnGHNG1MOka_0gQIgFD-yw7JVYlLHQ70NsQ9ict5FZL6QNxsn2MkjiODvA6KbZf7zotrKir7tD06Cay5eDF3KbaRs4u1yS9NcR-cr8lCdcS63qnI7UvZNUPFRkkheRtopnBDQKqYnfH_AQbPGgf5qp6Ov5xntkuUOXB5IGE=w480-h347-no',
            alt_text='이미지 오류'
        )
        return [head_section, block1]

    a = round(sumOfcal(user) / getBaseUser(user) * 100)
    if a < 25:
        t ="*" + food_name + "*" + " 의 칼로리는 " + "*" + str(kal) + "*" + " 입니다 "+uu+" 회원님~~.\n" + "누적된 칼로리는 " + str(
            round(sumOfcal(user))) + " / " + str(
            getBaseUser(user)) + " *-------" + str(
            round(sumOfcal(user) / getBaseUser(user) * 100)) + "%" + "*" + " 입니다.\n잘 하고 계시니까, 칼로리 안넘치도록 조심하세요!"
        b = 'https://lh3.googleusercontent.com/CSu1I7gQX8bDjVYVBZxxAjhAVZfg4o2O-rTYXuHvIpwGgfJPV3X5w5iis58nRCQqL16Qubvr1yy2N_YM7ZXGsMhNTKVePFLWNSLG1qOVd7A2D0pd1NVHWW1lUq4BC90_jU9m7F0vw3TpZqONE32IXqwFaEh7X8wPBGBkcfih2yHU0w44FfVnlHhuLhf0jn0qMCpT9TfdfU-FlnymfARPh4BiQP2tTAtA74-JqO_BJwMG-hZJDn0KzFQ2wTO7pxG-D70I2u4SbUHkmsEpD41yxYvdS8pOUpHqlNMuX7CuH3tXS1jWJ-vAZbV27UpfoLBGgEbE3lwA_kaq-iUgQISt7_lrvZcpQ_2byx793fEgWOfCeIPOCr22JkEfXzOeJ_Y4tYOGqUpSLbn5yh8Aj3JmakvtaMtPogfsucrm0cR9kUYW98-n9LstAATvwP4Am44jK0xl8DZ0o8YA5vblX8xX252cQ-uWK0gl4MqNjjlgLbOhaxdExcgQ3e8bGH8TNzh0ewKKjJPI86M5U6fdcxNF4TTzEjC9kH-z-QibqENjaEGzgP3yzuCA7eGAXBPUEqoXAOH3G0KyKPJ0yXUS-IEib8PDI_r5i461spcG83KzRxhpfa5g1EPbUkYWzMEpYBCgYd73UIiwTaXvs9CiIHSKmm7DmkyTvK4=w540-h289-no'
    elif a < 50:
        t ="*" + food_name + "*" + " 의 칼로리는 " + "*" + str(kal) + "*" + " 입니다 "+uu+" 회원님~~.\n" + "누적된 칼로리는 " + str(
            round(sumOfcal(user))) + " / " + str(
            getBaseUser(user)) + " *-------" + str(
            round(sumOfcal(user) / getBaseUser(user) * 100)) + "%" + "*" + " 입니다.\n아오, 회원님 때릴뻔 했네...\n 회원님 적당히 먹으세요\n부탁드리겠습니다~"
        b = 'https://lh3.googleusercontent.com/QG_TduWV3ygep12RCS-h3nuBIJomlBxkTRGxTXXSg9F9PqMCiELoiGbBXzS4V9zQvCDV6hH7Qwy9rJ4VMLFUjLXR0IaPukOzKXisWtu0zdEzsZ9KQfp4TKz2iLHkd8hUKukWHOMhYfd1SukIx-G4pQCBJ8KfWybnr7KB9uXY44kZJOl97aBa3oKyVa3B1ni7zC76f7keWW-ZUH4os1_ZjGRYpd7aTEhEdAH8KI8YvfwEP4uVXMCtEeT_Ruyjd4VXWEDBu4_lg_zz-6e7YSPS7tyOAB_gZ5Oj1jB44X2FOS2fkDx0W_DmwxqA9vBZ-4V1jOPhzdjM0AOMnGfSO-V_dNeHGGrvjHss_BqVnvKrMp_ShgP5IDbxJq5G5VK2qiP4zdB-l4oXwycz1AuhY4_zV_aRRLmPZ7A891Tke2692Dxd2AX5SdoWUWWUZJYGOxFWyCs8E1QvWPr06vyC5MHSr4RZX0bl4ls2l-4I8ncWT-vdD1MfvURs0-miAKMKybhTrSbYXb5qeh8bxbRxab3L_QdNHT57yp20P3SxOh8Pq-OiEJs6jgj1jIWKdPD4_zz7BLXeqowSd3LesCwWRZdLi3442jPOatbKjgJiTk-wnfz87y2fFpX4o7mhn2BTvLUmYyf1wx9ZXEg9uPCS5rVPRBAyt-oYl7U=w674-h448-no'
    elif a < 75:
        t = "*" + food_name + "*" + " 의 칼로리는 " + "*" + str(kal) + "*" + " 입니다 "+uu+" 회원님.\n" + "누적된 칼로리는 " + str(
            round(sumOfcal(user))) + " / " + str(
            getBaseUser(user)) + " *-------" + str(
            round(sumOfcal(user) / getBaseUser(user) * 100)) + "%" + "*" + " 입니다.\n회원님... 상큼하게 터져볼래요?\n지금 칼로리 위험위험 합니다 ^^"
        b = 'https://lh3.googleusercontent.com/WT9FEKwAw66v363gOt5TRBIzhLC_eUUyxgeIUGLRYhiCK_-Igpb0L2Fa2jzdB6fNmt8NftUu2RQ1GZ4B0ZLvNJ5WJSTmYUwgVz-f8AaQrF3Jr3M-Lxiamh1dcluggto_-qtEdSlM_0R4xfK45CpJtk8h-VSW2RNwyLUC4BNpNZsmXoDe14duD_CiODAJOAS0yvCvJQp7yzY2jWy3BUN3QwGxdCmidw9kM2nhzZGKNyo3OCbvBACKGVloxnuCfXQLB96tn4yxBcKjG_gxo0Mxod2kZL4PDWg0ovAEQHkF66mOe7Pyd2xp0wjume36wK4UTXXX2GbGpvZxypkiXm8EFTPDLURVu5Z_XxBCQargbZ9U6tR0c0EBf7SxZw6UAx52IisnVAmDzyvgg-JgLF_YjKb0UsJi2rEvMjMmeJbA9UnG2EWRV90LC3XTDjx34hpK6gPfJSIygx4hxkKZun0_jV0a9bQM-otHiG8_0hElej1wQm0FenEdYBnMBODEDw-48kozRKnUC-wkpqgwOTRN4vxriPkbuM7U1baBji-UZ60LjtVhQS2_ujO0mj-6xKEI5KahZl2Q8TP6MjvlalR3t9PvJKrlp3KRGaT9UWu9JpoWMveBi6nykfi2R6bJJP78BnwOYBjqJpfCgX1i9dJsgetj0ACmaxo=w700-h404-no'
    elif a < 100:
        t = "*" + food_name + "*" + " 의 칼로리는 " + "*" + str(kal) + "*" + " 입니다 "+uu+" 회원님.\n" + "누적된 칼로리는 " + str(
            round(sumOfcal(user))) + " / " + str(
            getBaseUser(user)) + " *-------" + str(
            round(sumOfcal(user) / getBaseUser(user) * 100)) + "%" + "*" + " 입니다.\n회..회원님... \n아 말리지 말아봐요..!!"
        b = 'https://lh3.googleusercontent.com/d-cUNReJdtzfj4Hvy-DEQ1fiIGXgQrtSGOvM1yyuAqq-o3B8iFOJPm40sQjC6qeXyAtkKiTTh6UQKqwVYDp0TfSHUHKDUbnqrUJ-g-zo0y2K-rTLnBV1jcBQTPkj_F0Mo06RBNSfUcgh5A6vfC03vgw1pwIZ2exo_-5YvmHh1BiSFMaB2NLHeBO1RxsfYRj0KayKZIIrojS9osRp6E3A_5QQmjiWcmwp3iqifKV5XLzT6ItJVYFyFgQUVX4yeq3XZUOdOpDa-2g-kzhkQSkFySDK1iv72cCwyFuqn4QxGQFQlFia2rKw26XuNUHQJGJ5kDgU1q-Zg-VUdfrAtwvEOajkw-I_f7cyXos7F2zfTAwK1Ti5QBP1vksU5_5rMeE867DEIG8ybRnMiFJQtdE1oDCkacKzlZM1gt3uspSfkVamKkpzdJ9gF-laaI7d_bE5gsqHe0N5aIvDLlF1WB7no2SA4gQp2HKNPUOCelq__gcEBye1jLgcbcELcGLRxKFzc87zNkOALaqVAJ2HBeR3IfIIzpyKF_ebw_oCpM0F1Rw2ESC4nDkijQbor22FSicbHfeLoRaPTKfwoXk3Et0sHquNyQ_bkBB9aFf5PQQhwhSJkdZLAX5pWPOm3Ou_aWO9ejplSpe82NEbu7CagXGRD-0s9UPhHcI=w550-h367-no'
    head_section = SectionBlock(
        text=t
    )

    block1 = ImageBlock(
        image_url=b,
        alt_text='이미지 오류'

    )
    return [head_section, block1]
Exemplo n.º 29
0
 def test_valid_construction(self):
     modal_view = View(
         type="modal",
         callback_id="modal-id",
         title=PlainTextObject(text="Awesome Modal"),
         submit=PlainTextObject(text="Submit"),
         close=PlainTextObject(text="Cancel"),
         blocks=[
             InputBlock(
                 block_id="b-id",
                 label=PlainTextObject(text="Input label"),
                 element=PlainTextInputElement(action_id="a-id"),
             ),
             InputBlock(
                 block_id="cb-id",
                 label=PlainTextObject(text="Label"),
                 element=CheckboxesElement(
                     action_id="a-cb-id",
                     options=[
                         Option(
                             text=PlainTextObject(
                                 text="*this is plain_text text*"),
                             value="v1",
                         ),
                         Option(
                             text=MarkdownTextObject(
                                 text="*this is mrkdwn text*"),
                             value="v2",
                         ),
                     ],
                 ),
             ),
             SectionBlock(
                 block_id="sb-id",
                 text=MarkdownTextObject(
                     text="This is a mrkdwn text section block."),
                 fields=[
                     PlainTextObject(text="*this is plain_text text*",
                                     emoji=True),
                     MarkdownTextObject(text="*this is mrkdwn text*"),
                     PlainTextObject(text="*this is plain_text text*",
                                     emoji=True),
                 ],
             ),
             DividerBlock(),
             SectionBlock(
                 block_id="rb-id",
                 text=MarkdownTextObject(
                     text=
                     "This is a section block with radio button accessory"),
                 accessory=RadioButtonsElement(
                     initial_option=Option(
                         text=PlainTextObject(text="Option 1"),
                         value="option 1",
                         description=PlainTextObject(
                             text="Description for option 1"),
                     ),
                     options=[
                         Option(
                             text=PlainTextObject(text="Option 1"),
                             value="option 1",
                             description=PlainTextObject(
                                 text="Description for option 1"),
                         ),
                         Option(
                             text=PlainTextObject(text="Option 2"),
                             value="option 2",
                             description=PlainTextObject(
                                 text="Description for option 2"),
                         ),
                     ],
                 ),
             ),
         ],
     )
     modal_view.validate_json()
Exemplo n.º 30
0
def joke(text):
    if 'ㅠ' in text:
        head_section = SectionBlock(
            text='회원님~ 울면 근손실 일어나요~\n울지마요~'
        )
        block1 = ImageBlock(
            image_url='https://lh3.googleusercontent.com/hguAuf5QNQrXgUcpzHiZvc8nATE4abjsm36RutYY2RmoRiunaPQYrtVu6bdabJOiAsGVYhNddP6Jwn9oFaBCOcd4yXyeiCK2jMQPSPNSY3Xf-y92L4ZPBwXUk2Sgy_PlvUrhcgnQaDdD5j2Q6GrRLPuFgNRa_B5eDeU8bloS7DiX7-Z-OIwQJFZPYau8bBiplhV6Qb1JEjEJm_9nOTAvuAYoRCGArs6_lFf53oAssxooJnuEnVu8L7VPfLzEnvovK65lvgHaFL2_-voZ5k7uF_vQGVgoSBXJgICOi9afhbKGfy5nqW6rvSYQGQBcKxuhzLAifkZwPfze93a7jLLjlh5uOjd_e_qsF0yAXlEGBqd3k1QehUVYjkZRdkc7_ULxsaWzDgQ1jtu0SYnwlM-WcdGRWf9kayGs3s-_yY0rjn6-TlTI0ip5EFhiVA-oqC1be5LCwGeEvxGCvmZgWvzE0LK8J90grXiINXxGF0xsAECO8-t3MU0eLPDzPazftQRKNMObEfBj5f0mA41n1ergumMc-iliJzx2M4_tN22mIUsq8nM7fP5AkULVrQHs7i_6dC1PE5ua3nxQLMHA8lc_-rIJln3Rqizn27sVJREyuW50hFHlQKfSzzfKT_0_IgYvdpfBO_E6AduGYrl3oXFf0jxPe9cIABk=w1080-h566-no',
            alt_text='이미지 오류'

        )
        return [head_section, block1]
    elif '배고파' in text:
        head_section = SectionBlock(
            text='이걸 보고도 밥이 목구녕으로 넘어가요?\n단식하세요 회원님~'
        )
        block1 = ImageBlock(
            image_url='https://lh3.googleusercontent.com/8coAcbfuPVGQusuhukNzXV5QyIjNIQN2TEgBEMGjk7OgGtJBGMoQlf6mYQB8fM5_U_O-q6EOhecKm7k4f5jMiLrJ8gsK3L3PLc9EZFcFdhJfWZ0lEnPee-BN7oOkV4_cwuEjvGIA33jMn0-t8I9bhfm3KwvEAYh7gWnCTdPt7xKL3xEhs2VPLQ3c8D4Nzkc1RExG55s6rhtLCU7Tx7G-2WIOghLbuOpdNL1aVejGXBTBnSU3CEN-7ElUo7yprjb7Y6dxRc0JpZHrveKH_mc0LU5-EUR4LERA2fImwtbpI0-jGBGLOZYzkGOyh04uVIHXfHuNe5yh9CAcNkizPJ3HgDr6yujtyA9Vw5XMgM5GOascxYvM-axlc7k2SUb0478XcipU6ErIS9V8_OiytFNcbJq4rcWWt55VwxUJXFWblf5-cXWapvADG-DRBc2_LJzTrCyC0Yr2cIjGR3PrN4DKIxj-d1TmXXCZx9q3Dbhf2YAY0Qi2jPYcJI2iwRZHpjrKOGQuEpe7a8-NmfvDgxYp5_GEc-JvDg9MQftGS9r3RnF5EmKTpa3T38CgWSAgx1pzcDY6VExt5pwqG5dZp0dNvokCqhw95dqjMRejkRfSTdZ2GwxlWAvLw6vvYXhigSWmSGg2CePCENNnY5IZfXcaXTWUh2AUPL0=w562-h555-no',
            alt_text='이미지 오류'

        )
        return [head_section, block1]
    elif '언더아머' in text:
        head_section = SectionBlock(
            text='언더아머는 3대 500치는 회원님들만 착용 가능합니다.\n단속걸리지 않게 조심하세요 회원님~'
        )
        block1 = ImageBlock(
            image_url='https://lh3.googleusercontent.com/dZtOqOrDykNsxJDCb1JePrlnUHRJ6KAZ5kBTdhObypu6kEi-kFYo2nJYdCmlHKnPPfSHxgjSGqA5fVju6YVh6Fq8G6BeFkx7s-l42mkTG0j8GseW-_NKLfXv1f0gKLzHdyq4SuvY5BIJCVpmWdzPK_m6W64uZHNQJaFoOQOSXbwEYdugI1aMFWnZiPW3a3lvFZGAZ9gf9chKumwdxDLs8hb1TMsjlnP-l3OXGeMvd0cZUXxGDPtwfJ-7UWzbEelwpCVC6PynqdMNBcJ-aO92fpx7H6YxCTa8mkeNvKjF7N9UXSeOxkjwv9nCw2vxJdRm7apLXIjPQuCnf70KBtj7yE-Cai4Ri-T2Z1l4sJL7qXU-TKf8jHPmmL5Q1LYgszkuU5XWJsyx5AB2eMUpBhxPRFqdVpK1kJ7cv8i0Z1fo-rL8AZV5CrvLCajY0UWefjbJPNgxdcTKjahuX1nmANUEdLl12pz6X-NXPoYrays12hFjdUVs4jf3L8lkvwQpgLML4tyG_94KBj3shr6885TuWMJ8bzXrX4-wExhpkb83bQ5Y6Fx7T-98zmzFv9GUgDJN0uYyDyxfNdIEqU9OVTz8IgEOJwBEn1dhYCpSwEDfK6ytPfb65MuCOM3rF-OccVIlKy3iRfoqn0lTTh9nbgrZVALFuBqjVG4=w480-h360-no',
            alt_text='이미지 오류'

        )
        return [head_section, block1]
    else:
        a = random.randint(1, 4)
        if a == 1:
            head_section = SectionBlock(
                text='운동만이 살길입니다 회원님~\n오늘도 식단관리 화이팅~!'
            )
            block1 = ImageBlock(
                image_url='https://lh3.googleusercontent.com/WtzRAuX3FBFWkaJ9f_V9pz4SZeaF0eKtLMBuzG3UQUGMpPwwXDuJRBCm-ywHPXtnseBoQHJY0VL403dRWeBzeC1cbqg-_sonFaboyMbdUE3PK7Dkk7wg6ttB62zU1KcsDQDN5CkBwD8p-46Zrhrbzx6YLj_PEMk8vT3-H11Yv_XRz6liNpOctV_b-ZdSxmxm7ASrbzr2alRXi7LYOc4cBwTTRXSx5RuLsC0YexIY2dbkvctU-uVAwE8D1pVy4oyDhO_JDFvUJ_23tW5PC9hZSxlFfFZbs2Us6JOgJXQTAuV6_v9-ttElhZ3HdmnMhshjs9nOB_msBFIcgFOJiVXbyVHpq_C9z9Me7O3HztaKI2NKStevMVROwVE4Y4LnkAYXPk2GqOIpBHQmOXltIPguu-bWwWfIE7HLFiZ9hPYJdyFr3ocfhxbp6XASnsTKnT8Uo-qKGJvb4UkYSO9snqZBlMqiODjbcxNX5ER2MTyvAoHJCvVrWo_pYNwJmAAjBUR476xr8O8lJLu6_4mJAjx7D1HH6KkV98kedOBI8ZCoXwBbWNLjRJ0GdzLcBlIrDXnf1dsi_UVgUvQ4SN4CffrzlSIFopeAfaCQDPCwVJ4-VKvwg42rkjZGfmOovlgeAq2x9NporUOBkY45BXJ9Z4xLYAUbPsJQElM=w300-h168-no',
                alt_text='이미지 오류'

            )
            return [head_section, block1]
        elif a == 2:
            head_section = SectionBlock(
                text='운동은 마음가짐입니다 회원님~\n열심히 노력하셔야 해요!'
            )
            block1 = ImageBlock(
                image_url='https://lh3.googleusercontent.com/sfUnnQaoAysIBzSBkrLbZwO3bUThjF9E0Lb2JxB-QyJ6OgLo5RfGrAubkZKvm31b-zWyhYzsEM_V3_pyrrh_vvjNymptF6BF7YrfvUAdp5VNCBW76ZpOd06-VCjXpe0de0X0jlW6akvPwKxb0UNrkrIIY9ys8cFtMehj004xv7tsTycUXRiwPr83PLFYmUI9d1jCiUfM0HpBntUSO6Kc76PjPI-mNPaxrakpqlvTuPDaxbohioDQFTnJpkTUX6ZmeLX2Tz0M4viIhIFiv3ph5rONmeM_LxYbAc77l_9Y8EeRhdDBCNjxahyquZt4AAH4ots0Yf2FNbxFXsFQph7_UT3PddapAwb0x5rOZflttIxoDiaWbuPWP3uPVM3BW94VsDt6NE6SCHIT0_pnRtr2AYdGQ5VlI2EQ4ocN-ueH89WDOLuZh5GErO77uJTdp9V1rGJhU6Dyvqy19_xV0Udd9Byf9QcQsQ95d7BOHS92FroJFRk6E5igmRNe8VTsJgxX_Fu5Dz-XcaVVpb86BmlaedE10v-ZautFloH9DR-GLjeKhwc1ZTUB5aihno_SWN7h4bAs-krDYZ0TChFV8Q_YsxhSrV43zVK_20oIBFm7YYLWt1PzP-rF1TkQSkONOkbuc5f_F1gskOOBjL_wqRCakZ5lKpB6GCQ=w1200-h675-no',
                alt_text='이미지 오류'

            )
            return [head_section, block1]
        else:
            head_section = SectionBlock(
                text='몸도 중요하지만 회원님~\n몸완얼인것도 아시죠??'
            )
            block1 = ImageBlock(
                image_url='https://lh3.googleusercontent.com/MYuP8tgvOl03wNHV0hpwXc_Lbd8937HIzKzmfO1Z2mZdaKuaNUjUkRt5v2j9hvq7R-yS1M6XTcQvE5SQ9lF1fy3YgLyX5E60pbuhzp_e5D6MDzXixj-k-q2-JBKc-_NfClsOwW3fKS2Crh-2vdjhDSjvVz9QrFyNcsBp3wHVHoomzhtnie9rQqN5lJKxmQjOzeO_2eqyDAimS9udOrhQruokCb3wwfNTe9x9R01KeBCR1DzGDcuhZeCvgQ6ae9tTmSSYr1AtDCxpGPN62e9xgPx8uf6zCtiYJkPwzqcW37363fYb9v0I9Ua2O6MgMicDt1dfba18zguP4sGmr3kpzDh6q4MKSOSwSN0XBDRUfZo2GbtZ5ZQj__s3c7Rv5p-WvwQQLBnM-uvx0WOmnyFEOO47UdJg3XU1AYMsb5gmtaIN7x3dhVxPBiuku1KWwZC1NcD59oHc9Gxk1q5LiykC-iDTlo5FKAC1WYvbDFZn2uhHwGJDQuvWEb5Qcpnf2WkLM4vfeAE1dm_LUk_KdvZue6Hs6jv_3BmbMAdxSWGUHA2hGLqrmlxIM9RR4KFVWN2gcqNZO19tz9y74U3uMdx2N7xmuepFF_WTnSOf4nu8QNbpVSV2wLLnaJRmzy5iLDYTGL77S9iNHIG-JtXd2COq1AmVwvFXKE4=w188-h268-no',
                alt_text='이미지 오류'

            )
            return [head_section, block1]