Skip to content

TaharaKazuki/gorilla_bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

node.js練習用のTwitterボット

前提

社内のLT会にてネタ要員としての登壇時にサンプルとして作成致しました。 slides←がLT時に使用したスライドになります。

作成した流れ

未経験の新入社員(18年新卒)に向けて、フロントエンド領域に興味を持ってもらえる一旦になればという想いからキャッチー(?)なテーマになるようにTwitterbotをテーマとしました。

仕組み

AWSのLambdaにてnode.jsを1時間毎に発火させております。

Twitterアカウント

実際に当ソースで動いているTwitterアカウントが←になります。

ディレクトリ構成

※主要構成以外は割愛

ディレクトリ名  説明
img twitterに投稿される画像が格納されている
json twitterに投稿されるツイート文/imgのpathが記載されているjsonが格納されている
js node.js上で実際にツイートを行う関数が格納されている

codeの説明

//npm module
const Twitter = require('twitter');

// twitter API②
const twitter = new Twitter({
  consumer_key:'consumer_key',
  consumer_secret:'consumer_secret',
  access_token_key:'access_token_key',
  access_token_secret:'access_token_secret'
});

// node etc③
const fs = require('fs');
const path = require('path');
const json = require('../json/main');
const tweetArray = json.data;


const tweetInfo = tweetArray[Math.floor(Math.random()* tweetArray.length)];
const { img, tweet } = tweetInfo;
const imgRoot = path.resolve(__dirname, `../${img}`);

const gorillaImg = fs.readFileSync(imgRoot);
const media = { "media":gorillaImg };


const main = async () => {
  const upMedia = await twitter.post('media/upload', media);
  await twitter.post('statuses/update', {status:tweet,media_ids:upMedia.media_id_string});
};

main();
  1. ① node.jsでtwitterAPIを使用できるようにするためのmodulesをimport
  2. ② twitterAPIを使用するためのkeyをtwitterにて登録(非公開keyの為、実際のkey_codeは伏せております)
  3. ③ 必要となるnodeの関数や外部ファイルをimport
  4. ④ 取り込んだjsonファイルからMath.randomの乱数で指定されたindexの配列を取得し、投稿するツイート文の準備
  5. ⑤ 投稿を行う画像の準備
  6. ⑥ 非同期処理で⑤で設定した画像をアップロード、画像のアップロードが完了後、④で設定したツイート文とアップロードした画像をPOST
  7. ⑦ ⑥で設定した関数を呼び出し

上記をLambdaにセットし、1時間毎に発火させている。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published