# 图灵聊天 - TuringAPI
类定义:\ZM\API\TuringAPI
# 方法
# TuringAPI::getTuringMsg()
请求图灵接口,返回回复的消息。
定义:getTuringMsg($msg, $user_id, $api)
参数 $msg
为用户的消息内容,如果含有图片 CQ 码,则自动转换为图灵兼容的接口模式。
参数 $user_id
为用户 ID,一般默认给 QQ 号码就可以了,注意最好不要有特殊字符(如 ./\<>*
等),否则会间断性调用失败。
参数 $api
为图灵机器人的 apikey
,可以到 http://www.turingapi.com/ (opens new window) 申请免费或付费的 API key。
在框架的示例模块中,已经写好了一个正常机器人响应图灵回复的命令,如下:
class Hello {
/**
* 图灵机器人的内置实现,在www.turingapi.com申请一个apikey填入下方变量即可。
* @CQCommand(start_with="机器人",end_with="机器人",message_type="group")
* @CQMessage(message_type="private",level=1)
*/
public function turingAPI() {
$user_id = ctx()->getUserId();
$api = ""; // 请在这里填入你的图灵机器人的apikey
if ($api === "") return false; //如果没有填入apikey则此功能关闭
if (($this->_running_annotation ?? null) instanceof CQCommand) {
$msg = ctx()->getFullArg("我在!有什么事吗?");
} else {
$msg = ctx()->getMessage();
}
ctx()->setMessage($msg);
if (MessageUtil::matchCommand($msg, ctx()->getData())->status === false) {
return TuringAPI::getTuringMsg($msg, $user_id, $api);
} else {
QQBot::getInstance()->handle(ctx()->getData(), ctx()->getCache("level") + 1);
return true;
}
}
/**
* 响应at机器人的消息
* @CQBefore("message")
*/
public function changeAt() {
if (MessageUtil::isAtMe(ctx()->getMessage(), ctx()->getRobotId())) {
$msg = str_replace(CQ::at(ctx()->getRobotId()), "", ctx()->getMessage());
ctx()->setMessage("机器人" . $msg);
Console::info(ctx()->getMessage());
}
return true;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
如上述代码,我们将申请的 apikey 填入变量 $api
中,启动机器人即可使用,以下是实测消息(我用自己申请的 key 做测试回复的消息)。
你咋了
我没事哦,谢谢您的关心。
上海天气
上海:周一 03月29日,小雨 东南风转东风,最低气温14度,最高气温24度。
机器人
我在!有什么事吗?
你叫啥
我的名字叫炸毛,认识你很高兴呢!
在默认示例模块中的例子是直接可以拿来用的,这段代码同时做了对 at 的处理、以及兼容用户自定义写的其他命令的方式,下面是默认模块填好 apikey 后可以用的各种方式提问:
我是一条普通消息,这条机器人不会回复我
@机器人 你叫啥
我是聪明可爱的炸毛,认识你很高兴。
机器人
我在!有什么事吗?
一言
多少事,从来急,天地转,光阴迫,一万年太久,只争朝夕。