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.
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.
Drücken Sie die Wiedergabetaste und klicken Sie auf Terminal öffnen
Sie können die Eingabeaufforderung in der erstellten Umgebung starten
Erstellen Sie ein Konto für Bot in Slack. Auf Slack Homepage erfahren Sie, wie Sie Slack für Ihr Team erstellen.
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.
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.
Passen Sie den Bot entsprechend an.
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
Erstellen Sie die folgende Verzeichnisstruktur
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()
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.
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.
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.
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.
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.
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.
Recommended Posts