[Introduction] Je veux créer un robot Mastodon avec Python! 【Débutants】

Cible

--Faites un robot pour renvoyer le perroquet

Environnement

Tout d'abord, puisque nous programmons en Python, nous devons préparer ** Python **. De plus, pour créer MastodonBot, vous avez besoin d'une bibliothèque [^ 2] pour obtenir l'API [^ 1] préparée par une personne incroyable appelée ** mastodon.py **. Préparez la bibliothèque en utilisant quelque chose appelé ** pip **, ce qui facilite l'installation de la bibliothèque Python. Fondamentalement, pip est disponible lorsque vous installez Python. Il est nécessaire de préparer un ** jeton d'accès ** dans le code du Bot pour déterminer quel compte [^ 3] de quelle instance se comportera comme écrit. Donc

1-1. Python 1-2. pip 2. ** mastodon.py (bibliothèque) ** 3. ** Jeton d'accès **

Est nécessaire. Préparons-nous dans l'ordre.

1-1. Préparation de Python

https://www.python.org/downloads/ Téléchargez et installez Python à partir de ce site. En gros, c'est la dernière, et vous pouvez télécharger celle pour le système d'exploitation de votre environnement (Windows, Mac, etc.). Commençons le fichier installé plus tôt et effectuons la configuration. Cochez quelque chose comme Ajouter Python 3.X.X à PATH et laissez-le passer par le PATH. [^ 4] Appuyez ensuite sur Installer maintenant.

1-2. Préparation du pip

Je pense que la plupart des gens passeront par ce processus car il semble être essentiellement installé en Python. Vérifions si le pip est correctement inséré. Démarrez le terminal fourni dans le système d'exploitation. C'est "l'invite de commande" dans Windows. Pour les utilisateurs de Windows, démarrez «Exécuter en spécifiant un fichier» avec «Win + R» et tapez «cmd» pour l'exécuter, et vous pouvez démarrer l'invite de commande. Si vous ne savez pas comment démarrer, veuillez rechercher chacun d'eux sur Google. (Abandonné) Si vous tapez python -m pip -V (attention à ne pas confondre le cas) dans le terminal et que la version de pip sort, pip est déjà inclus.

** Si pip n'est pas inclus ** Veuillez vous référer à l'article suivant. https://qiita.com/Chino_Kafuu/items/6be7aa6798c7d7dcc129

2. Préparation de mastodon.py

Tapez simplement pip install mastodon.py dans le terminal. pip est pratique.

3. Préparation du jeton d'accès

Veuillez vous connecter au compte que vous souhaitez exploiter en tant que Bot avec l'instance que vous souhaitez exploiter en tant que Bot. Si vous ne savez pas ce que vous dites, veuillez accéder à Mastodon, que vous utilisez toujours, avec votre navigateur. Appuyez sur Préférences utilisateur (icône d'engrenage) et appuyez sur l'onglet Développement. Il y a un bouton pour créer une nouvelle application, alors appuyez dessus. Veuillez aimer le nom de l'application. Cependant, veuillez noter que tout le monde peut voir le nom de l'application. Vous pouvez vérifier le jeton d'accès en enregistrant et en appuyant à nouveau sur le nom de l'application. Vous pouvez utiliser ce jeton d'accès pour que le compte se comporte comme vous le souhaitez.

Écrivons le code

Enfin, l'environnement de création de Mastodon Bot est terminé. Créez un dossier pour Bot pour faciliter l'organisation et créez un fichier python comme MastodonBot.py. Nous écrirons le code Bot dans ce fichier. Ouvrez ce fichier avec votre éditeur de texte préféré [^ 5]. Tout d'abord, copiez et collez le code ci-dessous pour modifier le jeton d'accès et l'URL.

Bot.py


from mastodon import Mastodon, StreamListener

#Le comportement principal de Bot est décrit ici.
class Bot(StreamListener):
    #Un endroit où Bot se prépare. La soi-disant magie.
    def __init__(self):
        super(Bot, self).__init__()
    #S'il y a un mouvement dans la chronologie locale du compte, le comportement à l'intérieur est lu avec les informations du nouveau toot.
    def on_update(self, status):
        pass

def Login():
    mastodon = Mastodon(
                access_token = "*******************",           #Placez le jeton d'accès que vous venez d'obtenir ici.
                api_base_url = "https://mastodonexample.com"    #Écrivez l'URL de l'instance Mastodon ici
                )
    return mastodon

def LTLlisten(mastodon):
    bot = Bot()
    mastodon.stream_local(bot)

#Traitement pour se connecter
mastodon = Login()
LTLlisten(mastodon)

La fonction on_update dans ce code est lue lorsque le LTL (chronologie locale) s'exécute. Et les informations du nouveau toot qui ont coulé vers LTL sont affectées à la variable status sous forme de fichier json [^ 6]. Nous réécrirons la partie pass dans ce code et l'ajouterons pour créer le processus Bot! !!

Tout d'abord, affichons le texte du nouveau toot dans le terminal. Oublions les informations dans le texte dans le statut. Vous pouvez obtenir les informations du texte en écrivant status ['content']. Affichons-le avec la fonction d'impression.

Bot.py


    #S'il y a un mouvement dans la chronologie locale du compte, le comportement à l'intérieur est lu avec les informations du nouveau toot.
    def on_update(self, status):
        print(status['content'])

Si vous faites cela dans le terminal, le texte apparaîtra dans le terminal. Mais quand je le regarde <p> Yaharo </ p> Il a une balise HTML

comme celle-ci. python a une méthode appelée replace qui remplace une partie de la chaîne. Utilisons-le pour supprimer la balise

.

Bot.py


    #S'il y a un mouvement dans la chronologie locale du compte, le comportement à l'intérieur est lu avec les informations du nouveau toot.
    def on_update(self, status):
        content = status['content'].replace('<p>', '').replace('</p>', '')
        print(content)

Si vous l'écrivez comme ceci, la balise

disparaîtra et le texte sera meilleur. Avec cela, les informations dans le texte peuvent être extraites. Faisons enfin un robot de retour de perroquet. Il y a une fonction qui rend le Bot toot. C'est «mastodon.toot ()». Si vous mettez une chaîne de caractères dans this (), la phrase sera tootée.

Bot.py


    #S'il y a un mouvement dans la chronologie locale du compte, le comportement à l'intérieur est lu avec les informations du nouveau toot.
    def on_update(self, status):
        mastodon.toot('C'est intéressant!')     #Veuillez ne pas le faire car ce sera ennuyeux si vous l'exécutez tel quel.

Cependant, avec ce code, chaque fois que quelqu'un toot, quelque chose devient un Bot ennuyeux. Fixons les conditions du mouvement et contrôlons-le.

Bot.py


    #S'il y a un mouvement dans la chronologie locale du compte, le comportement à l'intérieur est lu avec les informations du nouveau toot.
    def on_update(self, status):
        content = status['content'].replace('<p>', '').replace('</p>', '')
        if 'intéressant?' in content:
            mastodon.toot('C'est intéressant!')

L'instruction conditionnelle est-elle «intéressante dans le contenu de la chaîne»? La condition est de savoir si «est inclus ou non. Maintenant, vous n'êtes plus un bot ennuyeux. Let's toot le texte que vous venez de recevoir!

Bot.py


    #S'il y a un mouvement dans la chronologie locale du compte, le comportement à l'intérieur est lu avec les informations du nouveau toot.
    def on_update(self, status):
        content = status['content'].replace('<p>', '').replace('</p>', '')
        if '!Parrot' in content:
            mastodon.toot(content)      #Veuillez ne pas le faire car ce sera ennuyeux si vous l'exécutez tel quel.

J'ai préparé un déclencheur de type commande que le Bot réagit comme un Bot. Cependant, si vous l'exécutez tel quel, ce sera difficile. (C'est ennuyeux, mais vous pouvez le voir lorsque vous l'essayez.) Que va-t-il se passer? Lorsque le Bot est nouvellement tooté, le LTL se déplacera, alors lisez à nouveau la fonction on_update. Le corps doit contenir «! Parrot», de sorte que le Bot réagit au toot du Bot. Répétez ceci et créez une boucle infinie pour toujours jusqu'à ce que le Bot s'arrête. Empêchons cela. Il existe plusieurs solutions de contournement, mais je vais vous en montrer une.

Bot.py


    #S'il y a un mouvement dans la chronologie locale du compte, le comportement à l'intérieur est lu avec les informations du nouveau toot.
    def on_update(self, status):
        content = status['content'].replace('<p>', '').replace('</p>', '')
        if '!Parrot' in content:
            content = content.replace('!Parrot', '')
            mastodon.toot(content)

Supprimons la partie déclencheur de la méthode de remplacement introduite précédemment. Lorsqu'un toot contenant la chaîne '! Parrot' s'écoule dans le LTL, il est maintenant renvoyé en tant que perroquet. Ceci termine le retour du perroquet Bot! !! !!

En plus de mastodon.toot (), il existe de nombreuses fonctions qui permettent à Bot de se comporter de différentes manières. Si vous étudiez en référence à la référence ici, vous pourrez créer votre Bot préféré. Référence mastodon.py traduction japonaise

Article de référence pour cet article

Votre commande est-elle un robot Mastodon? Pour les nouveaux utilisateurs qui souhaitent déménager maintenant ☕ https://qiita.com/Chino_Kafuu/items/6be7aa6798c7d7dcc129

[^ 1]: Un outil semblable à un outil qui renvoie des données dans un fichier tel que json [^ 6] pour faciliter la falsification des données en externe. [^ 2]: Un fichier qui rassemble diverses fonctions utiles en python.
Les fonctions peuvent être utilisées en écrivant comme «import xxx» ou «from xxx import yyy, zzz». [^ 3]: Chaque serveur Mastodon. [^ 4]: Si vous passez le PATH, lorsque vous utilisez la commande python dans le terminal, vous pouvez l'utiliser simplement en écrivant python sans écrire l'emplacement du fichier python. Pensez-y comme une magie qui vous sera utile si vous ne la comprenez pas. [^ 5]: Un outil utilisé pour écrire de la programmation et d'autres codes. Notepad est également inclus dans l'éditeur de texte, mais il existe des éditeurs de texte gratuits et pratiques tels que VSCode, Vim, Atom, alors utilisons celui que vous aimez. Au fait, lorsque vous téléchargez Python, il semble que l'éditeur de texte IDLE pour Python soit inclus. [^ 6]: une des méthodes de description d'un fichier qui stocke des données. Je le vois souvent sur le Web.

Recommended Posts

[Introduction] Je veux créer un robot Mastodon avec Python! 【Débutants】
Je veux faire un jeu avec Python
Je veux écrire dans un fichier avec Python
Les débutants en Python ont décidé de créer un bot LINE avec Flask (commentaire approximatif de Flask)
Je veux travailler avec un robot en python.
[Python] Je veux faire d'une liste imbriquée un taple
Je veux faire fonctionner un ordinateur quantique avec Python
Je veux déboguer avec Python
Si vous voulez créer un bot discord avec python, utilisons un framework
Créez un bot Mastodon avec une fonction pour répondre automatiquement avec Python
Je veux créer un éditeur de blog avec l'administrateur de django
Je veux faire une macro de clic avec pyautogui (Outlook)
Je souhaite envoyer un message de Python à LINE Bot
Je veux ajouter un joli complément à input () en python
[Mac] Je souhaite créer un serveur HTTP simple qui exécute CGI avec Python
Je veux créer un environnement Python
Je veux analyser les journaux avec Python
Je veux jouer avec aws avec python
Faisons un bot Twitter avec Python!
[5e] J'ai essayé de créer un certain outil de type Authenticator avec python
Je souhaite utiliser un caractère générique que je souhaite décortiquer avec Python remove
Je veux connaître la météo avec LINE bot avec Heroku + Python
[2nd] J'ai essayé de créer un certain outil de type Authenticator avec python
[3ème] J'ai essayé de créer un certain outil de type Authenticator avec python
Je souhaite rechercher le texte intégral avec elasticsearch + python
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé de créer une application de notification de publication à 2 canaux avec Python
J'ai essayé de créer une application todo en utilisant une bouteille avec python
[4th] J'ai essayé de créer un certain outil de type Authenticator avec python
[1er] J'ai essayé de créer un certain outil de type Authenticator avec python
Je veux faire un changeur de voix en utilisant Python et SPTK en référence à un site célèbre
Je veux faire de matplotlib un thème sombre
Je veux utiliser MATLAB feval avec python
Créer un bot Twitter Trend avec heroku + Python
Je veux créer une fenêtre avec Python
Essayez de créer un code de "décryptage" en Python
Je souhaite utiliser le répertoire temporaire avec Python2
#Unresolved Je veux compiler gobject-introspection avec Python3
Je veux résoudre APG4b avec Python (chapitre 2)
Essayez de créer un groupe de dièdre avec Python
Je veux créer du code C ++ à partir de code Python!
Made Mattermost Bot avec Python (+ Flask)
J'ai essayé de créer un LINE BOT "Sakurai-san" avec API Gateway + Lambda
J'ai essayé de faire un signal avec Raspeye 4 (édition Python)
Je souhaite créer une application Web en utilisant React et Python flask
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
Même les débutants veulent dire "Je comprends parfaitement Python"
Je souhaite intégrer une variable dans une chaîne Python
Je veux facilement implémenter le délai d'expiration en python
J'ai fait un Twitter BOT avec GAE (python) (avec une référence)
Je veux répéter plusieurs fois un générateur Python
Je veux générer rapidement UUID (memo memo) ~ Edition Python ~
Je veux faire la transition avec un bouton sur le ballon
Faisons un outil de veille de commande avec python
J'ai fait une application d'envoi de courrier simple avec tkinter de Python
Je veux gérer l'optimisation avec python et cplex
Je veux escalader une montagne avec l'apprentissage par renforcement
Je veux écrire en Python! (2) Écrivons un test