<?php
use Mateodioev\OllamaBot\Cache\UserCache;
use Mateodioev\OllamaBot\Db\MysqlDatabase;
use Mateodioev\OllamaBot\Events\{CancellCompletation, Chat, PrivateTextListener, SetModel, Start, ViewCompletionDetails};
use Mateodioev\OllamaBot\Repository\MysqlUserRepository;
use Mateodioev\TgHandler\{Bot, Log};
use function Mateodioev\OllamaBot\env;
require __DIR__ . '/vendor/autoload.php';
\Dotenv\Dotenv::createImmutable(__DIR__)->load();
// Create logger
$logStreams = new Log\BulkStream(
new Log\TerminalStream(),
// (new Log\PhpNativeStream())->activate(env('LOG_DIR', __DIR__))
);
$logger = new Log\Logger($logStreams);
// Create bot
$bot = new Bot(env('BOT_TOKEN'), $logger);
$logStreams->add(new Log\BotApiStream($bot->getApi(), (int) env('BOT_LOG_CHANNEL_ID')));
$bot->onEvent(Start::get())
->onEvent(Chat::get())
->onEvent(SetModel::get())
->onEvent(CancellCompletation::get())
->onEvent(new PrivateTextListener())
->onEvent(new ViewCompletionDetails());
$db = new MysqlDatabase('mysql:host=' . env('DB_HOST') . ';dbname=' . env('DB_NAME') . ';charset=utf8mb4', env('DB_USER'), env('DB_PASS'));
UserCache::setRepo(new MysqlUserRepository($db));
$bot->longPolling(
(int) env('BOT_POLLING_TIMEOUT', 60),
(bool) env('BOT_POLLING_IGNORE_OLD_UPDATES', false),
(bool) env('BOT_ASYNC', true)
);
|