GitHub 작업에서 트윗하기



사진 제공: Ravi Sharma on Unsplash


저는 최근DiscoverWeekly.dev 개발자가 만든 새로운 음악 재생 목록을 매주 수요일 공유하는 웹 사이트를 시작했습니다.

정보를 전파하고 사람들이 구독할 수 있도록 RSS 피드 외에도 계정을 개설하고 뉴스 재생 목록에 대해 일주일에 한 번 트윗하는 봇을 개발했습니다.

다음은 GitHub Actions에서 주기적으로 실행되는 Twitter 봇을 만드는 방법입니다.


트위터 API



트윗은 Twitter API의 도움으로 게시됩니다. 이러한 기능에 액세스하려면 개발자 계정을 만들고 액세스를 요청해야 합니다. 응용 프로그램을 시작할 수 있습니다.

프로세스는 여러 단계를 거치지만 전반적으로 몇 분 안에 해결할 수 있습니다.

에 대한 액세스 권한을 얻은 후 새 프로젝트를 만듭니다.



"앱 권한"에서 "읽기 및 쓰기"권한을 요청합니다.



마지막으로 "키 및 토큰"에서 모든 "액세스 토큰 및 비밀"을 생성합니다.



"읽기 및 쓰기"권한을 요청하기 전에 암호를 생성한 경우 암호를 재생성해야 합니다.


도서관



Twitter API를 사용하는 것이 로켓 과학처럼 보이지는 않지만 이미 잘 만들어진 Node.js 라이브러리를 사용하면 프로세스가 쉬워집니다. 또한 Twitter는 현재 새로운 API(v2)를 개발 중이지만 사용하려는 API는 아직 마이그레이션되지 않았습니다(v1). 따라서 라이브러리를 추가 레이아웃으로 사용하면 나중에 모든 것을 다시 작성하지 않아도 되는 경우에 도움이 될 수 있습니다.

이것이 우리가 프로젝트에 라이브러리를 추가하는 이유입니다.

npm i twitter-api-client --save-dev



트위터 봇



Twitter Bot을 개발하기 위해 프로젝트 루트에 새 파일twitter.js을 생성합니다. 여기에는 tweet 를 사용하여 twitter-api-client 자체를 처리하는 함수와 스크립트가 실행될 때 이를 트리거하는 최상위 수준async 블록이 포함되어 있습니다.

이전에 생성한 토큰을 공개적으로 노출하지 않기 위해 환경 변수를 통해 액세스하고 있습니다(다음 장 참조).

마지막으로 다음 예에서 트윗은 지속적인 메시지입니다. 모든 트윗과 마찬가지로 최대 280자 길이여야 하며 사용자 이름에 태그를 지정하고 URL을 가리킬 수 있습니다.

const {TwitterClient} = require('twitter-api-client');

const tweet = async (status) => {
  const twitterClient = new TwitterClient({
    apiKey: process.env.TWITTER_API_KEY,
    apiSecret: process.env.TWITTER_API_SECRET,
    accessToken: process.env.TWITTER_API_ACCESS_TOKEN,
    accessTokenSecret: process.env.TWITTER_ACCESS_TOKEN_SECRET,
  });

  await twitterClient.tweets.statusesUpdate({status});
};

(async () => {
  try {
    const myTweet = 
          `Checkout @discoverweekly_ https://discoverweekly.dev`;

    await tweet(myTweet);
  } catch (err) {
    console.error(err);
  }
})();


Bot을 실행하기 위해 scripts에 관련 package.json 대상을 추가합니다.

"scripts": {
  "twitter": "node ./twitter.js"
},



환경 변수



토큰과 비밀을 만들기 위해 GitHub Actions에서 사용할 수 있는 환경 변수를 통해 처리하고 있습니다. GitHub repo > Settings > Secrets로 이동하여 각각의 값과 함께 추가합니다.




GitHub 작업



마지막으로 이전에 주기적으로 생성한 Node.js 스크립트를 실행하는 프로젝트에 .github/workflows/twitter.yml와 같은 GitHub 작업을 추가합니다.

제 경우에는 일주일에 한 번 새 재생 목록을 게시하고 이에 대해 한 번만 트윗하므로 워크플로는 특정 UTC 시간에 실행됩니다scheduled.

name: Twitter bot

on:
  schedule:
    - cron: "0 15 * * 3"

jobs:
  build:
    name: Tweet about the new playlists
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@master
      - name: Use Node.js
        uses: actions/setup-node@v1
        with:
          node-version: '14.x'
      - name: Install Dependencies
        run: npm ci
      - name: Run Twitter bot
        run: npm run twitter
        env:
          TWITTER_API_KEY: ${{ secrets.TWITTER_API_KEY }}
          TWITTER_API_SECRET: ${{ secrets.TWITTER_API_SECRET }}
          TWITTER_API_ACCESS_TOKEN: ${{ secrets.TWITTER_API_ACCESS_TOKEN }}
          TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}



요약





저는 그러한 Twitter Bot을 개발하는 것이 얼마나 간단하고 실제로 재미있는지 알게 되어 놀랐습니다. 이 글이 여러분에게도 도움이 되었으면 합니다.

무한과 그 너머로!

다윗


또는 mywebsite로 저에게 연락할 수 있습니다.

다음 슬라이드를 위해 DeckDeckGo을 사용해 보십시오!

좋은 웹페이지 즐겨찾기