javascript - 需要帮助将 Bot 更新到 Discord.js v12
问题描述
我正在尝试更新此代码以使用 Discord.js v12。我遇到了一个错误,我对如何解决这个错误有点困惑。我已经更新了一些代码以使用 Discord.js v12。
类型错误:client.channels.fetch(...).send 不是函数
在客户端。(/home/runner/Log/index.js:44:40) 在 Client.emit (events.js:314:20) 在 Client.EventEmitter.emit (domain.js:483:12) 在 MessageCreateAction.handle (/ home/runner/Log/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14) 在 Object.module.exports [as MESSAGE_CREATE] (/home/runner/Log/node_modules/discord.js/ src/client/websocket/handlers/MESSAGE_CREATE.js:4:32) 在 WebSocketManager.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) 在 WebSocketShard.onMessage (/home/runner/Log/node_modules/discord.js/src/ client/websocket/WebSocketShard.js:301:10) 在 WebSocket.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);
解决方案
推荐阅读
- azure - Azure Liquid 模板 - 如何从 Apim 策略中的嵌套 json 获取特定值
- c++ - 将 pegjs 转换为 C++
- r - 已解决 - Rcpp 在 MacOS Big Sur 上的 Vector.h 中返回错误
- python - Tkinter askdirectory()未显示在屏幕上
- php - MySQL全文搜索 - 多个搜索相同的字段
- r - 用随机行的值替换数据框中的特定值
- javascript - 谷歌翻译元素获取当前语言
- c# - 为什么它计算一些数字正确而一些数字错误?C#
- css - 每行的最后一个元素在悬停时将下一行的第一个元素推向右侧
- python - Python 发布请求使用请求库引发 400 'Bad Request' 错误,但适用于 cURL