Skip to content

Instantly share code, notes, and snippets.

@suneo3476
Created April 23, 2014 06:07
Show Gist options
  • Save suneo3476/11204272 to your computer and use it in GitHub Desktop.
Save suneo3476/11204272 to your computer and use it in GitHub Desktop.
103行目でTypeError: Cannot call method 'getMinutes' of undefined…何故だ。
module.exports.pattern = '^.?@%me% .+';
module.exports.main = function(twi, data, cfg){
console.log('ENTETSUBUS called');
var BOT_ID = cfg.my_screen_name;
var twUserId = data.user.screen_name;
var keyword = data.text.replace(new RegExp('^.?@' + BOT_ID + ' '), '');
var days = ['日','月','火','水','木','金','土'];
var day = days[(new Date()).getDay()];
var isWeekend = '';
var isHoliday = require('./japanese.holiday.js');
switch(day){
case '日':
case '土':
isWeekend = '土日祝日';
break;
case '月':
case '火':
case '水':
case '木':
case '金':
var date = new Date();
if( isHoliday(date.getFullYear(), date.getMonth()+1, date.getDay(), true) )
isWeekend = '土日祝日';
else
isWeekend = '月~金';
break;
}
//keywordで検索した結果がコールバック関数の引数resultとして返ってきます
search(keyword, function(result){
if(result.length == 0 || result[0] === undefined) return;
return;
var replyStr = '@' + twUserId + ' ';
var part = result.shift();
while(part !== undefined && (replyStr + part).length < 138 ){
replyStr += ' | ' + part;
console.log(part);
part = result.shift();
}
if(result.length > 0)
replyStr += 'ほか';
twi.updateStatus(replyStr, function (error,data) {
if(!(error && error.statusCode)){
console.log('updateStatus done');
}else{
console.log(error);
console.log('updateStatus failed');
}
});
});
//指定したキーワードを含むバス停から出発するバスの行き先ごとの-10分~+20分までの時刻を検索
//keyword=六間坂上:
//[六間坂上->浜松駅] ゆりの木通り経由 16:51 17:00 17:04 17:14 | 常盤町経由 17:03(下) | 尾張町経由 17:02(下)
function search(keyword, callback) {
require('date-utils');
var csv = require('ya-csv');
var reader = csv.createCsvFileReader('./commands/entetsu/entetsubus.csv');
var data = [];
reader.on('data', function(record) {
data.push(record);
}).on('end', function() {
var result = [];
//現在時刻
var date = new Date();
var hour = 12;//date.toFormat('HH24');
var minute = date.toFormat('MI');
console.log(hour+':'+minute);
//一致したものをresultにつめて
for(var i = 1; i < data.length; i++){
if( !(new RegExp('' + keyword.replace(/\W/g,'\\$&') + '').test(data[i][0])) ) continue; // バス停フィルタ
if( data[i][4] != isWeekend ) continue; // 曜日フィルタ
if( data[i][2] < hour || data[i][2] > hour+2) continue; // 時間フィルタ
result.push(data[i]);
}
//時・分を時刻に展開して
for(var i = 0; i < result.length; i++){
var newDate = result[i][3].split(' ').map(function(str){
return result[i][2]+':'+str;
});
result[i].push(newDate); // result[i][5]
}
//時刻を経由地ごとでマージしてソートして
for(var i = 0; i < result.length-1; i++){
for(var j = 1; j < result.length; j++){
if(result[i][1] == result[j][1]){
Array.prototype.push.apply(result[i][5],result[j][5]);
result[i][5].sort();
result.splice(j,1);
}
}
}
//+5本まで取り出して
date = new Date();
console.log(date.get.getMinutes());
//TypeError: Cannot call method 'getMinutes' of undefined
for(var i = 0; i < result.length; i++){
//TODO!
}
//コールバック!
callback(result);
});
};
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment