discord - 在 discord.py 中的特定日期和时间每周触发一个事件
问题描述
我想在每周三 3:30 UTC 使用 discord.py 在 Discord 机器人上触发一些事情。我尝试修改此答案中的代码,但无法弄清楚如何让它每周而不是每天运行。我对任务不是很熟悉,所以我也无法从头开始工作。
解决方案
这不是一个理想的方法,但它会起作用。
从那个问题中得到我的答案,你可以让它每 7 天循环一次,但这将从机器人开始时开始。使用 abefore_loop
设置循环的开始时间。
import asyncio
import datetime as dt
@bot.event
async def on_ready():
print("Logged in as")
print(bot.user.name)
print("------")
msg1.start()
# 7 days => 24 hour * 7 days = 168
@tasks.loop(hours=168)
async def msg1():
message_channel = bot.get_channel(123)
await message_channel.send("test 1")
@msg1.before_loop
async def before_msg1():
# loop the whole 7 day (60 sec 60 min 24 hours 7 days)
for _ in range(60*60*24*7):
if dt.datetime.utcnow().strftime("%H:%M UTC %a") == "03:30 UTC Wed":
print('It is time')
return
# wait some time before another loop. Don't make it more than 60 sec or it will skip
await asyncio.sleep(30)
文件:
推荐阅读
- java - 具有多个主题的观察者模式
- c# - 与 Storyboard 的交互行为和 DataTrigger 不起作用
- python-3.x - paytm - 使用 python 作为后端语言的支付网关集成
- c# - 将信息保存在数据库中,然后使用 .NET CORE 将请求发布到外部 API
- spring-integration - 使用 Spring Integration 和 Batch 读取 CSV 文件并将其插入数据库
- node.js - 在生产环境中运行 NodeJS 服务器
- c# - 如何使用 Mongo 命令在 DocumentDB 中“修补”文档
- php - 递归函数的返回结果
- android - Volley error,集中错误管理
- react-native - 无法安装 react-native-community/react-native-netinfo