-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
81 lines (58 loc) · 2.47 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/usr/bin/env python3
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import logging
import re
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
from slack_bolt.middleware import IgnoringSelfEvents
from lib.api.google.language import analyze_entities, analyze_sentiment
from message import (check_keyword, check_member, process_message,
process_message_for_keyword, process_score)
from utils import get_slack_app_token, get_slack_bot_token
def setup_logging():
"""Setup logging configuration."""
log_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
logging.basicConfig(level=logging.DEBUG, format=log_format)
def setup_app() -> App:
try:
app = App(token=get_slack_bot_token())
app.middleware(IgnoringSelfEvents())
return app
except Exception as e:
logging.error(f"Failed to setup the app: {e}")
def setup_message_listeners(app):
@app.message()
def message(message, say):
processed_message = process_message(message)
logging.debug(f"Sentinment Score: {processed_message['score']}")
logging.debug(f"Entities: {processed_message['entities']}")
say(f"{process_score(processed_message['score'])}")
score, magnitude = analyze_sentiment(message["text"])
entities = analyze_entities(message["text"])
logging.debug(f"Sentiment Score: {score}, Magnitude: {magnitude}")
logging.debug(f"Entities: {entities}")
logging.debug(f"User: {message['user']}")
logging.debug(f"Member: {check_member(message)}")
logging.debug(f"Keywords: {check_keyword(message)}")
say(blocks=process_message_for_keyword(message))
@app.message(re.compile("Help", re.IGNORECASE))
def message_help(message, say):
pass
def setup_slash_command_listeners(app):
@app.command("/help")
def command_echo(ack, say, command):
ack()
say(f"You used the command: {command['command']} with text: {command['text']}")
def main():
setup_logging()
app = setup_app()
if app is not None:
setup_message_listeners(app)
setup_slash_command_listeners(app)
SocketModeHandler(app, get_slack_app_token()).start()
else:
logging.error("Failed to setup the app.")
if __name__ == "__main__":
main()