Développement de slack bot avec python en utilisant chat.postMessage

Dans l'article précédent, j'ai créé un bot qui renvoie une chaîne spécifique à une mention. https://qiita.com/tokoroten_346/items/0aa9c04d5d3f2a956cd2

Cette fois, nous allons donner au bot un peu plus de fonctionnalités.

La structure du fichier ressemble à celle de la dernière fois

hello
 ├ hello.py              #Fichier pour démarrer le bot
 ├ slackbot_settings.py  #Fichier pour écrire les paramètres du bot(jeton mou etc.)。
 └─plugins
   └┬ __init__.py          #Il semble que le ciel va bien ...
    └ bot_module.py        #Cette fois, je vais le décrire ici et ajouter les fonctions du bot

Écrivez-le immédiatement dans bot_module.py et ajoutez la réponse du bot. Commencez par créer les fonctions suivantes. · Réponses à des mots spécifiques dans les mentions (en utilisant respond_to) · Réponse à un mot spécifique de la chaîne (en utilisant listen_to)

Le code ressemble à ceci

bot_module.py


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

# respond_répondre en mentionnant
@respond_to('Hello')
def mention_function(message):
    #Renvoyer une réponse à slack
    message.reply('World')

# listen_pour répondre aux mots de la chaîne
@listen_to('Bonjour')
def lesten_function(message):
    #Renvoyer une réponse à slack
   message.reply('Japonais Gowakarimasen')

Répondez à la mention avec @respond_to. @listen_to décrit la réponse au canal.

L'autre code est le même que la dernière fois

hello.py


from slackbot.bot import Bot

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

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

slackbot_settings.py


#Spécifiez le jeton du compte de bot que vous avez obtenu précédemment
API_TOKEN = "xxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxxxxxxxxx"

#Ecrire la réponse par défaut pour ce bot
DEFAULT_REPLY = "Bonjour"

#Liste des noms de sous-répertoires où se trouve le script de plug-in
PLUGINS = ['plugins']

Lorsque ce bot est exécuté, ce sera comme suit. botの返事追加.png

"Monde" est renvoyé pour les mentions "Bonjour", "Nihongowakarimasen" est renvoyé pour "Bonjour" dans la chaîne et "Pas de réponse ..." est renvoyé pour les mentions non enregistrées. Au fait, si la mention et le message dans le canal sont inversés, cela ne répondra pas bien. botの返事エラー例.png

Maintenant que nous pouvons répondre avec listen_to et respond_to, nous utiliserons ensuite l'API de chat.postMessage. https://api.slack.com/methods/chat.postMessage

Modifiez bot_module.py comme suit.

bot_module.py


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

# respond_répondre en mentionnant
@respond_to('Hello')
def mention_function(message):
    post_url = 'https://slack.com/api/chat.postMessage'
    token = 'xxxx-xxxxxxxxx…'  #Décrire le jeton d'accès OAuth de l'utilisateur du bot
    channel = 'xxxxxxx'        #La chaîne à la fin de l'URL de la chaîne
    username = 'Salutation bot'       #nom du bot
    icon_emoji = ':ghost:'     #Icône d'affichage(Cette fois, je vais en faire un fantôme)
    text       =  'Bonjour ~'    #Renvoyer une réponse à slack

    #Décrit au format json
    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_pour répondre aux mots de la chaîne
@listen_to('Bonjour')
def lesten_function(message):
    #Renvoyer une réponse à slack
   message.reply('Japonais Gowakarimasen')

Faites ceci et envoyez Bonjour et mentionnez à slacktest ゴースト.png

L'icône est un robot de voeux fantôme, et vous reviendrez bonjour. En utilisant chat.postMessage, vous pouvez changer l'icône et écrire en json.

Recommended Posts

Développement de slack bot avec python en utilisant chat.postMessage
Connectez-vous à Slack à l'aide de requêtes en Python
Créer un bot de collecte de données en Python à l'aide de Selenium
Implémenter le bot de discussion Slack en Python
Comment développer en Python
Traduit à l'aide de googletrans en Python
Utilisation du mode Python dans le traitement
Publier sur Slack en Python
Traitement asynchrone avec LINE BOT: RQ (Redis Queue) en Python
Programmation GUI en Python avec Appjar
Essayez d'utiliser LevelDB avec Python (plyvel)
Développons un algorithme d'investissement avec Python 2
Utilisation de variables globales dans les fonctions python
Voyons voir l'utilisation de l'entrée en python
Puissance totale en Python (en utilisant functools)
Facile avec Slack en utilisant Bot #NowPlaying
Reconnaissance de caractères manuscrits à l'aide de KNN en Python
Essayez d'utiliser LeapMotion avec Python
Recherche de priorité de profondeur à l'aide de la pile en Python
Lors de l'utilisation d'expressions régulières en Python
Création d'interface graphique en python avec tkinter 2
Fonctionnement de la souris à l'aide de l'API Windows en Python
Notes utilisant cChardet et python3-chardet dans Python 3.3.1.
Création d'interface graphique en python à l'aide de tkinter partie 1
Pratique d'utilisation de ceci en Python (mauvais)
Essayez d'utiliser l'API Kraken avec Python
Utilisation de venv dans un environnement Windows + Docker [Python]
[FX] Hit oanda-API avec Python en utilisant Docker
Tweet à l'aide de l'API Twitter en Python
[Python] [Windows] Communication série en Python à l'aide de DLL
J'ai essayé d'utiliser l'optimisation bayésienne de Python
Utilisation des constantes physiques dans Python scipy.constants ~ constant e ~
Ecrire un module python dans fortran en utilisant f2py
Dessinez une structure arborescente en Python 3 à l'aide de graphviz
Remarques sur l'utilisation de python (pydev) avec eclipse
Classification des maladies par Random Forest en utilisant Python
Téléchargez des fichiers dans n'importe quel format en utilisant Python
Exécution de tâches parallèles à l'aide de concurrent.futures en Python
Quadtree en Python --2
Python en optimisation
CURL en Python
Géocodage en python
SendKeys en Python
Créer un fichier GIF en utilisant Pillow en Python
Méta-analyse en Python
Pièces jointes par e-mail à l'aide de votre compte gmail avec python.
Unittest en Python
Développer et déployer des API Python à l'aide de Kubernetes et Docker
Essayez d'utiliser l'API BitFlyer Ligntning en Python
Époque en Python
Discord en Python
Obtenir l'URL de l'image à l'aide de l'API Flickr en Python
Commencez à utiliser Python
Allemand en Python
DCI en Python
Remarques sur l'utilisation de dict avec python [Competition Pro]
tri rapide en python