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

Discord.jsBot只在特定时间响应消息或命令

方德宇
2023-03-14

如何将检查日期应用于此邮件,以避免不一致。如果工作日在东部时区上午9:30到下午4:00之间,js机器人不会响应“nio停机”?(股市时间)

请原谅我的密码。我是一个彻头彻尾的傻瓜,试图通过经验和实践来学习。我倾向于通过例子学习,而不是通过书本学习和阅读。一旦我对它有了更好的理解,然后我喜欢缩小范围,通读这些书来调整或纠正我的一些坏习惯,如果这是有意义的。

  if (message.content.toLowerCase().includes("nio down")) {
    message.channel.startTyping();
    setTimeout(() => message.channel.send("y’all got duped. nio CEO on the run now"), 56500);
    setTimeout(() => message.channel.send("pookie made more money hustling"), 69500);
    message.channel.stopTyping(true);
  } else

共有1个答案

傅峻
2023-03-14

您可以使用日期对象。访问消息的createdTimestamp属性,使用getDay()方法检查是否为工作日:

const { createdTimestamp } = message;
const date = new Date(createdTimestamp);
const day = date.getDay();

// The getDay() method returns the day of the week for the specified date according to local time, where 0 represents Sunday
if (day > 0 && day < 6) {
  console.log("weekday");
  const UTCHours = date.getUTCHours();
  const ESTHours = UTCHours - 5.0;

  if (ESTHours == 9) {
    const minutes = date.getUTCMinutes();

    if (minutes < 30) {
      console.log("Not in time", ESTHours, minutes);
    }
  } else if (ESTHours > 10 || ESTHours < 16) {
    console.log("In time", ESTHours);
  } else {
    console.log("Not in time", ESTHours);
  }
} else {
  console.log("No weekday");
}

东部时区检查更为复杂。本机日期对象只知道两个时区,UTC和用户的区域设置时区(但是可以提取的关于区域设置时区的信息量是有限的)。您可以在UTC中工作,并从消息对象中减去/添加必要的小时数。

或者,你可以查看诸如Luxon或Day之类的日期库。js更适合处理此类问题。

编辑

您可以通过getUTCHours方法获取UTC小时数。然后减去时间差,检查时间是否在9:30-16:00的范围内。

 类似资料:
  • 我希望我的机器人每天在特定的时间发送一条消息,运行另一个机器人的命令。例如,我想让我的机器人写“s!t"每天凌晨2点在特定频道上,并删除机器人发送的消息。我该怎么做?

  • 我正在使用 Jmeter 执行一个脚本进行负载测试。我在两者之间遇到错误,例如。如果我应用了500users的负载,直到250个用户线程成功运行,那么错误来自连接超时错误。然后,它再次运行成功为某些线程,然后出错。 代码如下:- 响应标头: 我需要破坏服务器。 有人能帮我吗?

  • 我使用PHP在我的服务器中通过以下功能向FCM发送通知: 响应是这样的。在文件中,https://firebase.google.com/docs/cloud-messaging/http-server-ref 多播id、成功、失败参数在响应中是必需的,但是。 这是什么原因?

  • 我想创建一个不和谐机器人,每天在特定的时间发送2条消息。下面的代码将使消息进入一个循环,例如每5秒发送一条消息。我如何设置每天发送消息的具体时间,例如,消息1在下午6点,消息2在上午10点。我在这里找到了这段代码,但是没有找到我想要的。

  • 我通过endpoint与我的laravel服务器通话。我不使用Laravel View,因此无法访问其会话。 当一个需要的请求进来,我需要返回一个响应即etc每个参数?可能吗? 内部: 如果我应该使用字符串消息,而不是laravel重定向没有响应,我使用邮递员,我看到状态200。如何实现我想要的?我想用响应自定义每个必需的参数。

  • 2.17 响应时间(边缘) 2.17.1 描述 返回5分钟颗粒度的状态码明细数据,主要返回时间戳、省份、运营商、HIT/MISS、状态码、响应时间、请求数 2.17.2 请求地址 地址: https://api.bokecs.com/channel/responseTime?time={time}domain={domain} 2.17.3 请求方式 GET 2.17.4 请求参数 参数名称 是否