Page Menu
Home
Phabricator (Chris)
Search
Configure Global Search
Log In
Files
F625830
Message.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Authored By
Unknown
Size
11 KB
Referenced Files
None
Subscribers
None
Message.php
View Options
<?php
/*
* This file is part of the TelegramBot package.
*
* (c) Avtandil Kikabidze aka LONGMAN <akalongman@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace
Longman
\
TelegramBot
\
Entities
;
use
Longman
\
TelegramBot
\
Exception
\
TelegramException
;
class
Message
extends
Entity
{
protected
$message_id
;
protected
$from
;
protected
$date
;
protected
$chat
;
protected
$forward_from
;
protected
$forward_date
;
protected
$reply_to_message
;
protected
$text
;
protected
$audio
;
protected
$document
;
protected
$photo
;
protected
$sticker
;
protected
$video
;
protected
$voice
;
protected
$caption
;
protected
$contact
;
protected
$location
;
protected
$new_chat_participant
;
protected
$left_chat_participant
;
protected
$new_chat_title
;
protected
$new_chat_photo
;
protected
$delete_chat_photo
;
protected
$group_chat_created
;
protected
$supergroup_chat_created
;
protected
$channel_chat_created
;
protected
$migrate_to_chat_id
;
protected
$migrate_from_chat_id
;
private
$command
;
private
$type
;
public
function
__construct
(
array
$data
,
$bot_name
)
{
$this
->
reply_to_message
=
isset
(
$data
[
'reply_to_message'
]
)
?
$data
[
'reply_to_message'
]
:
null
;
if
(
!
empty
(
$this
->
reply_to_message
)
)
{
$this
->
reply_to_message
=
new
ReplyToMessage
(
$this
->
reply_to_message
,
$bot_name
)
;
}
$this
->
init
(
$data
,
$bot_name
)
;
}
//Common init to Message and ReplyToMessage
protected
function
init
(
array
&
$data
,
&
$bot_name
)
{
$this
->
bot_name
=
$bot_name
;
$this
->
type
=
'Message'
;
$this
->
message_id
=
isset
(
$data
[
'message_id'
]
)
?
$data
[
'message_id'
]
:
null
;
if
(
empty
(
$this
->
message_id
)
)
{
throw
new
TelegramException
(
'message_id is empty!'
)
;
}
$this
->
from
=
isset
(
$data
[
'from'
]
)
?
$data
[
'from'
]
:
null
;
if
(
!
empty
(
$this
->
from
)
)
{
$this
->
from
=
new
User
(
$this
->
from
)
;
}
$this
->
chat
=
isset
(
$data
[
'chat'
]
)
?
$data
[
'chat'
]
:
null
;
if
(
empty
(
$this
->
chat
)
)
{
throw
new
TelegramException
(
'chat is empty!'
)
;
}
$this
->
chat
=
new
Chat
(
$this
->
chat
)
;
$this
->
date
=
isset
(
$data
[
'date'
]
)
?
$data
[
'date'
]
:
null
;
if
(
empty
(
$this
->
date
)
)
{
throw
new
TelegramException
(
'date is empty!'
)
;
}
$this
->
forward_from
=
isset
(
$data
[
'forward_from'
]
)
?
$data
[
'forward_from'
]
:
null
;
if
(
!
empty
(
$this
->
forward_from
)
)
{
$this
->
forward_from
=
new
User
(
$this
->
forward_from
)
;
}
$this
->
forward_date
=
isset
(
$data
[
'forward_date'
]
)
?
$data
[
'forward_date'
]
:
null
;
$this
->
text
=
isset
(
$data
[
'text'
]
)
?
$data
[
'text'
]
:
null
;
$command
=
$this
->
getCommand
(
)
;
if
(
!
empty
(
$command
)
)
{
$this
->
type
=
'command'
;
}
$this
->
audio
=
isset
(
$data
[
'audio'
]
)
?
$data
[
'audio'
]
:
null
;
if
(
!
empty
(
$this
->
audio
)
)
{
$this
->
audio
=
new
Audio
(
$this
->
audio
)
;
$this
->
type
=
'Audio'
;
}
$this
->
document
=
isset
(
$data
[
'document'
]
)
?
$data
[
'document'
]
:
null
;
if
(
!
empty
(
$this
->
document
)
)
{
$this
->
document
=
new
Document
(
$this
->
document
)
;
$this
->
type
=
'Document'
;
}
$this
->
photo
=
isset
(
$data
[
'photo'
]
)
?
$data
[
'photo'
]
:
null
;
//array of photosize
if
(
!
empty
(
$this
->
photo
)
)
{
foreach
(
$this
->
photo
as
$photo
)
{
if
(
!
empty
(
$photo
)
)
{
$photos
[
]
=
new
PhotoSize
(
$photo
)
;
}
}
$this
->
photo
=
$photos
;
$this
->
type
=
'Photo'
;
}
$this
->
sticker
=
isset
(
$data
[
'sticker'
]
)
?
$data
[
'sticker'
]
:
null
;
if
(
!
empty
(
$this
->
sticker
)
)
{
$this
->
sticker
=
new
Sticker
(
$this
->
sticker
)
;
$this
->
type
=
'Sticker'
;
}
$this
->
video
=
isset
(
$data
[
'video'
]
)
?
$data
[
'video'
]
:
null
;
if
(
!
empty
(
$this
->
video
)
)
{
$this
->
video
=
new
Video
(
$this
->
video
)
;
$this
->
type
=
'Video'
;
}
$this
->
voice
=
isset
(
$data
[
'voice'
]
)
?
$data
[
'voice'
]
:
null
;
if
(
!
empty
(
$this
->
voice
)
)
{
$this
->
voice
=
new
Voice
(
$this
->
voice
)
;
$this
->
type
=
'Voice'
;
}
$this
->
caption
=
isset
(
$data
[
'caption'
]
)
?
$data
[
'caption'
]
:
null
;
//string
$this
->
contact
=
isset
(
$data
[
'contact'
]
)
?
$data
[
'contact'
]
:
null
;
if
(
!
empty
(
$this
->
contact
)
)
{
$this
->
contact
=
new
Contact
(
$this
->
contact
)
;
}
$this
->
location
=
isset
(
$data
[
'location'
]
)
?
$data
[
'location'
]
:
null
;
if
(
!
empty
(
$this
->
location
)
)
{
$this
->
location
=
new
Location
(
$this
->
location
)
;
$this
->
type
=
'Location'
;
}
$this
->
new_chat_participant
=
isset
(
$data
[
'new_chat_participant'
]
)
?
$data
[
'new_chat_participant'
]
:
null
;
if
(
!
empty
(
$this
->
new_chat_participant
)
)
{
$this
->
new_chat_participant
=
new
User
(
$this
->
new_chat_participant
)
;
$this
->
type
=
'new_chat_participant'
;
}
$this
->
left_chat_participant
=
isset
(
$data
[
'left_chat_participant'
]
)
?
$data
[
'left_chat_participant'
]
:
null
;
if
(
!
empty
(
$this
->
left_chat_participant
)
)
{
$this
->
left_chat_participant
=
new
User
(
$this
->
left_chat_participant
)
;
$this
->
type
=
'left_chat_participant'
;
}
$this
->
new_chat_title
=
isset
(
$data
[
'new_chat_title'
]
)
?
$data
[
'new_chat_title'
]
:
null
;
if
(
!
is_null
(
$this
->
new_chat_title
)
)
{
$this
->
type
=
'new_chat_title'
;
}
$this
->
new_chat_photo
=
isset
(
$data
[
'new_chat_photo'
]
)
?
$data
[
'new_chat_photo'
]
:
null
;
//array of photosize
if
(
!
empty
(
$this
->
new_chat_photo
)
)
{
foreach
(
$this
->
new_chat_photo
as
$photo
)
{
if
(
!
empty
(
$photo
)
)
{
$photos
[
]
=
new
PhotoSize
(
$photo
)
;
}
}
$this
->
new_chat_photo
=
$photos
;
$this
->
type
=
'new_chat_photo'
;
}
$this
->
delete_chat_photo
=
isset
(
$data
[
'delete_chat_photo'
]
)
?
$data
[
'delete_chat_photo'
]
:
null
;
if
(
$this
->
delete_chat_photo
)
{
$this
->
type
=
'delete_chat_photo'
;
}
$this
->
group_chat_created
=
isset
(
$data
[
'group_chat_created'
]
)
?
$data
[
'group_chat_created'
]
:
null
;
if
(
$this
->
group_chat_created
)
{
$this
->
type
=
'group_chat_created'
;
}
$this
->
supergroup_chat_created
=
isset
(
$data
[
'supergroup_chat_created'
]
)
?
$data
[
'supergroup_chat_created'
]
:
null
;
if
(
$this
->
supergroup_chat_created
)
{
$this
->
type
=
'supergroup_chat_created'
;
}
$this
->
channel_chat_created
=
isset
(
$data
[
'channel_chat_created'
]
)
?
$data
[
'channel_chat_created'
]
:
null
;
if
(
$this
->
channel_chat_created
)
{
$this
->
type
=
'channel_chat_created'
;
}
$this
->
migrate_to_chat_id
=
isset
(
$data
[
'migrate_to_chat_id'
]
)
?
$data
[
'migrate_to_chat_id'
]
:
null
;
$this
->
migrate_from_chat_id
=
isset
(
$data
[
'migrate_from_chat_id'
]
)
?
$data
[
'migrate_from_chat_id'
]
:
null
;
}
//return the entire command like /echo or /echo@bot1 if specified
public
function
getFullCommand
(
)
{
if
(
substr
(
$this
->
text
,
0
,
1
)
===
'/'
)
{
$no_EOL
=
strtok
(
$this
->
text
,
PHP_EOL
)
;
$no_space
=
strtok
(
$this
->
text
,
' '
)
;
//try to understand which separator \n or space divide /command from text
if
(
strlen
(
$no_space
)
<
strlen
(
$no_EOL
)
)
{
return
$no_space
;
}
else
{
return
$no_EOL
;
}
}
else
{
return
;
}
}
public
function
getCommand
(
)
{
if
(
!
empty
(
$this
->
command
)
)
{
return
$this
->
command
;
}
$cmd
=
$this
->
getFullCommand
(
)
;
if
(
substr
(
$cmd
,
0
,
1
)
===
'/'
)
{
$cmd
=
substr
(
$cmd
,
1
)
;
//check if command is follow by botname
$split_cmd
=
explode
(
'@'
,
$cmd
)
;
if
(
isset
(
$split_cmd
[
1
]
)
)
{
//command is followed by name check if is addressed to me
if
(
strtolower
(
$split_cmd
[
1
]
)
==
strtolower
(
$this
->
bot_name
)
)
{
return
$this
->
command
=
$split_cmd
[
0
]
;
}
}
else
{
//command is not followed by name
return
$this
->
command
=
$cmd
;
}
}
return
false
;
}
public
function
getMessageId
(
)
{
return
$this
->
message_id
;
}
public
function
getFrom
(
)
{
return
$this
->
from
;
}
public
function
getDate
(
)
{
return
$this
->
date
;
}
public
function
getChat
(
)
{
return
$this
->
chat
;
}
public
function
getForwardFrom
(
)
{
return
$this
->
forward_from
;
}
public
function
getForwardDate
(
)
{
return
$this
->
forward_date
;
}
public
function
getReplyToMessage
(
)
{
return
$this
->
reply_to_message
;
}
public
function
getText
(
$without_cmd
=
false
)
{
$text
=
$this
->
text
;
if
(
$without_cmd
)
{
$command
=
$this
->
getFullCommand
(
)
;
if
(
!
empty
(
$command
)
)
{
//$text = substr($text, strlen($command.' '), strlen($text));
$text
=
substr
(
$text
,
strlen
(
$command
)
+
1
,
strlen
(
$text
)
)
;
}
}
return
$text
;
}
public
function
getAudio
(
)
{
return
$this
->
audio
;
}
public
function
getDocument
(
)
{
return
$this
->
document
;
}
public
function
getPhoto
(
)
{
return
$this
->
photo
;
}
public
function
getSticker
(
)
{
return
$this
->
sticker
;
}
public
function
getVideo
(
)
{
return
$this
->
video
;
}
public
function
getVoice
(
)
{
return
$this
->
voice
;
}
public
function
getCaption
(
)
{
return
$this
->
caption
;
}
public
function
getContact
(
)
{
return
$this
->
contact
;
}
public
function
getLocation
(
)
{
return
$this
->
location
;
}
public
function
getNewChatParticipant
(
)
{
return
$this
->
new_chat_participant
;
}
public
function
getLeftChatParticipant
(
)
{
return
$this
->
left_chat_participant
;
}
public
function
getNewChatTitle
(
)
{
return
$this
->
new_chat_title
;
}
public
function
getNewChatPhoto
(
)
{
return
$this
->
new_chat_photo
;
}
public
function
getDeleteChatPhoto
(
)
{
return
$this
->
delete_chat_photo
;
}
public
function
getGroupChatCreated
(
)
{
return
$this
->
group_chat_created
;
}
public
function
getSupergroupChatCreated
(
)
{
return
$this
->
supergroup_chat_created
;
}
public
function
getChannelChatCreated
(
)
{
return
$this
->
channel_chat_created
;
}
public
function
getMigrateToChatId
(
)
{
return
$this
->
migrate_to_chat_id
;
}
public
function
getMigrateFromChatId
(
)
{
return
$this
->
migrate_from_chat_id
;
}
public
function
botAddedInChat
(
)
{
if
(
!
empty
(
$this
->
new_chat_participant
)
)
{
if
(
$this
->
new_chat_participant
->
getUsername
(
)
==
$this
->
getBotName
(
)
)
{
return
true
;
}
}
return
false
;
}
public
function
getType
(
)
{
return
$this
->
type
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Nov 14, 11:58 PM (1 d, 14 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
144386
Default Alt Text
Message.php (11 KB)
Attached To
Mode
R123 php-telegram-bot
Attached
Detach File
Event Timeline