有没有一种方法可以使频道名称成为消息的内容?

时间:2020-09-10 11:52:46

标签: node.js discord discord.js

我需要使频道名称成为最后一条消息的内容。我知道API的限制(10分钟内有2次更改),所以我只希望它每5分钟运行一次。

这是我尝试过的:

  const prefix = " ";
    
  function myfunction () {
    if(!message.content.startsWith(prefix) || message.author.bot) return;{
      var var1 = message.content();
      channel.setName(`-counting`+ var1);
    } 
}
      
client.once('ready', () => {
  console.log(`Logged in as ${client.user.tag}!`);
});
    
client.on('message', message =>{
  setInterval(myfunction,);
});

1 个答案:

答案 0 :(得分:2)

正如@Jakye在注释中指出的那样,您当前的代码会在每条消息中创建一个setInterval,这不是您想要的。我认为最好的做法是保存最新消息,定义一个设置通道名称的函数,并在setInterval事件上创建一个ready。看下面的代码示例:

const prefix = '<YOUR PREFIX>';
let latestMessage = undefined;

function updateChannelName() {
    // If the latestMessage is undefined, return out of the function
    if (!latestMessage) return;
    latestMessage.channel.setName(`-counting${latestMessage.content}`);
}

client.once('ready', () => {
    // Once the client is ready, create the interval.
    // The 5 * 60 * 1000 equals to 5 minutes in milliseconds but it's more readable than writing 300000
    setInterval(updateChannelName, (5 * 60 * 1000));
});

client.on('message', message => {
    // Check for author and prefix
    if (!message.content.startsWith(prefix) || message.author.bot) return;

    // Update the latestMessage to the latest message
    latestMessage = message;
});