Skip to content

Commit f9027e3

Browse files
committed
fix event segment (#87)
1 parent 3349235 commit f9027e3

File tree

2 files changed

+48
-1
lines changed

2 files changed

+48
-1
lines changed

src/OneBot/V12/Object/OneBotEvent.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ public function getMessage(bool $return_assoc_array = false): ?array
130130
}
131131
$this->message_segment_cache = [];
132132
foreach ($this->data['message'] as $segment) {
133-
$this->message_segment_cache[] = new MessageSegment($segment['type'], $segment['data']);
133+
$this->message_segment_cache[] = $segment instanceof MessageSegment ? $segment : new MessageSegment($segment['type'], $segment['data']);
134134
}
135135
return $this->message_segment_cache;
136136
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Tests\OneBot\V12\Object;
6+
7+
use OneBot\V12\Object\MessageSegment;
8+
use OneBot\V12\Object\OneBotEvent;
9+
use PHPUnit\Framework\TestCase;
10+
11+
/**
12+
* @internal
13+
*/
14+
class OneBotEventTest extends TestCase
15+
{
16+
public function testGetMessageSegments(): void
17+
{
18+
$event = new OneBotEvent([
19+
'id' => '123',
20+
'type' => 'message',
21+
'self' => [
22+
'user_id' => '123',
23+
'platform' => 'test',
24+
],
25+
'detail_type' => 'group',
26+
'sub_type' => 'normal',
27+
'time' => 123,
28+
'alt_message' => '123',
29+
'group_id' => '123',
30+
'user_id' => '123',
31+
'guild_id' => '123',
32+
'channel_id' => '123',
33+
'operator_id' => '123',
34+
'message_id' => '123',
35+
'message' => [
36+
[
37+
'type' => 'text',
38+
'data' => [
39+
'text' => '123',
40+
],
41+
],
42+
],
43+
]);
44+
$event->setMessage([ob_segment('mention', ['user_id' => '123456'])]);
45+
$this->assertInstanceOf(MessageSegment::class, $event->getMessage()[0]);
46+
}
47+
}

0 commit comments

Comments
 (0)