有没有办法让频道名称成为消息的内容?

Posted

技术标签:

【中文标题】有没有办法让频道名称成为消息的内容?【英文标题】:Is there a way to make the channel name the content of the message? 【发布时间】:2020-12-28 22:01:09 【问题描述】:

我需要将频道名称设为最后一条消息的内容。我知道 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,);
);

【问题讨论】:

您的问题是什么?错误,不工作?如果是错误代码,请将其添加到您的代码中。你到底想达到什么目的? 您正在为每条消息 myFunction() 创建一个 setInterval,每 50 毫秒 重复一次。我建议只执行一次myFunction(),因为你实际上是在毫无理由地向 Discord 的 API 发送垃圾邮件。 到目前为止。没有错误代码。正如我在帖子中所说,我想将频道名称更改为最新消息,但由于API限制,我只能将其限制为每5分钟更改一次。 你不能那样做,这是不可能的。 Discord 专门设置了速率限制来阻止人们做这类事情。它会严重减慢 Discord 的 API 甚至 Discord 本身 您只能每 5 分钟更改一次,因为您的代码效率低下并且会向 API 发送垃圾邮件。我将很快写一个答案并改进您当前的代码。 【参考方案1】:

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

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;
);

【讨论】:

以上是关于有没有办法让频道名称成为消息的内容?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法让我的机器人检查 DM 并将它们发布到我服务器的频道中?

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

有没有办法在将消息从节点服务器发布到频道时获取 Discord 消息 ID?

如何让机器人将消息发送到“通用”频道或消息最多的频道?

Redis 之消息发布与订阅(publishsubscribe)

如何让我的不和谐机器人只读取某个频道中的内容