【问题标题】:Changing the content of a message sent by my bot in Discord在 Discord 中更改我的机器人发送的消息内容
【发布时间】:2021-11-24 21:57:02
【问题描述】:

我使用斜线命令创建一个频道,在频道中,一条消息,其内容是这样的:

Title : my title
Date  : 23rd Oct. 2021
Desc. : a brief description

然后,机器人固定这条消息。一切正常。

现在,我想使用另一个命令来更改该内容。以下是我尝试更改消息内容的方法:

    $channel = $interaction->guild->channels->get('id', $idChannel);
    $channel->getPinnedMessages()->done(function ($list) use ($channel) {
        foreach ($list as $msg) {
            if ($msg->author->id == $this->botId) {
                $channel->getMessage($msg->id)->done( function ($pinnedMsg) {
                    echo "\nMessage found\n";
                    echo $pinnedMsg->content;
                    $pinnedMsg->content = "new text";
                    echo "\nMessage changed\n";
                    echo $pinnedMsg->content;
                });
                break;
            }
        }
    });

“消息已更改”在控制台中是正确的,但在 Discord 中没有更改。为什么?

注意:我尝试了 $pinnedMsg->edit(我在一些关于 Discord.js 的答案中看到了这一点,并试图将其调整为 php)但它不起作用:没有显示以下回显。

【问题讨论】:

    标签: php discord message


    【解决方案1】:

    找到解决方案:您必须在消息列表中调用 save :

    $channel = $interaction->guild->channels->get('id', $idChannel);
    $channel->getPinnedMessages()->done(function ($list) use ($channel) {
        foreach ($list as $msg) {
            if ($msg->author->id == $this->botId) {
                $channel->getMessage($msg->id)->done( function ($pinnedMsg) {
                    $pinnedMsg->content = "new text";
                    $channel->messages->save($pinnedMsg)->done( function ($x) { echo "done"; } );
                });
                break;
            }
        }
    });
    

    不确定 save (...) 之后的 done(...) 是否必要,但它似乎是所需的语法。而且,像这样,它可以工作。

    【讨论】:

      猜你喜欢
      • 2021-08-19
      • 2021-01-08
      • 2020-11-23
      • 2019-09-12
      • 2022-01-23
      • 2021-08-27
      • 2023-04-03
      • 2021-05-23
      • 2021-02-22
      相关资源
      最近更新 更多