当前位置: 首页 > 知识库问答 >
问题:

如何制作嵌入式消息以便稍后编辑

子车才捷
2023-03-14

我正在尝试开发一些代码来显示bot何时上线,并让嵌入的消息颜色每2秒改变一次其他的东西。(2000ms)但我不知道是怎么回事,我得到一个错误,说channel.send.edit不是函数或类似的东西。

我所做的是...创建超时。编辑该消息,但它将为uptime部分显示不同的消息/输出。删除并发送消息。

var myInfo = new discord.RichEmbed()
.setAuthor(`${bot.user.username} is now ONLINE`,`${bot.user.avatarURL}`)
.setDescription(`The bot is now up, please check the following below to see when the bot was online.`)
.addField(`Ready At`,`${bot.readyAt}`,true)
.addField(`Timestamp`,`${bot.readyTimestamp}`,true)
.addField(`Uptime`,`${bot.uptime}`,true)
.setColor(0x008704)
.setFooter('Bot is now online.')
.setThumbnail(`${bot.user.avatarURL}`)

var myInfo2 = new discord.RichEmbed()
.setAuthor(`${bot.user.username} is now ONLINE`,`${bot.user.avatarURL}`)
.setDescription(`The bot is now up, please check the following below to see when the bot was online.`)
.addField(`Ready At`,`${bot.readyAt}`,true)
.addField(`Timestamp`,`${bot.readyTimestamp}`,true)
.addField(`Uptime`,`${bot.uptime}`,true)
.setColor(0x00c13a)
.setFooter('Bot is now online.')
.setThumbnail(`${bot.user.avatarURL}`)

bot.channels.get("523649838693482507").send(myInfo).edit(myInfo2);

我希望当它联机时,它会发送嵌入消息,然后2秒钟后,它会编辑颜色,等等。

输出是一个bot给出了一个错误,或者根本不工作。

共有1个答案

庞意智
2023-03-14

您可以使用message.channel.send(...)的结果,方法是将then()方法附加到返回的promise中,如下所示...

message.channel.send(myInfo)
  .then(m => m.edit(myInfo2)) // Note that this will edit the message immediately.
  .catch(console.error);

您将注意到,我添加了catch()方法,以便在返回错误的情况下捕获被拒绝的承诺。

或者,您可以声明一个变量作为已实现的承诺。但是,await关键字只能在异步函数中。这里有一个例子...

client.on('message', async message => {
  try {
    const m = await message.channel.send('Hello.');
    await m.edit('Hi again.');
  } catch(err) {
    console.error(err);
  }
});

在这种情况下,我们可以使用try...catch语句,而不是单独的catch()方法。

有关承诺的详细信息,请参阅此MDN文档。
有关textChannel.send()方法的详细信息,请参阅discord.js文档。

 类似资料:
  • 我正在使用NSeriveBus构建一个系统,它应该只在特定的时间段将消息发送给远程处理程序。到目前为止,我设法将所有消息放在一个处理队列上,并从那里检查远程处理程序的可用性,如果处理程序不可用,我就不会通过边界发送消息。要做到这一点,我正在使用 但国家安全局会继续努力。这不像其他侦听器将在几分钟内启动并运行,但它可能有几个小时的停机窗口,因此这并不完全有效。 想知道是否有办法让总线稍后重试消息,或

  • 因此,我正在研究一个概念,它涉及到自动写入一个类的内容,扩展 例如,我们的想法是声明以下内容 然后,每当第一次调用时,就会初始化它,然后按照指定的顺序将其内容写入本机地址。 但我遇到的唯一问题是收集成员,以便稍后作为参数传递给I-th 因为编译器在这里抱怨: 错误:(328,37)Kotlin:Out投影类型“KProperty1”禁止使用Kotlin中定义的“public abstract fu

  • 我见过很多不和谐的嵌入代码,比如: (这是一个老问题,我是新来的,所以…) 所以,我不明白的是什么是触发因素?就像你应该打字一样。乒乓球对吗?那么,我应该键入什么来获取我的bot类型呢?

  • 问题内容: 我对joptionpane有疑问。 使用JOptionPane.showMessageDialog(…),我们可以创建一个消息对话框。但是如何以编程方式将其关闭? 问题答案: 您总是可以通过获取其持有的任何组件的WindowAncestor来获得对JOptionPane的引用,然后调用或返回Window。该窗口可以通过使用获得 例如:

  • 机器人发送嵌入消息(包含文本和gif)。然而,gif根本不加载。一切似乎都在为其他命令工作,但这个特定的命令不工作。我真的不知道,请帮帮我。我的代码: 下面是这条消息的图片:

  • 我遵循以下指南:https://spring.io/guides/gs/messaging-jms/我有几封优先级更高的邮件需要在发送其他邮件之前发送。 我已经试过了- 但是这些信息是按照代码中的顺序发送的。我错过了什么? 非常感谢。