How To Make A Twitter Bot With PHP In Five Minutes
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.
`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.
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.





October 31st, 2008 at 4:03 pm
Good trick.
November 1st, 2008 at 7:14 am
I think Ezines does this when you submit articles too - its a very good trick, thank you for sharing it.
Gives us wannabe-techies yet another reason to get moving and start coding!
November 2nd, 2008 at 9:49 pm
The question that people need to ask them selves is if something like this is really what we should be doing or allowing??
If social media is all about being human and connecting with real people then something like this goes directly against the core value.
Thoughts?
–
http://twitter.com/franswaa
November 3rd, 2008 at 2:30 pm
[...] How To Make A Twitter Bot With PHP In Five Minutes There are quite a few uses I could think of for an automated Twitter bot that posts new tweets for you … Comment / View Comments [...]
November 6th, 2008 at 8:03 pm
@frank:
While I agree with you to a point, services like this can be used for a whole lot more than their initial purpose. Don’t get me wrong, I wouldn’t advocate the use of something like this for smamming, but there are a lot of twitter bots that offer good services, based on twitter’s scriptable API. The best thing is, is that the reciever has to APPROVE the sender’s feed - so it’s not like you can start getting spammed without specifically adding the spammer.
November 7th, 2008 at 2:45 pm
This is smashing! I love the tips and I will definitely play around with the code and see how I can modify it to suit a small personal project am working on.
Great site
November 16th, 2008 at 2:20 pm
[...] reading how to create a twitter bot in 5 minutes, I realized that I could combine this with simplepie and create a twitter spammer in less than ten [...]