gpt4 book ai didi

node.js - 如何在discord bot中打破node js中的else语句

转载 作者:太空宇宙 更新时间:2023-11-03 23:12:58 24 4
gpt4 key购买 nike

我正在使用discord.js模块在Node JS中创建一个discord机器人,并且仅当用户在discord服务器上的特定预定义 channel 中发送特定文本命令时才发送预定义消息,否则如果用户在任何其他 channel 中发送命令,则向同一 channel 发送消息,通知用户使用预定义 channel 来执行命令。例如。

根据我的说法,有错误的代码是:

client.on('message', message => {

//Check message channel
if (message.channel === 'aim-reception') {

if (message.content.startsWith(`${prefix}hi`)) {
console.log(`${message.author} used the "!hi" command in channel ${message.channel}`);
message.channel.send(`Hello ${message.author}!`);
}
} else return message.channel.send('Please Use the channel #aim-reception');
});

这是 index.js 文件的完整代码:

const Discord = require('discord.js');
const { prefix, token } = require('./config.json');
const client = new Discord.Client();


// Create an event listener for new guild members
client.on('guildMemberAdd', member => {
// Send the message to a designated channel on a server:
const channel = member.guild.channels.find(ch => ch.name === 'member-log');
// Do nothing if the channel wasn't found on this server
if (!channel) return;
// Send the message, mentioning the member
channel.send(`Welcome to the server, ${member}`);
});


client.on('message', message => {

//Check message channel
if (message.channel === 'aim-reception') {

if (message.content.startsWith(`${prefix}hi`)) {
console.log(`${message.author} used the "!hi" command in channel ${message.channel}`);
message.channel.send(`Hello ${message.author}!`);
}
} else return message.channel.send('Please Use the channel #aim-reception');
});

/**
* The ready event is vital, it means that only _after_ this
* will your bot start reacting to information
* received from Discord
*/
client.once('ready', () => {
console.log('Bot is now connected');

});

client.login(token);

即使使用的 channel 正确,它仍然跳过 if 条件无限循环 else 语句

A Snapshot of the error in a discord server

最佳答案

<强>1。使用 channel 属性在 docs ,您会看到 TextChannel对象有 TextChannel.name属性。

当您比较 message.channel === 'aim-reception' 时,您是将对象与字符串进行比较,该字符串始终返回 false。请改用 message.channel.name === 'aim-reception'

<强>2。忽略机器人消息,或者至少忽略机器人自己的消息

message 事件将触发任何消息,包括您的机器人自己的消息,因此请尝试忽略所有机器人消息或至少忽略它们自己的消息。否则机器人将陷入反复回复自己的消息的困境。

client.on('message', message => {
// ignore bot messages
if (message.author.bot) return;
// ...
});

// or

client.on('message', message => {
// ignore own messages
if (message.author.id === client.user.id) return;
// ...
});

关于node.js - 如何在discord bot中打破node js中的else语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59100669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com