Compare commits

..

No commits in common. "e9599e706f99a694418b123cd3b53850b6449f4c" and "69c34bb9f9fb9fae953d4ef6da5c442865c80e0d" have entirely different histories.

2 changed files with 24 additions and 64 deletions

View File

@ -37,22 +37,19 @@ $bot = new Zanzara(require(__DIR__ . '/../settings/key.php'), $config);
$bot->onMessage(function (Context $ctx) {
if ($members = $ctx->getMessage()->getNewChatMembers()) {
// Новый аккаунт в чате
echo "Обнаружен новый участник в чате" . PHP_EOL;
$ctx->sendMessage('⚠️ Введите ваш табельный номер', ['reply_to_message_id' => $ctx->getMessage()->getMessageId()])
$ctx->sendMessage('⚠️ Введите ваш табельный номер для авторизации', ['reply_to_message_id' => $ctx->getMessage()->getMessageId()])
->then(function ($message) use ($ctx, $members) {
// Инициализация идентификатора сотрудника
$id = $members[0]->getId();
echo "Отправлено сообщение ({$message->getMessageId()}) с запросом ID у сотрудника ($id)" . PHP_EOL;
$ctx->getGlobalDataItem("member_{$id}_request")
->then(
function ($old) use ($ctx, $id, $message) {
$timer = function ($ctx, $id, $message) {
$ctx->setGlobalDataItem("member_{$id}_request", $message)
->then(function () use ($ctx, $id, $message) {
echo "Записано сообщение ({$message->getMessageId()}) с запросом ID у сотрудника ($id) в сессионное хранилище" . PHP_EOL;
->then(function () use ($ctx, $id) {
// Инициализация таймера
React\Promise\Timer\sleep(180)->then(
@ -65,17 +62,11 @@ $bot->onMessage(function (Context $ctx) {
// Изгнание из чата
$ctx->kickChatMember($message->getChat()->getId(), $id)
->then(function () use ($ctx, $id, $message) {
echo "Сотрудник ($id) изгнан из чата ({$message->getChat()->getId()})" . PHP_EOL;
// Удаление сообщения из сессионного хранилища
$ctx->deleteGlobalDataItem("member_{$id}_request");
echo "Удалено сообщение ({$message->getMessageId()}?) (member_{$id}_request) с запросом ID у сотрудника ($id) из сессионного хранилища" . PHP_EOL;
// Удаление сообщения
$ctx->deleteMessage($message->getChat()->getId(), $message->getMessageId());
echo "Удалено сообщение ({$message->getMessageId()}) с запросом ID у сотрудника ($id) из чата ({$message->getChat()->getId()})" . PHP_EOL;
});
}
},
@ -84,28 +75,18 @@ $bot->onMessage(function (Context $ctx) {
);
}
);
echo "Инициализирован таймер изгнания сотрудника ($id)" . PHP_EOL;
});
};
if ($old) {
echo "Найдено сообщение ({$old->getMessageId()}) с запросом ID у сотрудника ($id) в сессионном хранилище" . PHP_EOL;
$ctx->deleteGlobalDataItem("member_{$id}_request")
->then(function () use ($ctx, $id, $message, $timer, $old) {
echo "Удалено сообщение ({$old->getMessageId()}?) (member_{$id}_request) с запросом ID у сотрудника ($id) из сессионного хранилища" . PHP_EOL;
$ctx->deleteMessage($old->getChat()->getId(), $old->getMessageId())
->then(function () use ($ctx, $id, $message, $timer, $old) {
echo "Удалено сообщение ({$old->getMessageId()}) с запросом ID у сотрудника ($id) из чата ({$old->getChat()->getId()})" . PHP_EOL;
->then(function () use ($ctx, $id, $message, $timer) {
$timer($ctx, $id, $message);
});
});
} else {
echo "Не найдено сообщение с запросом ID у сотрудника ($id) в сессионном хранилище" . PHP_EOL;
$timer($ctx, $id, $message);
}
} else $timer($ctx, $id, $message);
}
);
});
@ -141,58 +122,20 @@ $bot->onMessage(function (Context $ctx) {
// Перебор строк
if ($worker === $row->toArray()['ID']) {
$ctx->sendMessage("✅ Авторизован сотрудник: $worker", ['reply_to_message_id' => $message->getMessageId()])
->then(
function ($message) use ($ctx, $id) {
// Инициализация таймера
React\Promise\Timer\sleep(10)->then(
function () use ($ctx, $id, $message) {
// Удаление сообщения
$ctx->deleteMessage($message->getChat()->getId(), $message->getMessageId());
echo "Удалено сообщение ({$message->getMessageId()}) с подтверждением авторизации сотрудника ($id) в чате ({$message->getChat()->getId()})" . PHP_EOL;
},
function () {
}
);
}
);
echo "Авторизован сотрудник ($id) по идентификатору ($worker)" . PHP_EOL;
$ctx->sendMessage("✅ Авторизован сотрудник: $worker", ['reply_to_message_id' => $message->getMessageId()]);
// Удаление сообщения из сессионного хранилища
$ctx->deleteGlobalDataItem("member_{$id}_request");
echo "Удалено сообщение ({$_message->getMessageId()}) с запросом ID у сотрудника ($id) из сессионного хранилища после успешной авторизации" . PHP_EOL;
// Удаление сообщения
$ctx->deleteMessage($_message->getChat()->getId(), $_message->getMessageId());
echo "Удалено сообщение ({$_message->getMessageId()}) с запросом ID у сотрудника ($id) из чата ({$_message->getChat()->getId()}) после успешной авторизации" . PHP_EOL;
return;
}
}
}
if (!empty($worker)) {
echo "Не удалось авторизовать сотрудника ($id) по номеру ($worker)" . PHP_EOL;
$ctx->sendMessage("Не найден сотрудник: $worker", ['reply_to_message_id' => $message->getMessageId()])
->then(
function ($message) use ($ctx, $id) {
// Инициализация таймера
React\Promise\Timer\sleep(10)->then(
function () use ($ctx, $id, $message) {
// Удаление сообщения
$ctx->deleteMessage($message->getChat()->getId(), $message->getMessageId());
echo "Удалено сообщение ({$message->getMessageId()}) с провалом авторизации сотрудника ($id) в чате ({$message->getChat()->getId()})" . PHP_EOL;
},
function () {
}
);
}
);
}
if (!empty($worker)) $ctx->sendMessage("Не найден сотрудник: $id", ['reply_to_message_id' => $message->getMessageId()]);
}
}
);

17
telegram-robot-entry.service Executable file
View File

@ -0,0 +1,17 @@
[Unit]
Description=Telegram-robot-entry
Wants=network.target
After=syslog.target network-online.target
[Service]
ExecStart=sudo -u www-data /usr/bin/php /var/www/spetsresurs-telegram-robot-entry/mirzaev/spetsresurs/telegram/robot/entry/system/public/robot.php
PIDFile=/var/run/php/telegram-robot-entry.pid
RemainAfterExit=no
RuntimeMaxSec=3600s
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target