如何在 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 v12 如何获取对特定消息做出反应的人的 id?