Elixir에서 Github Trend를 게시하는 Bot을 만들어 보았습니다.
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 Name
및 Development 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.exsconfig :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.exsconfig :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"
},
...
이번에는 이렇게 지정하고 있습니다.title
와 title_link
를 사용하여 모든 문자열을 링크로 만들 수 있습니다.color
에 문자 코드를 지정하여 맨 앞에 색으로 표시 할 수 있습니다.
등등, 약간의 외형의 커스터마이즈를 할 수 있습니다.
자세한 내용은 여기에 문서가 있습니다.
Reference
이 문제에 관하여(Elixir에서 Github Trend를 게시하는 Bot을 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tamanugi/items/4c0359ebb5a8b2d89803
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Slack API 토큰 얻기
먼저 Slack API 토큰을 가져와야 합니다.
손쉬운 일은 htps : // 아피. scck. 코 m / kus와 m-i-g 라치온 s 페이지입니다.
토큰을 생성하는 것이 가장 간단하다고 생각합니다.
(단지 이쪽의 토큰은 레가 시트 쿤이라고 있어, 비추천이 되고 있는 것 같습니다.)
일반 토큰을 얻으려면 앱을 만들어야 합니다.
앱을 만드는 단계
1. htps : // 아피. scck. 이 m/아 ps 방문
2.
Create New App
를 클릭합니다.3.
App Name
및 Development 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"
},
...
이번에는 이렇게 지정하고 있습니다.title
와 title_link
를 사용하여 모든 문자열을 링크로 만들 수 있습니다.color
에 문자 코드를 지정하여 맨 앞에 색으로 표시 할 수 있습니다.
등등, 약간의 외형의 커스터마이즈를 할 수 있습니다.
자세한 내용은 여기에 문서가 있습니다.
Reference
이 문제에 관하여(Elixir에서 Github Trend를 게시하는 Bot을 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tamanugi/items/4c0359ebb5a8b2d89803
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
[
{
"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"
},
...
Reference
이 문제에 관하여(Elixir에서 Github Trend를 게시하는 Bot을 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tamanugi/items/4c0359ebb5a8b2d89803텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)