今天的網誌可能太晚,因為我在撰寫簡易的程式。
雖然很簡單,不過還是花了一點時間。
(不過寫到一半被奶奶叫去,所以只好拖到現在。)
本篇文章會著重在程式部份,所以文字敘述比較少。
那麼,廢話不多說,就先來開始今天的主題吧!
今天是使用文字檔案儲存,並且無快取。
因此適合小型使用,大型使用時請避免這種作法。
bot.php – 機器人主程式
<?php
session_id($_REQUEST['userkey'].'-at-'.$_REQUEST['network']);
session_start();
include('./data.inc.php');
$nickname = getnick($_REQUEST['userkey']);
if($_REQUEST['msg'] == 'exit'){
$_SESSION['action'] = NULL;
echo "成功逃離無限地獄!";
}else{
switch($_SESSION['action']){
case 1:
upnick($_REQUEST['msg'], $_REQUEST['userkey']);
$_SESSION['action'] = NULL;
echo "修改完成!";
break;
case 2:
echo "{$nickname}想繼續發呆就別輸入 exit";
break;
default:
switch($_REQUEST['msg']){
case '?':
case 'help':
echo "輸入1修改暱稱,輸入2開始發呆";
break;
case '1':
$_SESSION['action'] = 1;
echo "輸入暱稱後更新";
break;
case '2':
$_SESSION['action'] = 2;
echo "進入發呆區";
break;
default:
echo "需要幫助請輸入 ? 或 help";
}
}
}
?>
上方的程式碼是之前的版本修改而來,並且改用 Session 作為選單紀錄。
data.inc.php – 目前只有一項功能,暫時針對此功能製作。
<?php
function data($path = './nickname.txt'){ //存取資料
$data = file_get_contents($path);
$line = explode("\n", $data);
foreach($line as $nicks){
$nicks = explode("\t", $nicks);
$nickname[$nicks[0]] = $nicks[1];
}
return $nickname;
}
function getnick($userkey){ //取得暱稱
$nickname = data();
$nickname = $nickname[$userkey] ? $nickname[$userkey] : '訪客';
return $nickname;
}
function upnick($nickname, $userkey, $path = './nickname.txt'){ //更新暱稱
$data = data();
$data[$userkey] = $nickname;
foreach($data as $key => $nicks){
$line[] = "{$key}\t{$nicks}";
}
$nicknames = implode("\n", $line);
file_put_contents($path, $nicknames);
}
?>
此程式碼是以 PHP5 為基礎使用,因此無法運作時請檢查 PHP 版本。
大致上就算完成製作了,我也進行過測試。
一切都正常運作,不過因為會頻繁讀取檔案,所以小型機器人的架構使用會比較好。
下次寫程式就不知道是何時了!
畢竟「開學,事情又增多!」
總之,希望大家別忘記在有空的時候經常來拜訪本站!








