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.
"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.
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
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