代码之家  ›  专栏  ›  技术社区  ›  Fort-P

如何在不一致中锁定消息

  •  0
  • Fort-P  · 技术社区  · 4 年前

    我正在尝试为我所在的一个小型服务器创建一个discord bot,我希望它将某条消息固定到发送它的通道。我以前做过一些机器人程序,但自从我上次使用它以来,语法似乎发生了变化,我要重用的代码不再有效。我已经设法绕过了其中的一些更改(比如意图),但当我尝试检查发送的消息时,它什么也不做。我的当前代码

    const { Client, Intents } = require("discord.js");
    const { token } = require("./config.json");
    
    const client = new Client({ intents: [Intents.FLAGS.GUILDS] });
    
    client.once("ready", () => {
      console.log(`Logged in as ${client.user.tag}!`);
    });
    
    client.on("message", (msg) => {
      if (msg.content == "something goes here") {
        msg.pin()
      }
    });
    
    client.login(token);
    

    我试过补充 messageCreate 对于 message 就像我看到一些人推荐的那样,但它似乎仍然没有什么作用。甚至改变 msg.pin() console.log(msg) 控制台中仍然没有显示任何内容

    client.on("messageCreate", (msg) => {
      if (msg.content == "something goes here") {
        console.log(msg)
      }
    });
    

    我确实启用了特权意图切换,所以我认为这不是问题所在 [privileged toggles]

    有人知道这里的问题是什么吗?我怎样才能解决它?非常感谢您的帮助,谢谢!

    1 回复  |  直到 4 年前
        1
  •  0
  •   Caladan    4 年前

    首先,您尚未启用 GUILD_MESSAGES 因此,您需要通过这样做来添加:

    const client = new Client({ 
        intents: [
            Intents.FLAGS.GUILDS
            Intents.FLAGS.GUILD_MESSAGES
        ] 
    });
    

    除此之外 .pin() 功能仍然存在,并且没有变化。你也可以提供一个理由。这个 。pin() 函数还返回一个承诺,因此您必须使用 .then() await ,因此最终代码可能如下所示:

    const { Client, Intents } = require("discord.js");
    const { token } = require("./config.json");
    
    const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] });
    
    client.once("ready", () => {
      console.log(`Logged in as ${client.user.tag}!`);
    });
    
    client.on("message", (msg) => {
      if (msg.content == "something goes here") {
        msg.pin().then(() => console.log)
      }
    });
    
    client.login(token);
    

    您可以了解有关 。pin() 此处的函数=> pin | discord.js