1
|
|
|
<?php
|
2
|
|
|
|
3
|
|
|
namespace BPT\api;
|
4
|
|
|
|
5
|
|
|
use BPT\logger;
|
6
|
|
|
use CURLFile;
|
7
|
|
|
|
8
|
|
|
class request {
|
9
|
|
|
private const METHODS_ACTION = [
|
10
|
|
|
'getupdates' => 'getUpdates',
|
11
|
|
|
'getup' => 'getUpdates',
|
12
|
|
|
'updates' => 'getUpdates',
|
13
|
|
|
'setwebhook' => 'setWebhook',
|
14
|
|
|
'setweb' => 'setWebhook',
|
15
|
|
|
'webhook' => 'setWebhook',
|
16
|
|
|
'deletewebhook' => 'deleteWebhook',
|
17
|
|
|
'deleteweb' => 'deleteWebhook',
|
18
|
|
|
'delweb' => 'deleteWebhook',
|
19
|
|
|
'getwebhookinfo' => 'getWebhookInfo',
|
20
|
|
|
'getweb' => 'getWebhookInfo',
|
21
|
|
|
'getme' => 'getMe',
|
22
|
|
|
'me' => 'getMe',
|
23
|
|
|
'logout' => 'logOut',
|
24
|
|
|
'close' => 'close',
|
25
|
|
|
'sendmessage' => 'sendMessage',
|
26
|
|
|
'send' => 'sendMessage',
|
27
|
|
|
'forwardmessage' => 'forwardMessage',
|
28
|
|
|
'forward' => 'forwardMessage',
|
29
|
|
|
'copymessage' => 'copyMessage',
|
30
|
|
|
'copy' => 'copyMessage',
|
31
|
|
|
'sendphoto' => 'sendPhoto',
|
32
|
|
|
'photo' => 'sendPhoto',
|
33
|
|
|
'sendaudio' => 'sendAudio',
|
34
|
|
|
'audio' => 'sendAudio',
|
35
|
|
|
'senddocument' => 'sendDocument',
|
36
|
|
|
'senddoc' => 'sendDocument',
|
37
|
|
|
'document' => 'sendDocument',
|
38
|
|
|
'doc' => 'sendDocument',
|
39
|
|
|
'sendvideo' => 'sendVideo',
|
40
|
|
|
'video' => 'sendVideo',
|
41
|
|
|
'sendanimation' => 'sendAnimation',
|
42
|
|
|
'animation' => 'sendAnimation',
|
43
|
|
|
'sendgif' => 'sendAnimation',
|
44
|
|
|
'gif' => 'sendAnimation',
|
45
|
|
|
'sendvoice' => 'sendVoice',
|
46
|
|
|
'voice' => 'sendVoice',
|
47
|
|
|
'sendvideonote' => 'sendVideoNote',
|
48
|
|
|
'videonote' => 'sendVideoNote',
|
49
|
|
|
'sendmediagroup' => 'sendMediaGroup',
|
50
|
|
|
'mediagroup' => 'sendMediaGroup',
|
51
|
|
|
'media' => 'sendMediaGroup',
|
52
|
|
|
'sendlocation' => 'sendLocation',
|
53
|
|
|
'sendloc' => 'sendLocation',
|
54
|
|
|
'location' => 'sendLocation',
|
55
|
|
|
'loc' => 'sendLocation',
|
56
|
|
|
'editmessagelivelocation' => 'editMessageLiveLocation',
|
57
|
|
|
'editliveloc' => 'editMessageLiveLocation',
|
58
|
|
|
'stopmessagelivelocation' => 'stopMessageLiveLocation',
|
59
|
|
|
'stopliveloc' => 'stopMessageLiveLocation',
|
60
|
|
|
'sendvenue' => 'sendVenue',
|
61
|
|
|
'venue' => 'sendVenue',
|
62
|
|
|
'sendcontact' => 'sendContact',
|
63
|
|
|
'contact' => 'sendContact',
|
64
|
|
|
'sendpoll' => 'sendPoll',
|
65
|
|
|
'poll' => 'sendPoll',
|
66
|
|
|
'senddice' => 'sendDice',
|
67
|
|
|
'dice' => 'sendDice',
|
68
|
|
|
'sendchataction' => 'sendChatAction',
|
69
|
|
|
'chataction' => 'sendChatAction',
|
70
|
|
|
'action' => 'sendChatAction',
|
71
|
|
|
'getuserprofilephotos' => 'getUserProfilePhotos',
|
72
|
|
|
'userphotos' => 'getUserProfilePhotos',
|
73
|
|
|
'getfile' => 'getFile',
|
74
|
|
|
'file' => 'getFile',
|
75
|
|
|
'banchatmember' => 'banChatMember',
|
76
|
|
|
'ban' => 'banChatMember',
|
77
|
|
|
'kickchatmember' => 'banChatMember',
|
78
|
|
|
'kick' => 'unbanChatMember',
|
79
|
|
|
'unbanchatmember' => 'unbanChatMember',
|
80
|
|
|
'unban' => 'unbanChatMember',
|
81
|
|
|
'restrictchatmember' => 'restrictChatMember',
|
82
|
|
|
'restrict' => 'restrictChatMember',
|
83
|
|
|
'promotechatmember' => 'promoteChatMember',
|
84
|
|
|
'promote' => 'promoteChatMember',
|
85
|
|
|
'setchatadministratorcustomtitle' => 'setChatAdministratorCustomTitle',
|
86
|
|
|
'customtitle' => 'setChatAdministratorCustomTitle',
|
87
|
|
|
'banchatsenderchat' => 'banChatSenderChat',
|
88
|
|
|
'banSender' => 'banChatSenderChat',
|
89
|
|
|
'unbanchatsenderchat' => 'unbanChatSenderChat',
|
90
|
|
|
'unbanSender' => 'unbanChatSenderChat',
|
91
|
|
|
'setchatpermissions' => 'setChatPermissions',
|
92
|
|
|
'permissions' => 'setChatPermissions',
|
93
|
|
|
'exportchatinvitelink' => 'exportChatInviteLink',
|
94
|
|
|
'link' => 'exportChatInviteLink',
|
95
|
|
|
'createchatinvitelink' => 'createChatInviteLink',
|
96
|
|
|
'crlink' => 'createChatInviteLink',
|
97
|
|
|
'editchatinvitelink' => 'editChatInviteLink',
|
98
|
|
|
'edlink' => 'editChatInviteLink',
|
99
|
|
|
'revokechatinvitelink' => 'revokeChatInviteLink',
|
100
|
|
|
'relink' => 'revokeChatInviteLink',
|
101
|
|
|
'approvechatjoinrequest' => 'approveChatJoinRequest',
|
102
|
|
|
'acceptjoin' => 'approveChatJoinRequest',
|
103
|
|
|
'declinechatjoinrequest' => 'declineChatJoinRequest',
|
104
|
|
|
'denyjoin' => 'declineChatJoinRequest',
|
105
|
|
|
'setchatphoto' => 'setChatPhoto',
|
106
|
|
|
'deletechatphoto' => 'deleteChatPhoto',
|
107
|
|
|
'setchattitle' => 'setChatTitle',
|
108
|
|
|
'title' => 'setChatTitle',
|
109
|
|
|
'setchatdescription' => 'setChatDescription',
|
110
|
|
|
'description' => 'setChatDescription',
|
111
|
|
|
'pinchatmessage' => 'pinChatMessage',
|
112
|
|
|
'pin' => 'pinChatMessage',
|
113
|
|
|
'unpinchatmessage' => 'unpinChatMessage',
|
114
|
|
|
'unpin' => 'unpinChatMessage',
|
115
|
|
|
'unpinallchatmessages' => 'unpinAllChatMessages',
|
116
|
|
|
'unpinall' => 'unpinAllChatMessages',
|
117
|
|
|
'leavechat' => 'leaveChat',
|
118
|
|
|
'leave' => 'leaveChat',
|
119
|
|
|
'getchat' => 'getChat',
|
120
|
|
|
'chat' => 'getChat',
|
121
|
|
|
'getchatadministrators' => 'getChatAdministrators',
|
122
|
|
|
'admins' => 'getChatAdministrators',
|
123
|
|
|
'getchatmembercount' => 'getChatMembersCount',
|
124
|
|
|
'getchatmemberscount' => 'getChatMembersCount',
|
125
|
|
|
'memberscount' => 'getChatMembersCount',
|
126
|
|
|
'getchatmember' => 'getChatMember',
|
127
|
|
|
'member' => 'getChatMember',
|
128
|
|
|
'setchatstickerset' => 'setChatStickerSet',
|
129
|
|
|
'setsticker' => 'setChatStickerSet',
|
130
|
|
|
'deletechatstickerset' => 'deleteChatStickerSet',
|
131
|
|
|
'delsticker' => 'deleteChatStickerSet',
|
132
|
|
|
'answercallbackquery' => 'answerCallbackQuery',
|
133
|
|
|
'answer' => 'answerCallbackQuery',
|
134
|
|
|
'setmycommands' => 'setMyCommands',
|
135
|
|
|
'setcommands' => 'setMyCommands',
|
136
|
|
|
'deletemycommands' => 'deleteMyCommands',
|
137
|
|
|
'deletecommands' => 'deleteMyCommands',
|
138
|
|
|
'getmycommands' => 'getMyCommands',
|
139
|
|
|
'getcommands' => 'getMyCommands',
|
140
|
|
|
'setchatmenubutton' => 'setChatMenuButton',
|
141
|
|
|
'setmenubutton' => 'setChatMenuButton',
|
142
|
|
|
'setmenu' => 'setChatMenuButton',
|
143
|
|
|
'setbutton' => 'setChatMenuButton',
|
144
|
|
|
'getchatmenubutton' => 'getChatMenuButton',
|
145
|
|
|
'getmenubutton' => 'getChatMenuButton',
|
146
|
|
|
'getmenu' => 'getChatMenuButton',
|
147
|
|
|
'getbutton' => 'getChatMenuButton',
|
148
|
|
|
'setmydefaultadministratorrights' => 'setMyDefaultAdministratorRights',
|
149
|
|
|
'setmydefaultadminrights' => 'setMyDefaultAdministratorRights',
|
150
|
|
|
'setmydefaultrights' => 'setMyDefaultAdministratorRights',
|
151
|
|
|
'setdefaultrights' => 'setMyDefaultAdministratorRights',
|
152
|
|
|
'getmydefaultadministratorrights' => 'getMyDefaultAdministratorRights',
|
153
|
|
|
'getmydefaultadminrights' => 'getMyDefaultAdministratorRights',
|
154
|
|
|
'getmydefaultrights' => 'getMyDefaultAdministratorRights',
|
155
|
|
|
'getdefaultrights' => 'getMyDefaultAdministratorRights',
|
156
|
|
|
'editmessagetext' => 'editMessageText',
|
157
|
|
|
'edittext' => 'editMessageText',
|
158
|
|
|
'editmessagecaption' => 'editMessageCaption',
|
159
|
|
|
'editcap' => 'editMessageCaption',
|
160
|
|
|
'editcaption' => 'editMessageCaption',
|
161
|
|
|
'editmessagemedia' => 'editMessageMedia',
|
162
|
|
|
'editmedia' => 'editMessageMedia',
|
163
|
|
|
'editmessagereplymarkup' => 'editMessageReplyMarkup',
|
164
|
|
|
'editreply' => 'editMessageReplyMarkup',
|
165
|
|
|
'editkeyboard' => 'editMessageReplyMarkup',
|
166
|
|
|
'stoppoll' => 'stopPoll',
|
167
|
|
|
'deletemessage' => 'deleteMessage',
|
168
|
|
|
'del' => 'deleteMessage',
|
169
|
|
|
'sendsticker' => 'sendSticker',
|
170
|
|
|
'sticker' => 'sendSticker',
|
171
|
|
|
'getstickerset' => 'getStickerSet',
|
172
|
|
|
'uploadstickerfile' => 'uploadStickerFile',
|
173
|
|
|
'uploadsticker' => 'uploadStickerFile',
|
174
|
|
|
'createnewstickerset' => 'createNewStickerSet',
|
175
|
|
|
'createsticker' => 'createNewStickerSet',
|
176
|
|
|
'addstickertoset' => 'addStickerToSet',
|
177
|
|
|
'addsticker' => 'addStickerToSet',
|
178
|
|
|
'setstickerpositioninset' => 'setStickerPositionInSet',
|
179
|
|
|
'setstickerposition' => 'setStickerPositionInSet',
|
180
|
|
|
'setstickerpos' => 'setStickerPositionInSet',
|
181
|
|
|
'deletestickerfromset' => 'deleteStickerFromSet',
|
182
|
|
|
'deletesticker' => 'deleteStickerFromSet',
|
183
|
|
|
'setstickersetthumb' => 'setStickerSetThumb',
|
184
|
|
|
'setstickerthumb' => 'setStickerSetThumb',
|
185
|
|
|
'answerinlinequery' => 'answerInlineQuery',
|
186
|
|
|
'answerinline' => 'answerInlineQuery',
|
187
|
|
|
'answerwebappquery' => 'answerWebAppQuery',
|
188
|
|
|
'answerwebapp' => 'answerWebAppQuery',
|
189
|
|
|
'answerweb' => 'answerWebAppQuery',
|
190
|
|
|
'sendinvoice' => 'sendInvoice',
|
191
|
|
|
'invoice' => 'sendInvoice',
|
192
|
|
|
'answershippingquery' => 'answerShippingQuery',
|
193
|
|
|
'answershipping' => 'answerShippingQuery',
|
194
|
|
|
'answerprecheckoutquery' => 'answerPreCheckoutQuery',
|
195
|
|
|
'answerprecheckout' => 'answerPreCheckoutQuery',
|
196
|
|
|
'answerprecheck' => 'answerPreCheckoutQuery',
|
197
|
|
|
'setpassportdataerrors' => 'setPassportDataErrors',
|
198
|
|
|
'setpassport' => 'setPassportDataErrors',
|
199
|
|
|
'sendgame' => 'sendGame',
|
200
|
|
|
'game' => 'sendGame',
|
201
|
|
|
'setgamescore' => 'setGameScore',
|
202
|
|
|
'gamescore' => 'setGameScore',
|
203
|
|
|
'getgamehighscores' => 'getGameHighScores',
|
204
|
|
|
'getgamehigh' => 'getGameHighScores'
|
205
|
|
|
];
|
206
|
|
|
|
207
|
|
|
private const METHODS_KEYS = [
|
208
|
|
|
'sendMessage' => ['text', 'parse_mode']
|
209
|
|
|
];
|
210
|
|
|
|
211
|
|
|
private const METHODS_WITH_FILE = [
|
212
|
|
|
'sendPhoto' => ['photo'],
|
213
|
|
|
'sendAudio' => ['audio', 'thumb'],
|
214
|
|
|
'sendDocument' => ['document', 'thumb'],
|
215
|
|
|
'sendVideo' => ['video', 'thumb'],
|
216
|
|
|
'sendAnimation' => ['animation', 'thumb'],
|
217
|
|
|
'sendVoice' => ['voice', 'thumb'],
|
218
|
|
|
'sendVideoNote' => ['video_note', 'thumb'],
|
219
|
|
|
'setChatPhoto' => ['photo'],
|
220
|
|
|
'sendSticker' => ['sticker'],
|
221
|
|
|
'uploadStickerFile' => ['png_sticker'],
|
222
|
|
|
'createNewStickerSet' => ['png_sticker', 'tgs_sticker'],
|
223
|
|
|
'addStickerToSet' => ['png_sticker', 'tgs_sticker'],
|
224
|
|
|
'setStickerSetThumb' => ['thumb'],
|
225
|
|
|
];
|
226
|
|
|
|
227
|
|
|
|
228
|
|
|
public static function __callStatic (string $name, array $arguments) {
|
229
|
|
|
if ($action = self::methodAction($name)) {
|
230
|
|
|
self::keysName($action,$arguments);
|
231
|
|
|
self::readyFile($action,$arguments);
|
232
|
|
|
print_r($arguments);
|
233
|
|
|
}
|
234
|
|
|
else {
|
235
|
|
|
logger::write("$name method is not supported",'error');
|
236
|
|
|
}
|
237
|
|
|
}
|
238
|
|
|
|
239
|
|
|
private static function keysName (string $name, array &$arguments) {
|
240
|
|
|
foreach ($arguments as $key => $argument) {
|
241
|
|
|
if (is_numeric($key) && isset(self::METHODS_KEYS[$name][$key])) {
|
242
|
|
|
$arguments[self::METHODS_KEYS[$name][$key]] = $argument;
|
243
|
|
|
unset($arguments[$key]);
|
244
|
|
|
}
|
245
|
|
|
}
|
246
|
|
|
}
|
247
|
|
|
|
248
|
|
|
private static function methodAction(string $name): string|false {
|
249
|
|
|
return self::METHODS_ACTION[strtolower($name)] ?? false;
|
250
|
|
|
}
|
251
|
|
|
|
252
|
|
|
private static function readyFile(string $name, array &$arguments) {
|
253
|
|
|
if ($name === 'sendMediaGroup') {
|
254
|
|
|
foreach ($arguments['media'] as $key => $media) {
|
255
|
|
|
if (file_exists($media['media'])) {
|
256
|
|
|
$arguments['media'][$key]['media'] = new CURLFile($media['media']);
|
257
|
|
|
}
|
258
|
|
|
}
|
259
|
|
|
}
|
260
|
|
|
elseif ($file_params = self::methodFile($name)) {
|
261
|
|
|
foreach ($file_params as $param) {
|
262
|
|
|
if (isset($arguments[$param]) && file_exists($arguments[$param])) {
|
263
|
|
|
$arguments[$param] = new CURLFile($arguments[$param]);
|
264
|
|
|
}
|
265
|
|
|
}
|
266
|
|
|
}
|
267
|
|
|
}
|
268
|
|
|
|
269
|
|
|
private static function methodFile(string $name): array|false {
|
270
|
|
|
return self::METHODS_WITH_FILE[$name] ?? false;
|
271
|
|
|
}
|
272
|
|
|
} |