xyligan
Паркетный пол трещит под моей крышкой черепной
- Сообщения
- 900
- Реакции
- 432
Решил я значит с нуля написать систему YouTube-оповещений о новом видео, которая ранее была мной реализована криво. Пишу значит, пишу. Проверяю. Всё работает, но с одной проблемой. Оповещения отправляются в один и тот же канал. Ниже предоставлен код.
Думал, что возможно проблема из-за того, что parser.parseURL() и т.д. выполняется в цикле, но нет. Перенос кода за цикл не помог. Проблема осталась, но при этом появилась ошибка. Буду рад услышать ваши мысли и возможно даже советы.
JavaScript:
client.on('ready', () => {
setInterval(() => {
console.log('Start checking...');
let a = quick.fetch(`youtubeNotify`);
let requiredArray = Object.values(a)
var youtubeArr = []
requiredArray.forEach(function(x){
youtubeArr.push({ "youtubeChannelID": x.youtubeChannelID, "discordChannelID": x.discordChannelID, "message": x.message })
})
var i;
for(i = 0; i < youtubeArr.length; i++) {
var number = i;
console.log(i);
parser.parseURL(`https://www.youtube.com/feeds/videos.xml?channel_id=${youtubeArr[i].youtubeChannelID}`).then(data => {
console.log(i, number);
if(data.items[0] === undefined) return;
if(!quick.fetch(`postedVideos`)) {
quick.set(`postedVideos`, [ data.items[0].link ]);
quick.set(`videoData`, data.items[0]);
let parsed = quick.fetch(`videoData`);
let channel = client.channels.cache.get(youtubeArr[number].discordChannelID);
if(!channel) return;
let message = youtubeArr[number].message
.replace(/{author}/g, parsed.author)
.replace(/{title}/g, Discord.Util.escapeMarkdown(parsed.title))
.replace(/{url}/g, parsed.link);
channel.send(message);
}else{
if(quick.fetch(`postedVideos`).includes(data.items[0].link)) {
return;
}else{
quick.set(`videoData`, data.items[0]);
quick.push(`postedVideos`, data.items[0].link);
let parsed = quick.fetch(`videoData`);
let channel = client.channels.cache.get(youtubeArr[number].discordChannelID);
if(!channel) return;
let message = youtubeArr[number].message
.replace(/{author}/g, parsed.author)
.replace(/{title}/g, Discord.Util.escapeMarkdown(parsed.title))
.replace(/{url}/g, parsed.link);
channel.send(message);
}
}
}).catch(err => {
console.log(err);
})
}
}, 5000)
})
Структура БД:
{
'569572836465967115': {
guildID: '569572836465967115',
youtubeChannelID: 'UCwYp94E8aBvxt4J8C1e-Tuw',
discordChannelID: '732588709194498110',
message: '{url}'
},
'774671958842540063': {
guildID: '774671958842540063',
youtubeChannelID: 'UCrcBbfwZ8Y_mevvNJwD_69w',
discordChannelID: '775056497918345267',
message: '{url}'
}
}