[PYTHON] Mémorandum Slackbot (1)

une chose

Je voulais commencer à étudier le python, j'ai donc créé un bot en utilisant Slackbot comme point de départ. Ajout d'une fonction de conversation simple (réponse à un mot spécifique) et d'une fonction pour vous indiquer les informations météo / retard. Un mémo à ce moment-là.

Préparation

Construire un environnement python

Installez Python. Anaconda est pratique car il crée un environnement Python. Donc, cette fois, je vais vous présenter comment créer un environnement à l'aide d'Anaconda.

  1. Installez Anaconda (la série Python3 est bonne)
  2. Démarrez Anaconda Navigator immédiatement
  3. Créez un environnement à partir de Créer des environnements

create.PNG

Appuyez sur le bouton de lecture et cliquez sur Ouvrir le terminal

open.PNG

Vous pouvez démarrer l'invite de commande dans l'environnement créé

Créer un compte Slack Bot

  1. Créez un compte pour Bot dans Slack. Veuillez consulter Slack Homepage pour savoir comment créer Slack pour votre équipe.

  2. Lorsque vous êtes connecté en tant qu'utilisateur autorisé, cliquez ici (https://my.slack.com/services/new/bot). L'écran de création de compte Bot s'ouvre. slackbot.PNG

  3. Entrez votre nom d'utilisateur préféré et cliquez sur Ajouter une intégration de bot. Vous aurez besoin d'une pièce appelée API Token, alors notez-la. APIToken.PNG

  4. Personnalisez le Bot de manière appropriée.

Créer du code pour exécuter Bot

  1. Installez Slackbot. Vous pouvez le faire en entrant le code suivant à l'invite de commande dans l'environnement créé par Anaconda. pip install slackbot

  2. Créez la structure de répertoires suivante dire[1].png

  3. Entrez le code suivant dans run.py

       from slackbot.bot import Bot
    
        def main():
            bot = Bot()
            bot.run()
    
        if __name__ == "__main__":
            print('start slackbot')
            main()
    
  4. Spécifiez le jeton du compte de bot. Entrez le code suivant dans slackbot_settings.py

      API_TOKEN = "Jeton API que j'ai noté plus tôt"
    
        #Chaîne de réponse lorsqu'un message adressé à ce bot ne s'applique à aucune réponse
        DEFAULT_REPLY = "Qu'est-ce que tu racontes"
    
        PLUGINS = [
            'plugins',
        ]
    

1. Après avoir enregistré le code, affichez à nouveau l'invite de commande.
Accédez au répertoire dans lequel run.py existe et exécutez la commande suivante.
 ```python run.py```


1. Parlez au compte que vous avez créé.

![image.png](https://qiita-image-store.s3.amazonaws.com/0/201826/9b961af2-70b0-600e-3221-8290386df272.png)

Le bot "De quoi parlez-vous" pour tous les mots est terminé.

# Parlons plus
## Répondre à un mot spécifique
Vous pouvez ajouter des fonctionnalités en éditant `my_mention.py` dans le répertoire que vous venez de créer.

Écrivons le code suivant à titre d'exemple.


#### **`my_mention.py`**
```python

from slackbot.bot import respond_to     # @botname:Décodeur qui réagit avec
from slackbot.bot import default_reply  #Décodeur qui réagit lorsqu'il n'y a pas de réponse correspondante

@respond_to('Mensonge') #Les mots auxquels je veux que tu réagisses
def mention_func(message):
 message.reply('Le mensonge est un faux.') #Mention

Commençons. usomaru.PNG

Il a répondu à un mot précis.

Une brève explication du code. Tout d'abord, à propos du répertoire des plugins. _Init_.py créé dans le répertoire des plugins Cela a été créé car le répertoire à charger en tant que plug-in Slackbot doit être un package Python. Le contenu est vide car il n'est reconnu qu'en tant que package.

Puis my_mention.py Écrivez principalement le code requis pour la fonction que vous souhaitez ajouter ici. En écrivant les mots que vous souhaitez répondre à l'argument du décorateur respond_to, vous serez inscrit pour répondre aux mentions du Bot. Puisque la partie mention de mention_func est le nom de la faction, Si vous souhaitez ajouter une fonction de mention à d'autres mots, modifiez le nom ici.

Enfin slackbot_settings.py La partie de code ci-dessous écrite ici

slackbot_settings.py


        PLUGINS = [
            'plugins',
        ] 

Ceci est décrit afin que le plug-in puisse être chargé. Par conséquent, n'importe quel nom de répertoire peut être entré dans la partie plubins.

Obtenez les prévisions météo

Utilisez l'API d'informations météorologiques (http://weather.livedoor.com/weather_hacks/webservice) pour obtenir les informations météorologiques du jour. Ce site renvoie des données au format json, donc Obtenez les informations dont vous avez besoin d'ici.

Cette fois, je présenterai la météo du jour et comment afficher l'icône en fonction de la météo.

Ajoutez le code suivant à my_mention.py pour ajouter des fonctionnalités.

my_mention.py


@respond_to('La météo d'aujourd'hui')
def weather(message):
import urllib
import json

url = 'http://weather.livedoor.com/forecast/webservice/json/v1?city='
# '130010'Ensuite, il obtiendra les informations de Tokyo
#Si vous modifiez cela, vous pouvez obtenir les informations météorologiques de n'importe quelle région.
city_id = '130010'
html = urllib.request.urlopen(url + city_id)
jsonfile = json.loads(html.read().decode('utf-8'))
title = jsonfile['title'] 
telop = jsonfile['forecasts'][0]['telop']
#Si le telop est ensoleillé, ce sera une icône ou un étui ensoleillé
telop_icon = ''
if telop.find('neige') > -1:    
    telop_icon = ':showman:'
elif telop.find('Tonnerre') > -1:
    telop_icon = ':thinder_cloud_and_rain:'
elif telop.find('Bien') > -1:
    if telop.find('Nuageux') > -1:
        telop_icon = ':partly_sunny:'
    elif telop.find('pluie') > -1:
        telop_icon = ':partly_sunny_rain:'
    else:
        telop_icon = ':sunny:'
elif telop.find('pluie') > -1:
    telop_icon = ':umbrella:'
elif telop.find('Nuageux') > -1:
    telop_icon = ':cloud:'
else:
    telop_icon = ':fire:'
text = title + '\n' + 'La météo d'aujourd'hui' + telop + telop_icon
message.send(text) 

Écoutons la météo aujourd'hui.

todayweather.PNG

Expliquez à nouveau brièvement le code. Tout d'abord, le titre et les parties téléopérées. Ici, en référence au nom de propriété de l'API de prévisions météo liée ci-dessus, Vous pouvez obtenir les informations attachées au nom de la propriété en écrivant le nom de la propriété que vous souhaitez dans ['']. Cependant, pour la propriété de prévisions obtenue par teleop, les données sont insérées au format tableau. Le 0 du tableau correspond à la météo d'aujourd'hui, le premier à la météo de demain et le deuxième à la météo de demain. Cette fois, je veux obtenir la météo d'aujourd'hui, donc je spécifie le 0e dans le tableau.

Vient ensuite la partie qui est branchée par l'instruction if, Ici, l'icône de mou à afficher est branchée en fonction du mot météo acquis par teleop.

Enfin, la partie texte relie les mots à afficher sur le bot. Vous pouvez même obtenir la température la plus élevée, il vaut donc la peine de la personnaliser à l'avenir.

Obtenir des informations sur les délais

Enfin, obtenez les informations sur les retards de train. Utilisez les informations de retard JSON de ici et utilisez la même méthode que lorsque la prévision météo a été obtenue.

Nous ajouterons à nouveau la fonction, alors ajoutez le code suivant à my_mention.py.

my_mention.py


@respond_to('Êtes-vous en retard pour le train?')
def train(message):
import urllib
import json

url = 'https://rti-giken.jp/fhc/api/train_tetsudo/delay.json'
html = urllib.request.urlopen(url)
jsonfile = json.loads(html.read().decode('utf-8'))
    
for json in jsonfile:    
name = json['name'] 
company = json['company']
text = company + name + 'Est retardé ♪'
message.send(text) 

Je vais l'afficher.

キャプチャ.JPG

Je ne l'ai pas encore personnalisé pour afficher les informations de retard par région, donc Des informations sur les retards seront diffusées à l'échelle nationale.

À l'avenir, nous prévoyons de créer un robot qui personnalisera les informations de retard pour chaque région et introduira les restaurants recommandés.

Page de référence

A continué

Recommended Posts

Mémorandum Slackbot (1)
Mémorandum Matplotlib
mémorandum Linux
mémorandum jinja2
Mémorandum Python
Mémorandum Django
Mémorandum de commandement
Mémorandum slackbot ~ Demande utilisant des expressions régulières ~
mémorandum complot
mémorandum de multitraitement
Mémorandum MetaTrader5
Mémorandum ShellScript
mémorandum pip
Mémorandum Python
mémorandum pydoc
mémorandum python
Mémorandum de Pandas
mémorandum python
Mémorandum DjangoGirls
Mémorandum de commandement
Mémorandum Python
mémorandum pandas
mémorandum python
Mémorandum Python
Mémorandum de base Python
Mémorandum de type RAID
Mémorandum de Python Pathlib
Mémorandum de problème de sac à dos
Mémorandum de sed
Mémorandum Python (algorithme)
Mémorandum Linux [liens]
mémorandum de commande nc
Mémorandum d'apprentissage profond
mémorandum numpy 1 / np.pad
Mémorandum d'API Revit
Commande mémorandum conda
Mémorandum d'opération Pandas
Mémorandum de commande setuptools
Mémorandum Python [liens]
Mémorandum de procès tslearn
Mémorandum de base de Django
Mémorandum sur la validation