Dans ce tutoriel, je vais vous expliquer comment mettre en place un Bot Twitter. Il faut garder à l’esprit qu’un Bot Twitter n’est qu’un simple enchaînement d’actions automatisées (« follow », « like » et « retweet » automatique, etc…).

Ceci nécessite quelques connaissances en terme de programmation mais je vais essayer d’être le plus explicite possible !

Quelques prérequis sont indispensables pour continuer :

Notre Bot sera capable de rechercher parmi les Tweets Français, les Tweets contenants le « #Paris » et il devra effectuer une action (soit un « like », soit un « retweet », ou pourquoi pas ajouter son auteur dans une liste de votre choix). Il ne pourra malheureusement pas démarrer votre lave-vaisselle, ni allumer la télévision. Trêve de plaisanterie, passons aux choses sérieuses !

Création d’une application sur Twitter

Avant d’initialiser le projet du Bot, il faut créer une application Twitter, et récupérer ses accès afin d’utiliser l’API Twitter. Pour cela, rendez-vous sur apps.twitter.com (en vous connectant à partir du compte Twitter que vous voulez utiliser).

Cliquez sur « Create New App », puis remplissez le formulaire avec des informations correctes :

  1. Name : nom de l’application
  2. Description : description de l’application
  3. Website : saisissez ce que vous voulez (lien du compte Twitter par exemple)
  4. Callback URL : ce champ est facultatif, passez-le, nous n’auront pas besoin de la fonction callback
  5. Pour terminer, acceptez l’accord de développeur en cochant la case « Yes, I agree » et cliquez sur le bouton « Create your Twitter application »

Une fois que votre application est créée, cliquez sur l’onglet « Permissions »puis vérifiez que le niveau d’accès à l’API sélectionné est bien « Read and Write ».

read_write_apps_twitter_yubigeek

Cliquez maintenant sur l’onglet « Keys and Access Tokens » et notez les deux clés (« Consumer Key » et « Consumer Secret »), elles nous serviront pour la suite du tutoriel. Dans la section « Your Access Token » (en bas de page), cliquez sur « Create my access token » et attendez la génération du jeton (propre à votre compte Twitter).

application_settings_yubigeek

your_access_token_yubigeek

Ne partagez jamais ces clés et jetons d’accès avec d’autres personnes. Vous pouvez à tout moment régénérer ces clés et jetons si quelqu’un les a récupérer.

Vous devez donc noter les clés et jetons suivants :

  1. Consumer Key : clé d’accès public à l’application
  2. Consumer Secret : clé d’accès privée à l’application
  3. Access Token : jeton d’accès public à votre compte, pour l’application
  4. Access Token Secret : jeton d’accès privé à votre compte, pour l’application

Initialisation du Bot Twitter

Pour initialiser le projet, nous allons utiliser Composer (à installer), un outil pour les développeurs qui permet d’installer des paquets et leurs dépendances à partir de Packagist.

Nous allons utiliser la librairie TwitterOAuth (une bibliothèque PHP créée par @abraham) pour utiliser l’API Twitter OAuth REST (Representational State Transfer). OAuth est un protocole libre qui permet d’autoriser un site web, un logiciel ou une application (« consommateur », ou « consumer » en Anglais) à utiliser l’API sécurisée d’un autre site web (« fournisseur », ou « provider » en Anglais) pour le compte d’un utilisateur (votre Bot).

Créez un dossier, nommez-le par le nom de votre choix, ouvrez une console (cmder par exemple), et placez vous dans le dossier précédemment créé, puis saisissez cette commande :

composer require abraham/twitteroauth

Composer installera un fichier PHP (autoload.php) et la librairie PHP TwitterOAuth ainsi que ces dépendances.

Créez un nouveau fichier dans le dossier du projet, nommez-le par le nom de votre choix et utilisez l’extension PHP (.php). Ce fichier contiendra des lignes de code qui permettra au Bot d’exécuter les actions que vous lui donnerait.

Utilisation de TwitterOAuth

Commençons par quelques lignes de code (import du fichier autoload.php installé par Composer, et utilisation du namespace TwitterOAuth).

<?php

require 'vendor/autoload.php';

use Abraham\TwitterOAuth\TwitterOAuth;

define('CONSUMER_KEY', 'your_consumer_key');
define('CONSUMER_SECRET', 'your_consumer_secret');
define('ACCESS_TOKEN', 'your_access_token');
define('ACCESS_TOKEN_SECRET', 'your_access_secret');

$connection = new TwitterOAuth(
 CONSUMER_KEY,
 CONSUMER_SECRET,
 ACCESS_TOKEN,
 ACCESS_TOKEN_SECRET
);

// Enchaînement d'actions

?>

Effectuer une recherche avec l’API

Nous avons défini que le Bot devra rechercher tous les Tweets Français contenant le hashtag « #Paris », commençons donc par faire cette recherche (uniquement 5 Tweets) avec l’API Twitter (search/tweets) :

$theSearch = [
 'q' => '#Paris',
 'lang' => 'fr',
 'count' => 5
];

$results = $connection->get('search/tweets', $theSearch);

Vous pouvez effectuer une recherche avancée afin d’affiner les résultats (utilisation d’opérateurs booléens par exemple).

La variable $results retourne un objet contenant les Tweets correspondant à votre recherche, il faut à présent utiliser foreach pour parcourir cet objet. La structure de langage foreach fournit une façon simple de parcourir des tableaux et des objets.

foreach($results->statuses as $status) {
 // Action à effectuer pour chaque Tweet
}

Action : le Bot « like » automatiquement

$connection->post('favorites/create', [
 'id' => $status->id_str
]);

Nous récupérons l’ID du Tweet avec $status->id_str et nous utilisons la méthode post (fonction : favorites/create) de la classe instanciée pour « liker » le Tweet.

Action : le Bot « retweet » automatiquement

$connection->post('statuses/retweet', [
 'id' => $status->id_str
]);

Nous récupérons l’ID du Tweet avec $status->id_str et nous utilisons la méthode post (fonction : statuses/retweet) de la classe instanciée pour « retweeter » le Tweet.

Code du Bot en entier

<?php

require 'vendor/autoload.php';

use Abraham\TwitterOAuth\TwitterOAuth;

define('CONSUMER_KEY', 'your_consumer_key');
define('CONSUMER_SECRET', 'your_consumer_secret');
define('ACCESS_TOKEN', 'your_access_token');
define('ACCESS_TOKEN_SECRET', 'your_access_secret');

$connection = new TwitterOAuth(
 CONSUMER_KEY,
 CONSUMER_SECRET,
 ACCESS_TOKEN,
 ACCESS_TOKEN_SECRET
);

$theSearch = [
 'q' => '#Paris',
 'lang' => 'fr',
 'count' => 5
];

$results = $connection->get('search/tweets', $theSearch);

foreach($results->statuses as $status) {
 // Action à effectuer pour chaque Tweet
}

?>

Tâche récurrente

Pour que le Bot fasse le travail tout seul comme un grand, nous allons utiliser une tâche récurrente, communément appelée « cron » dans le jargon (des développeurs), et c’est pour cela que vous devez posséder une machine dédiée afin d’ajouter vos fichiers (ceux du projet) mais également de pouvoir utiliser les tâches « cron » : fr.wikipedia.org/wiki/Cron

* * * * * php /path/to/project/bot.php >> /dev/null 2>&1

Adaptez le chemin selon le répertoire où se trouve le fichier principal de votre projet (pour rappel, nous avons appelé le fichier « bot.php »).

Comment créer un Bot Twitter ?
Voter pour cet article
4 commentaires
  1. Bonjour… J’ai un petit soucis… Je ne sais pas bien ce que je dois installer sur ma machine locale et ce que je dois mettre sur mon serveur…
    Y’a une méthode pour mettre le bot en ligne par FTP?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Inscrivez vous à notre newsletter

Soyez informé des derniers articles sur YubiGeek. Saisissez votre adresse email et validez le formulaire. Un email de confirmation vous sera communiqué.

Vous devriez également aimer

Créer plusieurs comptes Twitter avec la même adresse email

Twitter est un outil de « microblogage » géré par l’entreprise Twitter…

Flux RSS Twitter – Outils pour récupérer les flux

Qu’est-ce que le format RSS ? RSS (Really Simple Syndication) est un…

Comment récupérer l’adresse email d’un compte avec l’API Twitter ?

Dans ce billet, nous allons nous servir de la librairie TwitterOauth qui…

Les 20 Hashtags à connaître sur Twitter

Largement utilisé sur Twitter puis sur d’autres réseaux sociaux (comme Facebook depuis…