javascript - 如何检查字符串是否包含在数组中?不和谐.js
问题描述
基本上,我试图通过显示嵌入并等待答案来制作一个不和谐的机器人来制作琐事问题,我已将答案放在一个单独文件中的数组中,possibleAnswersF
该数组包含给你 5 分的答案,并且thepossibleAnswersT
是包含给您 10 的答案的数组,而 possibleAnswers 是包含所有答案的数组,我尝试使用possibleAnswersF.includes(collected)
但它不起作用,我尝试收集一个数组并使用includes()
其他方式但它catch()
而是跳到了。
const { MessageEmbed } = require('discord.js');
//const talkedRecently = new Set();
const Characters = require('../../triviacharacterlist');
const points = require('../../points.json');
const fs = require('fs');
module.exports = {
commands : ['trivia', 't'],
minArgs : 0,
maxArgs : 0,
callback : (msg, arguments, text) => {
function TriviaGuess(possibleAnswers, possibleAnswersF, possibleAnswersT, CharacterImgDir) {
const guessCharacterString = "Guess character bo3";
let pointAmt1 = 5;
let pointAmt2 = 10;
const triviaEmbed = new MessageEmbed()
.setColor('#008fff')
.setTitle(guessCharacterString)
.setImage(CharacterImgDir)
msg.channel.send(triviaEmbed)
const filter = m => possibleAnswers.some(answer => m.content.toLowerCase().includes(answer));
msg.channel.awaitMessages(filter, { max: 1, time: 15000, errors: ['time'] })
.then(collected => {
const fivePoint = `**Congrats**, ${collected.first().author} you got **5** points for guessing the character only!`;
const tenPoint = `**Congrats**, ${collected.first().author} you got **10** points for also guessing the series/game!`;
if (possibleAnswersF.includes(collected)) {
msg.channel.send(fivePoint);
points[msg.author.id] = {
points: points[msg.author.id].points + pointAmt1
};
fs.writeFile('./points.json', JSON.stringify(points), (err) => {
if (err) {
console.log(err)
}
});
}
if (possibleAnswersT.includes(collected)) {
msg.channel.send(tenPoint);
points[msg.author.id] = {
points: points[msg.author.id].points + pointAmt2
};
fs.writeFile('./points.json', JSON.stringify(points), (err) => {
if (err) {
console.log(err)
}
});
}
})
.catch(collected => msg.channel.send('too bad u took too long ya 3am'));
}
var characterRandom = 0;//Math.floor(Math.random() * 0);
if (characterRandom == 0) {
TriviaGuess(Characters.CreeperVariants, Characters.CreeperVariantsF, Characters.CreeperVariantsT, Characters.CharacterImgs.creeperimg);
}
}
}
另一个包含数组的文件:
const CreeperVariants = [
'creeper',
'creeper minecraft',
'creeper mc'
]
const CreeperVariantsF = [
'creeper'
]
const CreeperVariantsT = [
'creeper minecraft',
'creeper mc'
]
解决方案
collected
是一个扩展 Map 的 Collection,而不是一个字符串。您需要检查collected.first().content
. 使用Array#some()
withString#includes
检查是否在字符串中找到任何数组元素。
if (possibleAnswersF.some(ans => collected.first().content.includes(ans))) {
// Your code
}
推荐阅读
- c++ - 如何解析 cpprestsdk 生成的多个 Set-Cookie?
- onelogin - OneLogin 用于用户应用配置的 SCIM 配置
- java - 如何在 android 中将 SOAP XML 转换为 Java 对象
- xamarin - 将球拖过 iOS.Xamarin 中的圆圈(单点触控)
- python - Python - 将 csv 文件复制到 Dataframe(但跳过子文件夹)
- php - 如何在我使用 Laravel 查询父模型时急切加载关系
- arduino - 如何使用错误的凭据连接到 mqtt 服务器?
- android - 查找远程蓝牙MAC地址
- javascript - Chart.js 无法创建图表
- python - FactorRange 和分类 vbar 图表问题