Javascript 无法在获取的通道| Discord.js中发送消息
目的:向公会所有者发送消息,然后创建邀请,然后向指定频道发送邀请 代码Javascript 无法在获取的通道| Discord.js中发送消息,javascript,discord,discord.js,Javascript,Discord,Discord.js,目的:向公会所有者发送消息,然后创建邀请,然后向指定频道发送邀请 代码 client.on("guildCreate", async guild => { // This event triggers when the bot joins a guild. console.log(``); console.log(greenBright(`[GUILD JOINED] ${guild.name} | [ID] ${guild.id} | [ (+
client.on("guildCreate", async guild => {
// This event triggers when the bot joins a guild.
console.log(``);
console.log(greenBright(`[GUILD JOINED] ${guild.name} | [ID] ${guild.id} | [ (+) MEMBERCOUNT: ${guild.memberCount}]`));
console.log(``);
const Owner = guild.ownerID;
const fetchOwner = client.users.fetch(Owner);
const InviteLogGuild = client.guilds.cache.get("761134473395306507")
const InviteLogChannel = InviteLogGuild.channels.cache.find(ch => ch.id === "803512574573543454");
const getChennel = guild.channels.cache.first();
(await fetchOwner).send(`Thank you for allowing lovell to be added to your server, ${guild.name}, ${(await fetchOwner).username} !\nPrefix:\`${prefix}\`\nAll commands are displayed by saying \`${prefix}help\`\nFeel free to join lovell server: ${MainServer}`)
.then(console.log(cyanBright(`[GUILD OWNER MESSAGED]`)))
.catch(() => {
console.error(redBright(`[GUILD OWNER MESSAGE DEINIED]`));
});
if (!getChennel) {
return console.error(redBright('[CHANNEL COULD NOT BE FETCHED]'));
} else {
console.log(yellow('[CHANNEL FETCHED]'))
}
const link = getChennel.createInvite({
unique: true,
maxAge: 0,
temporary: false,
maxUses: 100
})
if (!link) {
return console.log(redBright(`[INVITE FAILED]`));
} else {
console.log(blueBright(`[INVITE INITIATED]`));
}
if (!InviteLogGuild) {
console.error(red(`\n[LOG GUILD NOT IDENTIFIED]\n`))
} else if (InviteLogGuild || !InviteLogChannel) {
console.error(red(`\n[LOG GUILD IDENTIFIED | CHANNEL UNIDENTIFIED]\n`))
} else if (!InviteLogChannel) {
console.error(red(`\n[LOG CHANNEL NOT PRESENT]\n`));
} else if (InviteLogChannel) {
console.log(cyanBright(`[LOGGING INVITE]`));
const LogChannel = new Discord.MessageEmbed()
.setTitle(`New Guild Joined:`)
.setDescription(`**Guild Name:** ${guild.name} \n\n**MemberCount:** ${guild.memberCount} \n\n**Onwer:** \`${(await fetchOwner).tag}\` \n\n**Invite Link:** ${(await link).url}`)
.setThumbnail(`${guild.iconURL({ dynamic: true })}`);
InviteLogChannel.send(LogChannel);
console.log(cyan(`[INVITE LOGGED]\n`));
}
});
输出/错误:
[GUILD JOINED] Ghoulish Hangout | [ID] 618894612769275959 | [ (+) MEMBERCOUNT: 23]
[GUILD OWNER MESSAGED]
[CHANNEL FETCHED]
[INVITE INITIATED]
[LOG GUILD IDENTIFIED | CHANNEL UNIDENTIFIED] <---- Error
[GUILD JOINED] test | [ID] 2389372187328783 | [ (+) MEMBERCOUNT: 9]
[GUILD OWNER MESSAGED]
[CHANNEL FETCHED]
[INVITE INITIATED]
[LOG GUILD IDENTIFIED]
[LOGGING INVITE]
[INVITE LOGGED]
[加入帮会]食尸鬼聚集地|[ID]618894612769275959 |[(+)会员人数:23]
[帮会老板留言]
[已获取频道]
[邀请已启动]
[LOG GUILD IDENTIFIED | CHANNEL UNIDENTIFIED]编辑:
[GUILD JOINED] Ghoulish Hangout | [ID] 618894612769275959 | [ (+) MEMBERCOUNT: 23]
[GUILD OWNER MESSAGED]
[CHANNEL FETCHED]
[INVITE INITIATED]
[LOG GUILD IDENTIFIED | CHANNEL UNIDENTIFIED] <---- Error
[GUILD JOINED] test | [ID] 2389372187328783 | [ (+) MEMBERCOUNT: 9]
[GUILD OWNER MESSAGED]
[CHANNEL FETCHED]
[INVITE INITIATED]
[LOG GUILD IDENTIFIED]
[LOGGING INVITE]
[INVITE LOGGED]
如果你的陈述是错误的:
if(!InviteLogGuild){
控制台。错误(红色(`\n[未识别日志]\n`)
}else if(InviteLogGuild | | |!InviteLogChannel){
这是错误的,它将始终输入此案例,因为您正在检查InviteLogGuild是否已定义或InviteLogChannel是否未定义。由于第一个案例已检查要定义的InviteLogGuild,因此将始终返回true
。要使其正常工作,您必须将其更改为:
if(!InviteLogGuild){
控制台。错误(红色(`\n[未识别日志]\n`)
}else if(InviteLogGuild&!InviteLogChannel){
但是您可以完全删除&&
,因为第一个案例已经检查了InviteLogGuild是否已定义:
if(!InviteLogGuild){
控制台。错误(红色(`\n[未识别日志]\n`)
}如果(!InviteLogChannel){
如果您将这些因素考虑在内,您的最终“如果链”将如下所示(并且有效):
if(!InviteLogGuild){
console.error(红色(`\n[LOG GUILD NOT IDENTIFIED]\n`));
}如果(!InviteLogChannel){
console.error(红色(`\n[LOG GUILD IDENTIFIED | CHANNEL UNIDENTIFIED]\n`);
}否则{
log(cyanBright(`[LOGGING INVITE]`));
const LogChannel=new Discord.MessageEmbed()
.setTitle(`New Guild Joined:`)
.setDescription(`**Guild Name:*${Guild.Name}\n\n**MemberCount:*${Guild.MemberCount}\n\n**Onwer:*\`${(wait fetchOwner).tag}\`\n\n**邀请链接:*${(wait Link).url}`)
.set缩略图(`${guild.iconURL({dynamic:true}})}`);
InviteLogChannel.send(LogChannel);
log(青色(`[INVITE LOGGED]\n`));
}
为了避免此类问题,我建议您切换到使用TypeScript或开始使用ESLint,这会建议您进行不必要的检查
旧答案
尝试使用guild.channels.resolve(channelId)
和client.guilds.resolve(guildId)
而不是使用缓存。这可能是因为该频道尚未加载到缓存中,无法找到。我不太清楚为什么这样做有效,但我从if语句中取出了我的消息commmand,它起了作用
if (!InviteLogGuild) {
return console.error(red(`\n[LOG GUILD NOT IDENTIFIED]\n`));
} else if (InviteLogGuild) {
console.log(greenBright(`[LOG GUILD IDENTIFIED]`));
} else if (!InviteLogChannel) {
return console.error(red(`\n[LOG CHANNEL NOT PRESENT]\n`));
} else if (InviteLogChannel) {
console.log(cyanBright(`[LOG CHANNEL IDENTIFIED]`));
}
console.log(cyanBright(`[LOGGING INVITE]`));
const SendMessage = new Discord.MessageEmbed()
.setTitle(`New Guild Joined:`)
.setDescription(`**Guild Name:** ${guild.name} \n\n**MemberCount:** ${guild.memberCount} \n\n**Onwer:** \`${(await fetchOwner).tag}\` \n\n**Invite Link:** ${(await link).url}`)
.setThumbnail(`${guild.iconURL({ dynamic: true })}`);
InviteLogChannel.send(SendMessage);
console.log(cyan(`[INVITE LOGGED]\n`));
结果:
[GUILD JOINED] Ghoulish Hangout | [ID] 618894612769275959 | [ (+) MEMBERCOUNT: 23]
[GUILD OWNER MESSAGED]
[CHANNEL FETCHED]
[INVITE INITIATED]
[LOG GUILD IDENTIFIED | CHANNEL UNIDENTIFIED] <---- Error
[GUILD JOINED] test | [ID] 2389372187328783 | [ (+) MEMBERCOUNT: 9]
[GUILD OWNER MESSAGED]
[CHANNEL FETCHED]
[INVITE INITIATED]
[LOG GUILD IDENTIFIED]
[LOGGING INVITE]
[INVITE LOGGED]
如果有人能解释原因,请放心!您确定ID正确吗?是的,我非常确定仍然会发生相同的错误。我尝试了不同的频道ID,但仍然是相同的错误;(查看我编辑的答案)