ساخت یک ربات توییتر با Node.js

ترجمه و تالیف : مهدی عقیقی
تاریخ انتشار : 10 فروردین 99
خواندن در 2 دقیقه
دسته بندی ها : نود جی اس

ساخت ربات توییتر با استفاده از api آن‌ها یکی از کاربرد‌های اساسی توییتر است. برای ساخت ربات توییتر با Node.js لازم است که اقدامات زیر را انجام دهید.

  • ساخت یک اکانت جدید برای ربات
  • دریاف api_key در این لینک
  • Node.js و Npm را روی کامپیوتر خود نصب کنید

ما در این مقاله می‌خواهیم یک ربات توییتر بسازیم که یک هشتگ خاص را دنبال می‌کند و هر پستی که از آن هشتگ استفاده کرده را لایک و ریتوییت می‌کند.

شروع کار

در شروع باید برنامه خود را را با npm init راه‌اندازی کنید و پارامتر‌های مورد نیاز را وارد کنید. بعد از آن باید Twit (یک کتاب‌خانه برای کار با api توییتر) را نصب کنیم.

$ npm install twit --save

سپس، به داشبورد خود در twitter developer بروید و یک app‌ جدید بسازید و در آن‌جا می‌توانید consumer_key, consumer_secret, access_token_key, access_token_secret را به دست آورید. و بعد از آن باید این‌ها را در متغیر‌های env خود بگذاریم.

ساخت ربات

حالا در فایل ورودی برنامه‌تان باید Twit را با استفاده از secret key‌ خودتان راه‌اندازی کنید.

// index.js
const Twit = require('twit');
const T = new Twit({
  consumer_key: process.env.APPLICATION_CONSUMER_KEY_HERE,
  consumer_secret: process.env.APPLICATION_CONSUMER_SECRET_HERE,
  access_token: process.env.ACCESS_TOKEN_HERE,
  access_token_secret: process.env.ACCESS_TOKEN_SECRET_HERE
});

گوش کردن برای رویداد‌ها

Stream api توییتر، دسترسی به دو stream را به شما می‌دهد. یکی stream کاربر و یکی stream عمومی. ما از stream عمومی استفاده می‌کنیم که stream همه‌ی توییت‌های عمومی است. می‌توانید در مستندات خود توییتر بیشتر در این مورد بخوانید.

ما می‌خواهیم در stream عمومی یک هشتگ را دنبال کنیم که ربات تمام توییت‌ها در آن رابطه را به ما بدهد. (#javascript).

// index.js
const Twit = require('twit');
const T = new Twit({
  consumer_key: process.env.APPLICATION_CONSUMER_KEY_HERE,
  consumer_secret: process.env.APPLICATION_CONSUMER_SECRET_HERE,
  access_token: process.env.ACCESS_TOKEN_HERE,
  access_token_secret: process.env.ACCESS_TOKEN_SECRET_HERE
});

// start stream and track tweets
const stream = T.stream('statuses/filter', {track: '#JavaScript'});

// event handler
stream.on('tweet', tweet => {
// perform some action here
});

پاسخ به رویداد‌ها

حال که ما می‌توانیم هشتگ‌ها را دنبال کنیم، می‌توانیم با توییت‌هایی که حاوی چنین هشتگ‌هایی هستند، در فانکشن handler کار‌های خوبی بکنیم.

Api توییتر به شما قابلیت کار با برنامه را دقیقا مثل حالت عادی که خودتان از آن استفاده می‌کنید، می‌دهد. می‌توانید توییت‌های جدید بزنید، لایک کنید، ریتوییت کنید، پاسخ بدهید، فالو کنید و پاک کنید. ما قرار است از دو تا از این قابلیت‌ها استفاده کنیم که یکی لایک و دیگری ریتوییت است.

// index.js
const Twit = require('twit');
const T = new Twit({
  consumer_key: APPLICATION_CONSUMER_KEY_HERE,
  consumer_secret: APPLICATION_CONSUMER_SECRET_HERE,
  access_token: ACCESS_TOKEN_HERE,
  access_token_secret: ACCESS_TOKEN_SECRET_HERE
});

// start stream and track tweets
const stream = T.stream('statuses/filter', {track: '#JavaScript'});

// use this to log errors from requests
function responseCallback (err, data, response) {
 console.log(err);
}

// event handler
stream.on('tweet', tweet => {
   // retweet
  T.post('statuses/retweet/:id', {id: tweet.id_str}, responseCallback);
  // like
  T.post('favorites/create', {id: tweet.id_str}, responseCallback);
});

ریتوییت

برای ریتوییت کردن، به راحتی باید به آدرس statuses/retweet/:id یک درخواست POST بزنیم، و باید یک آبجکت که در آن id توییت است را به عنوان آرگومان دوم قرار دهیم. و سومین آرگومان هم یک کالبک است که وقتی پاسخ را دریافت کنیم، خوانده می‌شود. و البته، راه‌حل خیلی خوبی است برای زمانی که اروری در کار است.

لایک

برای لایک کردن توییت به راحتی به آدرس favourites/create یک درخواست POST می‌فرستیم. و می‌توانیم یک کالبک هم به عنوان آرگومان دوم به آن بدهیم.

استفاده از ربات

اکنون، ربات برای استفاده آماده است. من برای استفاده از ربات از  سرویس Heroku استفاده می‌کنم.

در قدم اول شما باید CLI آن‌را دانلود کنید. در اینجا می‌توانید مستندات آن‌را ببینید. این ابزار برای استفاده نیازمند GIT می‌باشد.

در Heroku بعضی مواقع بعد از چند وقت استفاده نکردن از برنامه، Heroku آن برنامه را از کار می‌اندازد. این قضیه برای بعضی‌ها می‌تواند به عنوان باگ دیده شود که می‌توانید روش حل آن‌را در این لینک بخوانید.

شما می‌توانید در مستندات توییتر برای ساختن برنامه‌های بزرگ‌تر، اطلاعات مورد نیاز خود را پیدا کنید. در آن‌جا هر چیزی که شما نیاز دارید موجود است.

می‌توانید کد پروژه بالا را در این لینک ببینید.

منبع

گردآوری و تالیف مهدی عقیقی

برنامه‌نویس وب، عاشق جاوااسکریپت و ریکت و لاراول :)