Elixir에서 Github Trend를 게시하는 Bot을 만들어 보았습니다.

7936 단어 슬랙ElixirGitHubbot
이 기사는 Slack Advent Calendar 2017의 4 일째 기사입니다.

Github에는 현재 인기 있는 리포지토리를 확인할 수 있는 페이지Github Trending가 있습니다.

이것이 보고 있는 것만으로도 꽤 재미있고, 또 화제가 되고 있는 툴등도 알기 때문에,
매일 가능한 한 체크하고 싶다고 생각했습니다.

그래서 매일 확인하기 위해이 Github Trending 페이지를 스크래핑합니다.
Slack에 게시하는 Bot을 Elixir로 만들어 보았습니다.

만든 것





▼Slack 캡처





사용법



Slack API 토큰 얻기



먼저 Slack API 토큰을 가져와야 합니다.
손쉬운 일은 htps : // 아피. scck. 코 m / kus와 m-i-g 라치온 s 페이지입니다.
토큰을 생성하는 것이 가장 간단하다고 생각합니다.
(단지 이쪽의 토큰은 레가 시트 쿤이라고 있어, 비추천이 되고 있는 것 같습니다.)

일반 토큰을 얻으려면 앱을 만들어야 합니다.

앱을 만드는 단계
1. htps : // 아피. scck. 이 m/아 ps 방문
2. Create New App를 클릭합니다.
3. App NameDevelopment Slack Team를 입력하고 Create App를 클릭하십시오.
4. Add features and functionally에서 Permissions 선택
5. Permission Scopes에서 chat:write:bot 선택
6. Install App to Team를 선택하고 설치
7. OAuth Access Token이 발행됩니다

Github Trend Bot 설치 ~ 동작



Slack API Token을 안전하게 얻을 수 있다면,
Bot을 설치합니다.

1. 리포지토리를 복제하여 필요한 모듈 설치
git clone https://github.com/tamanugi/github_trend_bot
cd github_trend_bot 
mix deps.get 

2.Slack API 토큰 설정

config.exs에서 이전에 얻은 API 토큰을 설정합니다.
채널에 게시할 채널 이름을 입력합니다.
option은 그 외 설정하고 싶은 옵션이 있으면 여기에 Map으로 기술합니다.
설정할 수있는 옵션은 Slack API 문서을 참조하십시오.

config/config.exs
config :slack,
  api_token: "enter_your_token",
  channel: "github_trend",
  option: %{username: "GitHub Trend Bot"}

3.Slack에 게시할 시간 설정

Elixir에서 cron적인 일을 해주는 quantum이라는 라이브러리를 사용하고 있습니다.
htps : // 기주 b. 코 m / c 라 ck / 쿠안츠 m 에어 r

설정은 config.exs에서 cron 형식으로 설정할 수 있습니다.
자세한 내용은 위의 github를 참조하십시오.

config/config.exs
config :quantum, GithubTrendBot.Scheduler,
  jobs: [
    {"0 * * * *", {GithubTrendBot, :post_trend, []}}
  ]

4. 앱 시작

나머지는 다음 명령으로 실행하면됩니다.
mix run --no-halt

설정한 시간이 되면 지정한 채널에 투고된다고 생각합니다

5. 동작 확인

동작 확인은 iex를 사용하여 할 수 있습니다.
iex -S mix
iex(1)> GithubTrendBot.post_trend

Slack에 게시 메시지 형식 정보



Slack에서는 Incoming Web Hook 또는 Web API를 통해
메시지 게시물의 경우 attachment라는 파타미터로
메시지의 모양을 사용자 정의할 수 있습니다.
[
  {
    "title_link": "https://github.com/getify/You-Dont-Know-JS",
    "title": "getify/You-Dont-Know-JS",
    "text": "A book series on JavaScript. @YDKJS on twitter.",
    "fields": [
      {
        "value": ":star: 71,342 / 73 stars today"
      }
    ],
    "color": "#36a64f"
  },
  {
    "title_link": "https://github.com/vuejs/vue",
    "title": "vuejs/vue",
    "text": "A progressive, incrementally-adoptable JavaScript framework for building UI on the web.",
    "fields": [
      {
        "value": ":memo: JavaScript"
      },
      {
        "value": ":star: 75,554 / 74 stars today"
      }
    ],
    "color": "#f1e05a"
  },
...

이번에는 이렇게 지정하고 있습니다.titletitle_link를 사용하여 모든 문자열을 링크로 만들 수 있습니다.color에 문자 코드를 지정하여 맨 앞에 색으로 표시 할 수 있습니다.
등등, 약간의 외형의 커스터마이즈를 할 수 있습니다.

자세한 내용은 여기에 문서가 있습니다.

좋은 웹페이지 즐겨찾기