-
Notifications
You must be signed in to change notification settings - Fork 4
/
Message.php
77 lines (69 loc) · 1.67 KB
/
Message.php
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
namespace Skinny\Message;
/**
* @filesource
*/
class Message
{
use StaticMessageTrait;
/**
* Parse the message and return an array with informations about the message.
*
* ### Usage
*```
* Message::parse('!say hi');
*```
* Wil return this array:
*```
* [
* 'raw' => '!say hi',
* 'parts' => [
* (int) 0 => '!say',
* (int) 1 => 'hi'
* ],
* 'command' => 'say',
* 'message' => 'hi',
* 'commandCode' => '!',
* 'arguments' => [
* (int) 0 => 'hi'
* ]
* ]
*
*```
*
* @param string $message The message to parse
*
* @return array The data.
*/
public static function parse($message)
{
static::resetConfig();
$chr32 = chr(32);
$config = [];
if (empty($message) || !is_string($message)) {
return static::read();
}
$config += [
'raw' => $message,
'parts' => explode($chr32, trim($message), 2)
];
$config += [
'commandCode' => substr($config['parts'][0], 0, 1),
'command' => strtolower(substr($config['parts'][0], 1))
];
if (count($config['parts']) > 1) {
$config += [
'message' => $config['parts'][1],
'arguments' => array_map(
'strtolower',
explode(
$chr32,
$config['parts'][1]
)
)
];
}
static::config($config);
return static::read();
}
}