Discord.js V12 Client.emit and TypeError:



我试着改进不工作的代码,所以我回到旧代码,然后得到这个错误

at Client.emit (node:events:527:28)
at Object.module.exports [as MESSAGE_CREATE] (/workspace/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
at MessageCreateAction.handle (/workspace/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
at WebSocketManager.handlePacket (/workspace/node_modules/discord.js/src/client/websocket/WebSocketManager.js:384:31)
at WebSocketShard.onPacket (/workspace/node_modules/discord.js/src/client/websocket/WebSocketShard.js:444:22)
at WebSocketShard.onMessage (/workspace/node_modules/discord.js/src/client/websocket/WebSocketShard.js:301:10)
at WebSocket.onMessage (/workspace/node_modules/ws/lib/event-target.js:132:16)
at WebSocket.emit (node:events:527:28)
TypeError: Cannot read properties of undefined (reading 'id')
at Object.run (/workspace/commands/verify.js:11:29)
at Client.<anonymous> (/workspace/index.js:112:21)
at MessageCreateAction.handle (/workspace/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
at Client.emit (node:events:527:28)
at Object.module.exports [as MESSAGE_CREATE] (/workspace/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (/workspace/node_modules/discord.js/src/client/websocket/WebSocketManager.js:384:31)
at WebSocketShard.onPacket (/workspace/node_modules/discord.js/src/client/websocket/WebSocketShard.js:444:22)
at WebSocketShard.onMessage (/workspace/node_modules/discord.js/src/client/websocket/WebSocketShard.js:301:10)
at WebSocket.onMessage (/workspace/node_modules/ws/lib/event-target.js:132:16)
at WebSocket.emit (node:events:527:28)

index.js

const Discord = require('discord.js');
const client = new Discord.Client();
const { token, default_prefix } = require('./config.json');
const { readdirSync } = require('fs');
const { join } = require('path');
const canvas = require('discord-canvas')
const express = require('express');
const bodyParser = require("body-parser")
const app = express();
const cors = require("cors");
app.use(cors());
const config = require('./config.json');
client.config = config;
client.commands = new Discord.Collection();
const cooldowns = new Discord.Collection();
const commandFiles = readdirSync(join(__dirname, "commands")).filter(file => file.endsWith(".js"));
for (const file of commandFiles) {
const command = require(join(__dirname, "commands", `${file}`));
client.commands.set(command.name, command);
}
client.on("error", console.error);
client.on('ready', async () => {
console.log('I am ready');
client.user.setActivity("Unfair Top", {
type: 'WATCHING'
})
})
client.on("guildMemberAdd", async member => {
c = client.channels.cache.get("943205142151434331")
client.channels.cache.get("943204976761663629").send(`Welcome to Exodium ${member}, for support go to ${c}.`)
const image = await new canvas.Welcome()
.setUsername(member.user.username)
.setDiscriminator(member.user.discriminator)
.setMemberCount(member.guild.memberCount)
.setGuildName(member.guild.name)
.setAvatar(member.user.displayAvatarURL({ dynamic: true, format: "png" }))
.setColor("border", "#8015EA")
.setColor("username-box", "#8015EA")
.setColor("discriminator-box", "#8015EA")
.setColor("message-box", "#8015EA")
.setColor("title", "#8015EA")
.setColor("avatar", "#8015EA")
.setBackground("https://thumbs.dreamstime.com/b/degree-equirectangular-projection-space-background-nebula-stars-environment-map-hdri-spherical-panorama-d-illustration-200369002.jpg")
.toAttachment()
const attachment = new Discord.MessageAttachment(image.toBuffer(), "welcome.png");
client.channels.cache.get("943204976761663629").send(attachment)
})
client.on("message", async message => {
if (message.author.bot) return;

if (message.channel.id == 944770295590432860) {
if (message.content != "-verify") {
return message.delete()
}
}
let prefix = default_prefix
if (message.content.startsWith(prefix)) {
const args = message.content.slice(prefix.length).trim().split(/ +/g);
const commandName = args.shift().toLowerCase();
const command = client.commands.get(commandName)
|| client.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName));
if (!command) return message.reply("Unknown Command!");
if (command.args && !args.length) {
let reply = `nThe proper usage would be: `${prefix}${command.name} ${command.usage}``;
return message.channel.send("Unknown Command!");
}
if (!cooldowns.has(command.name)) {
cooldowns.set(command.name, new Discord.Collection());
}
const now = Date.now();
const timestamps = cooldowns.get(command.name);
const cooldownAmount = (command.cooldown || 3) * 1000;
if (timestamps.has(message.author.id)) {
const expirationTime = timestamps.get(message.author.id) + cooldownAmount;
if (now < expirationTime) {
const timeLeft = (expirationTime - now) / 1000;
let timeout = new Discord.MessageEmbed()
.setDescription(`❌ Wait ${timeLeft.toFixed(1)} to use ${command.name} again.`)
.setColor("RED")
return message.reply(timeout);
}
}
timestamps.set(message.author.id, now);
setTimeout(() => timestamps.delete(message.author.id), cooldownAmount);

try {
command.run(client, message, args);
} catch (error) {
console.error(error);
}
}
});
//Express
app.use(bodyParser.json());
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
app.post('/', (req, res) => {
let id = req.body.id
verify(id);
});
async function verify(i) {
try {
var g = await client.guilds.cache.get("943025185295044608");
var mem = await g.members.cache.get(i)
var r = await g.roles.cache.get("943202823217221652");

mem.roles.add(r);
let userverembed = new Discord.MessageEmbed()
.setTitle(`✅ ${mem.username} have been verified`)
.setFooter(mem.username + " may now enter Unfair.top server!", message.author.displayAvatarURL())
client.channels.cache.get("944841210462367794").send(userverembed)
let verifyedembed = new Discord.MessageEmbed()
.setTitle(":white_check_mark: You have been verified")
.setFooter(mem.username + " may now enter Unfair.top server!", message.author.displayAvatarURL())
mem.send(verifyedembed)
} catch (e) {
client.channels.cache.get("944841210462367794").send(`${i} was not verified`)
}
}
const port = process.env.PORT || 3081;
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
client.login(token);

Verify.js

const { MessageEmbed } = require("discord.js")
module.exports = {
name: "verify",
description: "Verify yourself to enter the discord server",
cooldown: "10",
run(message, args) {
let member = message.author
if (message.channel.id != 944770295590432860) return;

message.delete()
let verifyembed = new MessageEmbed()
.setTitle("Unfair Top Verification")
.setDescription(`[Click here to begin](https://exodium.digital/verify/?id=${member.id})`)
.setFooter("Verification started for " + message.author.username, message.author.displayAvatarURL())
member.send(verifyembed)
}
}

这可能是一个小错误,但我一直试图解决它的时间。我试过切换"消息"。";messageCreate"

我试图转换到v13,但后来卡住了,所以我回到旧的v12,然后开始得到错误。

当你在client.on('message')中执行命令时,你给了它三个参数:command.run(client, message, args),而在你的verify.js文件中,你只接受了两个顺序不正确的参数,所以你在verify.js文件中的message参数实际上是client,而args参数是message。要修复您的错误,您只需将verify.js文件中参数的顺序更改为:

const { MessageEmbed } = require("discord.js")
module.exports = {
name: "verify",
description: "Verify yourself to enter the discord server",
cooldown: "10",
run(client, message, args) {
let member = message.author
if (message.channel.id != '944770295590432860') return;

message.delete()
let verifyembed = new MessageEmbed()
.setTitle("Unfair Top Verification")
.setDescription(`[Click here to begin](https://exodium.digital/verify/?id=${member.id})`)
.setFooter("Verification started for " + message.author.username, message.author.displayAvatarURL())
member.send(verifyembed)
}
}

(注意:当比较消息的通道id时,您将它与一个数字进行比较。在discord.js中,id被存储为字符串,所以我也纠正了这一点

相关内容

最新更新