我对编程一个不和谐的机器人有点陌生,但是现在我遇到了一个问题,并且找不到解决方案。我甚至不确定我使用的是哪种语言--我在Atom工作,用index.js节点启动我的bot,然后从这里使用函数/类/。。。:https://discord.js.org/#/docs/main/stable/general/welcome
我的问题
但是,通过一个特定的命令,我的bot会向某个通道发送一条消息,并将其固定。但是我想让机器人删除“User pinned message to Channel”的系统消息(它必须是这样的东西,我的不和谐不是英文的),但是我不知何故无法得到该消息。
我所尝试的
我试着这样说:
if (message.content.toLowerCase().startsWith(`${BOT} hat eine nachricht an diesen kanal angeheftet`) { somefunction}
其中BOT是<@BOT id>;“hat eine nachricht an diesen kanal angeheftet”有点像德国版的“pinned message to channel”,但什么也没发生。它不执行某个函数(用message.channel.send(something)
测试了它)
然后我想我可以使用fetchmessages()
(https://discord.js.org/#/docs/main/stable/class/textchannel?scrollto=fetchmessages):
function botAngeheftet(message, planungsChannel) {
let mes = planungsChannel.fetchMessages({limit:1})
.then(messages => planungsChannel.send("TEST:\n" + messages.first())
.catch(console.error);
但planungsChannel中的信息是
TEST:
没有任何信息。我将限制更改为2,并用planungsChannel(sometext)写了一些东西,再次执行函数,结果是
TEST:
sometext
所以。。。fetchMessages()似乎可以工作--但对系统消息不起作用。
我的问题
我怎样才能“得到”系统消息来使用它呢?或者:我如何让机器人删除说“用户固定消息到通道”的系统消息?
这是一个理论上的解决方案(未经测试),但它应该行得通。
discord上的每个message
都有一个type
属性,它属于几种类型,您可以在这里看到。在这种情况下,您可以使用的特定类型
是ifmessage.type===“pins_add”
,它是
表示“用户将消息固定到通道”的系统消息
你刚才提到的那个。
简单地说,你要做的就是:
on msg event (msg)
if(msg.type === "PINS_ADD") msg.delete();
这是伪代码而不是实际代码,希望您可以转换它。文件编制