【发布时间】:2023-03-30 09:47:01
【问题描述】:
我正在尝试从我的机器人有权访问的所有渠道中检索今天(如运行脚本当天)发送的所有消息的可迭代项。
就目前而言,我一直在尝试使用.logs_from() 的after 属性,但是我似乎无法让它按照我的意愿行事:
import discord
import asyncio
import time
client = discord.Client()
today = time.strftime("%Y-%m-%d")
@client.event
async def on_ready():
for i in client.get_all_channels():
async for c in client.logs_from(i, after=today):
print(c.content)
client.run(INSERT_SESSION_KEY)
运行它似乎只是从我的机器人可以访问的频道中输出所有消息的列表。我假设我输入的 after 值的格式不正确,但文档仅说明:
after (Message or datetime) – 所有返回的消息必须在该消息或日期之后。如果提供了日期,则它必须是代表 UTC 时间的时区原始日期时间。
我的印象是我在做什么。
是否有人能够建议为.logs_from() 声明after 属性值的正确方法是什么?
【问题讨论】:
-
尝试使用 datetime 对象代替时间。粗略搜索here 建议
datetime.combine(date.today(), time()) -
完美,可以抓取在当前时间之后发送的任何消息,包括一天中的时间,因为今天仅使用
date.today()发送的消息可以满足我的需要! -
我无法判断以下信息是否适用于您的情况。虽然日期时间最终必须是时区天真,但也许您输入的日期时间来自不同的时区?那么 pendulum 库可能对你有用。
-
@BillBell 我已经更新了我的答案以反映,谢谢!
-
不客气!
标签: python python-3.x discord.py