所以我在discord.js做了一个猜谜游戏,机器人从列表中随机选择4个单词,把它们放在聊天中,你必须用同样的单词回复。以下是我试图做的一个缩写和简单的版本:
const profileModel = require("../models/profileSchema");
module.exports = {
name: "guess",
description: "guessing game",
async execute(client, message, args, Discord, profileData) {
let words = [
"red",
"orange",
"yellow",
"green",
"blue",
"purple",
"pink",
"black",
"white"
]
let firstWord = words[Math.floor(Math.random() * words.length)];
let secondWord = words[Math.floor(Math.random() * words.length)];
let thirdWord = words[Math.floor(Math.random() * words.length)];
let fourthWord = words[Math.floor(Math.random() * words.length)];
message.reply(`Type the following words into chat: \`${firstWord}\` \`${secondWord}\` \`${thirdWord}\` \`${fourthWord}\``)
.then((msg) => {
setTimeout(function() {
msg.edit('Type the words into chat!');
}, 5000)});
message.channel.awaitMessages(m => m.author.id == message.author.id, { max: 1, time: 10000 }).then(collected => {
if (collected.first().content.toLowerCase() == `${firstWord} ${secondWord} ${thirdWord} ${fourthWord}`) {
message.reply('Correct!');
} else
message.reply('Incorrect');
}).catch(() => {
message.reply('No answer after 10 seconds, time out.');
});
});
}
}
我怎么才能让机器人不会两次选择同一个单词?例如,使它不能说“蓝色蓝色绿色橙色”之类的话。谢谢!
通过一种非常简单的方式,您可以执行以下操作:
splice()
函数将元素从数组中剪断:index = words.indexOf(firstWord);
words.splice(index, 1);
let firstWord = words[Math.floor(Math.random() * words.length)];
index = words.indexOf(firstWord);
words.splice(index, 1);
let secondWord = words[Math.floor(Math.random() * words.length)];
index = words.indexOf(secondWord);
words.splice(index, 1);
let thirdWord = words[Math.floor(Math.random() * words.length)];
index = words.indexOf(thirdWord);
words.splice(index, 1);
let fourthWord = words[Math.floor(Math.random() * words.length)];
index = words.indexOf(fourthWord);
words.splice(index, 1);
最后,bot将从words[]
数组中删除该元素,直到调用该命令为止。
参考文献:
问题内容: 我的SQL Server数据库中有两个表。第一个是,第二个是。两个表中都有一列。 现在,我想从两个表中选择一个特定的值。 这就是我在做的 但是我的查询给出了错误。 问题答案:
问题内容: 有这张桌子 和这个 我如何从表“项目”中选择所有行并显示字段“已删除”,即使在给定用户ID的情况下,即使“ MyList”中不存在itemID? 查询结果示例: 什么是查询,以便我可以得到该结果? 谢谢 问题答案: 我不确定这是否是最好的方法,但它会返回我一直在寻找的内容:
问题内容: 上面的代码创建一个带有两个列表框的窗口。但是,如果要从这两个值中检索值,就会出现问题,因为一旦在一个值中选择一个值,它就会取消选择在另一个值中选择的值。 这仅仅是开发人员必须忍受的限制吗? 问题答案: 简短答案:将所有列表框小部件的属性值设置为False或零。 从列表框小部件的pythonware概述中: 默认情况下,选择被导出到X选择机制。如果您在屏幕上有多个列表框,这确实会使可怜的
问题内容: 如何获得一个函数,该函数返回一个随机的英语单词(最好是一个名词),而无需事先在文件中保留所有可能单词的列表,这将是最好的方法? 问题答案: 单词列表不需要占用太多的空间。 这是一个JSON单词列表,包含超过5000个单词,所有名词。它的时钟频率在50K以下,即中等大小jpeg图像的大小。 我将选择一个随机的练习作为读者的练习。
这就是我的问题所在(在MS SQL SMS 2008 R2): 我有两个表: table1和列id1 name1 table2和列id2 name2 我还有第三个临时表,这些表是由导入的xls创建的,列为name1,name2 我希望使用select,这将导致类似于临时表的副本,但使用id1,id2而不是name1,name2。 这可能吗?
问题内容: 我在表Hyperlink中有两列,即源和目标,用于存储超链接的源和目标。 有两个涉及b和c的超链接。两个超链接之间的区别在于超链接的方向。但是,我的目标是无论任何方向都检索唯一的超链接。因此,对于从b到c和从c到b的超链接,我只想选择其中之一。任何人都会做。 因此,我的结果应如下所示: 到目前为止,我可以使用Java进行一些处理,然后再使用JDBC执行SQL语句。但是,当表很大时,这将