[PYTHON] Slackbot-Memorandum (1)

eine Sache

Ich wollte Python studieren, also habe ich einen Bot erstellt, der Slackbot als Ausgangspunkt verwendet. Es wurde eine Funktion für einfache Konversation (Antwort auf ein bestimmtes Wort) und eine Funktion zum Teilen von Wetter- / Verzögerungsinformationen hinzugefügt. Ein Memo zu dieser Zeit.

Vorbereitung

Erstellen einer Python-Umgebung

Installieren Sie Python. Anaconda ist praktisch, weil es eine Python-Umgebung erstellt. Dieses Mal werde ich Ihnen vorstellen, wie Sie mit Anaconda eine Umgebung erstellen.

  1. Installieren Sie Anaconda (Python3-Serie ist gut)
  2. Starten Sie Anaconda Navigator sofort
  3. Erstellen Sie eine Umgebung aus Umgebungen erstellen

create.PNG

Drücken Sie die Wiedergabetaste und klicken Sie auf Terminal öffnen

open.PNG

Sie können die Eingabeaufforderung in der erstellten Umgebung starten

Erstellen Sie ein Slack Bot-Konto

  1. Erstellen Sie ein Konto für Bot in Slack. Auf Slack Homepage erfahren Sie, wie Sie Slack für Ihr Team erstellen.

  2. Klicken Sie hier, während Sie als autorisierter Benutzer angemeldet sind (https://my.slack.com/services/new/bot). Der Bildschirm zur Erstellung eines Bot-Kontos wird geöffnet. slackbot.PNG

  3. Geben Sie Ihren bevorzugten Benutzernamen ein und klicken Sie auf Bot-Integration hinzufügen. Sie benötigen einen Teil namens API-Token. Notieren Sie sich diesen. APIToken.PNG

  4. Passen Sie den Bot entsprechend an.

Erstellen Sie Code, um Bot auszuführen

  1. Installieren Sie Slackbot. Sie können dies tun, indem Sie den folgenden Code an der Eingabeaufforderung in der von Anaconda erstellten Umgebung eingeben. pip install slackbot

  2. Erstellen Sie die folgende Verzeichnisstruktur dire[1].png

  3. Geben Sie den folgenden Code in run.py ein

       from slackbot.bot import Bot
    
        def main():
            bot = Bot()
            bot.run()
    
        if __name__ == "__main__":
            print('start slackbot')
            main()
    
  4. Geben Sie das Token des Bot-Kontos an. Geben Sie den folgenden Code in slackbot_settings.py ein

      API_TOKEN = "API-Token, das ich zuvor aufgeschrieben habe"
    
        #Antwortzeichenfolge, wenn eine an diesen Bot adressierte Nachricht für keine Antwort gilt
        DEFAULT_REPLY = "Worüber redest du"
    
        PLUGINS = [
            'plugins',
        ]
    

1. Zeigen Sie nach dem Speichern des Codes die Eingabeaufforderung erneut an.
Wechseln Sie in das Verzeichnis, in dem run.py vorhanden ist, und führen Sie den folgenden Befehl aus.
 ```python run.py```


1. Sprechen Sie mit dem von Ihnen erstellten Konto.

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

Der Bot "Worüber redest du?" Für alle Wörter ist abgeschlossen.

# Lass uns mehr reden
## Antworte auf ein bestimmtes Wort
Sie können Funktionen hinzufügen, indem Sie "my_mention.py" in dem gerade erstellten Verzeichnis bearbeiten.

Schreiben wir den folgenden Code als Beispiel.


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

from slackbot.bot import respond_to     # @botname:Decoder, der mit reagiert
from slackbot.bot import default_reply  #Decoder, der reagiert, wenn keine entsprechende Antwort erfolgt

@respond_to('Lüge') #Worte, auf die du reagieren sollst
def mention_func(message):
 message.reply('Die Lüge ist eine Fälschung.') #Erwähnen

Fangen wir an. usomaru.PNG

Er antwortete auf ein bestimmtes Wort.

Eine kurze Erklärung des Codes. Zunächst zum Plugins-Verzeichnis. _Init_.py wurde im Plugins-Verzeichnis erstellt Dies wurde erstellt, weil das Verzeichnis, das als Slackbot-Plug-In geladen werden soll, ein Python-Paket sein muss. Der Inhalt ist leer, da er nur als Paket erkannt wird.

Dann my_mention.py Schreiben Sie hauptsächlich den Code, der für die Funktion erforderlich ist, die Sie hier hinzufügen möchten. Wenn Sie die Wörter schreiben, die Sie auf das Argument des Dekorateurs "reply_to" antworten möchten, werden Sie registriert, um auf Erwähnungen an den Bot zu antworten. Da der "Erwähnung" -Teil von "Erwähnung_Funktion" der Fraktionsname ist, Wenn Sie anderen Wörtern eine Erwähnungsfunktion hinzufügen möchten, ändern Sie den Namen hier.

Endlich slackbot_settings.py Der Code-Teil unten ist hier geschrieben

slackbot_settings.py


        PLUGINS = [
            'plugins',
        ] 

Dies wird beschrieben, damit das Plug-In geladen werden kann. Daher kann ein beliebiger Verzeichnisname in den Teil "plubins" eingegeben werden.

Holen Sie sich die Wettervorhersage

Verwenden Sie die Wetterinformations-API (http://weather.livedoor.com/weather_hacks/webservice), um die heutigen Wetterinformationen abzurufen. Diese Site gibt also Daten im JSON-Format zurück Hier erhalten Sie die Informationen, die Sie benötigen.

Dieses Mal werde ich das heutige Wetter vorstellen und wie das Symbol je nach Wetter angezeigt wird.

Fügen Sie den folgenden Code zu "my_mention.py" hinzu, um Funktionen hinzuzufügen.

my_mention.py


@respond_to('das heutige Wetter')
def weather(message):
import urllib
import json

url = 'http://weather.livedoor.com/forecast/webservice/json/v1?city='
# '130010'Dann wird es die Informationen von Tokio erhalten
#Wenn Sie dies ändern, können Sie die Wetterinformationen für jedes Gebiet abrufen.
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']
#Wenn das Telop sonnig ist, handelt es sich um ein sonniges Slack-Symbol oder einen Fall
telop_icon = ''
if telop.find('Schnee') > -1:    
    telop_icon = ':showman:'
elif telop.find('Donner') > -1:
    telop_icon = ':thinder_cloud_and_rain:'
elif telop.find('Fein') > -1:
    if telop.find('Wolkig') > -1:
        telop_icon = ':partly_sunny:'
    elif telop.find('Regen') > -1:
        telop_icon = ':partly_sunny_rain:'
    else:
        telop_icon = ':sunny:'
elif telop.find('Regen') > -1:
    telop_icon = ':umbrella:'
elif telop.find('Wolkig') > -1:
    telop_icon = ':cloud:'
else:
    telop_icon = ':fire:'
text = title + '\n' + 'das heutige Wetter' + telop + telop_icon
message.send(text) 

Hören wir heute das Wetter.

todayweather.PNG

Erklären Sie den Code noch einmal kurz. Erstens die Titel- und Teleop-Teile. Hier wird unter Bezugnahme auf den Eigenschaftsnamen der oben verlinkten Wettervorhersage-API Folgendes angegeben: Sie können die an den Eigenschaftsnamen angehängten Informationen abrufen, indem Sie den gewünschten Eigenschaftsnamen in [''] schreiben. Für die von teleop erhaltene Vorhersageeigenschaft werden die Daten jedoch im Array-Format eingefügt. Der 0. im Array ist das Wetter von heute, der 1. ist das Wetter von morgen und der 2. ist das Wetter von morgen. Dieses Mal möchte ich das heutige Wetter erhalten, also gebe ich die 0. im Array an.

Als nächstes folgt der Teil, der durch die if-Anweisung verzweigt wird. Hier wird das anzuzeigende Slack-Symbol basierend auf dem von teleop erfassten Wetterwort verzweigt.

Schließlich verbindet der Textteil die Wörter, die auf dem Bot angezeigt werden sollen. Sie können sogar die höchste Temperatur erreichen, daher lohnt es sich, sie in Zukunft anzupassen.

Informationen zur Verzögerung erhalten

Schließlich erhalten Sie die Zugverspätungsinformationen. Hier Verwenden Sie die Verzögerungsinformationen JSON und verwenden Sie dieselbe Methode wie bei der Wettervorhersage.

Wir werden die Funktion erneut hinzufügen, also fügen Sie den folgenden Code zu "my_mention.py" hinzu.

my_mention.py


@respond_to('Kommst du zu spät zum Zug?')
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 + 'Ist verzögert ♪'
message.send(text) 

Ich werde es anzeigen.

キャプチャ.JPG

Ich habe es noch nicht so angepasst, dass Verzögerungsinformationen nach Region angezeigt werden Verzögerungsinformationen werden landesweit veröffentlicht.

In Zukunft planen wir, einen Bot zu erstellen, der die Verzögerungsinformationen für jede Region anpasst und empfohlene Restaurants einführt.

Referenzseite

Fortsetzung

Recommended Posts

Slackbot-Memorandum (1)
Matplotlib Memorandum
Linux Memorandum
jinja2 Memorandum
Python-Memorandum
Django Memorandum
Befehlsmemorandum
Slackbot Memorandum ~ Anfrage mit regulären Ausdrücken ~
Plotly Memorandum
Multiprocessing Memorandum
Memorandum MetaTrader5
ShellScript-Memorandum
Pip Memorandum
Python-Memorandum
Pydoc Memorandum
Python Memorandum
Memorandum of Pandas
Python Memorandum
DjangoGirls Memorandum
Befehlsmemorandum
Python-Memorandum
Pandas Memorandum
Python Memorandum
Python-Memorandum
Python-Grundmemorandum
Memorandum vom RAID-Typ
Python Pathlib Memorandum
Rucksack Problem Memorandum
Memorandum von sed
Python-Memorandum (Algorithmus)
Linux Memorandum [Links]
nc Befehl Memorandum
Deep Learning Memorandum
numpy memorandum 1 / np.pad
Revit API-Memorandum
Memorandum Conda Befehl
Pandas Operations Memorandum
setuptools Befehl Memorandum
Python-Memorandum [Links]
tslearn Trial Memorandum
Djangos grundlegendes Memorandum
Memorandum über die Validierung