【问题标题】:Discord bot getting an error and not doing what it shouldDiscord 机器人出现错误并且没有做它应该做的事情
【发布时间】: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


    【解决方案1】:

    编辑我在 discord.js v12 中说过这个,因为 v11 支持现在已经结束了

    好吧,首先你没有定义不和谐,你只定义了“不和谐”

    const Discord = require('discord.js');
    

    如果您查看错误,您将看到导致错误的原因

    ReferenceError: discord is not defined
    

    它提供了问题所在的行。所以在之前检查一下

    第二件事是我不知道

    collector.stop();
    

    是一件事。如果我错了,请纠正我。我通常不使用收藏家。但我没有找到像collector.stop();这样的东西。

    我还阅读了 discord.js 指南的部分内容,其中包含有关收集器的信息。 这是我找到的。

    我没有找到类似的东西

        let collector = new discord.MessageCollector(message.channel, filter);
    

    我只找到了

    const collector = message.channel.createMessageCollector(filter, { time: 15000 });
    

    这是该页面的链接:here

    所以也许可以尝试使用 createmessagecollector。当然如果我错了请纠正我

    【讨论】:

      猜你喜欢
      • 2011-09-28
      • 2020-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多