【问题标题】:How to count time for members connected to my discord如何计算与我的不和谐相关的成员的时间
【发布时间】:2021-05-24 01:43:42
【问题描述】:

我目前正在尝试使用 python 中的 discord bot 计算我的 discord 的活跃成员的时间。我将成员名称和 timedelta 写入文件。 我的问题是如何从文件中读取这个 timedelta?我知道 datetime.datetime 有 strptime 方法,但 datetime.timedelta 没有。 除了切片并将其作为参数传递给 timedelta 构造函数之外还有什么想法吗?

for a in self.members:
        if not a.bot:
            self.member_timers[a.name] = {}
            self.member_timers[a.name]['Time'] = None
            self.member_timers[a.name]['Stop'] = None
            self.member_timers[a.name]['Start'] = None
    self.read()

def read(self):
    lines = []
    with open(f'logi', 'r') as f:
        lines = f.readlines()
        f.close()
    print(lines)
    line = lines[0].split()
    
def write(self):
    with open(f'logi', 'w') as f:
        for mem in self.members:
            if not mem.bot and self.member_timers[mem.name]['Time'] != None:
                f.write("{} {}\n".format(mem.name, self.member_timers[mem.name]['Time']))

def start_timer(self, member):
    if self.member_timers[member.name]['Start'] == None:
        self.member_timers[member.name]['Start'] = datetime.datetime.now()
    else:
        #policz mu czas zeby nie stracic
        self.count_time(member.name)
        self.member_timers[member.name]['Start'] = datetime.datetime.now()
        pass

def stop_timer(self, member):
    if self.member_timers[member.name]['Start'] != None:
        self.member_timers[member.name]['Stop'] = datetime.datetime.now()
        self.count_time(member.name)

def count_time(self, name):
    if self.member_timers[name]['Start'] != None and self.member_timers[name]['Stop'] != None:
        if self.member_timers[name]['Time'] == None:
            self.member_timers[name]['Time'] = self.member_timers[name]['Stop'] - self.member_timers[name]['Start']
        else:
            self.member_timers[name]['Time'] += self.member_timers[name]['Stop'] - self.member_timers[name]['Start']
        self.member_timers[name]['Start'] = None
        self.member_timers[name]['Stop'] = None

因此,当从文件读取时,我想为成员创建 timedelta 对象,以便以后比较它是否大于我分配的任何角色 timedelta。

【问题讨论】:

  • 欢迎来到 Stack Overflow。发布问题时的几件事。 1. 向我们展示您的代码。 2. 共享样本数据。 3. 分享预期产出。 4.检查是否已经问过类似的问题。如果是这样,您已经在其他线程中有答案。我建议先做#4。
  • 对于您的问题,您需要先阅读数据。它将读取为字符串。然后使用strptime转换为日期时间
  • 使用 strptime 可以获得 datetime 对象,我需要 timedelta。
  • 分享样本数据,以便我回答。看起来你想根据时间点做一个时间增量。一旦我有更多信息,可以提供建议

标签: python discord.py


【解决方案1】:

我认为您应该考虑存储时间戳而不是存储 timedelta 对象。

您可以使用ts = datetime.datetime.timestamp(datetime.datetime.now()) 获取存储在字典中的浮点数(如果您只对秒感兴趣,可以将其转换为整数)。

要阅读它,您可以使用datetime.datetime.fromtimestamp(ts),这将为您提供与您在上面创建的时间戳相对应的datetime.datetime 对象

参考资料:

https://docs.python.org/3/library/datetime.html?highlight=timestamp#datetime.datetime.timestamp https://docs.python.org/3/library/datetime.html?highlight=fromtimestamp#datetime.datetime.fromtimestamp

【讨论】:

    猜你喜欢
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2020-03-14
    • 2021-02-16
    • 1970-01-01
    • 2021-02-26
    • 2020-05-10
    相关资源
    最近更新 更多