我正在编写一个非常简单的discord.js机器人,并且我有一个命令用于输入某人的/mahdi
时,它会从我创建的列表中返回随机响应。当它返回一条正常消息时,它每次都会随机选择一个,但是后来我做到了,因此它发送了一个嵌入代码,现在它一直选择一个并一直发送它,直到我使机器人脱机然后再选择另一个发送到网络时一直发送。
有人知道我在做什么吗?
从列表中随机选择短语的代码:
const mahdis = ['phrase1', 'phrase2', 'phrase3', 'phrase4', 'phrase5', 'phrase6', 'phrase7', 'phrase8'];
const mahdi = Math.floor(Math.random() * mahdis.length);
以嵌入方式发送的代码:
const mahdiEmbed = {
color: 'c0ffee',
author: {
name: 'supreme sauce 3.0',
icon_url: 'https://cdn.discordapp.com/avatars/733259381898215495/739b2c90fbfab048abb236b0e89770be.webp?size=256',
},
fields: [
{
name: mahdis[mahdi],
value: '- mahdi',
},
],
footer: {
text: 'supreme sauce 3.0 --- developed by ed#6969',
icon_url: 'https://media.discordapp.net/attachments/693559044329177151/733614790567788574/kirbmelon.gif',
},
};
client.on('message', message => {
if(message.content === '/mahdi') {
message.channel.send({ embed: mahdiEmbed });
}
});
谢谢:)
答案 0 :(得分:0)
由于您在消息事件之外定义了mahdi
(每条消息应该是随机的),因此它将仅被随机化一次,这就是您的机器人启动的时间。
如果将其放在消息事件中,它将在每条新消息中随机分配。这就是您想要的。
const mahdis = ['phrase1', 'phrase2', 'phrase3', 'phrase4', 'phrase5', 'phrase6', 'phrase7', 'phrase8'];
client.on("message", message => {
const mahdi = Math.floor(Math.random() * mahdis.length);
if (message.content.toLowerCase() == "mahdi") {
const mahdiEmbed = {
color: 'c0ffee',
author: {
name: 'supreme sauce 3.0',
icon_url: 'https://cdn.discordapp.com/avatars/733259381898215495/739b2c90fbfab048abb236b0e89770be.webp?size=256',
},
fields: [
{
name: mahdis[mahdi],
value: '- mahdi',
},
],
footer: {
text: 'supreme sauce 3.0 --- developed by ed#6969',
icon_url: 'https://media.discordapp.net/attachments/693559044329177151/733614790567788574/kirbmelon.gif',
},
};
message.channel.send({embed: mahdiEmbed});
}
})