我一直在做我的vBulletin論壇很多修改,我已經特別關注不同形式的人工智能和botting在論壇上。我最近創建了一個插件,如果它被調用,這個插件就會讓這個bot在一個線程中發佈。它在某些時候有效,而不是其他時間。我無法弄清楚它爲何如此不可靠。vBulletin機器人只有一些時候被稱爲
它火的鉤位置「newpost_complete」,並具有下面的代碼:
if (stristr($postinfo['pagetext'],'.robot:')){
preg_match('@^(?:.robot:)?([^:]+)@i',$postinfo['pagetext'], $matches);
$host = $matches[1];
require_once(DIR . '/includes/functions_robot.php');
run($host,$threadinfo['threadid']);
}
我不擅長用正則表達式,所以我不知道的preg_match是最佳的。我發現它很少運行代碼,如果你發佈.robot:hi:但是如果你用.robot:hi引用了一個帖子:hi:即使實際引用的內容更改爲其他內容,它也會運行。
這裏是在functions_robot.php文件中的相關代碼:
function run($command,$threadid) {
global $vbulletin;
global $db;
if ($command == 'hi') {
$output = 'Hello.';
//Queries
}
}
上什麼導致它是如此不可靠的任何想法?如果我能夠順利運行,有很大的潛力。
'.'是一個保留字符 - 它可以匹配任何東西。如果你希望它只匹配一個文字'.'字符,你應該使用'\ .'。 –
謝謝我添加了反斜槓,但這還不足以解決不可靠性問題。 – Jared
我剛剛意識到添加\實際上完全打破了它......編輯:劃痕,有或沒有,它只適用於報價,如果原來的帖子開始與.robot:嗨: – Jared