Skip to content

Commit ee226ba

Browse files
authored
Submissions to bot via leetcode links (#2)
1 parent 6ac3c57 commit ee226ba

File tree

3 files changed

+58
-11
lines changed

3 files changed

+58
-11
lines changed

src/bot.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from datetime import datetime
22
from pydantic import BaseModel
33
import requests
4-
from src.common import submission_link
4+
from src.common import submission_link, extract_submission_id
55

66

77
LEETCODE_DAILY_GROUP_ID = '-1002270137956'
@@ -44,23 +44,24 @@ def process_message(bot, db, data):
4444
name = f'{first_name} ({username})'
4545

4646
if text.startswith('/start') or text.startswith('/help'):
47-
bot.send_message(chat_id, "Please, send me a submission id for today's daily challenge")
48-
elif text.isnumeric():
49-
submission_id = text
47+
bot.send_message(chat_id, "Please, send me a submission id or a link to a submission for today's daily challenge")
48+
return
49+
50+
submission_id = extract_submission_id(text.strip())
5051

51-
if submission_id.isnumeric():
52+
if submission_id:
5253
print(f"Will update submissions for {username} on {today}: {text}")
5354
result = db.submissions.update_one(
5455
{'username': name, 'date': today, 'chat_id': chat_id},
55-
{'$set': {'text': text}},
56+
{'$set': {'text': submission_id}},
5657
True,
5758
)
5859

59-
print(username, today, text, result)
60-
bot.send_message(chat_id, f"Updated submission for {today}: {submission_link(text)}")
61-
bot.send_message(LEETCODE_DAILY_GROUP_ID, f"New submission from {name}: {submission_link(text)}")
60+
print(username, today, submission_id, result)
61+
bot.send_message(chat_id, f"Updated submission for {today}: {submission_link(submission_id)}")
62+
bot.send_message(LEETCODE_DAILY_GROUP_ID, f"New submission from {name}: {submission_link(submission_id)}")
6263
else:
63-
bot.send_message(chat_id, "Incorrect input! please send me a submission id")
64+
bot.send_message(chat_id, "Incorrect input! Please, send me a submission id or a link to a submission")
6465
raise ValueError(f"Incorrect link {data}")
6566

6667
except Exception as e:

src/common.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,22 @@
1+
import re
2+
3+
14
def submission_link(submission_id):
25
return f'https://leetcode.com/submissions/detail/{submission_id}'
6+
7+
8+
def extract_submission_id(text: str) -> str:
9+
if text.isnumeric():
10+
return text
11+
12+
for link_pattern in (
13+
r'https://leetcode.com/submissions/detail/\d+/?$',
14+
r'https://leetcode.com/problems/[a-zA-Z0-9-]+/submissions/\d+/?$'
15+
):
16+
p = re.compile(link_pattern)
17+
if match := p.search(text):
18+
link = match.group()
19+
# we do know that an id exists here, as each pattern has \d+ qualifier
20+
return re.findall(r'\d+', link)[-1]
21+
22+
return ''

tests/test_utils.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,31 @@
1-
from src.common import submission_link
1+
from src.common import submission_link, extract_submission_id
22

33

44
def test_submission_link():
55
assert submission_link(123) == 'https://leetcode.com/submissions/detail/123'
6+
7+
8+
def test_extract_submission_id():
9+
assert extract_submission_id('1242352') == '1242352'
10+
assert extract_submission_id('1') == '1'
11+
12+
assert extract_submission_id('https://leetcode.com/submissions/detail/123') == '123'
13+
assert extract_submission_id('https://leetcode.com/submissions/detail/123/') == '123'
14+
assert extract_submission_id('https://leetcode.com/submissions/detail/1') == '1'
15+
16+
assert extract_submission_id('https://leetcode.com/problems/two-sum/submissions/123') == '123'
17+
assert extract_submission_id('https://leetcode.com/problems/two-sum/submissions/123/') == '123'
18+
assert extract_submission_id('https://leetcode.com/problems/two-sum/submissions/1/') == '1'
19+
assert extract_submission_id('https://leetcode.com/problems/some-longer-problem-here/submissions/123') == '123'
20+
assert extract_submission_id('https://leetcode.com/problems/problem-with-69-numbers/submissions/123/') == '123'
21+
assert extract_submission_id('https://leetcode.com/problems/ii-112-645-32-sdfwsd-435-sad/submissions/123') == '123'
22+
assert extract_submission_id('https://leetcode.com/problems/a/submissions/123') == '123'
23+
24+
assert not extract_submission_id('')
25+
assert not extract_submission_id('awewaefaw')
26+
assert not extract_submission_id(' ')
27+
assert not extract_submission_id('https://leetcode.com/submissions/detail/')
28+
assert not extract_submission_id('https://leetcode.com/problems/two-sum/submissions/')
29+
assert not extract_submission_id('https://leetcode.com/problems/54323423')
30+
assert not extract_submission_id('https://leetcode.com/problems/submissions/123')
31+
assert not extract_submission_id('https://leetcode.com/problems//submissions/123')

0 commit comments

Comments
 (0)