Skip to content

Commit

Permalink
Merge pull request #3799 from HDInnovations/8.x.x
Browse files Browse the repository at this point in the history
(Release) v8.1.3
  • Loading branch information
HDVinnie committed May 1, 2024
2 parents 84ed023 + 4c5cfc2 commit 68ef67e
Show file tree
Hide file tree
Showing 18 changed files with 467 additions and 278 deletions.
82 changes: 30 additions & 52 deletions app/Bots/NerdBot.php
Original file line number Diff line number Diff line change
Expand Up @@ -282,70 +282,48 @@ public function pm(): true|\Illuminate\Http\Response|\Illuminate\Contracts\Routi
$message = $this->message;

if ($type === 'message' || $type === 'private') {
$receiverDirty = false;
$receiverEchoes = cache()->get('user-echoes'.$target->id);
// Create echo for user if missing
$echoes = cache()->remember(
'user-echoes'.$target->id,
3600,
fn () => UserEcho::with(['room', 'target', 'bot'])->where('user_id', '=', $target->id)->get()
);

if (!$receiverEchoes || !\is_array($receiverEchoes)) {
$receiverEchoes = UserEcho::with(['room', 'target', 'bot'])->where('user_id', '=', $target->id)->get();
}

$receiverListening = false;

foreach ($receiverEchoes as $receiverEcho) {
if ($receiverEcho->bot_id === $this->bot->id) {
$receiverListening = true;

break;
}
}
if ($echoes->doesntContain(fn ($echo) => $echo->bot_id == $this->bot->id)) {
UserEcho::create([
'user_id' => $target->id,
'target_id' => $this->bot->id,
]);

if (!$receiverListening) {
$receiverPort = new UserEcho();
$receiverPort->user_id = $target->id;
$receiverPort->bot_id = $this->bot->id;
$receiverPort->save();
$receiverEchoes = UserEcho::with(['room', 'target', 'bot'])->where('user_id', '=', $target->id)->get();
$receiverDirty = true;
}

if ($receiverDirty) {
$expiresAt = Carbon::now()->addMinutes(60);
cache()->put('user-echoes'.$target->id, $receiverEchoes, $expiresAt);
event(new Chatter('echo', $target->id, UserEchoResource::collection($receiverEchoes)));
}
$echoes = UserEcho::with(['room', 'target', 'bot'])->where('user_id', '=', $target->id)->get();

$receiverDirty = false;
$receiverAudibles = cache()->get('user-audibles'.$target->id);
cache()->put('user-echoes'.$target->id, $echoes, 3600);

if (!$receiverAudibles || !\is_array($receiverAudibles)) {
$receiverAudibles = UserAudible::with(['room', 'target', 'bot'])->where('user_id', '=', $target->id)->get();
Chatter::dispatch('echo', $target->id, UserEchoResource::collection($echoes));
}

$receiverListening = false;
// Create audible for user if missing
$audibles = cache()->remember(
'user-audibles'.$target->id,
3600,
fn () => UserAudible::with(['room', 'target', 'bot'])->where('user_id', '=', $target->id)->get()
);

foreach ($receiverAudibles as $receiverEcho) {
if ($receiverEcho->bot_id === $this->bot->id) {
$receiverListening = true;
if ($audibles->doesntContain(fn ($audible) => $audible->bot_id == $this->bot->id)) {
UserAudible::create([
'user_id' => $target->id,
'target_id' => $this->bot->id,
'status' => false,
]);

break;
}
}
$audibles = UserAudible::with(['room', 'target', 'bot'])->where('user_id', '=', $target->id)->get();

if (!$receiverListening) {
$receiverPort = new UserAudible();
$receiverPort->user_id = $target->id;
$receiverPort->bot_id = $this->bot->id;
$receiverPort->save();
$receiverAudibles = UserAudible::with(['room', 'target', 'bot'])->where('user_id', '=', $target->id)->get();
$receiverDirty = true;
}
cache()->put('user-audibles'.$target->id, $audibles, 3600);

if ($receiverDirty) {
$expiresAt = Carbon::now()->addMinutes(60);
cache()->put('user-audibles'.$target->id, $receiverAudibles, $expiresAt);
event(new Chatter('audible', $target->id, UserAudibleResource::collection($receiverAudibles)));
Chatter::dispatch('audible', $target->id, UserAudibleResource::collection($audibles));
}

// Create message
if ($txt !== '') {
$roomId = 0;
$this->chatRepository->privateMessage($target->id, $roomId, $message, 1, $this->bot->id);
Expand Down
83 changes: 30 additions & 53 deletions app/Bots/SystemBot.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
use App\Models\UserEcho;
use App\Notifications\NewBon;
use App\Repositories\ChatRepository;
use Illuminate\Support\Carbon;

class SystemBot
{
Expand Down Expand Up @@ -178,70 +177,48 @@ public function pm(): \Illuminate\Http\Response|bool|\Illuminate\Contracts\Found
$message = $this->message;

if ($type === 'message' || $type === 'private') {
$receiverDirty = false;
$receiverEchoes = cache()->get('user-echoes'.$target->id);

if (!$receiverEchoes || !\is_array($receiverEchoes)) {
$receiverEchoes = UserEcho::with(['room', 'target', 'bot'])->where('user_id', '=', $target->id)->get();
}

$receiverListening = false;

foreach ($receiverEchoes as $receiverEcho) {
if ($receiverEcho->bot_id === $this->bot->id) {
$receiverListening = true;

break;
}
}
// Create echo for user if missing
$echoes = cache()->remember(
'user-echoes'.$target->id,
3600,
fn () => UserEcho::with(['room', 'target', 'bot'])->where('user_id', '=', $target->id)->get()
);

if (!$receiverListening) {
$receiverPort = new UserEcho();
$receiverPort->user_id = $target->id;
$receiverPort->bot_id = $this->bot->id;
$receiverPort->save();
$receiverEchoes = UserEcho::with(['room', 'target', 'bot'])->where('user_id', '=', $target->id)->get();
$receiverDirty = true;
}
if ($echoes->doesntContain(fn ($echo) => $echo->bot_id == $this->bot->id)) {
UserEcho::create([
'user_id' => $target->id,
'target_id' => $this->bot->id,
]);

if ($receiverDirty) {
$expiresAt = Carbon::now()->addMinutes(60);
cache()->put('user-echoes'.$target->id, $receiverEchoes, $expiresAt);
event(new Chatter('echo', $target->id, UserEchoResource::collection($receiverEchoes)));
}
$echoes = UserEcho::with(['room', 'target', 'bot'])->where('user_id', '=', $target->id)->get();

$receiverDirty = false;
$receiverAudibles = cache()->get('user-audibles'.$target->id);
cache()->put('user-echoes'.$target->id, $echoes, 3600);

if (!$receiverAudibles || !\is_array($receiverAudibles)) {
$receiverAudibles = UserAudible::with(['room', 'target', 'bot'])->where('user_id', '=', $target->id)->get();
Chatter::dispatch('echo', $target->id, UserEchoResource::collection($echoes));
}

$receiverListening = false;
// Create audible for user if missing
$audibles = cache()->remember(
'user-audibles'.$target->id,
3600,
fn () => UserAudible::with(['room', 'target', 'bot'])->where('user_id', '=', $target->id)->get()
);

foreach ($receiverAudibles as $se => $receiverEcho) {
if ($receiverEcho->bot_id === $this->bot->id) {
$receiverListening = true;
if ($audibles->doesntContain(fn ($audible) => $audible->bot_id == $this->bot->id)) {
UserAudible::create([
'user_id' => $target->id,
'target_id' => $this->bot->id,
'status' => false,
]);

break;
}
}
$audibles = UserAudible::with(['room', 'target', 'bot'])->where('user_id', '=', $target->id)->get();

if (!$receiverListening) {
$receiverPort = new UserAudible();
$receiverPort->user_id = $target->id;
$receiverPort->bot_id = $this->bot->id;
$receiverPort->save();
$receiverAudibles = UserAudible::with(['room', 'target', 'bot'])->where('user_id', '=', $target->id)->get();
$receiverDirty = true;
}
cache()->put('user-audibles'.$target->id, $audibles, 3600);

if ($receiverDirty) {
$expiresAt = Carbon::now()->addMinutes(60);
cache()->put('user-audibles'.$target->id, $receiverAudibles, $expiresAt);
event(new Chatter('audible', $target->id, UserAudibleResource::collection($receiverAudibles)));
Chatter::dispatch('audible', $target->id, UserAudibleResource::collection($audibles));
}

// Create message
if ($txt !== '') {
$roomId = 0;
$this->chatRepository->privateMessage($target->id, $roomId, $message, 1, $this->bot->id);
Expand Down
Loading

0 comments on commit 68ef67e

Please sign in to comment.