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à.
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.
Appuyez sur le bouton de lecture et cliquez sur Ouvrir le terminal
Vous pouvez démarrer l'invite de commande dans l'environnement créé
Créez un compte pour Bot dans Slack. Veuillez consulter Slack Homepage pour savoir comment créer Slack pour votre équipe.
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.
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.
Personnalisez le Bot de manière appropriée.
Installez Slackbot. Vous pouvez le faire en entrant le code suivant à l'invite de commande dans l'environnement créé par Anaconda.
pip install slackbot
Créez la structure de répertoires suivante
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()
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.
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
.
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.
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.
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.
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.
Recommended Posts