【问题标题】:Sending an Embed to a different channel (Discord JS)将嵌入发送到不同的频道 (Discord JS)
【发布时间】:2020-07-29 23:21:48
【问题描述】:

我正在尝试将嵌入发送到不同的通道而不是执行命令的通道,但我收到错误“初始化前无法访问'bot'”我不知道我做错了什么在 index.js 的顶部。

 case "alert":
        let text = message.content.replace(prefix + "alert", "")
        const alertembed = new Discord.MessageEmbed()
        .setTitle("**Embed Title**")
        .setDescription(text)
        bot.channels.find("carts").send(alertembed)
        embed.Message.react("????")
        embed.Message.react("????")
const Discord = require("discord.js")
const bot = new Discord.Client();
const ms = require("ms")
const fs = require("fs")


var version = "1.0"

const config = require("./config.json")
let prefix = config.prefix;
const token = config.token;

bot.on("ready", () =>{
    console.log("Succesfully started the tools bot");
})

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

   let args = message.content.substring(prefix.length).split(" ");



   switch(args[0]){
...

【问题讨论】:

  • 我认为这里不足以重现问题。我们需要更多代码来展示如何初始化 bot 变量。还包括哪个 Discord.js 版本,因为其中一些在最新版本中发生了变化(即 channels.find)。
  • 感谢您的回复。我正在使用 12.1.1 我也尝试过 .get 但这也没有帮助我将尝试使用顶部的代码编辑帖子
  • 刚刚编辑了原帖

标签: javascript discord embed discord.js


【解决方案1】:

好的,根据您提供的信息,我发现了一些问题,但错误消息不是我所期望的。这些当然是问题,但我不确定这是问题。

在 v12 中,大多数集合被包含名为 cache 的集合的管理器对象所取代。这包括 message.channels。因此,要访问通道缓存集合,您需要使用:

message.channels.cache.find()

但这仍然存在问题,因为在 v11 中不推荐使用基于字符串的查找,并在 v12 中删除。如果你想要的话,你必须传入一个返回 true 的函数。

bot.channels.cache.find(ch => ch.name === "carts")

更新: 我注意到的另一件事.. embed.Message.react("?") 我没有看到名为 embed 的变量。我认为您的意思是从发送中执行此操作。

bot.channels.cache.find(ch => ch.name === "carts").send(alertembed).then(sent => {
    sent.react("?")
    sent.react("?")
});

【讨论】:

  • 好的,谢谢,如果我使用频道 ID 而不是名称,会有什么不同吗?
  • @MaxiiPaguera 当然,如果您有 ID,那么这是最好的选择。请改用bot.channels.cache.get(id)。但是,您仍然需要处理我在上面刚刚添加的更新中显示的承诺。
猜你喜欢
  • 2023-03-07
  • 2018-11-24
  • 2021-10-28
  • 2021-04-14
  • 2021-11-19
  • 2022-08-19
  • 2020-05-18
  • 2019-05-11
  • 2018-11-24
相关资源
最近更新 更多