How To Make A Twitter Bot With PHP In Five Minutes

October 31st, 2008 at 1:41 pm

There are quite a few uses I could think of for an automated Twitter bot that posts new tweets for you throughout the day. While this sounds like it would be a hard task it’s actually quite easy and a great project for anyone who wants to learn how to use the Twitter API within PHP. Lets get started.

Step 1 - Create your database.
When creating your database there are a number of things you may want to think of ahead of time. For the sake of making things easy I chose to tone down the code I use and show you how it works. We will create a simple table to store all of the random tweets in.

CREATE TABLE `tweets` (

`id` INT(11) NOT NULL AUTO_INCREMENT,

`tweet` VARCHAR(140) DEFAULT NULL,

PRIMARY KEY (`id`)

)

Run that SQL and you should have a new “tweets” table in your chosen database. Notice how we limited the `tweet` field to 140 characters as well so we don’t have tweets that are too long to appear on Twitter.

Step 2 - Create the PHP to send the tweet.
The next step is to create a php script that will randomly select one of your tweets, and then send it to your Twitter account via Twitter’s API. While this sounds complicated, its very easy to do.

<?php

mysql_connect(“localhost”, “USERNAME”, “PASSWORD”) or die(‘Could not connect to database’);

mysql_select_db(“DATABASE”) or die(‘Could not select database’);

$result = mysql_query (“SELECT * FROM tweets ORDER BY RAND() LIMIT 1″);

while($row = mysql_fetch_array($result)){

$tweet = “$row[tweet]“;

sendTweet($tweet);

}

function sendTweet($msg){

$username = ‘TWITTER-USER-NAME’;

$password = ‘TWITTER-PASS’;

$url = ‘http://twitter.com/statuses/update.xml’;

$curl_handle = curl_init();

curl_setopt($curl_handle, CURLOPT_URL, “$url”);

curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);

curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl_handle, CURLOPT_POST, 1);

curl_setopt($curl_handle, CURLOPT_POSTFIELDS, “status=$msg”);

curl_setopt($curl_handle, CURLOPT_USERPWD, “$username:$password”);

$buffer = curl_exec($curl_handle);

curl_close($curl_handle);

if (empty($buffer)) {

echo ‘fail’;

} else {

echo ’success’;

}

}

?>

Not to bad right? Our custom sendTweet() function pretty much takes care of all the dirty work in sending the message to Twitter. Just make sure you edit the code with your password and username for Twitter, and the MySQL login. Once you have your database populated you are all good to go and test the script to see if it works. Just upload it, run it, and you should see either “fail” or “success” on your screen.

Step 3 - Automate with CRON.
After going to Twitter and checking your account to confirm everything is copacetic, it’s time to let your monster loose. Depending on what host you use, CRON access may or may not be available to you. Luckily for me I am hosted with MediaTemple so this is not a problem.

  • Script Location - When using CRON you normally want to upload the file being run into a folder that nobody has access to from the web (root). After you have it in this location, just plug it into CRON with ‘php’ in front of it. Example: php /home/user/root/TwitterBot.php
  • Set The Time - I don’t think I have ever used a control panel that required you to manually enter the time format… I’m pretty sure most people use cPanel which also has drop downs to select when you would like the script to run. I like to run my Twitter bot every 25 minuets or so to keep my Twitter account fresh.

That’s it! Not to hard right… If you have any in-depth questions on the code or need help, feel free to leave a comment. Also leave one if you have usage ideas, new features that could make the script better. As you can now see, this is a valuable tool to have in your chest.

7 Responses to “How To Make A Twitter Bot With PHP In Five Minutes”


Leave a Reply