【问题标题】:How do I add a delay between sending messages discord.js [duplicate]如何在发送消息 discord.js 之间添加延迟 [重复]
【发布时间】:2021-12-08 07:57:47
【问题描述】:

代码如下:

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

client.on("message", function(message) {
message.reply('my message');
})

client.login('client login')

回复消息后,我希望有 5 分钟的延迟才能再次回复,但不要回复之前发送的任何消息。这几乎是我想要的: 我:你好 机器人:我的消息 我(2分钟后):你好 机器人:(什么都不发送) 5分钟后: 我:你好再一次 机器人:我的消息

(抱歉说了这么多)

【问题讨论】:

标签: javascript node.js discord.js


【解决方案1】:

好吧,我有两个解决方案。

1#等待一段时间再执行一段代码

你可以使用setTimeout(),它是一个只需要两个参数的javascript函数。第一个是在某个超时后将要执行的函数,第二个是在执行该函数之前您的代码需要等待多少毫秒。

message.channel.send('Hi!')
setTimeout(function(){
message.channel.send('Hi again.. !')
},1000 * 10) // 1000 milliseconds multiplied by 10, therefore 10 second.

2#等待一段时间再执行剩下的代码

这与之前的非常相似,但这次您不会将代码放在函数上。你可以像这样创建一个函数:

let sleep = async (ms) => await new Promise(r => setTimeout(r,ms));

这里你有一个睡眠功能,它会冻结你当前的代码 x 毫秒然后继续,好像什么都没发生一样,

let sleep = async (ms) => await new Promise(r => setTimeout(r,ms));
message.channel.send('Going to sleep!')
await sleep(2000)
message.channel.send("I'm awake!!")

【讨论】:

  • 这给了我以下错误:await sleep(60000) ^^^^^ SyntaxError: await is only valid in async function
  • 代码如下:client.on("message", function(message) { let sleep = async (ms) => await new Promise(r => setTimeout(r,ms)) ; message.reply('我的消息'); await sleep(60000) })
  • @Tamthejam 您需要使函数异步,将function 替换为async function,它应该可以工作
猜你喜欢
  • 2016-09-28
  • 1970-01-01
  • 2014-02-15
  • 2022-08-08
  • 1970-01-01
  • 1970-01-01
  • 2021-08-28
  • 2023-01-11
  • 1970-01-01
相关资源
最近更新 更多