プロジェクト(金岡グループ)
Javascript による開発
金岡 晃
JavaScript による開発
2017/6/9 プロジェクト
1
Botkit フレームワーク
ボットが実行されるフォルダの設定を行う
(
teraterm
によるサーバ上の作業)• 実施コマンド
• mkdir <フォルダ名>
• cd <フォルダ名>
• npm init
• npm install [email protected] –save
• cp /home/kanaoka/js2019/node_modules/botkit/lib/GoogleHangoutsBot.js node_modules/botkit/lib/
mkdir
でフォルダを新規に作成して、
cd
でそのフォ ルダに移動botkit
を使うための初期化そのままだとエラーがでるので、
エラーがでないバージョンの ファイルへと一部を入れ替え
JavaScript による開発
2017/6/9 プロジェクト
2
Botkit フレームワーク
ボット本体の作成
(ローカル<実習室
PC
、自宅PC
>での作業)ファイル名はかならず”index.js”とすること
JavaScript
言語JavaScript による開発
2017/6/9 プロジェクト
3
Botkit フレームワーク
ボット本体のサーバへのアップロード
(ローカル<実習室
PC
、自宅PC
>での作業)• WinSCPを立ち上げてサーバ(avocado)に接続
•
さきほど作成したフォルダにindex.jsをアップロードJavaScript による開発
2017/6/9 プロジェクト
4
Botkit フレームワーク
ボットの実行
(
teraterm
によるサーバ上の作業)•
実施コマンド• token=<APIトークン> node index.js
JavaScript による開発:簡単な例
2017/6/9 プロジェクト
5
ボットが実行されるフォルダの設定を行う
(
teraterm
によるサーバ上の作業)•
実施コマンド• mkdir testbot01
• cd testbot01
• npm init
• npm install [email protected] –save
• cp
/home/kanaoka/js2019/node_modules/botkit/lib/GoogleHangoutsB
ot.js node_modules/botkit/lib/
JavaScript による開発:簡単な例
2017/6/9 プロジェクト
6
ボット本体の作成(ローカル<実習室
PC
、自宅PC
>での作業)const Botkit = require('botkit');
if (!process.env.token) {
console.log('Error: Specify token in environment');
process.exit(1);
}
const controller = Botkit.slackbot({
debug: false });
controller.spawn({
token: process.env.token }).startRTM(function(err){
if (err) {
throw new Error(err);
} });
// say hi
controller.hears('hi',['direct_message','direct_mention','mention'],function(bot,message) { bot.reply(message,'hi');
});
JavaScript による開発:簡単な例
2017/6/9 プロジェクト
7
ボット本体の作成(ローカル<実習室
PC
、自宅PC
>での作業)const Botkit = require('botkit');
if (!process.env.token) {
console.log('Error: Specify token in environment');
process.exit(1);
}
const controller = Botkit.slackbot({
debug: false });
controller.spawn({
token: process.env.token }).startRTM(function(err){
if (err) {
throw new Error(err);
} });
// say hi
controller.hears('hi',['direct_message','direct_mention','mention'],function(bot,message) {
bot.reply(message,'hi');
});
DM
や言及(@
ユーザ名 を付けてつぶや く)したときに、そのつぶやきが「
hi
」だったら、「hi
」と返すJavaScript による開発:簡単な例
2017/6/9 プロジェクト
8
Botkit フレームワーク
ボットの実行
(
teraterm
によるサーバ上の作業)•
実施コマンド• token=xoxb-169493700566-7ev2Ze5xZJPeqHe0GbevIUJ6 node index.js
JavaScript による開発:簡単な例
2017/6/9 プロジェクト
9
JavaScript による開発:軽い応用
2017/6/9 プロジェクト
10
何か Bot あてにつぶやかれたら、登録してある複数の文言から ランダムに選択して返信する
やること
•
複数文言を登録してあるテキストファイル(1行に1文言)を用意
•
テキストファイルの行数を読み込み、何行目を呼び出すか をランダムに決める•
決められた行の文言をメッセージとして返すJavaScript による開発:軽い応用
2017/6/9 プロジェクト
11
const Botkit = require('botkit');
if (!process.env.token) {
console.log('Error: Specify token in environment');
process.exit(1);
}
const controller = Botkit.slackbot({
debug: false });
controller.spawn({
token: process.env.token }).startRTM(function(err){
if (err) {
throw new Error(err);
} });
index.js
(前半)さっきのと同じ
JavaScript による開発:軽い応用
2017/6/9 プロジェクト
12
// say hi
controller.hears('',['direct_message','direct_mention','mention'],function(bot,mess age) {
var fs = require('fs');
var contents = fs.readFileSync('comments.txt');
var lines = contents.toString().split('¥n').length -1;
var num = Math.floor(Math.random()*lines);
var dat = '';
var lnum = 0;
fs.readFileSync('comments.txt').toString().split('¥n').forEach(function (line){
if(lnum==num)dat=line;
lnum++;
});
bot.reply(message,dat);
});
index.js
(後半)どのメッセージでも反応する
文言ファイル
(comments.txt)を開く 行数をカウント
レスする文言をランダムに 選ぶ
その行をレスする
2017/6/9 プロジェクト 13