TypeError: msgs.forEach is not a function
TypeError: msgs.forEach is not a function
我正在尝试制作文字记录按钮,但是 运行 给我错误:
TypeError: msgs.forEach is not a function
我不知道怎么解决..有人知道解决办法吗?
我尝试了所有方法并进行了非常多的搜索,但一无所获
if (interaction.customId === 'trs') {
let messageCollection = new Collection();
let channelMessages = await interaction.channel.messages.fetch({
limit: 100
}).catch(err => console.log(err));
messageCollection = messageCollection.concat(channelMessages);
while(channelMessages.size === 100) {
let lastMessageId = channelMessages.lastKey();
channelMessages = await interaction.channel.messages.fetch({ limit: 100, before: lastMessageId }).catch(err => console.log(err));
if(channelMessages)
messageCollection = messageCollection.concat(channelMessages);
}
let msgs = messageCollection.array().reverse();
let data = await fs.readFile('./template.html', 'utf8').catch(err => console.log(err));
if(data) {
await fs.writeFile(`${interaction.channel.name}.html`, data).catch(err => console.log(err));
let guildElement = document.createElement('div');
let guildText = document.createTextNode(interaction.guild.name);
let guildImg = document.createElement('img');
guildImg.setAttribute('src', interaction.guild.iconURL);
guildImg.setAttribute('width', '150');
guildElement.appendChild(guildImg);
guildElement.appendChild(guildText);
console.log(guildElement.outerHTML);
await fs.appendFile(`${interaction.channel.name}.html`, guildElement.outerHTML).catch(err => console.log(err));
msgs.forEach(async msg => {
let parentContainer = document.createElement("div");
parentContainer.className = "parent-container";
let avatarDiv = document.createElement("div");
avatarDiv.className = "avatar-container";
let img = document.createElement('img');
img.setAttribute('src', msg.author.displayAvatarURL);
img.className = "avatar";
avatarDiv.appendChild(img);
parentContainer.appendChild(avatarDiv);
let messageContainer = document.createElement('div');
messageContainer.className = "message-container";
let nameElement = document.createElement("span");
let name = document.createTextNode(msg.author.tag + " " + msg.createdAt.toDateString() + " " + msg.createdAt.toLocaleTimeString() + " EST");
nameElement.appendChild(name);
messageContainer.append(nameElement);
if(msg.content.startsWith("```")) {
let m = msg.content.replace(/```/g, "");
let codeNode = document.createElement("code");
let textNode = document.createTextNode(m);
codeNode.appendChild(textNode);
messageContainer.appendChild(codeNode);
}
else {
let msgNode = document.createElement('span');
let textNode = document.createTextNode(msg.content);
msgNode.append(textNode);
messageContainer.appendChild(msgNode);
}
parentContainer.appendChild(messageContainer);
await fs.appendFile(`${interaction.channel.name}.html`, parentContainer.outerHTML).catch(err => console.log(err));
})
client.channels.cache.get('886342088864698408').send({
files:[`./${interaction.channel.name}.html`]
})
interaction.channel.send({
content: 'Ticket transcrito e logado no chat <#886342088864698408>...'
})
}
}
如果您使用的是 Discord.JS 版本 13.0.0 或更高版本 messageCollection.array()
将无法使用。尝试使用 [...messageCollection.values()]
示例:
let msgs = [...messageCollection.values()].reverse();
Discord.JS Guide for Collections
我正在尝试制作文字记录按钮,但是 运行 给我错误:
TypeError: msgs.forEach is not a function
我不知道怎么解决..有人知道解决办法吗? 我尝试了所有方法并进行了非常多的搜索,但一无所获
if (interaction.customId === 'trs') {
let messageCollection = new Collection();
let channelMessages = await interaction.channel.messages.fetch({
limit: 100
}).catch(err => console.log(err));
messageCollection = messageCollection.concat(channelMessages);
while(channelMessages.size === 100) {
let lastMessageId = channelMessages.lastKey();
channelMessages = await interaction.channel.messages.fetch({ limit: 100, before: lastMessageId }).catch(err => console.log(err));
if(channelMessages)
messageCollection = messageCollection.concat(channelMessages);
}
let msgs = messageCollection.array().reverse();
let data = await fs.readFile('./template.html', 'utf8').catch(err => console.log(err));
if(data) {
await fs.writeFile(`${interaction.channel.name}.html`, data).catch(err => console.log(err));
let guildElement = document.createElement('div');
let guildText = document.createTextNode(interaction.guild.name);
let guildImg = document.createElement('img');
guildImg.setAttribute('src', interaction.guild.iconURL);
guildImg.setAttribute('width', '150');
guildElement.appendChild(guildImg);
guildElement.appendChild(guildText);
console.log(guildElement.outerHTML);
await fs.appendFile(`${interaction.channel.name}.html`, guildElement.outerHTML).catch(err => console.log(err));
msgs.forEach(async msg => {
let parentContainer = document.createElement("div");
parentContainer.className = "parent-container";
let avatarDiv = document.createElement("div");
avatarDiv.className = "avatar-container";
let img = document.createElement('img');
img.setAttribute('src', msg.author.displayAvatarURL);
img.className = "avatar";
avatarDiv.appendChild(img);
parentContainer.appendChild(avatarDiv);
let messageContainer = document.createElement('div');
messageContainer.className = "message-container";
let nameElement = document.createElement("span");
let name = document.createTextNode(msg.author.tag + " " + msg.createdAt.toDateString() + " " + msg.createdAt.toLocaleTimeString() + " EST");
nameElement.appendChild(name);
messageContainer.append(nameElement);
if(msg.content.startsWith("```")) {
let m = msg.content.replace(/```/g, "");
let codeNode = document.createElement("code");
let textNode = document.createTextNode(m);
codeNode.appendChild(textNode);
messageContainer.appendChild(codeNode);
}
else {
let msgNode = document.createElement('span');
let textNode = document.createTextNode(msg.content);
msgNode.append(textNode);
messageContainer.appendChild(msgNode);
}
parentContainer.appendChild(messageContainer);
await fs.appendFile(`${interaction.channel.name}.html`, parentContainer.outerHTML).catch(err => console.log(err));
})
client.channels.cache.get('886342088864698408').send({
files:[`./${interaction.channel.name}.html`]
})
interaction.channel.send({
content: 'Ticket transcrito e logado no chat <#886342088864698408>...'
})
}
}
如果您使用的是 Discord.JS 版本 13.0.0 或更高版本 messageCollection.array()
将无法使用。尝试使用 [...messageCollection.values()]
示例:
let msgs = [...messageCollection.values()].reverse();
Discord.JS Guide for Collections