_query.py
中
day_delta = (query_day - datetime.datetime.today()).days
query_day
是不包含时分秒信息的,而datetime.datetime.today()
包含时分秒信息,这样先做差后取天的结果就会有不足一天的情况从而被舍掉,导致计算出来的天数差-1(比如query_day
为20号datetime.datetime.today()
为19号中午12点,这样做差会得到0天12小时,取days为0,和实际1不符)
建议改为
day_delta = query_day.day - datetime.datetime.today().day (丢人)
(query_day.date() - datetime.datetime.now().date()).days
========================================================
另外,在我改好后命令输入赛程 ^[0-9]$
时,会返回两条信息,一条今天,一条计算后的那天,不知道就是这么设计的还是bug
命令输入赛程 [4位数,比如0221]
时,会正常返回一条信息,就是那天的赛程,但是控制台报错
02-20 14:47:11 [ERROR] nonebot | Running matcher <Matcher from esports, type=message, priority=1, temp=False> failed.
Traceback (most recent call last):
File "bot.py", line 39, in
nonebot.run(app="bot:app")
File "/home/.local/lib/python3.8/site-packages/nonebot/init.py", line 217, in run
get_driver().run(host, port, *args, **kwargs)
File "/home/.local/lib/python3.8/site-packages/nonebot/drivers/fastapi.py", line 118, in run
uvicorn.run(app or self.server_app,
File "/usr/local/lib/python3.8/site-packages/uvicorn/main.py", line 362, in run
server.run()
File "/usr/local/lib/python3.8/site-packages/uvicorn/main.py", line 390, in run
loop.run_until_complete(self.serve(sockets=sockets))
File "/home/.local/lib/python3.8/site-packages/nonebot/message.py", line 170, in run_matcher
await matcher.run(bot, event, state)
File "/home/.local/lib/python3.8/site-packages/nonebot/matcher.py", line 496, in run
await self.run_handler(handler, bot, event, state)
File "/home/.local/lib/python3.8/site-packages/nonebot/matcher.py", line 481, in run_handler
await handler(
File "/home/.local/lib/python3.8/site-packages/nonebot/matcher.py", line 365, in wrapper
await matcher.run_handler(func, bot, event, state)
File "/home/.local/lib/python3.8/site-packages/nonebot/matcher.py", line 481, in run_handler
await handler(
File "src/plugins/esports/_query.py", line 80, in handle_event
query_day = datetime.datetime.strptime(args, "%Y%m%d")
File "/usr/local/lib/python3.8/_strptime.py", line 568, in _strptime_datetime
tt, fraction, gmtoff_fraction = _strptime(data_string, format)
File "/usr/local/lib/python3.8/_strptime.py", line 349, in _strptime
raise ValueError("time data %r does not match format %r" %
ValueError: time data '21' does not match format '%Y%m%d'
命令输入赛程 [8位数,比如20210222]
时,会返回两条信息,一条是 21020202赛程:比赛数据也不对,另一条是20210222赛程,并且控制台也会报错
02-20 14:47:44 [ERROR] nonebot | Running matcher <Matcher from esports, type=message, priority=1, temp=False> failed.
Traceback (most recent call last):
File "bot.py", line 39, in
nonebot.run(app="bot:app")
File "/home/.local/lib/python3.8/site-packages/nonebot/init.py", line 217, in run
get_driver().run(host, port, *args, **kwargs)
File "/home/.local/lib/python3.8/site-packages/nonebot/drivers/fastapi.py", line 118, in run
uvicorn.run(app or self.server_app,
File "/usr/local/lib/python3.8/site-packages/uvicorn/main.py", line 362, in run
server.run()
File "/usr/local/lib/python3.8/site-packages/uvicorn/main.py", line 390, in run
loop.run_until_complete(self.serve(sockets=sockets))
File "/home/.local/lib/python3.8/site-packages/nonebot/message.py", line 170, in run_matcher
await matcher.run(bot, event, state)
File "/home/.local/lib/python3.8/site-packages/nonebot/matcher.py", line 496, in run
await self.run_handler(handler, bot, event, state)
File "/home/.local/lib/python3.8/site-packages/nonebot/matcher.py", line 481, in run_handler
await handler(
File "/home/.local/lib/python3.8/site-packages/nonebot/matcher.py", line 365, in wrapper
await matcher.run_handler(func, bot, event, state)
File "/home/.local/lib/python3.8/site-packages/nonebot/matcher.py", line 481, in run_handler
await handler(
File "src/plugins/esports/_query.py", line 80, in handle_event
query_day = datetime.datetime.strptime(args, "%Y%m%d")
File "/usr/local/lib/python3.8/_strptime.py", line 568, in _strptime_datetime
tt, fraction, gmtoff_fraction = _strptime(data_string, format)
File "/usr/local/lib/python3.8/_strptime.py", line 349, in _strptime
raise ValueError("time data %r does not match format %r" %
ValueError: time data '22' does not match format '%Y%m%d'
==========================
我现在有点懵(X_X),手头环境也不方便debug,所以只能来发issue啦