Slack botでやさしいせかいを作りたい!
Slackアプリ制作記事の3本目になります。ちょっと短めです。
前回の記事もぜひ読んでみてください。
作ろうと思った理由
Slack botくんがたまに「あなただけに表示されています」みたいなメッセージを投稿してくれるのはSlackユーザーだったら心当たりあるかなと思うのですが、それを自分の作っているSlackアプリでできないかなと思ってずっと調べていました。たまたまやり方を見つけることができたので共有がてらその機能を作ったアプリを作ってみました。
完成のイメージ
下の画像のように、誰かがほめる投稿をすると、botくんが反応して「すごい!」とか言ってくれます。やさしいせかい。
作ってみる!
下記の記事で作成したアプリをそのまま流用します。この記事から読んでいただいている人はこちらも読んでみてください。
1. Glitchのコードを編集する
glitchに次のようなコードを追加してみてください。追加する場所は一番最後の(async () => {みたいな行よりも前です。
// ()の中身を変えればほかの語にも反応するようになる
app.message(/^(ナイス|すごい|神).*/, async ({ message, client }) => {
console.log(message);
const user = message.user;
const channel = message.channel;
// その人にしか見えないメッセージを投稿
await client.chat.postEphemeral({
text: `<@${user}>さん、ほかの人をほめててえらい!!`,
channel: message.channel,
user: user
});
});
chat.postEphemeralで「あなただけに表示されています」の投稿を実現することができています。
↓↓参考
これまでに投稿した2本の記事以上にSlackアプリの権限を追加する必要はありません。「chat:write」・「message.channels」だけあれば十分だと思います。
2. テストしてみる
今回は「ナイス」「神」「すごい」などの言葉に反応するようになっています。早速打ってみましょう。
無事想定通りに動きましたね。
今後やってみたいこと
当初は真逆の「悪い言葉を使っているユーザーに対して、その言葉を伏字に編集して怒る」という機能を考えていたのですが、ユーザーが投稿したメッセージをbotが編集するやり方が見つからず断念しました。
自分のメッセージの編集ならできるんだけど…他人のメッセージを編集するメソッド、ないのかなあ…?そのあたりももう少し調査してみたいと思います。