Alright, this may look like a copy and paste but it is NOT. I need more support. I'm trying to make my bot do more. I should've added it to the first question but I don't think it'll get viewed. Here's what I'm trying to add.
- Say when user joined guild at what time and date
- Tag user in userinfo.tag function
- List user's nickname
I've tried using the .guildmember
class but it just won't work, I'm attaching userMention to the .guildmember
class, like this : userMention.guildmember.joinedAt
or displayName
. Most of my results when modifying my code were either TypeErrors from the bot or ReferenceErrors.
I did use other's code, and I installed Moment, so I could run it with another person's code, but again it gave out an error.
TypeError: Cannot read property 'filter' of undefined
I wasn't able to get the Moment code.
var commando = require('discord.js-commando');
var discord = require('discord.js');
class aboutuser extends commando.Command
{
constructor(client) {
super(client, {
name: 'aboutuser',
group: 'help',
memberName: 'aboutuser',
description: 'Lists information about a specific user.',
aliases: ['au', 'aboutu', 'auser', 'user'],
})
}
async run(message, args){
const userMention = message.mentions.users.first() || message.author;
let userinfo = {};
userinfo.bot = userMention.bot;
userinfo.createdat = userMention.createdAt;
userinfo.joinedat = userMention.message.guildmember.joinedat;
userinfo.discrim = userMention.discriminator;
userinfo.id = userMention.id;
userinfo.tag = userMention.tag;
userinfo.uname = userMention.username;
userinfo.status = userMention.presence.status;
userinfo.play = userMention.presence.game;
userinfo.avatar = userMention.avatarURL;
const rolesOfTheMember = userMention.roles.filter(r => r.name !== '@everyone').map(role => role.name).join(', ')
var myInfo = new discord.RichEmbed()
.setAuthor(userinfo.uname, userinfo.avatar)
.addField("Username",userinfo.uname, true)
.addField("Client Tag",userinfo.tag, true)
.addField("Created At",userinfo.createdat, true)
.addField("Joined at:",userinfo.joinedat, true)
.addField("Discriminator",userinfo.discrim, true)
.addField("Client ID",userinfo.id, true)
.addField("Bot?",userinfo.bot, true)
.addField("Status",userinfo.status, true)
.addField("Playing",userinfo.play, true)
.addField("Roles",rolesOfTheMember, true)
.setColor(0xf0e5da)
.setFooter('s!aboutserver')
.setTitle("About this user...")
.setThumbnail(userinfo.avatar)
message.channel.sendEmbed(myInfo);
}
}
module.exports = aboutuser;
Expect: A bot that lists all shown in the code, plus the bullets.
Actual: A bot that only shows Type and Reference Errors. It's things like
TypeError: Cannot read property 'guildmember' of undefined
TypeError: Cannot read property 'filter' of undefined
ReferenceError: guildmember is not defined
ReferenceError: user is not defined
I'm using these sites for reference
https://discord.js.org/#/docs/main/stable/general/welcome
How to show roles of user discord.js / userinfo command *Specifically this line!
.addField('Joined at:', `${moment.utc(user.joinedAt).format('dddd, MMMM Do YYYY, HH:mm:ss')}`, true)