我的 Discord.js 机器人正在运行(在线并在控制台中显示)但它不会响应命令

2022-01-10 00:00:00 bots raspberry-pi3 javascript discord.js

所以,有一天我使用 TeamViewer 连接到我的 RPi3 并告诉它重新启动.完成后,我连接到 pi,启动了 bot,它看起来正常启动.

So, one day I was using TeamViewer to connect to my RPi3 and told it to reboot. As soon as it finished, I connected to the pi, started the bot, and it looked like it was starting up properly.

当我在 discord 上发送命令时,机器人没有响应.机器人仍在运行.

When I went to send a command on discord, the bot didn't respond. The bot is still running though.

我尝试更改一些代码,但没有任何改变.

I tried changing some of the code, but nothing changed.

代码如下:

[REMOVED]

可能是什么问题?

推荐答案

你的问题是你的 if 语句没有阻塞.

Your problem is lack of blocking of your if statement.

if (message.channel instanceof Discord.DMChannel)
    message.channel.send("``Beep boop! Sorry, I can't respond to direct messages, but you can join the AKAS Gamer's Discord group here: https://discord.gg/QkjQNAr``");
    return

由于缺少括号,您的 return 将始终执行,因为它不是 if 语句的一部分.应该是:

With the lack of bracketing, your return will always execute as it is not part of the if statement. It should be:

if (message.channel instanceof Discord.DMChannel) {
    message.channel.send("``Beep boop! Sorry, I can't respond to direct messages, but you can join the AKAS Gamer's Discord group here: https://discord.gg/QkjQNAr``");
    return
}

C 风格语言中的常见建议是永远不要省略括号.进入那个练习.虽然从技术上讲,单语句条件是允许的,但正如您在此处看到的那样,它稍后会引起头痛.

Common recommendation in C-style languages is to never omit the brackets. Get into that practice. While it is technically allowable for single statement conditionals, it will cause headaches later as you've seen here.

相关文章