2020-03-02 16:14:20 +08:00
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
|
|
namespace Module\Example;
|
|
|
|
|
|
|
2020-11-08 19:40:16 +08:00
|
|
|
|
use ZM\Annotation\Http\Middleware;
|
2020-11-03 21:02:24 +08:00
|
|
|
|
use ZM\Annotation\Swoole\OnSwooleEvent;
|
2020-08-31 10:11:06 +08:00
|
|
|
|
use ZM\ConnectionManager\ConnectionObject;
|
|
|
|
|
|
use ZM\Console\Console;
|
2020-03-02 16:14:20 +08:00
|
|
|
|
use ZM\Annotation\CQ\CQCommand;
|
2020-03-08 16:40:04 +08:00
|
|
|
|
use ZM\Annotation\Http\RequestMapping;
|
2020-11-08 19:40:16 +08:00
|
|
|
|
use ZM\Store\Redis\ZMRedis;
|
2020-03-02 16:14:20 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Class Hello
|
|
|
|
|
|
* @package Module\Example
|
2020-09-29 15:07:43 +08:00
|
|
|
|
* @since 2.0
|
2020-03-02 16:14:20 +08:00
|
|
|
|
*/
|
2020-06-05 19:54:20 +08:00
|
|
|
|
class Hello
|
2020-03-02 16:14:20 +08:00
|
|
|
|
{
|
|
|
|
|
|
/**
|
2020-11-08 19:40:16 +08:00
|
|
|
|
* 一个简单的redis连接池使用demo,将下方user_id改为你自己的QQ号即可(为了不被不法分子利用)
|
|
|
|
|
|
* @CQCommand("redis_test",user_id=627577391)
|
2020-03-02 16:14:20 +08:00
|
|
|
|
*/
|
2020-11-08 19:40:16 +08:00
|
|
|
|
public function testCase() {
|
|
|
|
|
|
$a = new ZMRedis();
|
|
|
|
|
|
$redis = $a->get();
|
|
|
|
|
|
$r1 = ctx()->getArgs(ZM_MATCH_FIRST, "请说出你想设置的操作[r/w]");
|
|
|
|
|
|
switch ($r1) {
|
|
|
|
|
|
case "r":
|
|
|
|
|
|
$k = ctx()->getArgs(ZM_MATCH_FIRST, "请说出你想读取的键名");
|
|
|
|
|
|
$result = $redis->get($k);
|
|
|
|
|
|
ctx()->reply("结果:" . $result);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "w":
|
|
|
|
|
|
$k = ctx()->getArgs(ZM_MATCH_FIRST, "请说出你想写入的键名");
|
|
|
|
|
|
$v = ctx()->getArgs(ZM_MATCH_FIRST, "请说出你想写入的字符串");
|
|
|
|
|
|
$result = $redis->set($k, $v);
|
|
|
|
|
|
ctx()->reply("结果:" . ($result ? "成功" : "失败"));
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
2020-03-02 16:14:20 +08:00
|
|
|
|
}
|
2020-05-02 23:27:26 +08:00
|
|
|
|
|
2020-06-13 17:08:13 +08:00
|
|
|
|
/**
|
2020-11-08 19:40:16 +08:00
|
|
|
|
* @CQCommand("我是谁")
|
2020-06-13 17:08:13 +08:00
|
|
|
|
*/
|
2020-11-08 19:40:16 +08:00
|
|
|
|
public function whoami() {
|
|
|
|
|
|
$user = ctx()->getRobot()->setCallback(true)->getLoginInfo();
|
|
|
|
|
|
return "你是" . $user["data"]["nickname"] . ",QQ号是" . $user["data"]["user_id"];
|
2020-06-13 17:08:13 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2020-03-02 16:14:20 +08:00
|
|
|
|
/**
|
2020-11-08 19:40:16 +08:00
|
|
|
|
* 向机器人发送"你好啊",也可回复这句话
|
2020-06-13 11:28:31 +08:00
|
|
|
|
* @CQCommand(match="你好",alias={"你好啊","你是谁"})
|
2020-03-02 16:14:20 +08:00
|
|
|
|
*/
|
2020-05-02 23:27:26 +08:00
|
|
|
|
public function hello() {
|
2020-03-02 16:14:20 +08:00
|
|
|
|
return "你好啊,我是由炸毛框架构建的机器人!";
|
|
|
|
|
|
}
|
2020-03-08 16:40:04 +08:00
|
|
|
|
|
2020-05-06 17:26:50 +08:00
|
|
|
|
/**
|
2020-11-08 19:40:16 +08:00
|
|
|
|
* 一个简单随机数的功能demo
|
|
|
|
|
|
* 问法1:随机数 1 20
|
|
|
|
|
|
* 问法2:从1到20的随机数
|
2020-05-06 17:26:50 +08:00
|
|
|
|
* @CQCommand("随机数")
|
2020-11-04 18:43:50 +08:00
|
|
|
|
* @CQCommand(pattern="*从*到*的随机数")
|
2020-11-03 21:02:24 +08:00
|
|
|
|
* @return string
|
2020-05-06 17:26:50 +08:00
|
|
|
|
*/
|
2020-11-04 18:43:50 +08:00
|
|
|
|
public function randNum() {
|
2020-05-06 17:26:50 +08:00
|
|
|
|
// 获取第一个数字类型的参数
|
2020-11-04 18:43:50 +08:00
|
|
|
|
$num1 = ctx()->getArgs(ZM_MATCH_NUMBER, "请输入第一个数字");
|
2020-05-06 17:26:50 +08:00
|
|
|
|
// 获取第二个数字类型的参数
|
2020-11-04 18:43:50 +08:00
|
|
|
|
$num2 = ctx()->getArgs(ZM_MATCH_NUMBER, "请输入第二个数字");
|
2020-05-06 17:26:50 +08:00
|
|
|
|
$a = min(intval($num1), intval($num2));
|
|
|
|
|
|
$b = max(intval($num1), intval($num2));
|
|
|
|
|
|
// 回复用户结果
|
2020-11-03 21:02:24 +08:00
|
|
|
|
return "随机数是:" . mt_rand($a, $b);
|
2020-05-06 17:26:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2020-03-08 16:40:04 +08:00
|
|
|
|
/**
|
2020-04-29 15:29:56 +08:00
|
|
|
|
* 中间件测试的一个示例函数
|
|
|
|
|
|
* @RequestMapping("/httpTimer")
|
2020-11-08 19:40:16 +08:00
|
|
|
|
* @Middleware("timer")
|
2020-03-08 16:40:04 +08:00
|
|
|
|
*/
|
2020-05-02 23:27:26 +08:00
|
|
|
|
public function timer() {
|
2020-04-29 15:29:56 +08:00
|
|
|
|
return "This page is used as testing TimerMiddleware! Do not use it in production.";
|
2020-03-08 16:40:04 +08:00
|
|
|
|
}
|
2020-03-08 17:05:12 +08:00
|
|
|
|
|
2020-05-06 17:26:50 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 默认示例页面
|
|
|
|
|
|
* @RequestMapping("/index")
|
2020-05-10 14:11:32 +08:00
|
|
|
|
* @RequestMapping("/")
|
2020-05-06 17:26:50 +08:00
|
|
|
|
*/
|
|
|
|
|
|
public function index() {
|
|
|
|
|
|
return "Hello Zhamao!";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2020-09-29 15:07:43 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 使用自定义参数的路由参数
|
|
|
|
|
|
* @RequestMapping("/whoami/{name}")
|
|
|
|
|
|
* @param $param
|
|
|
|
|
|
* @return string
|
|
|
|
|
|
*/
|
|
|
|
|
|
public function paramGet($param) {
|
|
|
|
|
|
return "Your name: {$param["name"]}";
|
|
|
|
|
|
}
|
2020-05-06 17:26:50 +08:00
|
|
|
|
|
2020-11-08 19:40:16 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 在机器人连接后向终端输出信息
|
|
|
|
|
|
* @OnSwooleEvent("open",rule="connectIsQQ()")
|
|
|
|
|
|
* @param $conn
|
|
|
|
|
|
*/
|
|
|
|
|
|
public function onConnect(ConnectionObject $conn) {
|
|
|
|
|
|
Console::info("机器人 " . $conn->getOption("connect_id") . " 已连接!");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 在机器人断开连接后向终端输出信息
|
|
|
|
|
|
* @OnSwooleEvent("close",rule="connectIsQQ()")
|
|
|
|
|
|
* @param ConnectionObject $conn
|
|
|
|
|
|
*/
|
|
|
|
|
|
public function onDisconnect(ConnectionObject $conn) {
|
|
|
|
|
|
Console::info("机器人 " . $conn->getOption("connect_id") . " 已断开连接!");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2020-03-08 17:05:12 +08:00
|
|
|
|
/**
|
2020-04-29 15:29:56 +08:00
|
|
|
|
* 框架会默认关闭未知的WebSocket链接,因为这个绑定的事件,你可以根据你自己的需求进行修改
|
2020-11-03 21:02:24 +08:00
|
|
|
|
* @OnSwooleEvent(type="open",rule="connectIsDefault()")
|
2020-03-08 17:05:12 +08:00
|
|
|
|
*/
|
2020-05-02 23:27:26 +08:00
|
|
|
|
public function closeUnknownConn() {
|
2020-03-08 17:05:12 +08:00
|
|
|
|
Console::info("Unknown connection , I will close it.");
|
2020-08-31 10:11:06 +08:00
|
|
|
|
server()->close(ctx()->getConnection()->getFd());
|
2020-03-08 17:05:12 +08:00
|
|
|
|
}
|
2020-03-29 16:29:02 +08:00
|
|
|
|
}
|