DiscordBot-PMMP / DiscordBot

DiscordBot, A Discord core API for pocketmine-mp.
Open Software License 3.0
51 stars 11 forks source link

Activity Buttons Bug #99

Closed Laith98Dev closed 1 year ago

Laith98Dev commented 1 year ago

There is a probem with the activity buttons object

after var_dump'ing the $dButtons:

array(2) {
  [0]=>
  string(13) "Watch Episode"
  [1]=>
  string(11) "View Series"
}

The error with the logs:

[2023-09-02T22:34:14.491557+00:00] InternalThread.DEBUG: all users have been loaded {"guild":"866998700314984458","member_collection":2831,"member_count":2831} []
[2023-09-02T22:34:25.198806+00:00] InternalThread.CRITICAL: ErrorException: "Attempt to read property "label" on string" (EXCEPTION) in "phar:///home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/src/InternalBot/ModelConverter.php" at line 250 [] []
[2023-09-02T22:34:25.199041+00:00] InternalThread.CRITICAL: #0 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/src/InternalBot/ModelConverter(250): JaxkDev\DiscordBot\InternalBot\Client->sysErrorHandler(integer 2, string[42] Attempt to read property "label" on string, string[94] phar:///home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/src/InternalBot/Mode, integer 250) [] []
[2023-09-02T22:34:25.199067+00:00] InternalThread.CRITICAL: #1 (): JaxkDev\DiscordBot\InternalBot\ModelConverter::JaxkDev\DiscordBot\InternalBot\{closure}(string[13] Watch Episode) [] []
[2023-09-02T22:34:25.199081+00:00] InternalThread.CRITICAL: #2 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/src/InternalBot/ModelConverter(250): array_map(object Closure#8186, array[2]) [] []
[2023-09-02T22:34:25.199093+00:00] InternalThread.CRITICAL: #3 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/src/InternalBot/Handlers/DiscordEventHandler(190): JaxkDev\DiscordBot\InternalBot\ModelConverter::genModelActivity(object Discord\Parts\User\Activity#12457) [] []
[2023-09-02T22:34:25.199105+00:00] InternalThread.CRITICAL: #4 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/evenement/evenement/src/EventEmitterTrait(143): JaxkDev\DiscordBot\InternalBot\Handlers\DiscordEventHandler->onPresenceUpdate(object Discord\Parts\WebSockets\PresenceUpdate#11708, object JaxkDev\DiscordBot\InternalBot\Discord#21, object Discord\Parts\WebSockets\PresenceUpdate#12705) [] []
[2023-09-02T22:34:25.199116+00:00] InternalThread.CRITICAL: #5 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/team-reflex/discord-php/src/Discord/Discord(784): Discord\Discord->emit(string[15] PRESENCE_UPDATE, array[3]) [] []
[2023-09-02T22:34:25.199127+00:00] InternalThread.CRITICAL: #6 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/react/promise/src/FulfilledPromise(42): Discord\Discord->Discord\{closure}(array[2]) [] []
[2023-09-02T22:34:25.199137+00:00] InternalThread.CRITICAL: #7 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/react/promise/src/Promise(66): React\Promise\FulfilledPromise->done(object Closure#8146, object Closure#12548) [] []
[2023-09-02T22:34:25.199148+00:00] InternalThread.CRITICAL: #8 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/react/promise/src/Promise(168): React\Promise\Promise::React\Promise\{closure}(object React\Promise\FulfilledPromise#1736) [] []
[2023-09-02T22:34:25.199157+00:00] InternalThread.CRITICAL: #9 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/react/promise/src/Promise(231): React\Promise\Promise->settle(object React\Promise\FulfilledPromise#1736) [] []
[2023-09-02T22:34:25.199167+00:00] InternalThread.CRITICAL: #10 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/react/promise/src/Deferred(36): React\Promise\Promise::React\Promise\{closure}(array[2]) [] []
[2023-09-02T22:34:25.199177+00:00] InternalThread.CRITICAL: #11 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/react/promise/src/FulfilledPromise(42): React\Promise\Deferred->resolve(array[2]) [] []
[2023-09-02T22:34:25.199187+00:00] InternalThread.CRITICAL: #12 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/react/promise/src/Promise(61): React\Promise\FulfilledPromise->done(array[2], array[2], NULL ) [] []
[2023-09-02T22:34:25.199197+00:00] InternalThread.CRITICAL: #13 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/team-reflex/discord-php/src/Discord/Discord(817): React\Promise\Promise->done(array[2], array[2]) [] []
[2023-09-02T22:34:25.199207+00:00] InternalThread.CRITICAL: #14 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/team-reflex/discord-php/src/Discord/Discord(667): Discord\Discord->handleDispatch(object stdClass#110) [] []
[2023-09-02T22:34:25.199223+00:00] InternalThread.CRITICAL: #15 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/team-reflex/discord-php/src/Discord/Discord(633): Discord\Discord->processWsMessage(object stdClass#110) [] []
[2023-09-02T22:34:25.199233+00:00] InternalThread.CRITICAL: #16 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/evenement/evenement/src/EventEmitterTrait(143): Discord\Discord->handleWsMessage(object Ratchet\RFC6455\Messaging\Message#409, object Ratchet\Client\WebSocket#276) [] []
[2023-09-02T22:34:25.199244+00:00] InternalThread.CRITICAL: #17 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/ratchet/pawl/src/WebSocket(72): Ratchet\Client\WebSocket->emit(string[7] message, array[2]) [] []
[2023-09-02T22:34:25.199254+00:00] InternalThread.CRITICAL: #18 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/ratchet/rfc6455/src/Messaging/MessageBuffer(248): Ratchet\Client\WebSocket->Ratchet\Client\{closure}(object Ratchet\RFC6455\Messaging\Message#409, object Ratchet\RFC6455\Messaging\MessageBuffer#133) [] []
[2023-09-02T22:34:25.199264+00:00] InternalThread.CRITICAL: #19 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/ratchet/rfc6455/src/Messaging/MessageBuffer(194): Ratchet\RFC6455\Messaging\MessageBuffer->processData(string[424] .~.....N.@.@..q...j.N.....`...c*U(.-.X.A._ab.7.+..K..6B....&.....9gf....v.Dc@...) [] []
[2023-09-02T22:34:25.199274+00:00] InternalThread.CRITICAL: #20 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/evenement/evenement/src/EventEmitterTrait(143): Ratchet\RFC6455\Messaging\MessageBuffer->onData(string[453] .~.....N.@.@..q...j.N.....`...c*U(.-.X.A._ab.7.+..K..6B....&.....9gf....v.Dc@...) [] []
[2023-09-02T22:34:25.199284+00:00] InternalThread.CRITICAL: #21 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/react/stream/src/Util(71): Evenement\EventEmitter->emit(string[4] data, array[1]) [] []
[2023-09-02T22:34:25.199294+00:00] InternalThread.CRITICAL: #22 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/evenement/evenement/src/EventEmitterTrait(143): React\Stream\Util::React\Stream\{closure}(string[453] .~.....N.@.@..q...j.N.....`...c*U(.-.X.A._ab.7.+..K..6B....&.....9gf....v.Dc@...) [] []
[2023-09-02T22:34:25.199304+00:00] InternalThread.CRITICAL: #23 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/react/stream/src/DuplexResourceStream(196): Evenement\EventEmitter->emit(string[4] data, array[1]) [] []
[2023-09-02T22:34:25.199314+00:00] InternalThread.CRITICAL: #24 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/react/event-loop/src/StreamSelectLoop(246): React\Stream\DuplexResourceStream->handleData(resource Resource id #333) [] []
[2023-09-02T22:34:25.199324+00:00] InternalThread.CRITICAL: #25 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/react/event-loop/src/StreamSelectLoop(213): React\EventLoop\StreamSelectLoop->waitForStreamActivity(integer 50000) [] []
[2023-09-02T22:34:25.199386+00:00] InternalThread.CRITICAL: #26 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/vendor/team-reflex/discord-php/src/Discord/Discord(1496): React\EventLoop\StreamSelectLoop->run() [] []
[2023-09-02T22:34:25.199397+00:00] InternalThread.CRITICAL: #27 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/src/InternalBot/Client(149): Discord\Discord->run() [] []
[2023-09-02T22:34:25.199409+00:00] InternalThread.CRITICAL: #28 /home/ubuntu/arab-hub/plugins/DiscordBot_v3_0_0.phar/src/Communication/Thread(52): JaxkDev\DiscordBot\InternalBot\Client->__construct(object JaxkDev\DiscordBot\Communication\Thread#3) [] []
[2023-09-02T22:34:25.199419+00:00] InternalThread.CRITICAL: #29 (): JaxkDev\DiscordBot\Communication\Thread->run() [] []
[2023-09-02T22:34:25.199481+00:00] InternalThread.INFO: discord closed [] []
[2023-09-02T22:34:25.199500+00:00] InternalThread.NOTICE: Discord thread closed. [] []
JaxkDev commented 1 year ago

where is that var_dump from?

Laith98Dev commented 1 year ago

I have added it and made a temporary fix to make the plugin work.

My edited code:

static public function genModelActivity(DiscordActivity $discordActivity): Activity{
    /** @var ?object{end: int|null, start: int|null} $timestamps */
    $timestamps = $discordActivity->timestamps;
    /** @var ?object{id: string|null, size: int[]|null} $party */
    $party = $discordActivity->party;
    /** @var ?object{"large_image": string|null, "large_text": string|null, "small_image": string|null, "small_text": string|null} $assets */
    $assets = $discordActivity->assets;
    /** @var ?Emoji $emoji */
    $emoji = ($discordActivity->emoji === null ? null : self::genModelEmoji($discordActivity->emoji));
    /** @var ?object{"join": string|null, "spectate": string|null, "match": string|null} $secrets */
    $secrets = $discordActivity->secrets;
    /** @var object{"url": string|null, "label": string}[] $dButtons */
    $dButtons = $discordActivity->buttons ?? [];

    var_dump($dButtons);

    /** @var ActivityButton[] $buttons */
    // $buttons = ($dButtons === [] ? [] : array_map(fn(/** @var ?object{"url": string|null, "label": string}[] $button */ $button) => new ActivityButton($button->label, $button->url ?? null), $dButtons));
    $buttons = ($dButtons === [] ? [] : array_map(fn(/** @var ?object{"url": string|null, "label": string}[] $button */ $button) => new ActivityButton($button, null), $dButtons));

    return new Activity($discordActivity->name, ActivityType::from($discordActivity->type), $discordActivity->url ?? null,
        $discordActivity->created_at?->getTimestamp(), $timestamps?->start ?? null, $timestamps?->end ?? null,
        $discordActivity->application_id, $discordActivity->details ?? null, $discordActivity->state ?? null, $emoji,
        $party?->id ?? null, ($party?->size ?? [])[0] ?? null, ($party?->size ?? [])[1] ?? null,
        $assets?->large_image ?? null, $assets?->large_text ?? null, $assets?->small_image ?? null,
        $assets?->small_text ?? null, $secrets?->join ?? null, $secrets?->spectate ?? null,
        $secrets?->match ?? null, $discordActivity->instance, $discordActivity->flags, $buttons);
}
JaxkDev commented 1 year ago

That may break since its 'supposed' to be an object not just the label, another poorly documented thing in DiscordPHP :(

JaxkDev commented 1 year ago

https://github.com/discord-php/DiscordPHP/blob/6234b07edd3cb4f6c57362e9661eb0f4ac4097ed/src/Discord/Parts/User/Activity.php#L40

JaxkDev commented 1 year ago

Missed the small print 👍 https://discord.com/developers/docs/topics/gateway-events#activity-object-activity-buttons

JaxkDev commented 1 year ago

Fixed in v3.0.1