Python을 사용하여 SlackBot을 만드는 방법

7525 단어 슬랙Python3slackbot

이전 쓰기(날아가도 좋다)



slackbot이라고 하면 hubot!



그런 식으로 생각했던 시기가 내게있었습니다.

이건 라든지 이건 라든지 읽어 보면 좋다!
좋아!

Hubot은 머리! 신!

하지만 지금부터 CoffeeScript를 배우는 것은 어렵습니다.



어쨌든 프로토 타입 작성 납기가 21 일 (만들게 된 것이 18 일의 날이 떨어진 후).
할 수 없는 일도 없겠지만, 구현하는 기능의 공부 시간을 생각하면 상당히 엄격하다.
어드벤트 캘린더도 쓰지 않으면 안 되고.

어쨌든 Hubot에 넣어도 지금은 Python으로하고 싶다.

있습니다. 있어요. Python에서 사용할 수있는 Slackbot 라이브러리가!



Python의 slackbot 라이브러리로 Slack 봇 만들기

이 페이지를 참고로 Python을 사용하여 Slackbot을 만들어 보았습니다.

Slack에서 사용할 Bot 계정 만들기



우선, Bot으로 응답해 주는 인터페이스를 만들어야 아무것도 할 수 없습니다.
여기 에서 Bot 계정을 만듭니다.

작업공간에 로그인하지 않은 경우 먼저 로그인합니다.



Bot 계정의 이름을 입력하여 봇 통합을 추가합니다.



API 토큰이 발행되므로 이를 기록해 둡니다.



이 Bot 계정의 토큰을 사용하는 것이 첫 번째 팁입니다.
생각해 보면 당연합니다만, 낡은 정보라면 레가 시트 쿤을 이용하기도 하고 있으므로, 주의가 필요합니다.

slackbot 설치



익숙한 pip를 사용하여 설치합니다.# pip3 install slackbot
이것만.

디렉토리 구조 만들기



다음의 형태로 작성합니다.
slackbot
    ├ run.py
    ├ slackbot_settings.py
    ├ plugins
    │   ├ __init__.py
    │   └ my_mention.py
    └ libs
        ├ __init__.py
        └ my_functions.py

slackbot: 최상위 디렉토리. 이름은 무엇이든 좋다.
run.py: slackbot을 시작하기 위한 파일.
slackbot_settings.py : slackbot 설정 파일.
plugins: bot의 기능을 추가하기 위한 디렉토리.
my_mention.py : slackbot의 기능 파일. 이름은 무엇이든 좋다.
libs: my_mentions.py에서 호출하는 모듈의 배치 디렉토리. 적당히 만들었습니다.
my_functions.py: 뒤에서 움직이는 모듈 파일. 적당히 만들었습니다.

초기 설정



run.py
# -*- coding: utf-8 -*-
from slackbot.bot import Bot

def main():
    bot = Bot()
    bot.run()

if __name__ == "__main__":
    print('start slackbot')
    main()

slackbot_settings.py
# -*- coding: utf-8 -*-

# botアカウントのトークンを指定
API_TOKEN = "xxxx-xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx"

# このbot宛のメッセージで、どの応答にも当てはまらない場合の応答文字列
DEFAULT_REPLY = "何言ってんだこいつ"

# プラグインスクリプトを置いてあるサブディレクトリ名のリスト
PLUGINS = ['plugins']

시작 확인


$ python3 run.py
오류 없이 start slackbot 라고 표시되면 문제 없습니다.Ctrl+C 로 종료합니다.

멘션 만들기



my_mention.py
# -*- coding: utf-8 -*-
from slackbot.bot import respond_to     # @botname: で反応するデコーダ
from slackbot.bot import listen_to      # チャネル内発言で反応するデコーダ
from slackbot.bot import default_reply  # 該当する応答がない場合に反応するデコーダ

from libs import my_functions           # 外部関数の読み込み

# @respond_to('string')     bot宛のメッセージ
#                           stringは正規表現が可能 「r'string'」
# @listen_to('string')      チャンネル内のbot宛以外の投稿
#                           @botname: では反応しないことに注意
#                           他の人へのメンションでは反応する
#                           正規表現可能
# @default_reply()          DEFAULT_REPLY と同じ働き
#                           正規表現を指定すると、他のデコーダにヒットせず、
#                           正規表現にマッチするときに反応
#                           ・・・なのだが、正規表現を指定するとエラーになる?

# message.reply('string')      @発言者名: string でメッセージを送信
# message.send('string')       string を送信
# message.react('icon_emoji')  発言者のメッセージにリアクション(スタンプ)する
#                              文字列中に':'はいらない
@respond_to('メンション')
def mention_func(message):
    message.reply('私にメンションと言ってどうするのだ') # メンション

@listen_to('リッスン')
def listen_func(message):
    message.send('誰かがリッスンと投稿したようだ')      # ただの投稿
    message.reply('君だね?')                       # メンション

여기의 포인트는, 외부 모듈을 읽어들일 때에 from libs import <モジュール名> 로 하는 것입니다.
run.py에서 시작하기 때문에 run.py에서 본 상대 경로로 읽어야합니다.



run.py를 시작하고 이렇게 반응하면 성공입니다.
그리고는 아이디어에 달려 있습니다.

Enjoy your bot!

좋은 웹페이지 즐겨찾기