Code Monkey home page Code Monkey logo

old_ver_bot's Introduction

HQ_bot

urllib, requests 버전업이 필요합니다!!!!

python 으로 만든 slack bot입니다. 사용 라이브러리는 아래와 같습니다.

  1. Flask
  2. Slacker
  3. SlackClient
  4. bs4
  5. FeedParser

위 봇은 아래와 같이 작동합니다.


사용법

@봇 이름

봇에게 멘션할 시 버튼 선택 기능을 답변해 줍니다. 특정 키워드 (안녕, 메롱, 꺼져) 를 멘션할 시 답변도 해줍니다. 봇의 답변에 선택함에 따라 특정 키워드 입력 시와 동일한 함수를 실행합니다.

특정 키워드

오키, 클리앙 , 지디넷, 디데일리, 블로그, 시사 키워드 입력 시 해당 사이트를 크롤링하여 보여줍니다.


설정법

  1. 슬랙 앱부터 만듭니다.(https://api.slack.com/apps/) 저기서 만드시면 됩니다.

만드신 후 여기(https://api.slack.com/bot-users)로 이동하셔서, 봇을 만드세요. 왜 앱에서 봇을 만드냐면, 앱만이 interaction(사용자의 버튼 클릭 등)을 할 수 있거든요!

  1. 슬랙 토큰들을 등록합니다.

SLACK_VERIFICATION_TOKEN 에 등록하세요.

  1. oAuth도 만들어서 등록합니다.

아래 있는 토큰을 SLACK_BOT_TOKEN 에 등록하세요.

위 곳에서 등록할 수 있습니다.(사실 어디인지 찾기가 아주 불편합니다)

  1. 이 내용들을 env.py안에 등록하여 사용합니다.

자신의 개인정보는 소중하니 이 정보들을 깃허브 등에 올리지 않게 주의 하도록 하세요.

  1. 서버를 만듭니다. 가. 로컬 서버인 경우 a. ngrok를 까세요. b. 그리고 ngrok가 있는 곳에 가서 cmd창에 ./ngrok http 5000을 쳐보세요.(5000은 포트 번호예요.) c. d. 이렇게 online 이 뜨면 되어요. 여기서 뜬 주소에서 Forwarding 에 있는 주소가 외부에서 자신의 컴퓨터로 접속하는 주소입니다.

나. 이미 있는 경우 a. 자신의 주소/slack/message_actions/slack/message_options 로 설정하세요.

  1. 여기가 보이시나요? 여기서 이 주소를 설정 하세요. 위는 버튼 클릭 등에 대한 리퀘스트를 받아 올 주소이고, 아래는 옵션 선택에 대한 값을 받아 올 주소입니다. 저희 봇에서는 차례로 /slack/message_actions/slack/message_options 로 설정했어요.

  2. outgoing webhook(https://api.slack.com/outgoing-webhooks) 설정 페이지로 가서, 를 설정하세요.

  3. 포스팅할 채널 이름을 입력하고, URL에 저런식으로 자기 주소/slack으로 설정하세요.

여기 토큰을 SLACK_WEBHOOK_SECRET 에 등록하세요.

  1. 자기가 쓸 채널에 만든 봇을 추가하세요. /invite @봇이름

  2. pip install requirements.txt로 필요 라이브러리도 설치 한 후,

  3. 봇을 python slack.py 로 실행 해 보세요


소스 설명

# 주석을 보시면 되시지만 몇몇 내용에 대해 설명해 드립니다.

# clien, ddaily, okky_tech, rssParse, ycombinator, zdnet은 각 사이트에서 크롤링을 해오는 내용입니다.
# 자기 취향에 따라 여러 곳에서 문서를 얻어와 보세요.

# rssParse는 rss 구독이 가능한 기술 블로그들 중 랜덤으로 5곳에서 HTML을 파징해와 가장 최신 글과 URL을 리턴합니다.

# slack.py가 메시지를 받아오고 보내는 주 소스입니다.

## MsgSlack()함수는 크롤링해 받아온 딕셔너리를 넣어서, 슬랙에 보낼 내용을 리턴합니다.
### title, title link, color 등은 슬랙 attachment의 양식입니다.(*json 형식)

## inbound는 슬랙과 통신하는 함수입니다.
### 채널별, 메시지별로 반응을 다르게 하고 있습니다.

## message_options 과 message_actions 은 슬랙에서 사용자가 봇에게 반응한 내용을 받아온 후 작동하는 함수입니다.
### 선택을 버튼으로 했는지, 아니면 셀렉트 박스로 했는지에 따라 다르게 반응 하도록 구현 해 두었습니다.

# envsetting.py 는 자기 개인 토큰 정보를 저장하라고 만들어 두었어요.
# env.py로 바꿔 쓰시거나 slack.py에서 import envsetting을 하세요.


질문이나 안되는 기능은 이슈에 적어 주세요.

old_ver_bot's People

Contributors

jinmay avatar sinramyeon avatar vivalavida20 avatar whtngus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.