我正在尝试更新此代码以处理Discord。jsv12。我遇到了一个错误,我有点困惑于如何修复这个错误。我已经更新了一些代码来处理Discord。jsv12。
client.channels.fetch...
在客户端。(/home/runner/Log/index.js:44:40)在客户端。在客户端发出(events.js:314:20)。事件发射器。在MessageCreateAction处发出(domain.js:483:12)。对象上的句柄(/home/runner/Log/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)。单元在WebSocketManager上导出[作为MESSAGE_CREATE](/home/runner/Log/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)。WebSocketShard上的handlePacket(/home/runner/Log/node_modules/discord.js/src/client/websocket/WebSocketManager.js:384:31)。WebSocketShard上的onPacket(/home/runner/Log/node_modules/discord.js/src/client/websocket/WebSocketShard.js:444:22)。websocket上的消息(/home/runner/Log/node_modules/discord.js/src/client/websocket/WebSocketShard.js:301:10)。onMessage(/home/runner/Log/node_modules/ws/lib/event target.js:132:16)
const Discord = require('discord.js');
const client = new Discord.Client();
const { prefix, token, logsChannel } = require('./config.json');
client.once('ready', () => {
console.log('I am alive!');
});
// Messages log
client.on('message', message => {
// Function
function isEmpty(collection) {
for(var arg in collection) {
if(collection.hasOwnProperty(arg))
return false;
}
return true;
}
// Logs
if(message.author.bot) return;
let username = message.author.tag;
let channel = message.channel.name;
let server = message.channel.guild;
var serverAvatarURL = message.guild.iconURL;
var attachment = (message.attachments).array();
if(isEmpty(attachment)) {
var img = "";
} else {
var img = attachment[0].url;
}
let embed_send = new Discord.MessageEmbed()
.setAuthor(username, message.author.avatarURL)
.setColor('23c115')
.setTitle("Message sent!")
.setDescription(message.content + " " + img)
.setImage(img)
.setFooter("#" + channel)
.setTimestamp();
client.channels.fetch(logsChannel).send(embed_send);
});
// Message edit log
client.on("messageUpdate", async(oldMessage, newMessage) => {
// Function
function isEmpty(collection) {
for(var arg in collection) {
if(collection.hasOwnProperty(arg))
return false;
}
return true;
}
// Logs
if (oldMessage.content === newMessage.content) {
return;
}
var attachment = (oldMessage.attachments).array();
if(isEmpty(attachment)) {
var img = "";
} else {
var img = attachment[0].url;
}
let embed_edit = new Discord.MessageEmbed()
.setAuthor(oldMessage.author.tag, oldMessage.author.avatarURL)
.setColor('2615c1')
.setTitle("Message edited!")
.addField("Old", oldMessage.content + " " + img, true)
.addField("New", newMessage.content + " " + img, true)
.setFooter("#" + oldMessage.channel.name)
.setTimestamp();
client.channels.fetch(logsChannel).send(embed_edit);
});
// Message delete log
client.on("messageDelete", async message => {
// Function
function isEmpty(collection) {
for(var arg in collection) {
if(collection.hasOwnProperty(arg))
return false;
}
return true;
}
// Logs
var attachment = (message.attachments).array();
if(isEmpty(attachment)) {
var img = "";
} else {
var img = attachment[0].url;
}
let embed_delete = new Discord.MessageEmbed()
.setAuthor(message.author.tag, message.author.avatarURL)
.setColor('c11515')
.setTitle("Message deleted!")
.setDescription(message.content + " " + img)
.setImage(img)
.setFooter("#" + message.channel.name)
.setTimestamp();
client.channels.fetch(logsChannel).send(embed_delete);
});
client.login(token);
原始代码:
const Discord = require('discord.js');
const client = new Discord.Client();
const { prefix, token, logsChannel } = require('./config.json');
client.once('ready', () => {
console.log('I am alive!');
});
// Messages log
client.on('message', message => {
// Function
function isEmpty(collection) {
for(var arg in collection) {
if(collection.hasOwnProperty(arg))
return false;
}
return true;
}
// Logs
if(message.author.bot) return;
let username = message.author.tag;
let channel = message.channel.name;
let server = message.channel.guild;
var serverAvatarURL = message.guild.iconURL;
var attachment = (message.attachments).array();
if(isEmpty(attachment)) {
var img = "";
} else {
var img = attachment[0].url;
}
let embed_send = new Discord.RichEmbed()
.setAuthor(username, message.author.avatarURL)
.setColor('23c115')
.setTitle("Message sent!")
.setDescription(message.content + " " + img)
.setImage(img)
.setFooter("#" + channel)
.setTimestamp();
client.channels.get(logsChannel).send(embed_send);
});
// Message edit log
client.on("messageUpdate", async(oldMessage, newMessage) => {
// Function
function isEmpty(collection) {
for(var arg in collection) {
if(collection.hasOwnProperty(arg))
return false;
}
return true;
}
// Logs
if (oldMessage.content === newMessage.content) {
return;
}
var attachment = (oldMessage.attachments).array();
if(isEmpty(attachment)) {
var img = "";
} else {
var img = attachment[0].url;
}
let embed_edit = new Discord.RichEmbed()
.setAuthor(oldMessage.author.tag, oldMessage.author.avatarURL)
.setColor('2615c1')
.setTitle("Message edited!")
.addField("Old", oldMessage.content + " " + img, true)
.addField("New", newMessage.content + " " + img, true)
.setFooter("#" + oldMessage.channel.name)
.setTimestamp();
client.channels.get(logsChannel).send(embed_edit);
});
// Message delete log
client.on("messageDelete", async message => {
// Function
function isEmpty(collection) {
for(var arg in collection) {
if(collection.hasOwnProperty(arg))
return false;
}
return true;
}
// Logs
var attachment = (message.attachments).array();
if(isEmpty(attachment)) {
var img = "";
} else {
var img = attachment[0].url;
}
let embed_delete = new Discord.RichEmbed()
.setAuthor(message.author.tag, message.author.avatarURL)
.setColor('c11515')
.setTitle("Message deleted!")
.setDescription(message.content + " " + img)
.setImage(img)
.setFooter("#" + message.channel.name)
.setTimestamp();
client.channels.get(logsChannel).send(embed_delete);
});
client.login(token);
. finch()返回一个Promise。
因此,您需要等待的结果。然后()
。
在代码中(假设logsChannel
是一个ID):
client.channels
.fetch(logsChannel)
.then(fetchedChannel => fetchedChannel.send(embed_delete));
目前,您需要更新所有。获取
es
正如NullDev所提到的,. finch()
返回一个promise,因此需要首先解析它。您可以使用. so()
和. cat()
方法或async
/wait
。
使用。然后()。catch()
:
client.channels
.fetch(logsChannel)
.then((ch) => ch.send(embed_send))
.catch(console.error);
与async
/wait
相同:
try {
(await client.channels.fetch(logsChannel)).send(embed);
} catch (error) {
console.log(error);
}
如果您有一个函数(如isEmpty
)在三个不同的处理程序中使用,那么您可以将其移出,只定义一次。虽然你根本不需要这个<代码>消息。附件返回邮件中附件的集合。集合有一个。size
accessor属性,返回集合中的元素数。
检查是否有附件与检查其大小一样简单:消息。附件。大小
集合还有一个获取此集合中第一个值的
. first()
方法。这意味着您可以像这样获取第一个附件的URL:message.attachments.first(). url
。
另一个错误是
消息。著者avatarURL
将不作为工作。avatarURL()
是一个方法,因此您应该调用它。您可能会使用displayAvatarURL()
,因为如果用户没有任何头像,它会返回用户的默认头像。
您可以在下面找到包含所有这些更改的代码:
const Discord = require('discord.js');
const client = new Discord.Client();
const { prefix, token, logsChannel } = require('./config.json');
client.once('ready', () => {
console.log('I am alive!');
});
client.on('message', async (message) => {
if (message.author.bot) return;
let username = message.author.tag;
let channel = message.channel.name;
let img = message.attachments.size > 0 ? message.attachments.first().url : '';
let embed = new Discord.MessageEmbed()
.setAuthor(username, message.author.displayAvatarURL())
.setColor('23c115')
.setTitle('Message sent!')
.setDescription(message.content + ' ' + img)
.setImage(img)
.setFooter('#' + channel)
.setTimestamp();
try {
let log = await client.channels.fetch(logsChannel);
log.send(embed);
} catch (error) {
console.log(error);
}
});
client.on('messageUpdate', async (oldMessage, newMessage) => {
if (oldMessage.content === newMessage.content) return;
let img =
oldMessage.attachments.size > 0 ? oldMessage.attachments.first().url : '';
let embed = new Discord.MessageEmbed()
.setAuthor(oldMessage.author.tag, oldMessage.author.displayAvatarURL())
.setColor('2615c1')
.setTitle('Message edited!')
.addField('Old', oldMessage.content + ' ' + img, true)
.addField('New', newMessage.content + ' ' + img, true)
.setFooter('#' + oldMessage.channel.name)
.setTimestamp();
try {
let log = await client.channels.fetch(logsChannel);
log.send(embed);
} catch (error) {
console.log(error);
}
});
client.on('messageDelete', async (message) => {
let img = message.attachments.size > 0 ? message.attachments.first().url : '';
let embed = new Discord.MessageEmbed()
.setAuthor(message.author.tag, message.author.displayAvatarURL())
.setColor('c11515')
.setTitle('Message deleted!')
.setDescription(message.content + ' ' + img)
.setImage(img)
.setFooter('#' + message.channel.name)
.setTimestamp();
try {
let log = await client.channels.fetch(logsChannel);
log.send(embed);
} catch (error) {
console.log(error);
}
});
client.login(token);
我想更新表中几行的主键。如果所有行都已更新,则键将再次是唯一的,但第一行的更新会导致与第二行的键发生临时冲突。有没有优雅的方法来解决这个问题? 例子: 错误:重复的键值违反了唯一约束“pk_erichtest”
我正在上Java课程的第三周。我正在做一个下星期要交的课堂作业。使用控制台作为输出,我可以毫无问题地完成分配,这是可以接受的。然而,教授也建议我们研究JTextArea,并考虑将其用于我们的程序输出。 我从一个教程中找到了一些代码,并且能够至少得到一个文本块来显示我要显示的第一行文本。但是在我编写实际程序时,我需要随着程序的进展继续向文本块添加额外的行。
需要在 SQL 中将主键列更新为自动递增 我越来越不犯错, 关键字“身份”附近的语法不正确。
问题内容: 最近,我被分配创建拍卖系统的任务。在我的工作中,我遇到了无数次由于列名不明确而导致包含联接的SQL查询无法执行的情况。考虑以下(简化的)拍卖表结构: 表: (创建拍卖的用户的ID) 表: (添加项目的用户的ID) (有该物品的拍卖的ID) (初始价格) 表: 表: (出价的用户的ID) (已提高价格的项目) (优惠价格) 如您所见,有许多列具有冲突的名称。连接这些表需要采取一些措施来消
考虑这个例子,其中主应用程序是两个模块的消费者:一个提供电子邮件服务,另一个提供日志服务。 app/email/email.service.ts app/email/email.module.ts providers: [ EmailService ], }) export class EmailModule { } 电子邮件服务api需要一些由字符串api-config标识的配置设置,由DI
我使用SWING API编写了一个GUI。 我有一组表单,每个表单都帮助用户创建预定义类型的对象。完成后,用户通过单击JButton确认创建。 我得到了一个遵循单例模式的类(DataManager)。此外,该类遵循观察者和工厂模式。DataManager是一个可观察的对象。观察到的数据格式如下: DataManager类包含一组方法,用于创建对象的预定义类型<示例: 其中一种形式是观察者对象,它观