【发布时间】:2021-02-02 20:03:29
【问题描述】:
该机器人起初看起来运行正常。我使用?listen 命令,它应该以bot is collecting messages now... 响应。 ?stop 命令似乎什么都不做,当我使用?listen2 时,无论我输入什么作为请求的名称,它都会返回说You did not specify a name on time. 只有在我使用?listen 命令后才会出现错误。代码和错误如下。这段代码是我弄清楚如何从 Discord 服务器上的频道复制所有历史消息和反应并将它们粘贴到另一台服务器上的频道的第一步。
我的代码是:
const Discord = require('discord.js');
require('dotenv').config();
const client = new Discord.Client();
client.login(process.env.BOT_TOKEN);
const ms = require('ms');
const prefix = '-';
const fs = require('fs');
client.commands = new Discord.Collection();
const commandFiles = fs.readdirSync('./commands/').filter(file => file.endsWith('.js'))
for(const file of commandFiles){
const command = require(`./commands/${file}`);
client.commands.set(command.name, command);
}
client.once('ready', () => {
console.log('Dahj is online!');
});
client.on('message', async message =>{
if(message.author.bot) return;
if(message.content.toLowerCase() === '?listen') {
message.channel.send('bot is collecting messages now...');
let filter = m => !m.author.bot;
let collector = new discord.MessageCollector(message.channel, filter);
let destination = client.channels.get('767508773966315550');
collector.on('collect', (m, col) => {
console.log("Collected message: " + m.content);
if(destination) {
if(m.content.toLowerCase() === '?stop' && (message.author.id === m.author.id)) {
console.log("Stopping collector.");
collector.stop();
}
else {
let embed = new discord.RichEmbed()
.setTitle("New Message")
.setDescription(m.content)
.setTimestamp()
.setAuthor(m.author.tag, m.author.displayAvatarURL)
.setColor('#FFAB32')
destination.send(embed);
}
}
});
collector.on('end', collected => {
console.log("Messages collected: " + collected.size);
});
}
if(message.content.toLowerCase() === '?listen2') {
message.channel.send("Enter your name");
let filter = m => m.author.id === message.author.id;
try {
let msg = await message.channel.awaitMessages(filter, { maxMatches: 1, time: '10000', errors: ['time'] });
message.channel.send("Your name " + msg.first().content);
}
catch(ex) {
message.channel.send("You did not specify a name on time.");
}
}
});
My error is:
(node:15556) UnhandledPromiseRejectionWarning: ReferenceError: discord is not defined
at Client.<anonymous> (C:\Users\malibukid71\Documents\Dahj2\main.js:34:25)
at Client.emit (events.js:315:20)
at MessageCreateAction.handle (C:\Users\malibukid71\Documents\Dahj2\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (C:\Users\malibukid71\Documents\Dahj2\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (C:\Users\malibukid71\Documents\Dahj2\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
at WebSocketShard.onPacket (C:\Users\malibukid71\Documents\Dahj2\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
at WebSocketShard.onMessage (C:\Users\malibukid71\Documents\Dahj2\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
at WebSocket.onMessage (C:\Users\malibukid71\Documents\Dahj2\node_modules\ws\lib\event-target.js:125:16)
at WebSocket.emit (events.js:315:20)
at Receiver.receiverOnMessage (C:\Users\malibukid71\Documents\Dahj2\node_modules\ws\lib\websocket.js:797:20)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:15556) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:15556) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
【问题讨论】:
标签: javascript node.js discord.js