[PYTHON] Lassen Sie uns ein Errbot-Plugin erstellen

Der Mechanismus, der Hubots Hubot-Skript entspricht, wird in Errbot als Plugin bezeichnet.

Hier enthält Plugins von Drittanbietern. Ich werde es schaffen, weil es eine große Sache ist.

Grundlegender Teil des Plugins

Das Plugin benötigt zwei Dateien.

Die Plug-Datei ist eine ** Plugin-Metadatendatei **. Es beschreibt die Python-Versionsspezifikation, die Erklärung beim Ausführen des Hilfebefehls usw.

Das Python-Modul ist eine ** Plugin-Entität **. Schreiben Sie die Logik hier.

Plugin nur um zu antworten

hello_plugin.png

hello.plug


[Core]
Name = Hello
Module = hello

[Python]
Version = 2+

[Documentation]
Description = Hello plugin

hello.py


# -*- coding:utf8 -*-
from __future__ import division, print_function, absolute_import
from errbot import BotPlugin, botcmd


class Hello(BotPlugin):
    @botcmd
    def hello(self, msg, args):
        return 'Hello world!'

Ein bisschen mehr Details zum Inhalt

Die Entitätsklasse des Plugins erbt von BotPlugin. Zum Zeitpunkt der Initialisierung werden verschiedene Verarbeitungsschritte ausgeführt, diesmal werde ich jedoch darauf verzichten. Der Name der Methode, die mit dem Dekorator botcmd dekoriert wurde, wird so wie er ist zum Befehl.

Die Methode, die zum Befehl bot wird, erfordert zwei Argumente.

Wenn die mit botcmd dekorierte Methode einen String zurückgibt, spricht sie so wie sie ist. Es ist einfach und schön.

Plugin, das das Wetter anzeigt

bl549uY4BE.gif

weather.py


# -*- coding:utf8 -*-
from __future__ import division, print_function, absolute_import
from errbot import BotPlugin, botcmd
import requests
from xml.etree import ElementTree


class Weather(BotPlugin):
    WEATHER_HACK_AREA_URL = \
        'http://weather.livedoor.com/forecast/rss/primary_area.xml'
    WEATHER_HACK_API_URL = \
        'http://weather.livedoor.com/forecast/webservice/json/v1?'

    @botcmd
    def weather(self, msg, args):
        #Suchen Sie die im Argument angegebene Stadt
        city_id = self.find_city_id(args)
        if city_id is None:
            return u'{}Ist ein unbekannter Bereich'.format(args)
        resp = requests.get(
            self.WEATHER_HACK_API_URL,
            {'city': city_id}
        )
        wt_json = resp.json()
        return u'{}: {}Ist{}'.format(
            wt_json['title'],
            wt_json['forecasts'][0]['dateLabel'],
            wt_json['forecasts'][0]['telop']
        )

    def find_city_id(self, city_name):
        """Finden Sie mit der Livedoor-API eine Stadt, die das Wetter zurückgibt
        """
        resp = requests.get(self.WEATHER_HACK_AREA_URL)
        tree = ElementTree.fromstring(resp.content)
        cities = {
            elm.attrib['title']: elm.attrib['id']
            for elm in tree.findall('.//city')
        }
        return cities.get(city_name, None)

Zu diesem Zeitpunkt wird args grob als der Name der Stadt angesehen und das Wetter wird zurückgegeben. "Wenn Sie mehrere Städte nach Raum werfen, teilen Sie sie und geben Sie das Wetter jeder Stadt zusammen zurück." Es ist auch möglich. Wenn Sie ArgumentParser verwenden, können Sie flexibel mit Argumenten umgehen, sodass es anscheinend verschiedene Möglichkeiten gibt.

Recommended Posts

Lassen Sie uns ein Errbot-Plugin erstellen
Lassen Sie uns ein Backend-Plug-In für Errbot erstellen
Erstellen Sie eine MQTT Publisher-Box
Machen wir Othello mit wxPython
Erstellen Sie eine MQTT-Abonnentenbox
Machen Sie Slack Chatbot mit Errbot
Machen wir ein IoT-Shirt mit Lambda, Kinesis, Raspberry Pi [Teil 1]
Machen wir eine Remote-Rumba [Hardware]
Lassen Sie uns eine GUI mit Python erstellen.
Machen wir einen Spot Sale Service 2
Machen wir einen Blockbruch mit wxPython
Erstellen Sie ein zusammengesetztes RGB 3-Farbdiagramm
Machen wir einen Spot Sale Service 1
Machen wir Othellos KI mit Chainer-Teil 1-
Machen Sie let und lassen Sie uns einzeilig programmieren
[Blender] So erstellen Sie ein Blender-Plug-In
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Machen wir mit xCAT einen Spacon
Machen wir Othellos KI mit Chainer-Teil 2-
Machen Sie Scrapy exe mit Pyinstaller
Machen wir einen Spot Sale Service 3
Erstellen Sie eine MQTT Publisher Box Teil 2
Lassen Sie uns ein Bilderkennungsmodell mit Ihren eigenen Daten erstellen und spielen!