【发布时间】:2021-08-18 20:42:40
【问题描述】:
我已经编写了一段时间的不和谐机器人,我想做一个语音活动跟踪。
问题是,网上几乎没有这方面的文档。我使用this 作为基础,但我更改了很多代码以使其成为“每个服务器”。我至少有 2 个问题。
第一个是因为日期时间,例如,如果用户在 11:45 加入语音频道并在 00:45 离开,结果将是
"guild_id": {
"user_id": "-1 day, ..."
}
因为运算是 11 - (~25)。
我的第二个问题也是因为日期时间,
如果用户在语音中的时间超过 24 小时,我会收到这种错误:
这是我的代码:
@commands.Cog.listener()
async def on_voice_state_update(self, member, before, after):
with open('data/voice_leaderboard.json', 'r') as file:
voice_data = json.load(file)
new_user = str(member.id)
guild_id = str(member.guild.id)
# Update existing user
if new_user in voice_data[guild_id]:
voice_leave_time = datetime.datetime.now().time().strftime('%H:%M:%S')
voice_join_time = voice_data[guild_id][new_user]
calculate_time = (datetime.datetime.strptime(voice_leave_time, '%H:%M:%S') - datetime.datetime.strptime(voice_join_time, '%H:%M:%S'))
voice_data[guild_id][new_user] = str(calculate_time)
with open('data/voice_leaderboard.json', 'w') as update_user_data:
json.dump(voice_data, update_user_data, indent=4)
# Add new user
else:
if member.bot:
return
else:
new_voice_join_time = datetime.datetime.utcnow().strftime('%H:%M:%S')
voice_data[guild_id][new_user] = new_voice_join_time
with open('data/voice_leaderboard.json', 'w') as new_user_data:
json.dump(voice_data, new_user_data, indent=4)
这是 json 文件的一部分:
{
"749948728248631297": {
"437265873401544705": "0:06:49"
},
我不知道如何通过使用 discord.js 来解决这两个问题,但这不是我想要的,所以如果有人知道我该怎么做,请帮助我
【问题讨论】:
-
请将您的问题限制在每个 How to Ask 的单一、可回答的查询中。提出两个或更多不同问题的问题被认为过于宽泛,不适合 Stack Overflow Q&A 格式。
标签: python discord discord.py