Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- set_time_limit(0);
- require 'vendor/autoload.php';
- require 'lib/db.php';
- require "lib/dateHelper.php";
- use VK\Client\VKApiClient;
- class ServerHandler extends VK\CallbackApi\Server\VKCallbackApiServerHandler {
- public function __construct()
- {
- $this->vk = new VKAPIClient();
- }
- const SECRET = 'dzbot';
- const GROUP_ID = 176571052;
- const CONFIRMATION_TOKEN = '591705dc';
- const token = '2998699d5e490ce0931eb2f90149d7dc2c1ff5afc55ccbc38be52edebdf907e871085ba2c994522f2a6c1';
- function confirmation(int $group_id, ?string $secret) {
- if ($secret === static::SECRET && $group_id === static::GROUP_ID) {
- echo static::CONFIRMATION_TOKEN;
- }
- }
- public function messageNew(int $group_id, ?string $secret, array $object) {
- sleep(0.5);
- if(!empty($object['attachments'])){
- if($object['attachments'][0]->type == 'audio_message') {
- $audioMsg = $object['attachments'][0]->audio_message->link_mp3;
- $params = ['peer_id' => $object['peer_id'], 'random_id' => mt_rand(1, 9999), 'message' => 'Данная функция временно не работает!'];
- //$this->vk->messages()->send(static::token, $params);
- echo "ok";
- }
- }elseif($object['text'] != ""){
- $body = mb_strtolower($object['text']);
- switch ($body) {
- case '!рассылка':
- $id = $object['from_id'];
- $status = R::findOne( 'recipients', 'user_id = ? ', [$object['from_id']] );
- if(is_null($status)){
- //Добавить в рассылку
- $recipient = R::dispense('recipients');
- $name = $this->vk->users()->get(static::token, ['user_ids' => $id])[0]['first_name'];
- $recipient->name = $name;
- $recipient->user_id = $object['from_id'];
- R::store( $recipient );
- $params = ['peer_id' => $object['peer_id'], 'random_id' => mt_rand(1, 9999), 'message' => 'Вы успешно подписались на рассылку!'];
- $this->vk->messages()->send(static::token, $params);
- echo "ok";
- }else{
- //убрать из рассылки
- $bean = R::load('recipients', $status->id);
- R::trash($bean);
- $params = ['peer_id' => $object['peer_id'], 'random_id' => mt_rand(1, 9999), 'message' => 'Вы успешно отписались от рассылки!'];
- $this->vk->messages()->send(static::token, $params);
- echo "ok";
- }
- break;
- case '!команды':
- $params = ['peer_id' => $object['peer_id'], 'random_id' => mt_rand(1, 9999), 'message' => "Команды: \n !рассылка - подписаться или отписаться от рассылки \n !статус - проверить подписаны вы на рассылку или нет \n !дз - вручную посмотреть домашнее задание"];
- $this->vk->messages()->send(static::token, $params);
- echo "ok";
- break;
- case '!удалить':
- $homework = R::findLast("homework");
- R::trash( $homework );
- $params = ['peer_id' => $object['peer_id'], 'random_id' => mt_rand(1, 9999), 'message' => "Последнее добавленное домашнее задание было удалено"];
- $this->vk->messages()->send(static::token, $params);
- echo "ok";
- break;
- case 'привет':
- $name = $this->vk->users()->get(static::token, ['user_ids' => $object['from_id']])[0]['first_name'];
- $message = "Привет, ".$name."!";
- $params = ['peer_id' => $object['peer_id'], 'random_id' => mt_rand(1, 9999), 'message'=> $message];
- $this->vk->messages()->send(static::token, $params);
- echo "ok";
- break;
- case '!расписание':
- $msg = file_get_contents('timetable.txt');
- $params = ['peer_id' => $object['peer_id'], 'random_id' => mt_rand(1, 9999), 'message' => $msg];
- $this->vk->messages()->send(static::token, $params);
- echo "ok";
- break;
- case '!разослать':
- $check = R::count( 'admins', 'user_id = ?', [ $object['from_id'] ] );
- if($check > 0){
- $endpoints = getEndPoints();
- $begin = date('Y-m-d H:i:s', $endpoints['start']);
- $end = date('Y-m-d H:i:s', $endpoints['end']);
- $message = "Рассылка домашнего задания(смотрите по дате): \n _________________ \n";
- $homeworks = R::getAll("SELECT * FROM homework WHERE todate between ? AND ? ORDER BY todate", [$begin, $end]);
- foreach($homeworks as $homework){
- $message = $message.$homework['text']." | Дата - ".$homework['todate']."\n_____________________\n";
- }
- $recipients = R::find("recipients");
- foreach ($recipients as $recipient) {
- $params = ['peer_id' => $recipient['user_id'], 'random_id' => mt_rand(1, 9999), 'message' => 'Привет, '.$recipient['name']."! ".$message];
- $this->vk->messages()->send(static::token, $params);
- echo "ok";
- }
- }else{
- $params = ['peer_id' => $object['peer_id'], 'random_id' => mt_rand(1, 9999), 'message' => 'У вас нет прав на использование данной команды!'];
- $this->vk->messages()->send(static::token, $params);
- echo "ok";
- }
- break;
- case strpos($body, '!добавитьдз') !== false:
- $ex = explode(' ', $body);
- unset($ex[0]);
- $key = array_search('надату', $ex);
- $newHomework = R::dispense('homework');
- if($key !== false){
- unset($ex[$key]);
- if(strpos($ex[$key+1], '.') !== false){
- $md = explode('.', $ex[$key+1]);
- $day = $md[1];
- $month = $md[0];
- $d = new DateTime(date("Y-{$month}-{$day} H:i:s"));
- $newHomework->todate = $d->format('Y-m-d H:i:s');
- unset($ex[$key+1]);
- }else{
- $day = $ex[$key+1];
- $d = new DateTime(date("Y-m-{$day} H:i:s"));
- $newHomework->todate = $d->format('Y-m-d H:i:s');
- unset($ex[$key+1]);
- }
- }else{
- $date = (new \DateTime());
- $dayOfWeek = $date->format('w');
- if ($dayOfWeek == 0 || $dayOfWeek == 6) {
- $todate = date("Y-m-d", strtotime('monday next week'));
- }else{
- $todate = date("Y-m-d", strtotime('tomorrow'));
- }
- $newHomework->todate = $todate;
- }
- $newHomeworkText = implode(' ', $ex);
- $newHomework->text = $newHomeworkText;
- R::store($newHomework);
- $params = ['peer_id' => $object['peer_id'], 'random_id' => mt_rand(1, 9999), 'message' => "Домашнее задание успешно добавлено"];
- $this->vk->messages()->send(static::token, $params);
- echo "ok";
- break;
- case '!дз':
- $endpoints = getEndPoints();
- $begin = date('Y-m-d H:i:s', $endpoints['start']);
- $end = date('Y-m-d H:i:s', $endpoints['end']);
- $message = "Вот ваше домашнее задание: \n _________________ \n";
- $homeworks = R::getAll("SELECT * FROM homework WHERE todate between ? AND ? ORDER BY todate", [$begin, $end]);
- foreach($homeworks as $homework){
- $message = $message.$homework['text']." | Дата - ".$homework['todate']."\n_____________________\n";
- }
- $params = ['peer_id' => $object['peer_id'], 'random_id' => mt_rand(1, 9999), 'message' => $message];
- $this->vk->messages()->send(static::token, $params);
- echo "ok";
- break;
- case '!статус':
- $check = R::count( 'recipients', 'peer_id = ?', [ $object['peer_id'] ] );
- if($check > 0){
- $message = "Вы подписаны на рассылку";
- $params = ['peer_id' => $object['peer_id'], 'random_id' => mt_rand(1, 9999), 'message' => $message];
- $this->vk->messages()->send(static::token, $params);
- echo "ok";
- }else{
- $message = "Вы НЕ подписаны на рассылку, напишите '!рассылка' без ковычек, чтобы подписаться на рассылку";
- $params = ['peer_id' => $object['peer_id'], 'random_id' => mt_rand(1, 9999), 'message' => $message];
- $this->vk->messages()->send(static::token, $params);
- echo "ok";
- }
- break;
- default:
- echo "ok";
- break;
- }
- }
- }
- }
- $handler = new ServerHandler();
- $data = json_decode(file_get_contents('php://input'));
- $handler->parse($data);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement