我一直在对我的 vBulletin 论坛进行大量修改,并且我对不同形式的 AI 和论坛上的机器人特别感兴趣。我最近创建了一个插件,如果它被调用,它将在一个线程中发布机器人。它有时有效,有时无效。我不明白为什么它如此不可靠。
它在钩子位置“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: 的帖子,即使实际引用的内容更改为其他内容,它也会运行而不会失败。
这是functions_robot.php文件中的相关代码:
function run($command,$threadid) {
global $vbulletin;
global $db;
if ($command == 'hi') {
$output = 'Hello.';
//Queries
}
}
关于是什么导致它如此不可靠的任何想法?如果我能顺利运行的话,潜力很大。