17줄의 코드로 된 트위터 봇



몇 달 전에 방법을 게시했습니다. 그 이후로 Twitter API가 변경되어 업데이트할 때라고 결정했습니다. 또한 @omarhashimoto의 게시물도 보았습니다. 이 게시물은 코드를 최대 17줄로 줄이도록 동기를 부여했습니다. 오류 메시지를 표시하지 않음으로써 13줄의 코드를 보관할 수 있었지만 사실은 때때로 더 많은 코드가 실제로 더 낫다는 것입니다. 좋아, 시작할 시간이야!

우리는 무엇을 코딩하고 있습니까?



우리는 우리가 지정한 키워드를 포함하는 모든 트윗을 자동으로 좋아하는 Twitter 봇을 만들고 싶습니다. 우리는 Stream API를 사용할 것입니다. 즉, 모든 좋아요와 듣기가 실시간으로 이루어집니다.

무엇이 필요하세요?


  • Node.js



  • 설정



    Node.js 설치를 마친 후 터미널을 열고 프로젝트 폴더로 이동합니다.
    npm init를 입력하고 설정을 완료합니다. 다음 단계는 종속 항목을 설치하는 것입니다. Node.js용 Twitter를 사용하므로 npm i twitter --save를 입력합니다. 마지막으로 필요한 것은 Twitter 앱입니다. 를 방문하여 Twitter 앱을 만들 수 있습니다. 앱을 만든 후에는 앱과 코드를 연결하는 데 사용할 4개의 키만 있으면 됩니다.
  • 소비자 키
  • 소비자 비밀
  • 액세스 토큰 키
  • 액세스 토큰 암호

  • 이제 새 JavaScript 파일을 만듭니다. touch bot.js

    코딩



    먼저 Twitter 라이브러리를 가져온 다음 앱과의 연결을 설정해야 합니다. Twitter 앱에서 키를 입력해야 합니다.

    const Twitter = require('twitter');
    const client = new Twitter({
      consumer_key: '',
      consumer_secret: '',
      access_token_key: '',
      access_token_secret: ''
    });
    


    이제 스트림 청취 기본 설정을 지정해야 합니다. "#IlikeBots"및 "keyword2"를 추적하려는 두 개의 키워드를 추가한 것을 볼 수 있습니다. 원하는 만큼 추가할 수 있으며 해시태그를 사용하거나 중요하지 않은 일반적인 단어를 사용할 수도 있습니다. Twitter는 시간당 좋아요 수를 제한하므로 매우 인기 있는 키워드를 추가하면 한도가 정말 빨리 소진됩니다.

    const stream = client.stream('statuses/filter', {track:'#IlikeBots, keyword2'});
    


    여기서 모든 마법이 발생합니다. 우리는 스트림에서 '데이터' 개체를 수신하고 모든 단일 '데이터' 개체는 키워드와 일치하는 트윗에 대한 모든 정보로 구성됩니다. 중간 부분은 Like 작업을 수행하는 곳으로 '데이터' 개체에서 가져오는 트윗 ID만 있으면 됩니다. 이와 같은 일이 발생하면 트윗과 콘텐츠의 ID를 인쇄합니다. 무언가 잘못되면 우리는 오류를 던질 것입니다.

    stream.on('data', (event) => {
    
      client.post('favorites/create', {id:event.id_str}, (error, response) => {
        if(error) throw error;
        console.log('Tweet ID: '+response.id_str+' Liked! - "'+response.text+'"')
      });
    
    });
    


    트윗을 읽고 좋아요를 누르기 전에 오류 코드를 읽을 수 있는지 확인해야 합니다. 문제가 무엇인지 알지 못한 채 무언가를 수정하는 것은 순전히 시간 낭비이기 때문에 이것은 매우 중요합니다. 예를 들어 오류 CODE 429가 발생하면 앱이 제대로 작동하고 실제 문제는 Twitter API 제한이라는 것을 알 수 있습니다. 에서 모든 오류 코드를 살펴볼 수 있습니다.

    stream.on('error', (error) => {
      throw error;
    });
    


    업데이트 기준
    댓글 섹션에서:
    "stream.on('error'...")에서 오류를 처리하는 것이 좋을 것입니다. 상위 함수이므로 오류를 던지면 오류가 이벤트 루프에 도달하고 응용 프로그램이 충돌합니다.
    빠른 해결책은 다음과 같습니다.

    stream.on("error", error => console.error(error));
    


    코드를 실행할 시간입니다. 터미널에 node bot.js를 입력하십시오. 키워드를 사용하여 무언가를 트윗하면 터미널에서 피드백을 볼 수 있어야 합니다.







    최종 코드




    const Twitter = require('twitter');
    const client = new Twitter({
      consumer_key: '',
      consumer_secret: '',
      access_token_key: '',
      access_token_secret: ''
    });
    
    const stream = client.stream('statuses/filter', {track:'#IlikeBots, #keyword2'});
    
    stream.on('data', (event) => {
      client.post('favorites/create', {id:event.id_str}, (error, response) => {
        if(error) throw error;
        console.log('Tweet ID: '+response.id_str+' Liked! - "'+response.text+'"')
      });
    });
    
    stream.on('error', (error) => {
      throw error;
    });
    

    좋은 웹페이지 즐겨찾기