几天来我不知道如何让 for 循环迭代所有项目,然后运行条件。所以我希望它迭代整个通道,然后检查它是否正确。当每个项目通过时,它将运行条件语句。当条件为真时。我尝试过映射,可能是错误的,甚至尝试将其转换为 JSON。我什至开始使用消息集合进行聊天。
它可以在 Javascript 中运行,所以不确定 typescript 在做什么。非常感谢任何帮助。
export = {
name: 'addfav',
aliases: ['Addfav'],
type: CommandTypes.PrefixCommand,
channelWhitelist: ['1147233774938107966'],
ownerOnly: true,
async execute(message: Message): Promise<void> {
if (!message.mentions.channels.map((m) => m).length) {
await message.reply('Did you forget to add the channel?');
} else {
let getChannel = await message.content.replace(/\D/g, '');
let isAdded = await checkfav(message.author.id);
for (var i = 0; i < isAdded.length; i++) {
if (isAdded[i].channel === getChannel) {
await message.reply('You already have a channel');
break;
} else {
await addfav(getChannel);
await message.reply('Channel added');
}
}
}
},
};
在您的场景中,您不需要迭代喜爱的频道。您只需要检查频道是否已被收藏。您可以使用
some
来实现:
export = {
name: 'addfav',
aliases: ['Addfav'],
type: CommandTypes.PrefixCommand,
channelWhitelist: ['1147233774938107966'],
ownerOnly: true,
async execute(message: Message): Promise<void> {
if (!message.mentions.channels.map((m) => m).length) {
await message.reply('Did you forget to add the channel?');
return;
}
let channelName = await message.content.replace(/\D/g, '');
// get favaorited channels
const favoritedChannels = await checkfav(message.author.id);
const isFavorite = favoritedChannels.some((fav) => fav.channel === channelName)
if(isFavorite) {
await message.reply('You already have this channel favorited');
return;
}
await addfav(channelName);
await message.reply('Channel added');
},
};
但是,如果您确实需要迭代数组并在每个元素上运行异步函数,请按以下方法操作:
const favoritedChannels = await checkfav(message.author.id);
for await (const channel of favoritedChannels) {
await doSomething(channel);
}