【发布时间】:2022-01-13 20:26:01
【问题描述】:
我目前正在开发一个 discord.js 机器人,以开始使用 node.js 进行一些练习 我目前在尝试让公会的所有成员担任特定角色时遇到了问题。以下是相关代码:
const { SlashCommandBuilder } = require('@discordjs/builders');
const fetch = require('node-fetch');
module.exports = {
data: new SlashCommandBuilder()
.setName("server")
.setDescription("Get server information"),
async execute(interaction) {
const serverInfo = await getServerInfo(interaction);
await interaction.reply({ embeds: [serverInfo] });
}
}
async function getServerInfo(interaction) {
console.log("function called")
let fetchedMemebers = await interaction.guild.members.fetch()
let roles = await interaction.guild.roles.fetch()
const totalMembers = fetchedMemebers.memberCount;
const adminRole = roles.find(role => role.name === "Admin") //the role to check
const totalAdmin = adminRole.members.length;
const serverInfo = { // create the embed
color: 0x0099ff,
title: `${interaction.guild.name}\'s Server Information`,
description: `Members: ${totalMembers}\nAdmins (Members with the "admin" role): ${totalAdmin}\nDate created: ${interaction.guild.createdAt.toDateString()}`,
author: {
name: `${interaction.user.username}`,
icon_url: `${interaction.user.avatarURL()}`,
},
timestamp: new Date()
}
return serverInfo;
};
我有以下错误:
DiscordAPIError: Invalid Form Body
data.embeds[0].description: This field is required
at RequestHandler.execute (/workspace/node.js-verve-bot/node_modules/discord.js/src/rest/RequestHandler.js:349:13)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async RequestHandler.push (/workspace/node.js-verve-bot/node_modules/discord.js/src/rest/RequestHandler.js:50:14)
at async CommandInteraction.reply (/workspace/node.js-verve-bot/node_modules/discord.js/src/structures/interfaces/InteractionResponses.js:98:5)
at async Object.execute (/workspace/node.js-verve-bot/commands/server.js:11:9)
at async Client.<anonymous> (/workspace/node.js-verve-bot/index.js:46:3) {
method: 'post',
path: '/interactions/918268169842483211/aW50ZXJhY3Rpb246OTE4MjY4MTY5ODQyNDgzMjExOmVLZnZiSnJVVEdSMEdkVnJyTTR6ZFZOU3h1WkF0VnVFUllPQmZPb05RZmdZbmw3WjJpWjhRN3F4enI2SGhjek4xNDdJdjVrbGxRMXVwSzd3c0VjaldLS2phVVZpd25mUlJ0emJ1S3pRbTdDVjlTQzIxR21USUhvczVOelFLV0kx/callback',
code: 50035,
httpStatus: 400,
requestData: { json: { type: 4, data: [Object] }, files: [] }
}
是的,我知道这不是我的问题,我也不认为这是我的问题。我知道我的嵌入是正确的。我知道我获取当前公会成员的方式有问题,我通过尝试console.log(totalMembers) 验证了这一点,但你什么也得不到。甚至没有输出。我不确定我在这里做错了什么。有任何想法吗?编辑:根据最新的答案更改了我的代码,尽管发生了同样的错误。另外如果你console.log(adminRole.members.length) 又没有输出了。
【问题讨论】:
标签: javascript node.js discord discord.js node-fetch