在 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 中更改我的机器人发送的消息内容的主要内容,如果未能解决你的问题,请参考以下文章
如何自动更改不和谐机器人的昵称。 (Javascript)(Discord.js)