Node.js ReferenceError:消息未定义,但已定义/无法读取属性';角色';未定义的
嘿,所以我有一个小问题,我有点崩溃:悲伤: my bot saying ReferenceError:消息未定义,但其定义是这样的吗Node.js ReferenceError:消息未定义,但已定义/无法读取属性';角色';未定义的,node.js,Node.js,嘿,所以我有一个小问题,我有点崩溃:悲伤: my bot saying ReferenceError:消息未定义,但其定义是这样的吗 const Discord = require("discord.js"); const config = require("./../config.json"); const moment = require('moment'); const chalk = require('chalk'); let prefix = config.prefix; cons
const Discord = require("discord.js");
const config = require("./../config.json");
const moment = require('moment');
const chalk = require('chalk');
let prefix = config.prefix;
console.log(chalk.red(`[${moment().format(`YYYY-MM-DD HH:mm:ss`)}] - {${__filename}}:`), chalk.yellow(`Commande: a été utilisé par ${message.member.user.id} dans le channel #${message .channel.name}`));
module.exports.run = async (bot, message, args) => {
await message.delete();
const delay = (msec) => new Promise((resolve) => setTimeout(resolve, msec));
let banned = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
if(!banned) return message.reply(`Mauvaise utilisation: \`${prefix}ban @user raison\``);
if(banned.id === message.author.id) return message.reply("Argument incorrect: `Cet utilisateur est impossible a bannir`");
if(!message.member.hasPermission("BAN_MEMBERS")) return message.reply("Permission insufisante: `BAN_MEMBERS`");
let banreason = args.join(" ").slice(22);
if(!banreason) return message.reply(`Mauvaise utilisation: \`${prefix}ban @user raison\``);
if(banned.hasPermission("ADMINISTRATOR")) return message.reply("Argument incorrect: `Cet utilisateur est impossible a bannir`");
banned.send(`Vous avez été banni de **${message.channel.guild.name}** pour la raison suivante: **${banreason}**`);
await delay(500);
message.reply("User banni!");
message.guild.member(banned).ban(banreason);
return;
}
module.exports.help = {
name: "ban"
}
Idk为什么它不工作。。。
你能帮我吗
Thx
更新:
所以我重写了一个新代码,但这次我得到了这个东西:
大宗报价
TypeError:无法读取未定义的属性“角色”
在C:\Users\maxim\OneDrive\projetRio\Quinella.js:282:22
在Map.every(C:\Users\maxim\node\u modules\discord.js\src\util\Collection.js:372:12)
在客户端。(C:\Users\maxim\OneDrive\projetRio\Quinella.js:281:21)
在Client.emit(events.js:223:5)
在Guild.\u updateMember(C:\Users\maxim\node\u modules\discord.js\src\structures\Guild.js:1566:19)
在GuildMemberUpdateHandler.handle(C:\Users\maxim\node\u modules\discord.js\src\client\websocket\packets\handlers\GuildMemberUpdate.js:13:25)
在WebSocketPacketManager.handle(C:\Users\maxim\node\u modules\discord.js\src\client\websocket\packets\WebSocketPacketManager.js:108:65)
在WebSocketConnection.onPacket(C:\Users\maxim\node\u modules\discord.js\src\client\websocket\WebSocketConnection.js:336:35)
在WebSocketConnection.onMessage(C:\Users\maxim\node\u modules\discord.js\src\client\websocket\WebSocketConnection.js:299:17)
在WebSocket.onMessage(C:\Users\maxim\node\u modules\discord.js\node\u modules\ws\lib\event target.js:120:16)
关于此代码:
const Discord = require("discord.js");
const config = require("./config.json");
const bot = new Discord.Client();
const fs = require("fs");
let prefix = config.prefix;
bot.commands = new Discord.Collection();
fs.readdir("./commands/", (err, files) => {
if(err) console.log(err);
let jsfile = files.filter(f => f.split(".").pop() === "js");
if(jsfile.length <= 0){
console.log("Impossible de trouver une ou des commandes !");
return;
}
jsfile.forEach((f, i) => {
let props = require(`./commands/${f}`);
console.log(`${f} chargée!`);
bot.commands.set(props.help.name, props);
});
});
fs.readdir("./commands/fun/", (err, files) => {
if(err) console.log(err);
let jsfile = files.filter(f => f.split(".").pop() === "js");
if(jsfile.length <= 0){
console.log("Impossible de trouver une ou des commandes !");
return;
}
jsfile.forEach((f, i) => {
let props = require(`./commands/fun/${f}`);
console.log(`${f} chargée!`);
bot.commands.set(props.help.name, props);
});
});
fs.readdir("./commands/general/", (err, files) => {
if(err) console.log(err);
let jsfile = files.filter(f => f.split(".").pop() === "js");
if(jsfile.length <= 0){
console.log("Impossible de trouver une ou des commandes !");
return;
}
jsfile.forEach((f, i) =>{
let props = require(`./commands/general/${f}`);
console.log(`${f} chargée!`);
bot.commands.set(props.help.name, props);
});
});
fs.readdir("./commands/moderation/", (err, files) => {
if(err) console.log(err);
let jsfile = files.filter(f => f.split(".").pop() === "js");
if(jsfile.length <= 0){
console.log("Impossible de trouver une ou des commandes !");
return;
}
jsfile.forEach((f, i) =>{
let props = require(`./commands/moderation/${f}`);
console.log(`${f} chargée!`);
bot.commands.set(props.help.name, props);
});
});
fs.readdir("./commands/nsfw/", (err, files) => {
if(err) console.log(err);
let jsfile = files.filter(f => f.split(".").pop() === "js");
if(jsfile.length <= 0){
console.log("Impossible de trouver une ou des commandes !");
return;
}
jsfile.forEach((f, i) =>{
let props = require(`./commands/nsfw/${f}`);
console.log(`${f} chargée!`);
bot.commands.set(props.help.name, props);
});
});
bot.on("ready", () => {
console.log(`${bot.user.username} id du bot:${bot.user.id} Crée le:${bot.user.createdAt}`);
bot.user.setPresence({ game: { name: `https://www.eurotrans.me/ | ${prefix}help` }, status: 'dnd' });
});
bot.on("message", async message => {
//a little bit of data parsing/general checks
if(message.author.bot) return;
if(message.channel.type === 'dm') return;
if(!message.content.startsWith(prefix)) return;
let content = message.content.split(" ");
let command = content[0].toLowerCase();
let args = content.slice(1);
//checks if message contains a command and runs it
let commandfile = bot.commands.get(command.slice(prefix.length));
if(commandfile) commandfile.run(bot,message,args);
});
const VERSION = '0.1.1';
const CHANNEL = 'log';
bot.on('ready', function() {
console.log("[META][INFO] Connecter à L'API de Discord ");
});
//bot disconnected from Discord
bot.on('disconnected', function() {
console.log("[META][WARN] Deconnecter de L'API de Discord. Attempting to reconnected...");
});
//warning from Discord.js
bot.on('warn', function(msg) {
console.log('[META][WARN] ' + msg);
});
//error from Discord.js
bot.on('error', function(err) {
console.log('[META][ERROR] ' + err.message);
process.exit(1);
});
//message received
bot.on('message', function(message) {
if(message.author.id != bot.user.id) {
if (message.channel.type == 'text')
console.log('[' + message.guild.name + '][#' + message.channel.name + '][MSG] ' + message.author.username +
'#' + message.author.discriminator + ': ' + formatConsoleMessage(message));
else if (message.channel.type == 'dm')
message.channel.sendMessage('Beep boop! Sorry, I can\'t respond to direct messages. ');
else if (message.channel.type == 'group')
message.channel.sendMessage('Beep boop! Sorry, I can\'t log group messages.');
}
});
//message deleted
bot.on('messageDelete', function(message) {
if(message.channel.type == 'text') {
//log to console
console.log('[' + message.guild.name + '][#' + message.channel.name + '][DELMSG] ' + message.author.username +
'#' + message.author.discriminator + ': ' + formatConsoleMessage(message));
//post in the guild's log channel
var log = message.guild.channels.find('name', CHANNEL);
if (log != null)
log.sendMessage('**[Message Deleted]** ' + message.author + ': ' + message.cleanContent);
}
});
//message update
bot.on('messageUpdate', function(oldMessage, newMessage) {
if (newMessage.channel.type == 'text' && newMessage.cleanContent != oldMessage.cleanContent) {
//log to console
console.log('[' + newMessage.guild.name + '][#' + newMessage.channel.name + '][UPDMSG] ' +
newMessage.author.username + '#' + newMessage.author.discriminator + ':\n\tOLDMSG: ' +
formatConsoleMessage(oldMessage) + '\n\tNEWMSG: ' + formatConsoleMessage(newMessage));
//post in the guild's log channel
var log = newMessage.guild.channels.find('name', CHANNEL);
if (log != null)
log.sendMessage('**[Message Updated]** *' + newMessage.author + '*:\n*Old Message*: ' + oldMessage.cleanContent +
'\n*New Message*: ' + newMessage.cleanContent);
}
});
//user has been banned
bot.on('guildBanAdd', function(guild, user) {
//log to console
console.log('[' + guild.name + '][BAN] ' + user.username + '#' + user.discriminator);
//post in the guild's log channel
var log = guild.channels.find('name', CHANNEL);
if (log != null)
log.sendMessage('**[Banned]** ' + user);
});
//user has been unbanned
bot.on('guildBanRemove', function(guild, user) {
//log to console
console.log('[' + guild.name + '][UNBAN] ' + user.username + '#' + user.discriminator);
//post in the guild's log channel
var log = guild.channels.find('name', CHANNEL);
if (log != null)
log.sendMessage('**[Unbanned]** ' + user);
});
//user has joined a guild
bot.on('guildMemberAdd', function(guild, user) {
//log to console
console.log('[' + guild.name + '][JOIN] ' + user.username + '#' + user.discriminator);
//post in the guild's log channel
var log = guild.channels.find('name', CHANNEL);
if (log != null) {
log.sendMessage('**[Joined]** ' + user);
}
});
//user has joined a guild
bot.on('guildMemberRemove', function(guild, user) {
//log to console
console.log('[' + guild.name + '][LEAVE] ' + user.username + '#' + user.discriminator);
//post in the guild's log channel
var log = guild.channels.find('name', CHANNEL);
if (log != null)
log.sendMessage('**[Left]** ' + user);
});
//user in a guild has been updated
bot.on('guildMemberUpdate', function(guild, oldMember, newMember) {
//declare changes
var Changes = {
unknown: 0,
addedRole: 1,
removedRole: 2,
username: 3,
nickname: 4,
avatar: 5
};
var change = Changes.unknown;
//check if roles were removed
var removedRole = '';
oldMember.roles.every(function(value) {
if(newMember.roles.find('id', value.id) == null) {
change = Changes.removedRole;
removedRole = value.name;
}
});
//check if roles were added
var addedRole = '';
newMember.roles.every(function(value) {
if(oldMember.roles.find('id', value.id) == null) {
change = Changes.addedRole;
addedRole = value.name;
}
});
//check if username changed
if(newMember.user.username != oldMember.user.username)
change = Changes.username;
//check if nickname changed
if(newMember.nickname != oldMember.nickname)
change = Changes.nickname;
//check if avatar changed
if(newMember.user.avatarURL != oldMember.user.avatarURL)
change = Changes.avatar;
//log to console
switch(change) {
case Changes.unknown:
console.log('[' + guild.name + '][UPDUSR] ' + newMember.user.username + '#' + newMember.user.discriminator);
break;
case Changes.addedRole:
console.log('[' + guild.name + '][ADDROLE] ' + newMember.user.username +'#' + newMember.user.discriminator +
': ' + addedRole);
break;
case Changes.removedRole:
console.log('[' + guild.name + '][REMROLE] ' + newMember.user.username + '#' + newMember.user.discriminator +
': ' + removedRole);
break;
case Changes.username:
console.log('[' + guild.name + '][UPDUSRNM] ' + oldMember.user.username + '#' + oldMember.user.discriminator +
' is now ' + newMember.user.username + '#' + newMember.user.discriminator);
break;
case Changes.nickname:
console.log('[' + guild.name + '][UPDUSRNK] ' + newMember.user.username + '#' + newMember.user.discriminator +
(oldMember.nickname != null ? ' (' + oldMember.nickname + ')' : '') +
(newMember.nickname != null ? ' is now ' + newMember.nickname : ' no longer has a nickname.'));
break;
case Changes.avatar:
console.log('[' + guild.name + '][UPDAVT] ' + newMember.user.username + '#' + newMember.user.discriminator);
break;
}
//post in the guild's log channel
var log = guild.channels.find('name', CHANNEL);
if (log != null) {
switch(change) {
case Changes.unknown:
log.sendMessage('**[User Update]** ' + newMember);
break;
case Changes.addedRole:
log.sendMessage('**[User Role Added]** ' + newMember + ': ' + addedRole);
break;
case Changes.removedRole:
log.sendMessage('**[User Role Removed]** ' + newMember + ': ' + removedRole);
break;
case Changes.username:
log.sendMessage('**[User Username Changed]** ' + newMember + ': Username changed from ' +
oldMember.user.username + '#' + oldMember.user.discriminator + ' to ' +
newMember.user.username + '#' + newMember.user.discriminator);
break;
case Changes.nickname:
log.sendMessage('**[User Nickname Changed]** ' + newMember + ': ' +
(oldMember.nickname != null ? 'Changed nickname from ' + oldMember.nickname +
+ newMember.nickname : 'Set nickname') + ' to ' +
(newMember.nickname != null ? newMember.nickname + '.' : 'original username.'));
break;
case Changes.avatar:
log.sendMessage('**[User Avatar Changed]** ' + newMember);
break;
}
}
});
//
// Startup Sequence
//
console.log('Logger Serveur' + VERSION);
console.log('[META][INFO] Started Logger Serveur' + VERSION);
function formatConsoleMessage(message) {
return message.cleanContent.replace(new RegExp('\n', 'g'), '\n\t');
}
const active = new Map();
let ops = {
active: active
};
bot.login("NjEzMDkwNzAwNTg1NzMwMDU0.XokdQw.Dfr4pd7glH0PsHr2BBb-");
const Discord=require(“Discord.js”);
const config=require(“./config.json”);
const bot=new Discord.Client();
常数fs=要求(“fs”);
让prefix=config.prefix;
bot.commands=new Discord.Collection();
fs.readdir(“./commands/”,(错误,文件)=>{
if(err)console.log(err);
让jsfile=files.filter(f=>f.split(“.”.pop()==“js”);
if(jsfile.length){
让props=require(`./commands/${f}`);
log(`${f}chargée!`);
bot.commands.set(props.help.name,props);
});
});
fs.readdir(“./commands/fun/”,(错误,文件)=>{
if(err)console.log(err);
让jsfile=files.filter(f=>f.split(“.”.pop()==“js”);
if(jsfile.length){
让props=require(`./commands/fun/${f}`);
log(`${f}chargée!`);
bot.commands.set(props.help.name,props);
});
});
fs.readdir(“./commands/general/”,(错误,文件)=>{
if(err)console.log(err);
让jsfile=files.filter(f=>f.split(“.”.pop()==“js”);
if(jsfile.length){
让props=require(`./commands/general/${f}`);
log(`${f}chargée!`);
bot.commands.set(props.help.name,props);
});
});
fs.readdir(“./commands/moderation/”,(err,files)=>{
if(err)console.log(err);
让jsfile=files.filter(f=>f.split(“.”.pop()==“js”);
if(jsfile.length){
让props=require(`./commands/moderation/${f}`);
log(`${f}chargée!`);
bot.commands.set(props.help.name,props);
});
});
fs.readdir(“./commands/nsfw/”,(错误,文件)=>{
if(err)console.log(err);
让jsfile=files.filter(f=>f.split(“.”.pop()==“js”);
if(jsfile.length){
让props=require(`./commands/nsfw/${f}`);
log(`${f}chargée!`);
bot.commands.set(props.help.name,props);
});
});
bot.on(“就绪”,()=>{
log(`${bot.user.username}id du bot:${bot.user.id}Crée le:${bot.user.createdAt}`);
bot.user.setPresence({游戏:{名称:`https://www.eurotrans.me/ |${prefix}help`},状态:'dnd'});
});
on(“消息”,异步消息=>{
//一点数据分析/常规检查
if(message.author.bot)返回;
if(message.channel.type==='dm')返回;
如果(!message.content.startsWith(prefix))返回;
让内容=message.content.split(“”);
let command=content[0].toLowerCase();
设args=content.slice(1);
//检查消息是否包含命令并运行它
让commandfile=bot.commands.get(command.slice(prefix.length));
if(commandfile)commandfile.run(bot、message、args);
});
常量版本='0.1.1';
const CHANNEL='log';
bot.on('ready',function(){
log(“[META][INFO]ConnecteráL'API de Discord”);
});
//bot与Discord断开连接
bot.on('disconnected',function(){
console.log(“[META][WARN]解除不一致API的连接。正在尝试重新连接…”);
});
//来自Discord.js的警告
bot.on('warn',函数(msg){
console.log('[META][WARN]'+msg);
});
//来自Discord.js的错误
bot.on('error',函数(err){
console.log('[META][ERROR]'+err.message);
过程。退出(1);
});
//收到的信息
bot.on('message',函数(message){
if(message.author.id!=bot.user.id){
如果(message.channel.type=='text')
console.log('['+message.guild.name+'][#'+message.channel.name+'][MSG]'+message.author.username+
“#”+message.author.discriminator+”:“+formatConsoleMessage(message));
else if(message.channel.type==“dm”)
message.channel.sendMessage('Beep boop!抱歉,我无法回复直接消息');
else if(message.channel.type=='group')
message.channel.sendMessage('Beep boop!抱歉,我无法记录组消息');
}
});
//删除消息
bot.on('messageDelete',函数(message){
如果(message.channel.type=='text'){
//登录到控制台
console.log('['+message.guild.name+'][#'+message.channel.name+'][DELMSG]'+message.author.username+
“#”+message.author.discriminator+”:“+formatConsoleMessage(message));
//在公会的日志通道中发布
var log=message.guild.channels.find('name',CHANNEL);
if(log!=null)
log.sendMessage('**[已删除邮件]**'+Message.author+':'+Message.cleanContent);
}
});
//消息更新
bot.on('messageUpdate',函数(旧消息,新消息){
if(newMessage.channel.type='text'&&newMessage.cleanContent!=oldMessage.cleanContent){
//登录到控制台
console.log('['+newMes