forked from NeonGamerBot-QK/8-ball-reincarnated
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path8ball.py
More file actions
106 lines (85 loc) · 2.71 KB
/
8ball.py
File metadata and controls
106 lines (85 loc) · 2.71 KB
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import slack_sdk
from slack_sdk.errors import SlackApiError
import os
import openai
from flask import Flask, request
from slackeventsapi import SlackEventAdapter
import random
from prompt import system_prompt
import re
# Load environment variables
from dotenv import load_dotenv
load_dotenv()
def message(payload):
channel = payload.get('channel')
print(channel)
uid = payload.get('user')
text = payload.get('text')
msgid = payload.get('client_msg_id')
text = re.sub(r'<@.+>', '', text)
can_post = msgid not in postedMSGS
if not can_post:
print('Cannot post')
return
print(postedMSGS)
postedMSGS.add(msgid)
generateAndPostMsg(text, channel=channel)
def generate_msg(text):
try:
new_prompt = system_prompt.copy()
new_prompt.append({"role":"user","content":text})
response = openai_client.chat.completions.create(
model="gpt-3.5-turbo",
messages=new_prompt,
response_format={
"type": "text"
},
temperature=1.4,
max_tokens=256,
top_p=0.54,
frequency_penalty=2,
presence_penalty=0
)
print("RETURN:",response.choices[0].message)
result = response.choices[0].message.content
print("OPENAI RESPONSE:", response)
return result
except Exception as e:
print(e)
return "An error occurred: " + str(e)
def generateAndPostMsg(text, channel):
try:
result = generate_msg(text)
client.chat_postMessage(channel=channel, text=result)
except Exception as exc:
client.chat_postMessage(channel=channel, text="An error occurred: " + str(exc))
slack_token = os.getenv('SLACK_TOKEN')
signing_secret = os.getenv('SIGNING_SECRET')
openai_api_key = os.getenv('OPENAI_API_KEY')
app = Flask(__name__)
client = slack_sdk.WebClient(token=slack_token)
slack_event_adapter = SlackEventAdapter(signing_secret, '/slack/events', app)
openai_client = openai.OpenAI(api_key=openai_api_key)
postedMSGS = set()
announce = True
@slack_event_adapter.on('message')
def slack_events():
payload = request.get_json()
print(payload)
message(payload)
@slack_event_adapter.on('app_mention')
def app_mention(payload):
message(payload.get('event'))
def run_server():
print('running server on port', os.getenv("PORT"))
app.run(host='0.0.0.0', port=os.getenv("PORT"),debug=True)
if __name__ == "__main__":
try:
if announce:
client.chat_postMessage(
channel="#8-ball-reincarnated-testing",
text="The 8-ball has risen :skull:"
)
except Exception as e:
print(e)
run_server()