fix(admin): accept /stats with bot mention
This commit is contained in:
1 parent
67b4cd0c70
commit
9d1f7fa3dd
3 files changed
+32
-2
No files matched your search
@@ -1621,7 +1621,10 @@ async def send_owner_stats(bot: Bot, period: str = "day") -> None:
|
||||
await bot.send_rich_message(chat_id=ANALYTICS_CHAT_ID, message_thread_id=ANALYTICS_TOPIC_ID, rich_message=InputRichMessage(html=report))
|
||||
|
||||
|
||||
@admin_router.message(F.text.regexp(r"^/stats(?:\s+(day|week|month|all))?$") )
|
||||
STATS_COMMAND_PATTERN = r"^/stats(?:@\w+)?(?:\s+(day|week|month|all))?$"
|
||||
|
||||
|
||||
@admin_router.message(F.text.regexp(STATS_COMMAND_PATTERN))
|
||||
async def stats_command(message: Message, state: FSMContext) -> None:
|
||||
if message.chat.id != ANALYTICS_CHAT_ID or message.message_thread_id != ANALYTICS_TOPIC_ID:
|
||||
return
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
import re
|
||||
import unittest
|
||||
|
||||
from bot import STATS_COMMAND_PATTERN
|
||||
|
||||
|
||||
class StatsCommandPatternTests(unittest.TestCase):
|
||||
def test_matches_plain_and_mentioned_forms(self):
|
||||
# В группе команду часто отправляют с явным обращением к боту.
|
||||
for text in ("/stats", "/stats@pisatel_posts_bot", "/stats all", "/stats@pisatel_posts_bot week"):
|
||||
with self.subTest(text=text):
|
||||
self.assertIsNotNone(re.match(STATS_COMMAND_PATTERN, text))
|
||||
|
||||
def test_rejects_unknown_arguments(self):
|
||||
for text in ("/stats yearly", "/stats@bot unknown", "stats", "/statsical"):
|
||||
with self.subTest(text=text):
|
||||
self.assertIsNone(re.match(STATS_COMMAND_PATTERN, text))
|
||||
|
||||
def test_period_argument_is_extractable(self):
|
||||
match = re.match(STATS_COMMAND_PATTERN, "/stats@pisatel_posts_bot month")
|
||||
self.assertIsNotNone(match)
|
||||
assert match is not None
|
||||
self.assertEqual(match.group(1), "month")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in new issue
Block a user