Skip to content

Commit 9fb534c

Browse files
authored
Merge pull request #291 from snmatsui/fix/text-without-emoji
fix: TextMessage constructor fails message without emojis
2 parents 567ac1f + de78c86 commit 9fb534c

File tree

2 files changed

+41
-6
lines changed

2 files changed

+41
-6
lines changed

src/LINEBot/Event/MessageEvent/TextMessage.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class TextMessage extends MessageEvent
3030
/**
3131
* Emoji Info List
3232
*
33-
* @var array
33+
* @var array|null
3434
*/
3535
private $emojis;
3636

@@ -42,9 +42,11 @@ class TextMessage extends MessageEvent
4242
public function __construct($event)
4343
{
4444
parent::__construct($event);
45-
$this->emojis = array_map(function ($emojiInfo) {
46-
return new EmojiInfo($emojiInfo);
47-
}, $this->message['emojis']);
45+
if (isset($this->message['emojis'])) {
46+
$this->emojis = array_map(function ($emojiInfo) {
47+
return new EmojiInfo($emojiInfo);
48+
}, $this->message['emojis']);
49+
}
4850
}
4951

5052
/**

tests/LINEBot/EventRequestParserTest.php

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,21 @@ class EventRequestParserTest extends TestCase
507507
]
508508
}
509509
}
510+
},
511+
{
512+
"type":"message",
513+
"mode":"active",
514+
"timestamp":12345678901234,
515+
"source":{
516+
"type":"user",
517+
"userId":"userid"
518+
},
519+
"replyToken":"replytoken",
520+
"message":{
521+
"id":"contentid",
522+
"type":"text",
523+
"text":"message without emoji"
524+
}
510525
}
511526
]
512527
}
@@ -523,13 +538,13 @@ public function testParseEventRequest()
523538
}), ['channelSecret' => 'testsecret']);
524539
list($destination, $events) = $bot->parseEventRequest(
525540
$this::$json,
526-
'V1LgwKgBQTYcW2T0fywGyX8tHBzduTK7F9STWJVhJEE=',
541+
'D4WpU4d9YYR3p4uYIdEOjn2HjXDP+l3X5j78ndXriA4=',
527542
false
528543
);
529544

530545
$this->assertEquals($destination, 'U0123456789abcdef0123456789abcd');
531546

532-
$this->assertEquals(count($events), 29);
547+
$this->assertEquals(count($events), 30);
533548

534549
{
535550
// text
@@ -907,5 +922,23 @@ public function testParseEventRequest()
907922
$this->assertEquals(ThingsResultAction::TYPE_BINARY, $actionResults[0]->getType());
908923
$this->assertEquals('/w==', $actionResults[0]->getData());
909924
}
925+
926+
{
927+
// text without emoji
928+
$event = $events[29];
929+
$this->assertEquals(12345678901234, $event->getTimestamp());
930+
$this->assertEquals('active', $event->getMode());
931+
$this->assertTrue($event->isUserEvent());
932+
$this->assertEquals('userid', $event->getUserId());
933+
$this->assertEquals('userid', $event->getEventSourceId());
934+
$this->assertInstanceOf('LINE\LINEBot\Event\MessageEvent', $event);
935+
$this->assertInstanceOf('LINE\LINEBot\Event\MessageEvent\TextMessage', $event);
936+
/** @var TextMessage $event */
937+
$this->assertEquals('replytoken', $event->getReplyToken());
938+
$this->assertEquals('contentid', $event->getMessageId());
939+
$this->assertEquals('text', $event->getMessageType());
940+
$this->assertEquals('message without emoji', $event->getText());
941+
$this->assertEquals(null, $event->getEmojis());
942+
}
910943
}
911944
}

0 commit comments

Comments
 (0)