در این مقاله با روش ساخت ربات توییتر با Node.js و اجرای آن روی Heroku آشنا خواهیم شد. این بات موجب بهبود کارهای ما در توییتر می‌شود و ما را قادر می‌سازد که کارهایی مانند ری‌توییت و غیره را انجام دهیم. این کارکردها با استفاده از Twitter API ممکن می‌شود.

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

درخواست تبدیل به حساب توسعه‌دهنده در توییتر

مهم‌ترین و دشوارترین بخش این راهنما همین ارائه درخواست به توییتر برای تبدیل شدن به حساب توسعه‌دهنده (Developer) است. به این منظور باید مراحل زیر را طی کنید:

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

در ادامه متن توافقنامه و سیاست‌نامه توسعه‌دهنده را پیش از ارسال درخواست به دقت بخوانید. در صورتی که هر یک از شرایط ذکر شده در این موارد را نداشته باشید، درخواست شما رد خواهد شد.

ایجاد اپلیکیشن برای ساخت ربات توییتر

زمانی که حساب توسعه‌دهنده شما از سوی توییتر تأیید شد، به کنسول توسعه‌دهنده توییتر بروید.

  • در نشانی apps.twitter.com یک اپلیکیشن بسازید.
  • همه جزییات ضروری را پر کنید.
  • یک کلید API یکتا ایجاد کنید.
  • به جزییات اپلیکیشن بروید و وارد بخش keys and tokens بشوید.
  • کلید API خود را در جای مطمئن و محرمانه‌ای نگه‌داری کنید.

تنظیم محیط برای توسعه ربات توییتر با Node.js

ابتدا باید Node.js و npm را روی رایانه خود نصب کنید. سپس دایرکتوری جدیدی به نام your- bot-name بسازید. محیط git را مقداردهی کرده و همه وابستگی‌های twit را با استفاده از npm نصب کنید. دستورهای زیر را درون دایرکتوری بات وارد کنید:

$ git init
$ npm init
$ npm install twit

اکنون موفق شده‌اید محیط توسعه را تنظیم و راه‌اندازی کنید.

پیاده‌سازی کد ربات توییتر

ابتدا باید twit را احراز هویت کنید و کد و اپلیکیشن توییتر را با استفاده کلیدهای API که قبلاً تولید کردیم، به آن لینک کنید. به این منظور یک فایل جدید به نام config.js ایجاد کرده و کد زیر را در آن قرار دهید:

module.exports = {
consumer_key: APPLICATION_CONSUMER_KEY_HERE,
consumer_secret: APPLICATION_CONSUMER_SECRET_HERE,
access_token: ACCESS_TOKEN_HERE,
access_token_secret: ACCESS_TOKEN_SECRET_HERE
}

کلیدهای یکتای خود را از داشبورد توییتر بگیرید و کد زیر را در فایل bit.js بنویسید:

const config = require('./config')
const twit =  require('twit')

const T = new twit(config)

function retweet(searchText) {
    // Params to be passed to the 'search/tweets' API endpoint
    let params = {
        q : searchText + '',
        result_type : 'mixed',
        count : 25,
    }

    T.get('search/tweets', params, function(err_search, data_search, response_search){

        let tweets = data_search.statuses
        if (!err_search)
        {
            let tweetIDList = []
            for(let tweet of tweets) {
                tweetIDList.push(tweet.id_str);

                //more code here later...
            }

            // Call the 'statuses/retweet/:id' API endpoint for retweeting EACH of the tweetID
            for (let tweetID of tweetIDList) {
                T.post('statuses/retweet/:id', {id : tweetID}, function(err_rt, data_rt, response_rt){
                    if(!err_rt){
                        console.log("\n\nRetweeted! ID - " + tweetID)
                    }
                    else {
                        console.log("\nError... Duplication maybe... " + tweetID)
                        console.log("Error = " + err_rt)
                    }
                })
            }
        }
        else {
            console.log("Error while searching" + err_search)
            process.exit(1)
        }
    })
}

// Run every 60 seconds
setInterval(function() { retweet('#DataScience OR #DataVisualization'); }, 60000)

در کد فوق شیء twit را با استفاده از پیکربندی خودمان مقداردهی کرده‌ایم. پارامتر‌های زیر را به API جستجو ارسال کرده‌ایم.

  • q – کوئری جستجو
  • result_type – توییت‌های محبوب یا قدیمی
  • counts – تعداد توییت‌های دریافتی

شیء JSON برای بازیابی همه توییت‌ها استفاده می‌شود و همه توییت‌ها به status/retweet/:id ارسال می‌شوند. اکنون بات را به صورت لوکال با استفاده از دستور زیر تست می‌کنیم:

node bot.js

از تکرار ری‌توییت اجتناب کنید

کد زیر را در حلقه for در فایل bot.js اضافه کنید:

if(tweet.text.startsWith("RT @")) {
 if(tweet.retweeted_status) {
    tweetIDList.push(tweet.retweeted_status.id_str);
 }
 else {
    tweetIDList.push(tweet.id_str);
 }
}
else {
    tweetIDList.push(tweet.id_str);
}

سپس کد زیر را در خارج از حلقه اضافه کنید:

/ Utility function - Gives unique elements from an array
function onlyUnique(value, index, self) { 
    return self.indexOf(value) === index;
}

// Get only unique entries
tweetIDList = tweetIDList.filter( onlyUnique )
  • هر توییت یک شناسه یکتا به صورت id_str دارد.
  • هر ری‌توییت شناسه متفاوتی به صورت id_str دارد.
  • API جستجو برای یافتن این که توییت ارجینال یا ری‌توییت است استفاده می‌شود.
  • به این ترتیب از ایجاد موارد تکراری در بات خودمان جلوگیری می‌کنیم.

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

توزیع اپلیکیشن ربات توییتر

ابتدا یک حساب در Heroku ایجاد کنید و سپس یک اپلیکیشن با نام your botname بسازید. نام فایل دایرکتوری لوکال و نام پروژه هروکو را به صورت یکسان انتخاب کنید. heroku-cli را نصب کرده و یک heroku-cli با استفاده از دستورهای زیر ایجاد کنید:

worker: node bot.js

با استفاده از heroku CLI لاگین کنید:

$ heroku login

پیش از توزیع به داشبورد Heroku بروید و worker dyno را آغاز کرده و آن را پیکربندی کنید. با استفاده از این دستورها اپلیکیشن را روی هروکو توزیع کنید:

$ heroku git:remote -a your-botname
$ git add
$ git commit -am "Add code"
$ git push heroku master

سخن پایانی

امیدواریم با مطالعه این راهنمای ساخت بات توییتر با Node.js مطالب جدیدی آموخته و با شیوه ساخت بات توییتر و توزیع آن روی Heroku آشنا شده باشید. هر گونه دیدگاه و پیشنهاد خود را در بخش نظرات این نوشته با ما و دیگر خوانندگان مجله فرادرس در میان بگذارید.

اگر این مطلب برای شما مفید بوده است، آموزش‌ها و مطالب زیر نیز به شما پیشنهاد می‌شوند:

بر اساس رای ۰ نفر
آیا این مطلب برای شما مفید بود؟
شما قبلا رای داده‌اید!
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.

«میثم لطفی» در رشته‌های ریاضیات کاربردی و مهندسی کامپیوتر به تحصیل پرداخته و شیفته فناوری است. وی در حال حاضر علاوه بر پیگیری علاقه‌مندی‌هایش در رشته‌های برنامه‌نویسی، کپی‌رایتینگ و محتوای چندرسانه‌ای، در زمینه نگارش مقالاتی با محوریت نرم‌افزار با مجله فرادرس همکاری دارد.

2 نظر در “ساخت ربات توییتر با Node.JS — از صفر تا صد

    1. سلام وقت بخیر

      یک ربات میخواستم که اتوماتیک به توییتی که براش تعریف کنم فیوبگیره و توییت رو فیواستار کنه

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *