Это часть моего кода, где у меня проблема:
const guild = client.guilds.get('500170876243935247');
message.channel.send(guild.owner);
Я ожидал, что он вернет имя владельца, вместо этого в консоли говорится, что это пустое сообщение. Я запустил guild.owner
с console.log
и, по-видимому, он отображает все данные из гильдии, смайлики, идентификаторы членов и, в конце концов, данные пользователя владельца, как мне отобразить их отдельно?
Для справки, это последняя часть, которая, на мой взгляд, является той областью, которая мне нужна:
user:
User {
id: '317669302549XXXXXX',
username: 'Flicker',
discriminator: 'XXXX',
avatar: 'a_161cc6f5d0466f7afd9a73dc2eba159d',
bot: false,
lastMessageID: null,
lastMessage: null },
joinedTimestamp: 1539320429681,
Когда вы конвертируете User в строку, User.toString()
метод User.toString()
: он преобразует объект User в упоминание, например, @username. Но если вы сделаете message.channel.send(User)
он не будет вызывать User.toString()
и поэтому discord.js останется с объектом, который он не может отправить (пример для действительного объекта: message.channel.send(
RichEmbed
)
) и поэтому сообщение будет пустым.
Чтобы избежать этого, вы можете попытаться заменить упоминание чем-то вроде User.tag
: этим вы также избегаете получать уведомления каждый раз, когда кто-то использует эту команду.
Если вы не возражаете против того, чтобы вас уведомили, вы можете использовать первое, когда это возможно, в противном случае второе. Вот пример:
const guild = client.guilds.get('500170876243935247');
message.channel.send(message.guild.member(guild.owner) ? guild.owner.toString() : guild.owner.user.tag);
// if the user is in that guild it will mention him, otherwise it will use .tag
client.on('message', msg => {
const thisguild = msg.guild;
const owner = thisguild.owner.user.username;
}
User.toString()
почти никогда не будет пустым, он всегда будет пытаться упомянуть пользователя, просто делаетmessage.channel.send(User)
не будет вызывать.toString()
для него, и поэтому discord.js сбит с толку и будет попытаться преобразовать объект, но это не удается, и поэтому сообщение об ошибке с empty_message