Engineerの研鑽

メインはプログラミング系ブログ(本の要約とかもします)

質問はCONTACTやコメントでお願い致します。

【発言回数をカウントするBOT】hubot×slack×mysqlを使って実装してみよう

f:id:yukiyukiponsu:20190422140106p:plain

 

こんにちは! ゆきぽんずです

 

今日はやっと発言回数をカウントするBOTを作成できたので、コードの紹介をしていこうと思います

 

今回はコードの紹介のみとなります

 

なるべく初心者の方にもわかりやすいようにプログラムを書きました

 

ただ、今回の実行結果については、個人情報的な関係で載せれていません

 

大変申し訳ありませんm(__)m

 

プログラムは載せておきますので、こちらで勘弁してください

 

各自で実行してみてください

発言回数をカウントするBOTのプログラム

ファイル名 : mysql_hubot.js

//発言回数を記録するBOT
'use strict';
var mysql = require('mysql');

//DBとの接続
var db_connection = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "自分が決めたパスワード",
  database: "hubot_numberofutterances"
});

(function() {
  module.exports = function(robot) {
    return robot.hear(/(.*)/i, function(msg) {

//name : ユーザー名、userComment : ユーザーの発言
//flag : ユーザーが新規or既存であるかを判定
//get_hubot : テーブルhubotの取得
       var name = msg.message.user.name;
       var userComment = msg.match[0];
       var flag = 0;
       var get_hubot_table = 'SELECT * FROM hubot';

//ユーザーが存在する時
         db_connection.query(get_hubot_table, function (err, result) {
          if (err) throw err;
          for(var i=0; i<result.length; i++){
            if(result[i].user_name === name){
              flag = 1;
              msg.send("already exist");
              break;
             }
          }
//ユーザーが存在しない時
          if(flag !== 1){
           msg.send("not exits");
           var insert_person = "INSERT INTO hubot(user_name, numberofutterances) VALUES("+ mysql.escape(name) +", 0)";
           db_connection.query(insert_person, function (err, result) {
             if (err) throw err;
             msg.send("insert new person");
           });
          }
        });
//発言回数表示
          if (userComment === "発言回数") {
            var count_plus_one = "UPDATE hubot SET numberofutterances = numberofutterances+1 where user_name = "+ mysql.escape(name) +"";
            db_connection.query(count_plus_one, function (err, result) {
             if (err) throw err;
            });
            db_connection.query(get_hubot_table, function (err, results) {
             if (err) throw err;
              for(var i=0; i<results.length; i++){
               msg.send(results[i].user_name + ':' + results[i].numberofutterances + '回');
              }
            });
          }

//発言回数リセット
           else if(userComment === "発言回数リセット"){
             var count_reset = "UPDATE hubot SET numberofutterances = 0";
             db_connection.query(count_reset, function (err, result) {
              if (err) throw err;
              msg.send("発言回数をリセットしました。");
             });
             db_connection.query(get_hubot_table, function (err, results) {
              if (err) throw err;
               for(var i=0; i<results.length; i++){
                msg.send(results[i].user_name + ':' + results[i].numberofutterances + '回');
               }
             });
           }
//発言回数をカウント
            else{
              var words_count = "UPDATE hubot SET numberofutterances = numberofutterances+1 where user_name = "+ mysql.escape(name) +"";
              db_connection.query(words_count, function (err, result) {
               if (err) throw err;
              });
              db_connection.query(get_hubot_table, function (err, results) {
               if (err) throw err;
              });
            }
      });
    };
}).call(this);

 

結構長いコードになってしまいました

 

もっと短く出来ると思いますが、今回は初心者でもわかりやすいというコンセプトで作っているので少し冗長的です

 

作るのに3日間もかかってしまいました

 

これからこの発言回数をカウントするBOTにもっといろいろな機能を付けていきたいと思います

 

AI機能を付けると面白そうですね

 

これからも進捗をブログに書いていきます

 

今日も読んでくださりありがとうございます

 

あなたのそばにゆきぽんず