Discord Bot将删除“用户固定消息到频道”消息

时间:2018-03-28 12:40:26

标签: bots discord.js

我对编码不和谐机器人有点新意,但现在我遇到了问题,无法找到解决方案。 我甚至不确定我正在使用哪种语言 - 我在Atom工作,用节点index.js启动我的机器人并使用函数/ classes / ...从这里: https://discord.js.org/#/docs/main/stable/general/welcome

我的问题

但是,通过特定命令,我的机器人会向某个频道发送消息并将其固定。但我希望机器人删除系统消息“用户固定消息到频道”(它必须是类似的东西,我的不和谐不是英文),但我不知道怎么得不到那个消息。

我尝试了什么

我试着这样做:

if (message.content.toLowerCase().startsWith(`${BOT} hat eine nachricht an diesen kanal angeheftet`) { somefunction}

其中BOT是< @ Bot ID>并且“hat eine nachricht an diesen kanal angeheftet”有点像德国版的“固定信息通道”,但没有任何反应。它不执行某些功能(使用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()似乎有效 - 但不适用于系统消息。

我的问题

如何“获取”系统消息以使用它?或者:我如何让机器人删除系统消息“用户固定消息到频道”?

1 个答案:

答案 0 :(得分:0)

这是一个理论上的解决方案(未经测试),但它应该有效。

不和谐中的每个message都有type属性,属于几种类型,您可以看到here。在这种情况下您可以使用的具体typemessage.type === "PINS_ADD",它是

type
  

系统消息显示"用户将消息固定到频道"

你指的是。

简单地说,你所要做的就是:

on msg event (msg) 
     if(msg.type === "PINS_ADD") msg.delete();

这是伪代码而不是实际代码,希望你能转换它。 Documentation