スキップしてメイン コンテンツに移動

bellum on ボットをつくろう!!

bellum on ボットをつくろう!!

概要

bellum 文字が流れるチャットアドオン」でも書いた bellum で動く定型文応答ボットを作ったので公開する。

準備

必要なモジュールをインストールしてください
npm install socket.io-client

ソースコード

bot1.js
/*
 * 祝!bellum 公開
 * bellum 閑居ってる(´Д⊂ヽウェェェン
 * ぼっとつくろ。
 * 2014 / 9 / 22
 * jskny
*/


var io = require('socket.io-client');
var jsSHA = require("./sha512");


// サーバーのアドレス
var SERVER_URL = "http://bellum-server.herokuapp.com/";
// このアドレスのルームとして接続する。
var ATTACK_URL = process.argv[2]; // 「node bot1.js www.risdy.net/」  で動く


var g_sock = Connect();
setInterval(Kasikoi, 10000);
console.log("Bot running.");


//----------------------------------------------------------


function Connect()
{
 var socket = io.connect(SERVER_URL);


 // サーバーへつながったよ
 socket.on("connect", function() {
  // 入室する部屋番号とか送信する
  // セキュリティーとか問題になっているからサーバーに送るアドレスはハッシュ化しておく。
  var url = ATTACK_URL;
  url = (new jsSHA(url,'ASCII')).getHash('SHA-512','HEX');


  // 初期化コマンド送信
  socket.json.emit("init", { "room": url });
 });
 // サーバーから切断された
 socket.on("disconnect", function(client) {
 });
 // メッセージ受信
 socket.on("S_to_C_message", function(data) {
  // 定型文応対
  var retStr = "[Bot1]";
  if (data.value == "こんにちは") { retStr += "こんにちは~(=_=)"; }
  if (data.value == "おはよう") { retStr += "おはよう~(+_+)"; }
  if (data.value == "おやすみ") { retStr += "おやすみ~(@_@)"; }
  if (data.value == "しんちょく") { retStr += "(・_・)?"; }
  if (data.value == "進捗") { retStr += "(・△・)ア?"; }

  if (retStr.length > 6) {
   socket.json.emit("C_to_S_broadcast", {value:retStr});
  }

 });


 return (socket);
}


var g_counter = 0;
function Kasikoi()
{
 // デフォルトメッセージ
 var mesgs = [
  "[BOT1号]ひまーーー",
  "[BOT1号]私は定型文反応しかできないよ",
  "[BOT1号]ぐるぐるぐるぐる",
 ];
 g_sock.json.emit("C_to_S_broadcast", {value:mesgs[g_counter % mesgs.length], secure:false});

 g_counter++;
}

進捗聞かないでください。
自宅のサーバーから http://www.risdy.net/ を対象にボットを稼働させておりますので bellum をインストールなされたお方は動作のご確認にでもご使用ください。

おまけ

node.js をソースコードからビルドした時に出まくったカラフルなコンソール画面

以上

このブログの人気の投稿

node.js で SQLite を async を使用して同期的に使用する

node.js で SQLite を async を使用して同期的に使用する node.js で SQLite を使うと何が怖いって非同期処理って所。
どのようにコードが動くのか分かり辛い。

そこで同期処理っぽくしてみたい。


async というライブラリを使用するとそれっぽいことができるそうなのでサンプルを書いた。

記述試験の書き方(仮)

記述試験の書き方(仮) 1,まえがき   法学部の試験では記述式の試験が出てくる。   その試験では、あるテーマについて自由に論ぜよとされている。 しかし、論ぜよと言われても、どのように論じればいいのか、すなわち、記述の仕方について教わったことがない(よくよく考えると、法的文章力を習得させる事だけが目的の授業はないと思われる)。   本稿では、私自身が法学畜になり、見聞きし、実際に活用している論述方法についてまとめている、はずである。その要点は、①条文、判例、学説を使う。②単なる事実と法的事実を区別する。③文章内に一貫性を持たせる。である。