I googled this but can't find a result that relates to my problem. I put 'await' in an async function but node.js says "SyntaxError: Unexpected identifier". Can someone help? I just started learning JavaScript recently.
async function removeFile(data) {
return new Promise((resolve, reject) => {
try {
if (!data.arg) {
//check if there's filename
data.msg.channel.send("What did you want me to remove baka?").then(async result => {
data.client.setTimeout(data.tsundere, 5000, result);
});
} else {
//check if there's repo id in the config file (Personal)
if (!data.config.group && !data.config.repo_id) {
data.msg.channel.send("Hmmph! Please set the repo channel ID in the config file first?");
//check if the channel is valid (Personal)
} else if (!data.config.group && !data.msg.guild.channels.has(data.config.repo_id)) {
data.msg.channel.send("You just wasted my time finding an inexistent channel!");
//check if the repo channel is set through the repo command
} else if (data.config.group) {
data.shimautils.sdataCheck(data.sdata, data.msg.guild.id).then(onRes => {
if (onRes.length < 1) {
data.msg.channel.send("There's no repo channel set!");
} else {
//insert good stuff here
data.msg.channel.send("This command is WIP!");
let gch = data.msg.guild.channels.get(data.sdata.get(data.msg.guild.id)[0]),
temp;
//the problem lies here
await getMessages(data.msg.guild, data.msg.channel);
console.log(temp);
data.msg.channel.send(temp.size);
}
}, async () => {
data.msg.channel.send("There's no repo channel set!");
});
} else {
//insert good stuff here (Personal)
data.msg.channel.send("This command is WIP!");
}
}
} catch (err) {
reject(err)
}
resolve(true);
});
}
edit: Here is the content of getMessages() getMessages() is used to get messages in a channel.
async function getMessages(guild, channel) {
return new Promise(async (resolve, reject) => {
try {
if (!channel.id) {
reject(false);
} else if (!guild.channels.has(channel.id)) {
reject(false);
} else {
var fetchedMessages, fetchedSize, plscontinue = true,
firsttime = true;
channel.fetchMessages({
'limit': 100
}).then(async result => {
fetchedMessages = result.clone();
}, async rej => {
reject(rej);
});
while (plscontinue) {
if (firsttime) {
fetchedSize = fetchedMessages.size;
firsttime = false;
}
if (fetchedSize == 100) {
plscontinue = true;
channel.fetchMessages({
'limit': 100,
'before': fetchedMessages.lastKey()
}).then(async fetched2 => {
fetchedSize = fetched2.size;
fetchedMessages = fetchedMessages.concat(fetchedMessages, fetched2)
}, async err => reject(err));
} else {
plscontinue = false;
}
}
}
} catch (err) {
reject(err);
}
resolve(fetchedMessages);
});
}
You can only use await
directly inside the async function. And you dont need to construct a Promise, thats what async function
is doing for you internally. Additionally, the sense of await
is to replace the callbacks and then chains:
async function removeFile(data) {
if (!data.arg) {
//check if there's filename
const result = await data.msg.channel.send("What did you want me to remove baka?")
data.client.setTimeout(data.tsundere, 5000, result);
} else {
//check if there's repo id in the config file (Personal)
if (!data.config.group && !data.config.repo_id) {
await data.msg.channel.send("Hmmph! Please set the repo channel ID in the config file first?");
//check if the channel is valid (Personal)
} else if (!data.config.group && !data.msg.guild.channels.has(data.config.repo_id)) {
await data.msg.channel.send("You just wasted my time finding an inexistent channel!");
//check if the repo channel is set through the repo command
} else if (data.config.group) {
const onRes = await data.shimautils.sdataCheck(data.sdata, data.msg.guild.id);
if (onRes.length < 1) {
await data.msg.channel.send("There's no repo channel set!");
} else {
//insert good stuff here
await data.msg.channel.send("This command is WIP!");
let gch = data.msg.guild.channels.get( data.sdata.get(data.msg.guild.id)[0]);
const temp = await getMessages(data.msg.guild, data.msg.channel);
await data.msg.channel.send(temp.size);
}
await data.msg.channel.send("There's no repo channel set!");
} else {
//insert good stuff here (Personal)
await data.msg.channel.send("This command is WIP!");
}
}
return true;
}
The same applies to getMessage
:
async function getMessages(guild, channel) {
if (!channel.id) {
throw false; //???
} else if (!guild.channels.has(channel.id)) {
throw false; //???
}
let fetchedMessages = await channel.fetchMessages({ 'limit': 100 });
const result = fetchedMessages.clone();
while (fetchedMessages.length >= 100) {
fetchedMessages = await channel.fetchMessages({
limit: 100,
before: fetchedMessages.lastKey()
});
result.push(...fetchedMessages);
}
return result;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With