Comment créer un Bot Twitter ?

Comment créer un Bot Twitter ?

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…).

NodeJS : comment créer un bot Twitter avec Puppeteer ?
J’avais écrit un article il y a quelques temps sur le développement d’un bot Twitter [/creer-bot-twitter-api/]. L’utilisation de ce bot peut être bloqué par Twitter puisqu’il utilisait l’API directe de la plateforme. Cette fois-ci, nous allons voir une alternative qui utilisera directement l’interf…

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 only : permet uniquement la lecture des informations d’un compte
  • Read and Write : permet la lecture et l’écriture d’informations d’un compte
  • Read, Write and Access direct messages : permet un accès aux droits précédents, mais permet en plus la lecture et l’écriture de messages privés

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).

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 »).

Maxence Rose

Écrit par Maxence Rose

Hyperactif du Web, fondateur de YubiGeek, passionné de technologie, de sciences, et fasciné par Google, j'écris ce que bon me semble et je teste pour vous les derniers services du Web.

Vous vous êtes abonné avec succès YubiGeek
Génial ! Ensuite, passez à la caisse complète pour obtenir un accès complet à tous les contenus premium.
Nous saluons votre retour ! Vous vous êtes connecté avec succès.
Succès ! Votre compte est entièrement activé, vous avez désormais accès à tout le contenu.