130 lines
3.6 KiB
PHP
Raw Normal View History

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;
use ZM\Annotation\Swoole\OnCloseEvent;
use ZM\Annotation\Swoole\OnOpenEvent;
use ZM\Annotation\Swoole\OnRequestEvent;
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;
use ZM\Event\EventDispatcher;
use ZM\Utils\ZMUtil;
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
{
/**
* 使用命令 .reload 发给机器人远程重载,注意将 user_id 换成你自己的 QQ
* @CQCommand(".reload",user_id=627577391)
*/
public function reload() {
ctx()->reply("重启中...");
ZMUtil::reload();
}
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()->getLoginInfo();
2020-11-08 19:40:16 +08:00
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
* 向机器人发送"你好啊",也可回复这句话
* @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("随机数")
* @CQCommand(pattern="*从*到*的随机数")
2020-11-03 21:02:24 +08:00
* @return string
2020-05-06 17:26:50 +08:00
*/
public function randNum() {
2020-05-06 17:26:50 +08:00
// 获取第一个数字类型的参数
$num1 = ctx()->getNumArg("请输入第一个数字");
2020-05-06 17:26:50 +08:00
// 获取第二个数字类型的参数
$num2 = ctx()->getNumArg("请输入第二个数字");
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
/**
* 中间件测试的一个示例函数
* @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() {
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")
* @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
/**
* 在机器人连接后向终端输出信息
* @OnOpenEvent("qq")
2020-11-08 19:40:16 +08:00
* @param $conn
*/
public function onConnect(ConnectionObject $conn) {
Console::info("机器人 " . $conn->getOption("connect_id") . " 已连接!");
}
/**
* 在机器人断开连接后向终端输出信息
* @OnCloseEvent("qq")
2020-11-08 19:40:16 +08:00
* @param ConnectionObject $conn
*/
public function onDisconnect(ConnectionObject $conn) {
Console::info("机器人 " . $conn->getOption("connect_id") . " 已断开连接!");
}
/**
* 阻止 Chrome 自动请求 /favicon.ico 导致的多条请求并发和干扰
* @OnRequestEvent(rule="ctx()->getRequest()->server['request_uri'] == '/favicon.ico'",level=200)
*/
public function onRequest() {
EventDispatcher::interrupt();
}
2020-03-08 17:05:12 +08:00
/**
* 框架会默认关闭未知的WebSocket链接因为这个绑定的事件你可以根据你自己的需求进行修改
* @OnOpenEvent("default")
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
}
}