Skip to content

Commit 93b5a67

Browse files
committed
initial commit
1 parent b6845bb commit 93b5a67

File tree

5 files changed

+96
-0
lines changed

5 files changed

+96
-0
lines changed

ktp/leetcode-bot/app.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
from flask import Flask, request, jsonify
2+
from slack_sdk import WebClient
3+
from dotenv import load_dotenv
4+
import os
5+
6+
load_dotenv()
7+
8+
app = Flask(__name__)
9+
client = WebClient(token=os.getenv("SLACK_BOT_TOKEN"))
10+
11+
@app.route('/slack/events', methods=['POST'])
12+
def slack_events():
13+
data = request.json
14+
if 'event' in data:
15+
event = data['event']
16+
if event.get('type') == 'message' and 'subtype' not in event:
17+
handle_message(event)
18+
return jsonify({'status': 'ok'}), 200
19+
20+
def handle_message(event):
21+
user_id = event.get('user')
22+
text = event.get('text')
23+
24+
if text and user_id:
25+
update_user_input(user_id)
26+
27+
def update_user_input(user_id):
28+
from datetime import datetime
29+
import sqlite3
30+
31+
conn = sqlite3.connect('database/bot_db.sqlite')
32+
cursor = conn.cursor()
33+
34+
cursor.execute('''
35+
INSERT OR REPLACE INTO users (id, name, last_input)
36+
VALUES (?, ?, ?)
37+
''', (user_id, "User", datetime.now().date()))
38+
39+
conn.commit()
40+
conn.close()
41+
42+
if __name__ == '__main__':
43+
app.run(port=3000)

ktp/leetcode-bot/bot.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import sqlite3
2+
from datetime import datetime, timedelta
3+
from slack_sdk.errors import SlackApiError
4+
5+
def deduct_points():
6+
conn = sqlite3.connect('database/bot_db.sqlite')
7+
cursor = conn.cursor()
8+
9+
today = datetime.now().date()
10+
yesterday = today - timedelta(days=1)
11+
12+
cursor.execute('''
13+
UPDATE users
14+
SET points = points - 10
15+
WHERE last_input < ?
16+
''', (yesterday,))
17+
18+
conn.commit()
19+
20+
cursor.execute('''
21+
SELECT id, points FROM users
22+
WHERE last_input < ?
23+
''', (yesterday,))
24+
25+
for user_id, points in cursor.fetchall():
26+
send_message(user_id, points)
27+
28+
conn.close()
29+
30+
def send_message(user_id, points):
31+
from slack_sdk import WebClient
32+
from dotenv import load_dotenv
33+
34+
load_dotenv()
35+
client = WebClient(token=os.getenv("SLACK_BOT_TOKEN"))
36+
37+
try:
38+
client.chat_postMessage(
39+
channel=user_id,
40+
text=f"Hey <@{user_id}>, you missed your input yesterday! You now have {points} points left."
41+
)
42+
except SlackApiError as e:
43+
print(f"Error sending message: {e.response['error']}")
44+
45+
if __name__ == "__main__":
46+
deduct_points()

ktp/leetcode-bot/cronjob.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from bot import deduct_points
2+
3+
if __name__ == "__main__":
4+
deduct_points()

ktp/leetcode-bot/database/slackbot.db

Whitespace-only changes.

ktp/leetcode-bot/requirements.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Flask==2.0.1
2+
slack_sdk==3.15.0
3+
python-dotenv==0.20.0

0 commit comments

Comments
 (0)