Help us understand the problem. What is going on with this article?

botkitを使って、平日のみslackに定時投稿するには

More than 1 year has passed since last update.

会社で働いていると、定時連絡みたいなものが必要になることがままあります。
ただ、その提示連絡は休日と祝祭日は不要だったりする場合が多いのではないでしょうか。
ちょっとしたことですが、こんな方法で実現ができますという話。

*20180622編集
change.log
// 今日の日付を取得
var dateString = new Date();
// Weekdayかどうかを判定
var holidayname = Holiday.getHolidayName(new Date(dateString));

この部分をcron内部に持っていなかったため、foreverで永続化したタイミングの日付をずっと保持してしまう状態になっていたのを変更

インストールまではこちらを参照

https://qiita.com/yaaah93/items/fab80ca25a39f59ae741

botのプログラムを書く

こちらで作ったフォルダに適当なjsを作ります
今回は定時投稿ということで、必要なタイミングにだけ起動する形にします

yourfilename.js
const Botkit = require("botkit");
const controller = Botkit.slackbot({
  debug: false,
});

function getWeekdayFlag(){
  // 今日の日付を取得
  var dateString = new Date();
  // Weekdayかどうかを判定
  holidayname = Holiday.getHolidayName(new Date(dateString));
  return holidayname;
}

controller.spawn({ token: 'ここにbotのtokenを書く' }).startRTM((err, bot, payload) => {
  // cronに登録
  var CronJob = require('cron').CronJob;


  //slackに投げる
  var job = new CronJob({
    cronTime: "0 0 8 * * 1-5", // 1-5の部分は*でも構いません
    onTick: function() {
        var holidayname = getWeekdayFlag();
        bot.say({
            text: "8時です!",
            channel: "投稿先のチャンネル名を記入"
        });
    },
    start: true,
    timeZone: "Asia/Tokyo",
  });

  //複数ある場合はここにjobを足していく
  // var job2 = new CronJob({ ... という感じ

  //平日のみ稼働
  if(holidayname == ""){
    job.start();
    //複数ある場合はこちらに job2.start(); とすれば良い
  }
});

Holiday.getHolidayName部分について

上記コードの末尾に、こちらの判定プログラムをコピーする
https://qiita.com/horikeso/items/16da8bce3fbbee87aa45

プログラムの永続化はforeverを使う

npm install -g forever
forever start yourfilename.js

とすればOK。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away