Javascript Discord机器人记录器

Javascript Discord机器人记录器,javascript,node.js,api,discord,discord.js,Javascript,Node.js,Api,Discord,Discord.js,有人能帮我把剧本做好吗?我想它没有更新到最新的Discord API 我只需要三件事:更改昵称、更改用户名和更改头像的记录器 我已经让自己在一个角色转换和一条欢迎信息中工作了,当新来的人进来的时候,但这三个似乎都被打破了 bot.on('guildMemberUpdate',函数(公会、旧会员、新会员){ //声明更改 风险值变化={ 未知:0, 增编:1, 删除角色:2, 用户名:3, 绰号:4, 阿凡达:5 }; var change=Changes.unknown; //检查用户名是否已更

有人能帮我把剧本做好吗?我想它没有更新到最新的Discord API

我只需要三件事:更改昵称、更改用户名和更改头像的记录器

我已经让自己在一个角色转换和一条欢迎信息中工作了,当新来的人进来的时候,但这三个似乎都被打破了

bot.on('guildMemberUpdate',函数(公会、旧会员、新会员){
//声明更改
风险值变化={
未知:0,
增编:1,
删除角色:2,
用户名:3,
绰号:4,
阿凡达:5
};
var change=Changes.unknown;
//检查用户名是否已更改
if(newMember.user.username!=oldMember.user.username)
change=Changes.username;
//检查昵称是否更改
if(newMember.昵称!=oldMember.昵称)
change=Changes.昵称;
//检查头像是否已更改
if(newMember.user.avatarURL!=oldMember.user.avatarURL)
改变=改变。化身;
//登录到控制台
开关(更换){
案例变更。未知:
console.log('['+guild.name+'][UPDUSR]'+newMember.user.username+'#'+newMember.user.discriminator);
打破
case Changes.username:
console.log('['+guild.name+'][UPDUSRNM]'+oldMember.user.username+'#'+oldMember.user.discriminator+
'现在是'+newMember.user.username+'#'+newMember.user.discriminator);
打破
大小写更改。昵称:
console.log('['+guild.name+'][UPDUSRNK]'+newMember.user.username+'#'+newMember.user.discriminator+
(oldMember.昵称!=null?'(“+oldMember.昵称+”):“”)+
(newMember.昵称!=null?'现在是“+newMember.昵称:'不再有昵称');
打破
case Changes.avatar:
console.log('['+guild.name+'][UPDAVT]'+newMember.user.username+'#'+newMember.user.discriminator);
打破
}
//在公会的日志通道中发布
var log=guild.channels.find('name',CHANNEL);
if(log!=null){
开关(更换){
案例变更。未知:
log.sendMessage('**[用户更新]**'+新成员);
打破
case Changes.username:
log.sendMessage('**[用户用户名已更改]**'+newMember+':用户名已从'+
oldMember.user.username+'#'+oldMember.user.discriminator+'到'+
newMember.user.username+'#'+newMember.user.discriminator);
打破
大小写更改。昵称:
log.sendMessage('**[用户昵称已更改]**'+newMember+':'+
(oldMember.昵称!=null?’已将昵称从“+oldMember.昵称”更改为+
+newMember.昵称:“将昵称“+”设置为”+
(newMember.nickname!=null?newMember.nickname+。:“原始用户名”);
打破
case Changes.avatar:
log.sendMessage('**[用户化身已更改]**'+新成员);
打破
}
}
});

以下行导致程序出错:

var log=guild.channels.find('name',CHANNEL);
在discord.js v12中,您需要使用函数并使用
.cache.

以下是更正的版本:

var log=guild.channels.cache.find(c=>c.name==CHANNEL);

以下行导致程序出错:

var log=guild.channels.find('name',CHANNEL);
在discord.js v12中,您需要使用函数并使用
.cache.

以下是更正的版本:

var log=guild.channels.cache.find(c=>c.name==CHANNEL);

有几个问题:

  • guildMemberUpdate
    事件只传递两个参数:oldMembernewMember。它不会传递代码中显示的guild参数
  • 由于未传递任何guild参数,因此需要使用
    newMember.guild
    更改对
    guild
    的所有引用
  • guild.channels
    现在需要在末尾追加
    .cache
    guild.channels.cache
    。有关更多信息,请阅读
  • 该方法现在只接受一个函数
  • .sendMessage()
    需要替换为
  • .avatarURL
    需要替换为
  • 旁注:为什么不使用而不是
    newMember.user.username+'#'+newMember.user.discriminator

    这是修改后的代码:

    bot.on('guildMemberUpdate',函数(oldMember,newMember){
    //声明更改
    风险值变化={
    未知:0,
    增编:1,
    删除角色:2,
    用户名:3,
    绰号:4,
    阿凡达:5
    };
    var change=Changes.unknown;
    //检查用户名是否已更改
    if(newMember.user.username!==oldMember.user.username)
    change=Changes.username;
    //检查昵称是否更改
    if(newMember.昵称!==oldMember.昵称)
    change=Changes.昵称;
    //检查头像是否已更改
    if(newMember.user.displayAvatarURL()!==oldMember.user.displayAvatarURL())
    改变=改变。化身;
    //登录到控制台
    开关(更换){
    案例变更。未知:
    console.log('['+newMember.guild.name+'][UPDUSR]'+newMember.user.username+'#'+newMember.user.discriminator);
    打破
    case Changes.username:
    console.log('['+newMember.guild.name+'][UPDUSRNM]'+oldMember.user.username+'#'+oldMember.user.discriminator+
    '现在是'+newMember.user.username+'#'+newMember.user.discriminator);
    打破
    案件变更,尼克