[PYTHON] Bot d'invitation au déjeuner chez Slack

Invitation

Nous invitons toutes les chaînes à déjeuner à une heure fixe tous les jours et vous informons du départ juste avant l'heure de départ. J'utilise "J'ai créé un bot Slack qui décide d'un bon déjeuner".

.js


function isHoliday(){
  var today = new Date();
  //Jugement si c'est samedi et dimanche
  var weekInt = today.getDay();
  if(weekInt <= 0 || 6 <= weekInt){
    return true;
  }

  //Juger s'il s'agit d'un jour férié
  var calendarId = "ja.japanese#[email protected]";
  var calendar = CalendarApp.getCalendarById(calendarId);
  var todayEvents = calendar.getEventsForDay(today);
  if(todayEvents.length > 0){
    return true;
  }
  return false;
}
  var holiday = isHoliday()
    if(holiday == false ){
        ~~~
    }

Donc, j'essaie de l'exécuter uniquement en semaine.

Je veux que tu me parles quand il est temps, alors j'ai essayé de parler à la personne qui a réagi (de force avec Python depuis le PC local)

lunch.png

Identifier qui va déjeuner

Préparez les jetons, les ID de canal, les BOTID, etc. Vous pouvez obtenir l'identifiant de la chaîne dans la liste des chaînes en cliquant sur "Copier le lien". BOTID peut également être obtenu par "copier le lien" à partir des remarques de Bot.

import requests
import json
import math
import time

histurl = "https://slack.com/api/channels.history"
posturl = "https://slack.com/api/chat.postMessage"
token = "SLACKTOKEN"
channel_id = "SLACKCHANNNELID"
bot_id = "SLACKBOTID"

Parce que l'horodatage (ts) renvoyé dans channels.history est l'heure UNIX

    #Obtenez aujourd'hui(Heure UNIX)
    now = time.time()
    #3600=Il ya 1 heure
    nowd = math.floor(now) - 3600

Obtenez les remarques de la chaîne avec json

    payload = {
        "token": token,
        "channel": channel_id
        }
    response = requests.get(histurl, params=payload)
    json_data = response.json()

Identifiez la personne qui a répondu à ce que le robot a dit il y a une heure.

    for i in json_data["messages"]:
        try:
            if i["bot_id"] == bot_id:
                if float(i['ts']) >= nowd:
                    for u in i['reactions']:
                        for v in u["users"]:
                            realist.append(v)
        except:
            pass

Envoyez ensuite un message à Slack pour vous informer de votre départ

    if realist != []:
        for ulis in realist:
            atesaki += "<@" + ulis + ">"
        message = atesaki + "Pouvez-vous déjeuner?:airplane:"
        postpayload = {
            "token": token,
            "channel": channel_id,
            "username": "Invitation au déjeuner",
            "icon_emoji": ':ramen:',
            "text": message
        }
    else:
        postpayload = {
            "token": token,
            "channel": channel_id,
            "username": "Échec de l'invitation au déjeuner",
            "icon_emoji": ':kevin:',
            "text": "Personne ne semble aller déjeuner"
        }
    requests.post(posturl, data = postpayload)

Après cela, il sera exécuté régulièrement quelque part Je veux les mettre tous ensemble, donc je vais utiliser Python pour la première moitié (et l'exécuter avec FaaS).

Recommended Posts

Bot d'invitation au déjeuner chez Slack
Golf sur Slack
Créer un bot slack
Comment créer un bot slack
Facile avec Slack en utilisant Bot #NowPlaying