Entwicklung eines Slack Bot mit Python mit chat.postMessage

Im vorherigen Artikel habe ich einen Bot erstellt, der eine bestimmte Zeichenfolge zu einer Erwähnung zurückgibt. https://qiita.com/tokoroten_346/items/0aa9c04d5d3f2a956cd2

Dieses Mal werden wir dem Bot etwas mehr Funktionalität geben.

Die Struktur der Datei sieht wie beim letzten Mal aus

hello
 ├ hello.py              #Datei zum Starten des Bots
 ├ slackbot_settings.py  #Datei zum Schreiben von Bot-Einstellungen(Slack Token etc.)。
 └─plugins
   └┬ __init__.py          #Es scheint, dass der Himmel in Ordnung ist ...
    └ bot_module.py        #Dieses Mal werde ich es hier beschreiben und die Funktionen des Bots hinzufügen

Schreiben Sie es sofort in bot_module.py und fügen Sie die Bot-Antwort hinzu. Erstellen Sie zunächst die folgenden Funktionen. · Antworten auf bestimmte Wörter in Erwähnungen (mit reply_to) · Antwort auf ein bestimmtes Wort im Kanal (mit listen_to)

Der Code sieht so aus

bot_module.py


from slackbot.bot import respond_to
from slackbot.bot import listen_to

# respond_zu antworten, wenn erwähnt
@respond_to('Hello')
def mention_function(message):
    #Geben Sie eine Antwort auf locker zurück
    message.reply('World')

# listen_um auf Wörter im Kanal zu antworten
@listen_to('Guten Morgen')
def lesten_function(message):
    #Geben Sie eine Antwort auf locker zurück
   message.reply('Japanische Gowakarimasen')

Antworten Sie auf die Erwähnung mit @respond_to. @listen_to beschreibt die Antwort auf den Kanal.

Anderer Code ist der gleiche wie beim letzten Mal

hello.py


from slackbot.bot import Bot

def main():
    bot = Bot()
    bot.run()

if __name__ == "__main__":
    print("Hello bot")
    main()

slackbot_settings.py


#Geben Sie das Token des Bot-Kontos an, das Sie zuvor erhalten haben
API_TOKEN = "xxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxxxxxxxxx"

#Schreiben Sie die Standardantwort für diesen Bot
DEFAULT_REPLY = "Guten Morgen"

#Liste der Unterverzeichnisnamen, in denen sich das Plug-In-Skript befindet
PLUGINS = ['plugins']

Wenn dieser Bot ausgeführt wird, ist dies wie folgt. botの返事追加.png

"World" wird für "Hallo" -Erwähnungen zurückgegeben, "Nihongowakarimasen" wird für "Guten Morgen" im Kanal zurückgegeben und "Keine Antwort ..." wird für nicht registrierte Erwähnungen zurückgegeben. Übrigens, wenn die Erwähnung und der Beitrag im Kanal umgekehrt werden, wird es nicht gut reagieren. botの返事エラー例.png

Jetzt, da wir mit listen_to und reply_to antworten können, werden wir als nächstes die API von chat.postMessage verwenden. https://api.slack.com/methods/chat.postMessage

Ändern Sie bot_module.py wie folgt.

bot_module.py


from slackbot.bot import respond_to
from slackbot.bot import listen_to
import json
import requests

# respond_zu antworten, wenn erwähnt
@respond_to('Hello')
def mention_function(message):
    post_url = 'https://slack.com/api/chat.postMessage'
    token = 'xxxx-xxxxxxxxx…'  #Beschreiben des OAuth-Zugriffstokens für Bot-Benutzer
    channel = 'xxxxxxx'        #Die Zeichenfolge am Ende der Kanal-URL
    username = 'Grußbot'       #Bot Name
    icon_emoji = ':ghost:'     #Bildschirmsymbol(Dieses Mal werde ich es zu einem Geist machen)
    text       =  'Guten Morgen ~'    #Geben Sie eine Antwort auf locker zurück

    #Beschrieben im JSON-Format
    attachments = [{
        'text': text,
    }]

    payload = {
        'token': token,
        'channel': channel,
        'username': username,
        'icon_emoji': icon_emoji,
        'attachments': json.dumps(attachments)
    }

    res = requests.post(post_url, data=payload)
    print (res.status_code)

# listen_um auf Wörter im Kanal zu antworten
@listen_to('Guten Morgen')
def lesten_function(message):
    #Geben Sie eine Antwort auf locker zurück
   message.reply('Japanische Gowakarimasen')

Tun Sie dies und senden Sie Hallo und erwähnen Sie zu slacktest ゴースト.png

Das Symbol ist ein Geistergrußbot, und Sie werden guten Morgen zurückkehren. Mit chat.postMessage können Sie das Symbol ändern und in json schreiben.

Recommended Posts

Entwicklung eines Slack Bot mit Python mit chat.postMessage
Melden Sie sich mit Anforderungen in Python bei Slack an
Erstellen Sie mit Selenium einen Datenerfassungsbot in Python
Implementieren Sie den Slack Chat Bot in Python
Wie man in Python entwickelt
Übersetzt mit Googletrans in Python
Verwenden des Python-Modus in der Verarbeitung
Post an Slack in Python
Asynchrone Verarbeitung mit LINE BOT: RQ (Redis Queue) in Python
GUI-Programmierung in Python mit Appjar
Versuchen Sie es mit LevelDB mit Python (plyvel)
Lassen Sie uns mit Python 2 einen Investitionsalgorithmus entwickeln
Verwendung globaler Variablen in Python-Funktionen
Mal sehen, wie man Eingaben in Python verwendet
Gesamtleistung in Python (mit Funktools)
Einfach mit Slack mit Bot #NowPlaying
Handschriftliche Zeichenerkennung mit KNN in Python
Versuchen Sie es mit LeapMotion mit Python
Suche nach Tiefenpriorität mit Stack in Python
Bei Verwendung regulärer Ausdrücke in Python
GUI-Erstellung in Python mit tkinter 2
Mausbedienung mit Windows-API in Python
Hinweise zur Verwendung von cChardet und python3-chardet in Python 3.3.1.
GUI-Erstellung in Python mit tkinter Teil 1
Übung, dies in Python zu verwenden (schlecht)
Versuchen Sie, die Kraken-API mit Python zu verwenden
Verwenden von venv in der Windows + Docker-Umgebung [Python]
[FX] Hit oanda-API mit Python mit Docker
Tweet mit der Twitter-API in Python
[Python] [Windows] Serielle Kommunikation in Python über DLL
Ich habe versucht, die Bayes'sche Optimierung von Python zu verwenden
Verwenden physikalischer Konstanten in Python scipy.constants ~ Konstante e ~
Schreiben Sie mit f2py ein Python-Modul in fortran
Zeichnen Sie mit graphviz eine Baumstruktur in Python 3
Hinweise zur Verwendung von Python (Pydev) mit Eclipse
Krankheitsklassifizierung durch Random Forest mit Python
Laden Sie Dateien in jedem Format mit Python herunter
Parallele Taskausführung mit concurrent.futures in Python
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Geokodierung in Python
SendKeys in Python
Erstellen Sie eine GIF-Datei mit Pillow in Python
Metaanalyse in Python
E-Mail-Anhänge über Ihr Google Mail-Konto mit Python.
Unittest in Python
Entwickeln und Bereitstellen von Python-APIs mit Kubernetes und Docker
Versuchen Sie es mit der BitFlyer Ligntning API in Python
Epoche in Python
Zwietracht in Python
Holen Sie sich die Bild-URL mithilfe der Flickr-API in Python
Starten Sie Python
Deutsch in Python
DCI in Python
Hinweise zur Verwendung von dict mit Python [Competition Pro]
Quicksort in Python