Article original : Why you should have your own Twitter bot, and how to build one in less than 30 minutes

Par Scott Spence

MISE À JOUR 20171102 : Depuis la publication initiale de cet article en janvier 2017, quelques changements ont été apportés au dépôt sur GitHub. Si vous suivez ce guide, je vous suggère d'utiliser le dépôt [README.md](https://github.com/spences10/twitter-bot-bootstrap/#twitter-bot-bootstrap) en complément de cet article pour éviter toute confusion.

Les bots Twitter peuvent faire bien plus que simplement spammer des hashtags tendance et suivre sans relâche des utilisateurs.

Prenez par exemple le bot Twisst ISS alerts, qui vous envoie un message direct chaque fois que la station spatiale internationale (ISS) sera visible depuis votre emplacement.

Ou encore des bots de service public comme Earthquake Robot, qui tweete sur tout séisme supérieur à 5,0 sur l'échelle de Richter dès qu'il se produit.

Et bien sûr, un robot qui tweete de la poésie, poem.exe, ainsi qu'un autre qui retweete vos tweets qui se trouvent être des Accidental Haiku.

Personnellement, j'utilise un bot pour améliorer mon compte @ScottDevTweets en aimant et retweetant des sujets qui m'intéressent.

Le défi communautaire #100DaysOfCode vous félicitera lorsque vous commencerez le défi #100DaysOfCode, et à nouveau lorsque vous atteindrez des étapes spécifiques.

Image Félicitations du bot utilisateur

Il répondra également avec des encouragements s'il détecte un sentiment négatif (frustration) dans un tweet contenant le hashtag #100DaysOfCode.

Image Détection de sentiment par le bot

Une question qu'on me pose souvent lors des entretiens d'embauche est : « Qu'est-ce que vous retirez du travail avec la technologie ? » Je réponds toujours que « J'aime automatiser les tâches répétitives pour gagner du temps et me concentrer sur d'autres choses. J'aime le sentiment d'accomplissement qui vient du fait d'avoir gagné du temps. »

Dans le cas de mon bot @ScottDevTweets, il sert souvent d'ouverture à une conversation avec une autre personne qui me suit. Ainsi, le bot peut initier la conversation, puis je peux prendre le relais là où le bot s'est arrêté.

Gardant cela à l'esprit, un bot n'est aussi éthique que la personne qui l'a programmé.

Si vous avez des doutes sur l'éthique du bot que vous construisez, consultez la section éthique de botwiki.

Alors, prêt à commencer ? OK. C'est parti !

Comment créer un bot Twitter en 30 minutes

Vous allez utiliser la bibliothèque twit pour créer un bot Twitter. Il aimera et retweetera ce que vous spécifiez. Il répondra également à vos abonnés avec une sélection de réponses préenregistrées.

Avant de commencer le chronomètre, vous devrez configurer quelques comptes si vous ne les avez pas déjà.

Ce dont vous aurez besoin

Étape #1 : Configurer une application Twitter

Soit créez un nouveau compte Twitter, soit utilisez le vôtre pour créer une nouvelle application Twitter.

Par exemple, je vais configurer mon ancien compte Twitter @DroidScott pour que vous puissiez suivre.

Assurez-vous d'ajouter votre numéro de téléphone à votre compte Twitter avant de cliquer sur le bouton Créer votre application Twitter.

Image

Vous devriez maintenant être dans la section « Gestion de l'application », où vous devrez noter vos clés. Vous devriez déjà avoir votre « Consumer Key (API Key) » et « Consumer Secret (API Secret) ».

Vous devrez faire défiler jusqu'en bas de la page et cliquer sur Créer mon jeton d'accès pour obtenir le « Access Token » et « Access Token Secret ». Notez les quatre, vous en aurez besoin lors de la configuration du bot.

Étape #2 : Configurer votre environnement de développement

Pour cela, je vais simplement dire d'utiliser Cloud9 car vous pouvez être opérationnel en quelques minutes avec l'un des environnements Node.js préconfigurés.

Notez que si vous choisissez d'utiliser Heroku et/ou Cloud9 IDE pour construire cela (comme je le fais dans ce guide), dans certaines régions, vous serez invité à fournir un numéro de carte de crédit pour créer ces comptes.

Image

Configurer le bot

Dans l'arborescence du projet, supprimez les fichiers de l'exemple de projet client, package.json, README.md et server.js, vous n'en aurez pas besoin. Vous pouvez les laisser si vous le souhaitez.

Dans votre nouvel environnement Node.js c9, allez dans le terminal et entrez :

git clone https://github.com/spences10/twitter-bot-bootstrap

Structure du projet

L'arborescence du projet devrait ressembler à ceci :

Image

Dépendances Node

Avant de configurer le bot, nous devons installer les dépendances. Accédez au dossier du projet avec cd tw*, ce qui vous déplacera vers :~/workspace/twitter-bot-bootstrap (master) $. Depuis le terminal, entrez :

npm install

Cela installera toutes les dépendances listées dans le fichier package.json.

Si vous obtenez des erreurs, je suggère d'installer les dépendances une par une depuis le fichier package.json avec la même commande et le nom du package à la fin :

Voici un exemple des dependencies dans le fichier package.json :

"dependencies": {    "dotenv": "^4.0.0",    "twit": "^2.2.5",    "unique-random-array": "^1.0.0",    "unirest": "^0.5.1"  }

La commande npm pour les installer tous :

npm install --save dotenv twit unique-random-array unirest

Si vous obtenez des messages WARN tels que npm WARN package.json twitter-bot@1.0.0 No repository field, cela n'empêchera pas le bot de fonctionner, vous pouvez donc les ignorer.

Vous pouvez maintenant configurer le bot. Depuis le terminal, entrez :

npm init

Cela configurera le fichier package.json avec vos détails. Continuez à appuyer sur Entrée si vous êtes satisfait des valeurs par défaut.

Maintenant, vous devrez ajouter vos clés Twitter au fichier .env. Il suffit d'entrer les clés dans leurs champs correspondants et d'enregistrer le fichier.

Si vous ne trouvez pas le fichier .env dans la structure de fichiers de votre projet c9, vous devrez activer l'option Show Hidden Files. Dans la vue des fichiers, sélectionnez l'icône d'engrenage des paramètres, puis cochez l'option Show Hidden Files si elle n'est pas déjà cochée.

Image

La SENTIMENT_KEY peut être obtenue en demandant une nouvelle clé API à l'adresse https://market.mashape.com/vivekn/sentiment-3. Votre clé se trouve dans l'exemple de requête.

Regardez le gif, cliquez sur le lien, inscrivez-vous ou connectez-vous à mashape, cliquez sur node dans le panneau de droite et sélectionnez votre clé API, elle se trouvera dans l'espace mis en évidence <required> dans le gif.

Image

Ajoutez votre clé API au fichier .env ainsi que vos clés Twitter API ?

Ici, vous devriez ajouter le nom de votre compte Twitter et la fréquence à laquelle vous souhaitez que le bot exécute les fonctions de retweet et de favoris en minutes.

NOTE : aucun des éléments .env n'a de guillemets '' autour d'eux.

CONSUMER_KEY=Fw***********P9CONSUMER_SECRET=TD************CqACCESS_TOKEN=31**************UCACCESS_TOKEN_SECRET=r0************S2SENTIMENT_KEY=Gj************lFTWITTER_USERNAME=DroidScottTWITTER_RETWEET_RATE=5TWITTER_FAVORITE_RATE=5

Vous pouvez ensuite ajouter des mots-clés dans le fichier strings.js pour ce que vous souhaitez rechercher ainsi que des sous-requêtes.

Image ajoutez des chaînes de requête et de sous-requête, vous pouvez également mettre à jour les chaînes bloquées pour bloquer plus de contenu

Lorsque vous ajoutez des chaînes de sous-requête, assurez-vous de laisser un espace au début de la chaîne afin que ' handy tip' soit concaténé à 'node.js' comme node.js handy tip et non node.jshandy tip.

Cela devrait être tout, allez dans le terminal et entrez npm start, vous devriez obtenir une sortie :

Image

Vérifiez le compte Twitter :

Image

Étape #3 : Configuration de Heroku

Super, maintenant nous avons un bot que nous pouvons tester sur notre environnement de développement, mais nous ne pouvons pas le laisser là, nous devons le déployer sur Heroku.

Si vous ne l'avez pas déjà fait, configurez un compte Heroku, puis sélectionnez Créer une nouvelle application dans la liste déroulante en haut à droite de votre tableau de bord. Dans l'écran suivant, nommez l'application si vous le souhaitez, puis cliquez sur Créer une application.

Image

Vous serez présenté avec votre tableau de bord d'application et des instructions pour la méthode de déploiement.

Image

Le nom de votre application devrait s'afficher en haut de votre tableau de bord, vous en aurez besoin lors de la connexion avec l'interface de ligne de commande Heroku, que nous utiliserons pour déployer votre application.

Image

Heroku CLI

Nous allons déployer initialement via l'interface de ligne de commande Heroku (CLI).

Dans le terminal de votre environnement c9, connectez-vous à Heroku [il devrait être installé par défaut]

heroku login

Entrez vos identifiants :

cd twitter-bot-bootstrap git init heroku git:remote -a your-heroku-app-name

Déployez votre application :

git add . git commit -am 'make it better' git push heroku master

Vous devriez obtenir une sortie de construction dans le terminal :

Image

Puis vérifiez la sortie avec :

heroku logs -t

Tout est bon ? Super ! ?

Configuration des variables Heroku

Maintenant que nous avons notre bot sur Heroku, nous devons ajouter des variables d'environnement pour stocker nos clés Twitter. Cela est dû au fait que le fichier .env où nous avons stocké nos clés est listé dans le fichier .gitignore, qui indique à git de ne pas télécharger ce fichier sur Heroku. Cela signifie également que si, à l'avenir, nous voulons ajouter notre code à GitHub, nous n'avons pas à nous soucier du fichier .env rendant nos clés publiques, car le fichier sera automatiquement ignoré.

Tout ce que vous avez à faire est d'aller dans la console de votre application Heroku et de sélectionner la section « Paramètres » et d'ajouter vos clés Twitter depuis le fichier .env. Cliquez sur le bouton « Reveal Config Vars » et ajoutez les variables avec leurs valeurs correspondantes :

CONSUMER_KEYCONSUMER_SECRETACCESS_TOKENACCESS_TOKEN_SECRETSENTIMENT_KEY

Une fois que vous avez configuré les variables Heroku, regardez le fichier config.js de ce projet. Vous allez supprimer cette ligne :

require('dotenv').config();

Vous êtes maintenant prêt à déployer à nouveau sur Heroku. Vos commandes de console devraient ressembler à ceci :

$ git add .$ git commit -m 'add environment variables'$ git push heroku master

Vous pouvez ensuite vérifier les logs Heroku à nouveau avec :

$ heroku logs -t

Vous devriez maintenant avoir un bot que vous pouvez laisser faire son travail pour toujours, ou jusqu'à ce que vous décidiez de changer les critères de recherche ?

Déploiement Heroku via GitHub

Vous pouvez également déployer votre application en vous connectant à GitHub et en déployant automatiquement sur Heroku chaque fois que votre branche master est mise à jour sur GitHub, ce qui est assez simple.

Allez dans le tableau de bord « Deploy » sur Heroku, sélectionnez GitHub comme méthode de déploiement. Si vous avez connecté votre compte GitHub à votre compte Heroku, vous pouvez alors rechercher le dépôt. Donc, si vous avez forké ce dépôt, vous pouvez simplement entrer twitter-bot-bootstrap et Rechercher, puis cliquer sur le bouton Connecter. Vous pouvez ensuite déployer automatiquement depuis GitHub.

Image

Dépannage Heroku

Qu'est-ce que vous voulez dire par « il a planté » ?!

Image

D'accord, j'ai trouvé que parfois le worker est défini comme web et il plante. Essayez de reconfigurer le worker avec :

heroku ps:scale worker=0 heroku ps:scale worker=1

Si cela plante toujours, essayez de configurer les Resources sur le tableau de bord Heroku. J'ai trouvé que si vous basculez entre web, heroku et worker, cela se stabilise généralement. En gros, vous devez être configuré sur le worker Dyno, c'est ce qui cause les plantages Error R10 (Boot timeout) car il essaie d'utiliser une des autres ressources alors qu'il devrait utiliser le worker Dyno.

Image

D'autres commandes Heroku utiles que j'utilise :

heroku restart

Par défaut, vous ne pouvez pousser que votre branche master si vous travaillez sur une branche de développement, par exemple, la branche dev. Si vous voulez tester sur Heroku, vous pouvez utiliser :

git push heroku dev:master

Astuce pratique

Si vous souhaitez ajouter cela à votre propre dépôt GitHub et ne pas partager vos clés API ? avec le monde, vous devriez désactiver le suivi du fichier .env. Depuis le terminal, entrez cette commande git :

$ git update-index --assume-unchanged .env

J'ai ajouté mes commandes git les plus utilisées dans ce gist

Conclusion

Votre bot Twitter devrait maintenant être en ligne. Vous pouvez le modifier et le configurer davantage.

Voici mon dépôt si vous souhaitez le forker et contribuer en utilisant des pull requests. Toutes les contributions, grandes ou petites — fonctionnalités majeures, corrections de bugs, tests d'intégration — sont les bienvenues, mais seront soigneusement examinées et discutées.

Remerciements

Le crédit pour l'inspiration de cet article revient à @amanhimself et ses publications sur la création de votre propre bot Twitter.

create-a-simple-twitter-bot-with-node-js

how-to-make-a-twitter-bot-with-nodejs

twitter-mctwitbot

awesome-twitter-bots

D'autres articles détaillant des bots Twitter utiles.

www.brit.co/twitter-bots-to-follow

www.hongkiat.com/using-twitter-bots

Vous avez lu jusqu'ici ? Wow, merci d'avoir lu ! Si vous avez aimé cet article, n'oubliez pas de le recommander en cliquant sur le bouton 496 à côté, et en le partageant avec vos amis sur les réseaux sociaux.

Si vous voulez en savoir plus sur moi, visitez mon blog, mon Github, ou tweetez-moi @ScottDevTweets.

**Vous pouvez lire d'autres articles comme celui-ci sur mon blog.