如何计算与我的不和谐相关的成员的时间

Posted

技术标签:

【中文标题】如何计算与我的不和谐相关的成员的时间【英文标题】: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转换为日期时间 也看看这个帖子...***.com/questions/39250152/… 使用 strptime 可以获得 datetime 对象,我需要 timedelta。 分享样本数据,以便我回答。看起来你想根据时间点做一个时间增量。一旦我有更多信息,可以提供建议 【参考方案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

【讨论】:

以上是关于如何计算与我的不和谐相关的成员的时间的主要内容,如果未能解决你的问题,请参考以下文章

截至今天,我的不和谐机器人无法找到我的成员

如何修剪没有特定角色的不和谐用户?

我试图向我的不和谐机器人添加播放命令,但是

我的不和谐机器人上的数据库(Discord.js + mysql)

我的不和谐机器人出现错误,请告诉我如何修复

如何让我的不和谐机器人回复“跟进”消息