Добавлены совместные ролевые действия и команды падежей

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich 2022-11-08 13:23:43 +10:00
parent 74fa35c892
commit 72d704cd0e

View File

@ -42,24 +42,52 @@ $database->truncate();
$chat = new chat; $chat = new chat;
// Инициализация команды "ролевое действие" // Инициализация команды "ролевое действие"
$chat->pattern('/\*([A-я\w\s]+)\*/', new command(function (array $update, string $text) use ($robot) { $chat->pattern('/(*UTF8)\*([A-я\w\s]+)\*/', new command(function (array $update, string $text) use ($robot) {
try { try {
// Удаление сообщения // Удаление сообщения
$robot->message()->delete($update['object']['message']['conversation_message_id'], $update['object']['message']['peer_id']); $robot->message()->delete($update['object']['message']['conversation_message_id'], $update['object']['message']['peer_id']);
} catch (Exception $e) { } catch (Exception $e) {
} }
// Инициализация данных отправителя // Конвертация кодировки текста сообщения
// $text = mb_convert_encoding($text, 'UTF-8');
// Инициализация данных аккаунта отправителя
$sender = $robot->user()->get($update['object']['message']['from_id']); $sender = $robot->user()->get($update['object']['message']['from_id']);
// Отправка ответа if (isset($update['object']['message']['reply_message'])) {
$robot->message($update['object']['message']['peer_id'], "@id$sender->id ($sender->first_name) $text"); // Найдено сообщение для ответа
// Инициализация данных аккаунта отправившего сообщение для ответа (получателя)
$receiver = $robot->user()->get($update['object']['message']['reply_message']['from_id']);
// Поиск падежей для получателя
preg_match_all('/(*UTF8)\s\|([А-я\w]+)$/', $text, $matches);
// Инициализация падежа получателя
$receiver_case = $matches[1][0];
// Инициализация цели для ролевого действия
$target = " @id$receiver->id ($receiver->first_name$receiver_case)";
} else $target = '';
// Поиск падежей для отправителя
preg_match_all('/(*UTF8)^\|([А-я\w]+)\s/', $text, $matches);
// Инициализация падежа отправителя
$sender_case = $matches[1][0];
// Удаление команд падежей из строки
$text = preg_replace('/(*UTF8)\s?\|[А-я\w]+\s?/', '', $text, 500);
// Отправка сообщения с ролевым действием
$robot->message($update['object']['message']['peer_id'], "@id$sender->id ($sender->first_name$sender_case) $text$target");
})); }));
$longpoll->handle(function (array $update) use ($robot, $database, $chat) { $longpoll->handle(function (array $update) use ($robot, $database, $chat) {
// Обработка события // Обработка события
// var_dump($update); var_dump($update);
// Сохранение события в базе данных // Сохранение события в базе данных
// $database->save($update); // $database->save($update);