У Вас в коде ворох неразберихи. Во-первых, дело не в запросе. А проверить запрос очень просто: логгируйте результат запроса в теле замыкания, где получаете player (можно заодно посмотреть, что хранится в members). Во-вторых, почему не выбрать сразу всех одним запросом? Запросы в цикле — моветон и лишние расходы. Предполагается
const playerIds = channel.members.map(member => member.id);
// Тут лучше использовать подстановку значений, см. документацию клиента базы данных
const sql = `SELECT * FROM players WHERE user_id IN (${playerIds.join(',')})`;
db.all(sql, (err, players) => resolve(
players.map(player => `[**${player.level}**] ... ваша строка с пользователем ...`)
));
В-третьих, players нужно определить внутри обещания, в теле Promise. В-четвертых, где и как Вы смотрите результат? Что и как получает ответ от
return new Promise? Я полагаю, что у Вас это выглядит примерно так:
function getPlayers() {
// ...
return new Promise(resolve => {
// ...
resolve(players);
});
}
getPlayers().then(players => console.log(players));
// или, если getPlayers() объявлено как async
let players = await getPlayers();
— то есть, Вы действительно получаете список игроков как результат Promise?