我的 discord.js 嵌入消息未发送到特定频道

时间:2021-01-20 10:10:59

标签: discord.js

我不知道问题是什么,这是我正在使用的代码,包括将其发送到指定频道的行:

const Discord = require('discord.js')
const client = new Discord.Client();

const Discord = require('discord.js')
const client = new Discord.Client();

client.on("message", message => {
   const embed = new Discord.messageEmbed()
   embed.setAuthor(`Phaze Bot`)
   embed.setTitle(`Commands List`)
   embed.setDescription(`$kick: kicks a member \n $ban: bans a member \n $help music: 
   displays music commands \n $help: displays the help screen`)
   
   client.guild.channels.cache.get(`801193981115367496`).send(embed)
})

client.login('login in here');  

它不会将此嵌入发送到频道(通过 ID)。谁能看出我错在哪里?

更新 它现在正在工作,但是当我在其中发送消息时仍然没有将代码发送到频道。终端也显示这个:

TypeError: Cannot read property 'channels' of undefined

1 个答案:

答案 0 :(得分:2)

每当用户在任何频道中发送消息时,此机器人都会发送一个嵌入内容。

您的 client.on("message", (_message) => { 也有错别字 这需要:

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

此外,您需要将 client#channels#cache#get 设为:

message.guild.channels.cache.get('801193981115367496').send(embed);

由于ID是字符串,所以需要用引号或引号括起来。

正如 Rémy Shyked 所提到的,引用了来自 VSCode 的 linter:

<块引用>

绝对值等于或大于 2^53 的数字文字太大而无法准确表示为整数

ID 值太大,不能准确地作为整数处理

如上所述,每次发送消息时,您的机器人都会发送此嵌入内容。以下是如何让它响应基本的帮助命令(不使用处理程序):

const Discord = require('discord.js')
const client = new Discord.Client();

client.on("message", message => {
   if (message.content.toLowerCase() === '!help') {
      const embed = new Discord.messageEmbed()
      embed.setAuthor(`Phaze Bot`)
      embed.setTitle(`Commands List`)
      embed.setDescription(`$kick: kicks a member \n $ban: bans a member \n $help music: 
      displays music commands \n $help: displays the help screen`)
      message.guild.channels.cache.get('801193981115367496').send(embed);
   };
});

client.login('client login here'); 

另外,请使用分号,并在不需要时停止使用反引号 (`) - 这样可以在以后避免很多错误。