如何在 Discord 中固定消息

How to Pin a Message in Discord

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

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

我已经尝试像我看到一些人推荐的那样为 message 补充 messageCreate,但它似乎仍然无济于事。即使将 msg.pin() 更改为 console.log(msg) 仍然在控制台中显示任何内容

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

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

有人知道这里的问题是什么吗?我该如何解决?感谢任何帮助,谢谢!

首先,您还没有在您的客户端中启用 GUILD_MESSAGES 意图,因此您需要通过这样做来添加它:

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

除此之外,.pin()功能依然存在,没有任何变化。您也可以提供一个理由。 .pin() 函数也是 returns 一个承诺,因此您将不得不使用 .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