Javascript 尝试使用嵌入创建不一致的日志记录bot
这是到目前为止我所拥有的代码,但是我在嵌入的第一部分的“.setTitle”oor中遇到了“Expression expected”问题。我不知道它想让我在上面写些什么 完整代码:Javascript 尝试使用嵌入创建不一致的日志记录bot,javascript,node.js,discord.js,Javascript,Node.js,Discord.js,这是到目前为止我所拥有的代码,但是我在嵌入的第一部分的“.setTitle”oor中遇到了“Expression expected”问题。我不知道它想让我在上面写些什么 完整代码: bot.on('messageDelete', function(message) { if(message.channel.type == 'text') { //log to console console.log('[' + message.guild.name +
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)
.setTitle("Message Deleted")
.addField("Author", message.author.username)
.addField("Message", message.cleanContent)
.setThumbnail(message.author.avatarURL)
.setColor("0x00AAFF");
log.sendEmbed(embed)
我输入了完整的代码,因为它与原来的()有点不同,但目前的主要问题是“messagedeleted”部分。我试图让它发送嵌入而不是普通消息。您的代码有点混乱 试试这个
/*
Logger v0.1.0
A bot for Discord that logs moderator actions.
-----------------------------------------------
Copyright © Richard Kriesman 2016.
*/
//imports
//constants
const VERSION = '0.1.1';
//const TOKEN = 'TOKEN GOES HERE';
const CHANNEL = 'log-town';
//declarations
//var bot = new Discord.Client();
//
// Event Handlers
//
//bot is ready to start working, print status update to console
bot.on('ready', function() {
console.log('[META][INFO] Connected to Discord API Service');
});
//bot disconnected from Discord
bot.on('disconnected', function() {
console.log('[META][WARN] Disconnected from Discord API Service. 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. Try inviting me to your ' +
'server!\nhttps://discordapp.com/oauth2/authorize?client_id=643707791910895634&scope=bot&permissions=8');
else if (message.channel.type == 'group')
message.channel.sendMessage('Beep boop! Sorry, I can\'t log group messages. Try inviting me to your server!\n' +
'https://discordapp.com/oauth2/authorize?client_id=643707791910895634&scope=bot&permissions=8');
}
});
//message deleted
client.on('messageDelete', message => {
if (message.channel.type == 'text') {
var logger = message.guild.channels.get(CHANNEL);
if (logger) {
const embed = new Discord.RichEmbed()
.setTitle('Message Deleted')
.addField('Author', message.author.username)
.addField('Message', message.cleanContent)
.setThumbnail(message.author.avatarURL)
.setColor('0x00AAFF');
logger.send({ embed });
}
}
});
//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 v' + VERSION);
console.log('A bot for Discord that logs moderator actions.\n');
console.log('Copyright © Richard Kriesman 2016. Released under the MIT license.');
console.log('----------------------------------------------');
console.log('[META][INFO] Started Logger v' + VERSION);
//bot.login(TOKEN); //log in to discord
function formatConsoleMessage(message) {
return message.cleanContent.replace(new RegExp('\n', 'g'), '\n\t');
}
更新了答案,因此您需要在每个服务器上都有一个日志通道,每当用户删除消息时,嵌入将被发送到日志通道。每当我删除消息时,我会收到:“TypeError:log.setTitle不是一个函数”@Peppapa我正在我的机器上尝试discord.js,它将在一段时间内为您提供解决方案bit@PeppaPapa根据discord.js的文档更新了我的工作。如果此工作没有崩溃,请告诉我,但它也没有发送日志。在代码中,它将为您获取多服务器设置所需的频道,因为我很愚蠢,不知道如何做到这一点。这里是原始代码的链接:我tryna所做的是将普通消息更改为嵌入。@Peppapa基本上您需要指定要发送嵌入的频道,如果您要将嵌入发送到同一频道,则无需
message.guild.channels.get(频道)代码>你想在这里实现什么?你能再解释一下吗请替换var logger=message.guild.channels.get(CHANNEL)代码>带有var logger=message.guild.channels.find(channel=>channel.name==channel)代码>查找方法被更新。您从中复制的代码是旧的和不推荐的。像这样吗<代码>客户端.on('messageDelete',message=>{const CHANNEL='log town';if(message.CHANNEL.type='text'){var logger=message.guild.channels.find(CHANNEL=>CHANNEL.name===CHANNEL);CHANNEL=>CHANNEL.name==CHANNEL;
它不会发送到CHANNEL
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('messageDelete', message => {
const CHANNEL = 'log';
if (message.channel.type == 'text') {
var logger = message.guild.channels.find(
channel => channel.name === CHANNEL
);
if (logger) {
const embed = new Discord.RichEmbed()
.setTitle('Message Deleted')
.addField('Author', message.author.username)
.addField('Message', message.cleanContent)
.setThumbnail(message.author.avatarURL)
.setColor('0x00AAFF');
logger.send({ embed });
}
}
});
client.login('YOUR TOKEN');