first init

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich 2022-11-13 21:01:50 +10:00
commit 8db0b64a71
11 changed files with 1331 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
!.gitignore
composer.phar
vendor

11
LICENSE Normal file
View File

@ -0,0 +1,11 @@
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.

3
README.md Normal file
View File

@ -0,0 +1,3 @@
# vk-robot-wanda
Ванда Мирзаева - чат-робот ВКонтакте для отображения удалённых сообщений

55
composer.json Normal file
View File

@ -0,0 +1,55 @@
{
"name": "mirzaev/vk-robot-wanda",
"description": "Чат-робот ВКонтакте для отображения удалённых сообщений",
"readme": "README.md",
"keywords": [
"Wanda",
"Mirzaev",
"vk",
"chat-robot",
"roleplay"
],
"type": "robot",
"license": "WTFPL",
"homepage": "https://git.mirzaev.sexy/mirzaev/vk-robot-wanda",
"authors": [
{
"name": "Arsen Mirzaev Tatyano-Muradovich",
"email": "arsen@mirzaev.sexy",
"homepage": "https://mirzaev.sexy",
"role": "Programmer"
}
],
"support": {
"email": "arsen@mirzaev.sexy",
"wiki": "https://git.mirzaev.sexy/mirzaev/vk-robot-wanda/wiki",
"issues": "https://git.mirzaev.sexy/mirzaev/vk-robot-wanda/issues",
"chat": "https://vk.me/wanda.mirzaev.sexy"
},
"funding": [
{
"type": "funding",
"url": "https://fund.mirzaev.sexy"
}
],
"minimum-stability": "dev",
"require": {
"php": "^8.1",
"triagens/arangodb": "~3.8",
"guzzlehttp/guzzle": "^7.4",
"mirzaev/arangodb": "^1.0",
"mirzaev/vk": "^4.5",
"mirzaev/vk-arangodb": "^1.0.1",
"mirzaev/vk-chat": "^1.0"
},
"autoload": {
"psr-4": {
"mirzaev\\vk\\robot\\wanda\\": "mirzaev/vk/robot/wanda/system"
}
},
"autoload-dev": {
"psr-4": {
"mirzaev\\vk\\robot\\wanda\\tests\\": "mirzaev/vk/robot/wanda/tests"
}
}
}

1140
composer.lock generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,43 @@
<?php
declare(strict_types=1);
namespace mirzaev\vk\robot\wanda\programs;
// Фреймворк ВКонтакте
use mirzaev\vk\robots\robot;
// Модуль чат-робота для фреймворка ВКонтакте
use mirzaev\vk\chat\core,
mirzaev\vk\chat\program;
// Встроенные библиотеки
use Closure,
Exception;
/**
* Программа: "проверить обновления"
*
* Проверяет последние сообщения на наличие редактирования или удаления
*
* @package mirzaev\vk\robot\wanda\programs
* @author Arsen Mirzaev Tatyano-Muradovich <arsen@mirzaev.sexy>
*/
class check_for_changes extends program
{
/**
* Конструктор
*
* @param callable $program Программа выполняемая командой
* @param robot $robot Робот, который будет выполнять команду
* @param array $accounts Реестр аккаунтов которым разрешено выполнять команду
*/
public function __construct(
public robot $robot,
public array $accounts = []
) {
parent::__construct(function (core $core, robot $robot, array &$update, string ...$text): void {
}, $robot, $accounts);
}
}

View File

@ -0,0 +1 @@
index.php

View File

@ -0,0 +1,57 @@
<?php
declare(strict_types=1);
// Файлы проекта
use mirzaev\vk\robot\wanda\programs\check_for_changes;
// Фреймворк ВКонтакте
use mirzaev\vk\core,
mirzaev\vk\api\longpoll;
// Фреймворк ArangoDB
use mirzaev\arangodb\connection;
// Модуль ArangoDB для фреймворка ВКонтакте
use mirzaev\vk\arangodb\longpoll as database;
// Модуль чат-робота для фреймворка ВКонтакте
use mirzaev\vk\chat\core as chat;
// Инициализация
defined('SYSTEM_PATH_ROOT') or define('SYSTEM_PATH_ROOT', __DIR__ . '/../');
defined('SYSTEM_PATH_PUBLIC') or define('SYSTEM_PATH_PUBLIC', __DIR__);
// Подключение автозагрузчика
require SYSTEM_PATH_ROOT . '../../../../../vendor/autoload.php';
// Инициализация ядра
$core = core::init();
// Инициализция робота
$robot = $core->group(217152653)->key('');
// Инициализация обработчика LongPoll API
$longpoll = new longpoll($robot);
// Инициализация базы данных
$database = new database(new connection(require SYSTEM_PATH_ROOT . 'settings/arangodb.php'));
// Очистка базы данных (тестирование)
$database->truncate();
// Инициализация модуля "чат-робот"
$chat = new chat;
// Инициализация программ: "ответ на сообщение группы", "конвертация упоминаний" и "переменные"
$chat->command('/(*UTF8)^.*$/', new check_for_changes($robot));
$longpoll->handle(function (array $update) use ($robot, $database, $chat) {
// Обработка события
// Сохранение в базе данных
$database->save($update);
// Обработка команды
$chat->handle($update);
});

View File

@ -0,0 +1,2 @@
vk.php
wanda.php

View File

@ -0,0 +1,8 @@
<?php
return [
'endpoint' => '',
'database' => '',
'name' => '',
'password' => ''
];

View File

@ -0,0 +1,8 @@
<?php
return [
'endpoint' => '',
'database' => '',
'name' => '',
'password' => ''
];