Slack에서 점심 식사 초대
초대
매일 정해진 시간에 channel 전원을 점심을 초대해, 출발 시간 직전에 출발을 알려 드리겠습니다.
「 좋은 느낌으로 점심을 결정하는 Slack 봇을 만들었다 」를 사용하고 있습니다.
function isHoliday(){
var today = new Date();
//土日か判定
var weekInt = today.getDay();
if(weekInt <= 0 || 6 <= weekInt){
return true;
}
//祝日か判定
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 ){
~~~
}
그래서 평일에만 실행하려고합니다.
시간이 되면 음성을 걸었으면 좋기 때문에 리액션해 준 사람에게 말을 걸게 했습니다(로컬 PC로부터 Python으로 무리해)
점심 가는 사람 식별
token과 채널 ID와 BOTID와 준비를합니다.
채널 ID는 채널 목록에서 '링크 복사'에서 얻을 수 있습니다.
BOTID도 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"
channels.history로 돌아오는 타임 스탬프 (ts)가 UNIX 시간이므로
#今日取得(UNIX時間)
now = time.time()
#3600=1時間 前の時間
nowd = math.floor(now) - 3600
채널 발언을 json에서 가져옵니다.
payload = {
"token": token,
"channel": channel_id
}
response = requests.get(histurl, params=payload)
json_data = response.json()
bot 1시간 전의 발언에 반응한 사람을 확인합니다.
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
나머지는 출발을 알리는 메시지를 Slack에 던집니다.
if realist != []:
for ulis in realist:
atesaki += "<@" + ulis + ">"
message = atesaki + "お昼いけますか?:airplane:"
postpayload = {
"token": token,
"channel": channel_id,
"username": "ランチのお誘い",
"icon_emoji": ':ramen:',
"text": message
}
else:
postpayload = {
"token": token,
"channel": channel_id,
"username": "ランチのお誘い失敗",
"icon_emoji": ':kevin:',
"text": "誰もお昼に行かないようです"
}
requests.post(posturl, data = postpayload)
나머지는 어딘가에서 정기 실행
전부 1개에 정리하고 싶기 때문에 그중 전반부분을 Python으로 해(해 FaaS라든지로 움직입니다).
Reference
이 문제에 관하여(Slack에서 점심 식사 초대), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/k_kado__j_ichi/items/286636e402f1c507f1d7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)