【问题标题】:Auto-delete messages sent in a specific channel自动删除在特定频道中发送的消息
【发布时间】:2019-03-08 19:00:09
【问题描述】:

我很好奇是否有人可以帮助我。

我的机器人有一个建议频道,供玩家提供建议,让服务器变得更好。
但是,它会因为他们聊天而聚集在一起。我很好奇是否有办法删除特定频道中的任何消息,除了机器人命令?

谢谢!

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    好吧,您可以检查消息是否以您的前缀开头或由机器人发送:如果这些都不是,则表示它不是命令也不是命令响应。所有这些都假设消息在该频道中。

    // ASSUMPTIONS:
    // channel = your channel as a TextChannel
    // prefix = your prefix as a string
    // owner = you as a User
    
    client.on('message', msg => {
      if (msg.channel != channel || msg.author.bot || msg.content.startsWith(prefix)) return;
      else msg.delete();
    });
    
    // if you want your messages to be ignored too:
    client.on('message', msg => {
      if (msg.channel != channel || msg.author.bot || msg.content.startsWith(prefix) || msg.author == owner) return;
      else msg.delete();
    });
    

    【讨论】:

    • 如果我不知道您是如何做到的,我无法帮助您:/ 您是否已将我的示例值替换为您的实际值?它会打印任何错误吗?
    • 糟糕!可能应该考虑到这一点。是的,我将前缀更改为!,并将频道更改为实际的频道 ID。它不会打印错误。
    • 陷阱:您使用的是 ID 而不是实际的频道对象。它不会返回任何错误,因为我们告诉它在 message.channel != channel 时忽略该消息。你可以通过说let channel = message.guild.channel.get("CHANNEL_ID_HERE_AS_A_STRING"); 来解决这个问题。这应该可以解决您的问题;)
    • 抱歉这么久才回复。我不断收到这个问题:(node:1504) UnhandledPromiseRejectionWarning: DiscordAPIError: Unknown Message at item.request.gen.end (C:\Users\grant\Desktop\Bots\pausebot\node_modules\discord.js\src\client\rest\RequestHandlers\Sequential.js:79:15) at then (C:\Users\grant\Desktop\Bots\pausebot\node_modules\snekfetch\src\index.js:215:21) at <anonymous> at process._tickCallback (internal/process/next_tick.js:188:7)
    • 这可能是因为您在message 事件监听器之外声明了schannel。尝试将前两行移入bot.on('message', ...)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 2022-01-12
    • 2023-03-27
    • 2021-10-19
    • 2020-07-06
    • 2020-07-02
    • 2021-08-21
    相关资源
    最近更新 更多