Was ist der Unterschied zwischen einem Benutzer und einem Gildenmitglied in discord.js?

Lesezeit: 3 Minuten

Was ist der Unterschied zwischen einem Benutzer und einem Gildenmitglied
Löwin100

Ich habe viele Fehler in meinem Code bekommen, von denen ich glaube, dass sie das Ergebnis von Verwechslungen zwischen ihnen waren GuildMembers und Users. Kann jemand den Unterschied erklären?

const user = message.mentions.users.first();

// TypeError: user.kick() is not a function
user.kick({ reason: 'spamming' });

// TypeError: user.ban() is not a function
user.ban({ reason: 'DM Advertising' });

// TypeError: message.author.hasPermission() is not a function
if (!message.author.hasPermission('ADMINISTRATOR')) return;

console.log(user.displayName); // undefined

// TypeError: message.member.createdAt() is not a function
embed.addField('Account Created', message.member.createdAt());

client.on('guildMemberUpdate', (oldMember, newMember) => {
 console.log(`${newMember.tag} was updated`); // 'undefined was updated'
});

if (message.member.bot) return; // undefined

// TypeError: Cannot read property 'add' of undefined
user.roles.add(newRole)

const target = message.client.users.cache.get(args[0])
console.log(target.displayName) // undefined

Was ist der Unterschied zwischen einem Benutzer und einem Gildenmitglied
Löwin100

Von Offizieller Discord.js-Leitfaden – Häufige Fragen:

Viele Benutzer sind verwirrt darüber, was der Unterschied zwischen ist Users und GuildMembers ist. Die einfache Antwort ist, dass a User repräsentiert einen globalen Discord-Benutzer und a GuildMember stellt einen Discord-Benutzer auf einem bestimmten Server dar. Das heißt nur GuildMembers kann beispielsweise Berechtigungen, Rollen und Spitznamen haben, da all diese Dinge servergebundene Informationen sind, die auf jedem Server, auf dem sich der Benutzer befindet, unterschiedlich sein können.


Viele Fehler im fraglichen Code treten auf, weil Sie versuchen, eine gildenspezifische Funktion für einen globalen Benutzer aufzurufen. Zum Beispiel, GuildMember.kick() und GuildMember.ban(). Ein sehr häufiger Fehler, der dazu führt, ist die Verwendung von message.mentions.users Sammlung. Wie der Name schon sagt, gibt dies eine Sammlung von zurück Users.

Wenn Sie zum Beispiel einfach nur den Avatar des erwähnten Benutzers oder vielleicht den Benutzernamen und den Diskriminator wollen, würde es gut funktionieren. Aber es wird zu Fehlern führen, wenn Sie jemals versuchen, beispielsweise das Datum zu ermitteln, an dem sie Ihrem Server beigetreten sind GuildMember.joinedAt()

Glücklicherweise gibt es viele einfache Möglichkeiten, dieses Problem zu umgehen. Zum Beispiel mit MessageMentions.members (gibt eine Sammlung von GuildMembers) anstatt MessageMentions.users

const member = message.mentions.members.first()
member.ban() // no error here!

Eine weitere gängige Problemumgehung ist die Verwendung von Guild.member() Methode, die a akzeptiert User Objekt oder ICH WÜRDE!

const user = client.user // get the user object
const guild = client.guilds.cache.get('Guild ID') // get the guild object

const member = guild.member(user) // convert the User object to a GuildMember!

Weitere nützliche Tricks zum einfachen Konvertieren Users zu GuildMembers enthalten:

Es ist auch sehr nützlich, sich daran zu erinnern, ob bestimmte Ereignisparameter bereitgestellt werden Users oder GuildMembers. Zum Beispiel beides guildMemberAdd() und guildMemberUpdate passieren GuildMembersaber messageReactionAdd(), guildBanAdd()und typingStart() alle bestehen Users.


Während viele GuildMember Eigenschaften und Methoden sind für a nicht verfügbar User, das gleiche gilt umgekehrt. Zum Beispiel, GuildMember.tag ist nicht vorhanden. Die Konvertierung von a GuildMember zu einem User ist viel einfacher als das Konvertieren von a User zu einem GuildMember. Das ist wegen GuildMember.user:

Der Benutzer, den diese Gildenmitgliedsinstanz repräsentiert

Auch wenn GuildMember.tag wird zurückkehren undefined, GuildMember.user.tag wird nicht!

923830cookie-checkWas ist der Unterschied zwischen einem Benutzer und einem Gildenmitglied in discord.js?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy