slackbot 비망록 ~기본편 2~

소개



파이썬으로 slackbot을 만든 비망록 파트 2

지난번 , 작성하고 있을 때 이것을 만들고 싶었던 것
  • 기동시의 최초의 사람
  • 완전 일치 또는 여러 단어로 트리거 발동
  • 앵무새 반환

  • 위의 세 가지를 이번에 만들었습니다.

    시작시 첫 번째



    시작시 slack에서 "시작했습니다!"라고 표시하고 싶습니다.
    그래서 여러 가지를 살펴 보았을 때 slacker를 사용하면 할 수 있습니다.

    슬래커



    시보와 알림으로 자주 사용하는 것 같습니다.
    slacker 단독으로 「기동했습니다!」를 보내 보자

    slacker 패키지 설치
    pip install slacker
    

    디렉토리 구조는 다음과 같습니다.
    slackbot
     - run.py               # slackbot起動用ファイル
     - slackbot_settings.py # slackbot設定用ファイル
     - post_message.py      # post message用ファイル
     - plugins
         - __init__.py     # モジュールを示すファイル(中身は空)
         - my_mention.py   # slackbot機能用ファイル
    

    프로그램



    post_message.py
    # coding:utf-8
    from slacker import Slacker
    imoport slackbot_settings  # API_TOKENを使用するため
    
    slack = Slacker(slackbot_settings.API_TOKEN)
    slack.chat.post_message(
        'general',
        '起動しました!',
        as_user = True
    )
    



    덧붙여서 slack.chat.post_message로 봇 이름과 아이콘을 설정할 수도 있다

    post_message.py
    slack.chat.post_message(
        'general',
        '起動しました!',
        username = 'bot君',
        icon_emoji = ':robot_face:'
    )
    

    이 녀석을 run.py에 넣으면

    run.py
    # coding:utf-8
    
    from slackbot.bot import Bot
    from slacker import Slacker
    
    import slackbot_settings
    
    def main():
        # 省略
    
    if __name__ == "__main__":
        slack = Slacker(slackbot_settings.API_TOKEN)
        channel = 'general'
        message = '起動しました!'
        slack.chat.post_message(
            'general',
            '起動しました!',
            username = 'bot君',
            icon_emoji = ':robot_face:'
        )
        main()
    



    무사히, 기동시에 코멘트를 했다!

    완전 일치 및 여러 단어로 트리거 발동



    마지막으로 respond_to ( '안녕하세요')는 부분 일치로 발동하는 것으로 나타났습니다.
    이번에는 완전 일치하고 여러 단어에도 대응할 수 있도록 바꿉니다.

    정확히 일치하려면 정규식 사용

    my_mention.py
    # ^ => 先頭にマッチ, $ => 末尾にマッチ
    @respond_to('^こんにちは$')
    def respond_func(message):
        message.reply('こんにちは!')
    

    복수의 단어에 대응하기 위해서는, @respond_to 를 연속으로 기술한다

    my_mention.py
    # あまり使用しないが、listen_toも連続で記述すれば発動する
    @respond_to('^こんにちは$')
    @respond_to('こんちは')
    @listen_to('こんにちわん')
    def respond_func(message):
        message.reply('こんにちは!')
    

    결과는 다음과 같습니다.



    앵무새 반환



    「안녕」이라고 하면 「안녕」이라고 한다.
    「안녕하세요」라고 하면 「안녕하세요」라고 한다.
    「안녕하세요」라고 하면 「안녕하세요」라고 한다.
    고다마입니까? 아니, 누군가. 낡네요...웃음

    이런 식으로 앵무새를 돌려
    def function_name(message)
    

    전회 특히 아무것도 건드리지 않고 쓴, 함수 안에 있는 message
    여기에는 전송 된 메시지의 정보가 들어 있습니다.
    이 중 message.body [ 'text']를 사용하여 메시지 문을 검색하고 출력합니다.

    my_mention.py
    @respond_to('^おはよう$')
    @respond_to('^こんにちは$')
    @respond_to('^こんばんは$')
    # 削除 @respond_to('こんちは')
    # 削除 @listen_to('こんにちわん')
    def respond_func(message):
        #メッセージ文取得
        mes = message.body['text']
    
        message.reply(mes)
    

    결과는 다음과 같습니다.



    조금 봇인 것 같아서 재미
    정규 표현이나 messege의 내용을 조사하면 좀 더 즐거워질 것 같다
    다음 번에는 그 근처를 수정해 가고 싶다( ˘ω˘ )

    좋은 웹페이지 즐겨찾기