iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 17
1
自我挑戰組

LINE BOT 新手村30日攻略系列 第 17

Day17 口罩查詢系統 - 2

  • 分享至 

  • xImage
  •  

我們接續前一篇的內容,今天要將 Flex 版型建立起來,並完成 logger.py
口罩查詢系統 Github 連結

建立 Flex 版型

又來到建立 Flex 的時間了XDD
一樣來到 Flex Messge Simulator 建立 Carousel 或是 Bubble
因為 Carousel 是包含多個 Bubble ,所以只需要建立一個版型即可

目標成果如下
當然,也希望大家可以自己嘗試自己玩玩看

Hero

挑一張喜歡的圖片放進去
aspectRatio 的部分選擇適當的比例
因為我選的圖片是沒有背景顏色的,所以我在這裡設定了 backgroundColor

Body

首先是標題

接下來的區塊都會另外用 horizontal Box 隔開,之後方便塞入資料

而架構都相同,每個 Box 裡面存放兩個 text
一個是資料名稱,一個是資料內容

Footer

最後要在 Footer 建立一個 Button
這次要使用 Postback Action ,用來判斷是否要回傳地圖資訊

現在我們已經完成 Flex 版型設計囉~
接下來一樣找到右上角的 View as JSON

我們只需要將 contents 裡面的一個區段複製起來就可以囉~

將剛剛複製起來的檔案放到 data/json/Bubble.json
data/json/Card.json 的部分如下

{
    "type":"carousel",
    "contents":[
      
    ]
}

建立 logger.py

在開發專案的時候,常常會遇到 Bug
透過建立 log ,可以更方便了解哪裡出現問題

首先在 MAPPING 設定了各種類型訊息的顏色
在 python 中如果要輸出單行有顏色的字,可以用 \033[{顏色ID}m{字串}\033[0m
如果要完更多的話,可以參考這篇CSDN

import logging
from copy import copy
from logging import Formatter

MAPPING = {
    'DEBUG': 37,  # white
    'INFO': 36,  # cyan
    'WARNING': 33,  # yellow
    'ERROR': 31,  # red
    'CRITICAL': 41,  # white on red bg
}

PREFIX = '\033['
SUFFIX = '\033[0m'


class ColoredFormatter(Formatter):
    def __init__(self, patern):
        Formatter.__init__(self, patern)

    def format(self, record):
        colored_record = copy(record)
        levelname = colored_record.levelname
        seq = MAPPING.get(levelname, 37)  # default white
        colored_levelname = ('{0}{1}m{2}{3}') \
            .format(PREFIX, seq, levelname, SUFFIX)
        colored_record.levelname = colored_levelname
        return Formatter.format(self, colored_record)

# Create top level logger
logger = logging.getLogger("root")

# Add console handler using our custom ColoredFormatter
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
cf = ColoredFormatter("[%(name)s][%(levelname)s]  %(message)s")
ch.setFormatter(cf)
logger.addHandler(ch)

最後將 log 結果輸出到 log.log

# Add file handler
fh = logging.FileHandler('log.log')
fh.setLevel(logging.DEBUG)
ff = logging.Formatter(
    '[%(asctime)s] - [%(name)s] - [%(levelname)s] - %(message)s (%(filename)s:%(lineno)d)'
)
fh.setFormatter(ff)
logger.addHandler(fh)

# Set log level
logger.setLevel(logging.DEBUG)

if __name__ == '__main__':
    logger.debug('A debug message')
    logger.info('An info message')
    logger.warning('Something is not right.')
    logger.error('A Major error has happened.')
    logger.critical('Fatal error. Cannot continue')

到這邊,我們就順利建立好 logger.py 囉~
在下一篇,我們會將最後的步驟完成

後記

python 輸出顏色的字是真的很棒
而且透過顏色,很快就可以分辨訊息到底是什麼類型

下一篇終於要讓系統跑起來啦!
希望各位玩得開心~

參考資料

LINE Message Simulator
CSDN python 輸出顏色
口罩查詢系統 Github 連結


上一篇
Day16 口罩查詢系統 - 1
下一篇
Day18 口罩查詢系統 - 3
系列文
LINE BOT 新手村30日攻略30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言