[PYTHON] Mittagessen Einladungsbot bei Slack

Einladung

Wir laden alle Kanäle jeden Tag zu einer festgelegten Zeit zum Mittagessen ein und informieren Sie kurz vor der Abflugzeit über die Abreise. Ich verwende "Ich habe einen Slack-Bot erstellt, der über ein gutes Mittagessen entscheidet".

.js


function isHoliday(){
  var today = new Date();
  //Beurteilung, ob es Samstag und Sonntag ist
  var weekInt = today.getDay();
  if(weekInt <= 0 || 6 <= weekInt){
    return true;
  }

  //Beurteilung, ob es ein Feiertag ist
  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 ){
        ~~~
    }

Also versuche ich es nur an Wochentagen auszuführen.

Ich möchte, dass Sie mit mir sprechen, wenn es Zeit ist, also habe ich versucht, mit der Person zu sprechen, die reagiert hat (gewaltsam mit Python vom lokalen PC).

lunch.png

Identifizieren, wer zum Mittagessen geht

Bereiten Sie Token, Kanal-IDs, BOTIDs usw. vor. Sie können die Kanal-ID aus der Kanalliste abrufen, indem Sie auf "Link kopieren" klicken. BOTID kann auch durch "Link kopieren" aus Bots Bemerkungen erhalten werden.

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"

Weil der Zeitstempel (ts), der in channel.history zurückgegeben wird, UNIX-Zeit ist

    #Holen Sie sich heute(UNIX-Zeit)
    now = time.time()
    #3600=vor 1 Stunde
    nowd = math.floor(now) - 3600

Holen Sie sich die Bemerkungen des Kanals mit json

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

Identifizieren Sie die Person, die auf das reagiert hat, was der Bot vor einer Stunde gesagt hat.

    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

Senden Sie dann eine Nachricht an Slack, um Sie über Ihre Abreise zu informieren

    if realist != []:
        for ulis in realist:
            atesaki += "<@" + ulis + ">"
        message = atesaki + "Kannst du zu Mittag essen?:airplane:"
        postpayload = {
            "token": token,
            "channel": channel_id,
            "username": "Einladung zum Mittagessen",
            "icon_emoji": ':ramen:',
            "text": message
        }
    else:
        postpayload = {
            "token": token,
            "channel": channel_id,
            "username": "Fehler bei der Einladung zum Mittagessen",
            "icon_emoji": ':kevin:',
            "text": "Niemand scheint zum Mittagessen zu gehen"
        }
    requests.post(posturl, data = postpayload)

Danach wird es regelmäßig irgendwo ausgeführt Ich möchte sie alle zusammenfügen, also werde ich Python für die erste Hälfte verwenden (und es mit FaaS ausführen).

Recommended Posts

Mittagessen Einladungsbot bei Slack
Golf auf Slack
Erstellen Sie einen Slack Bot
Wie man einen lockeren Bot macht
Einfach mit Slack mit Bot #NowPlaying