在 Discord 中更改我的机器人发送的消息内容

Posted

技术标签:

【中文标题】在 Discord 中更改我的机器人发送的消息内容【英文标题】:Changing the content of a message sent by my bot in 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)但它不起作用:没有显示以下回显。

【问题讨论】:

【参考方案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(...) 是否必要,但它似乎是所需的语法。而且,像这样,它可以工作。

【讨论】:

以上是关于在 Discord 中更改我的机器人发送的消息内容的主要内容,如果未能解决你的问题,请参考以下文章

Discord 嵌入消息无法正常工作

如何自动更改不和谐机器人的昵称。 (Javascript)(Discord.js)

Discord bot 发送后删除消息

Discord Bot 删除特定频道中的消息

discord.py,在没有 on_message() 事件的情况下通过通道 id 发送消息?

如何让我的 Python Discord 机器人检查消息是不是由机器人本身发送?