如何在 Discord.js 中做出随机响应

Posted

技术标签:

【中文标题】如何在 Discord.js 中做出随机响应【英文标题】:How can I make a random response in Discord.js 【发布时间】:2021-01-01 18:16:41 【问题描述】:

我猜标题解释了它。我没有写下代码,如果有人解释代码的步骤会很好。每次使用“壁纸”命令时,我希望它从网站发送壁纸的随机链接。有帮手吗?

【问题讨论】:

【参考方案1】:
client.on('message', (message) => 
 if (message.content.startsWith('!wallpaper')) 

// Here you can choose between creating your array with your own links or use a api that will generate it for you. For now i'll use an array

  const wallpapers = [
   'https://cdn.discordapp.com/attachments/726436777283289088/734088186711769088/images.png',
   'https://cdn.discordapp.com/attachments/726436777283289088/734088144730718258/images.png',
   'https://cdn.discordapp.com/attachments/726436777283289088/734087421918183484/images.png',
   // You can add as many as you want
  ];
  // Here we will create a random number. Math.random only creates a randomly generated number between 0 and 1.
  const response = wallpapers[Math.floor(Math.random() * wallpapers.length)];
  message.reply(response);
 
);

如果您愿意,可以在w3school / Randomization 中查看更多关于随机化的信息

【讨论】:

【参考方案2】:

您必须创建一个Array,其中包含您要发送的回复。然后,您可以使用Math.random 获取 0 到 1(含 1)之间的随机数,使用 Math.floor 获取 0 到 arrayLength - 1 之间的索引。

const Responses = [
    "image 1",
    "image 2",
    "image 3",
    "image 4",
    "image 5"
];

const Response = Math.floor(Math.random() * Responses.length);

console.log(Responses[Response])

client.on("message", message => 
    if (message.author.bot) return false;
    if (!message.guild) return false;
    if (message.content.indexOf(Prefix) !== 0) return false;

    const arguments = message.content.slice(Prefix.length).split(/ +/g); // Splitting the message.content into an Array with the arguments.
    // Input --> !test hello
    // Output --> ["test", "hello"]

    const command = arguments.shift().toLowerCase();
    // Removing the first element from arguments since it's the command, and storing it in a variable.

    if (command == "random") 
        const Response = Math.floor(Math.random() * Responses.length);
        message.channel.send(`Here is your random response: $Responses[Response]`);
    ;
);

【讨论】:

但是机器人如何知道要回答哪个命令。这就是我看到的每一篇文章都让我感到困惑的事情 这不是只有一个响应吗?我也很抱歉。请原谅我对这个话题的无知 没有。每次运行命令时都会生成一个响应,因为我们正在从Client#message 事件中的Responses 数组中随机化一个项目。 非常感谢!有用。我会标记答案 你知道为什么它每次都选择相同的图像吗?

以上是关于如何在 Discord.js 中做出随机响应的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js:如何发送消息并从中收集反应

Discord JS //尝试通过响应消息来添加角色和删除角色

Discord.js v12 如何获取对特定消息做出反应的人的 id?

Discord JS - 如何对同一个嵌入做出多次反应?

(discord.js) 如何提及对机器人消息做出反应的用户?

Discord js - 如何在给定的时间段内继续对消息做出反应并编辑嵌入