aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBobby <[email protected]>2023-05-18 03:32:33 -0400
committerBobby <[email protected]>2023-05-18 03:32:33 -0400
commitb532de2f3b0ad75cb3eda787fb49b64e8c4ee032 (patch)
treec40cfd657397a8e898c5a2c8e64036cb8287a1ee
parent488b7ee1233aefbb7bb70ee5958676f852139025 (diff)
downloadthatcomputerscientist-b532de2f3b0ad75cb3eda787fb49b64e8c4ee032.tar.xz
thatcomputerscientist-b532de2f3b0ad75cb3eda787fb49b64e8c4ee032.zip
Single Skippy Notification on Lonely chat
-rw-r--r--chat/ai.py18
-rw-r--r--chat/consumers.py43
-rw-r--r--chat/skippy.py9
-rw-r--r--ignis/views.py18
4 files changed, 33 insertions, 55 deletions
diff --git a/chat/ai.py b/chat/ai.py
deleted file mode 100644
index 494f6357..00000000
--- a/chat/ai.py
+++ /dev/null
@@ -1,18 +0,0 @@
-
-import redis
-from .chat_cache import get_user_messages, save_user_messages
-
-r = redis.Redis(host='localhost', port=6379, db=0)
-subsequent_message = "I told you, no one's around. Stop talking to yourself, you weirdo!"
-
-def invokeMFSkippy(message, identifier):
- save_user_messages(user_identifier=identifier, message={'content': message, 'role': 'user'})
- user_messages = get_user_messages(user_identifier=identifier)
- if len(user_messages) == 1:
- return "Skippy here. No one's around, you lonely rat!"
- elif len(user_messages) == 2:
- return "I told you, no one's around. Stop talking to yourself, you weirdo!"
- elif len(user_messages) == 3:
- return "I'm not going to respond to you anymore. Not only are you a weirdo, you're also relentlesslly annoying."
- else:
- return None \ No newline at end of file
diff --git a/chat/consumers.py b/chat/consumers.py
index 5b0e7ddf..0b3017c4 100644
--- a/chat/consumers.py
+++ b/chat/consumers.py
@@ -1,45 +1,50 @@
import json
-from channels.generic.websocket import AsyncWebsocketConsumer
+from channels.generic.websocket import WebsocketConsumer
+from asgiref.sync import async_to_sync
from .chat_cache import handle_connect, handle_disconnect, handle_alone_user, discard_user_messages
-from .ai import invokeMFSkippy
+from .skippy import invokeMFSkippy
-class ChatConsumer(AsyncWebsocketConsumer):
- async def connect(self):
- self.room_group_name = 'chat'
- await self.channel_layer.group_add(self.room_group_name, self.channel_name)
- await self.accept()
+class ChatConsumer(WebsocketConsumer):
+ def connect(self):
+ self.room_group_name = "chat"
+ # Join room group
+ async_to_sync(self.channel_layer.group_add)(
+ self.room_group_name, self.channel_name
+ )
+
+ self.accept()
handle_connect()
- async def disconnect(self, close_code):
+ def disconnect(self, close_code):
# Leave room group
- await self.channel_layer.group_discard(self.room_group_name, self.channel_name)
+ async_to_sync(self.channel_layer.group_discard)(
+ self.room_group_name, self.channel_name
+ )
handle_disconnect()
discard_user_messages(user_identifier=self.channel_name)
- async def receive(self, text_data):
+ def receive(self, text_data):
text_data_json = json.loads(text_data)
message = text_data_json['message']
username = text_data_json['username']
# Send message to room group
- await self.channel_layer.group_send(
+ async_to_sync(self.channel_layer.group_send)(
self.room_group_name, {"type": "chat", "message": message, "username": username}
)
is_alone_user = handle_alone_user()
if is_alone_user:
- bot_response = invokeMFSkippy(message=message, identifier=self.channel_name)
- if bot_response:
- await self.channel_layer.group_send(
- self.room_group_name, {"type": "chat", "message": bot_response, "username": "Skippy"}
+ skippy_message = invokeMFSkippy(message=message, identifier=self.channel_name)
+ if skippy_message:
+ async_to_sync(self.channel_layer.group_send)(
+ self.room_group_name, {"type": "chat", "message": skippy_message, "username": "Skippy"}
)
- else:
- discard_user_messages(user_identifier=self.channel_name)
# Receive message from room group
- async def chat(self, event):
+ def chat(self, event):
message = event["message"]
username = event["username"]
# Send message to WebSocket
- await self.send(text_data=json.dumps({"message": message, "username": username}))
+ self.send(text_data=json.dumps({"message": message, "username": username}))
diff --git a/chat/skippy.py b/chat/skippy.py
new file mode 100644
index 00000000..bf6ab6ac
--- /dev/null
+++ b/chat/skippy.py
@@ -0,0 +1,9 @@
+from .chat_cache import get_user_messages, save_user_messages
+
+def invokeMFSkippy(message, identifier):
+ save_user_messages(user_identifier=identifier, message={'content': message, 'role': 'user'})
+ user_messages = get_user_messages(user_identifier=identifier)
+ if len(user_messages) == 1:
+ return "Skippy here. No one's around, you are free to browse around or keep sending messages like a weirdo. Bye."
+ else:
+ return None
diff --git a/ignis/views.py b/ignis/views.py
index c2520331..8a9b9894 100644
--- a/ignis/views.py
+++ b/ignis/views.py
@@ -9,7 +9,6 @@ import requests
from django.core.files.base import ContentFile
from captcha.image import ImageCaptcha
from users.tokens import CaptchaTokenGenerator
-from django.conf import settings
from django.http import HttpResponse
from django.views.decorators.cache import never_cache
from PIL import Image
@@ -187,23 +186,6 @@ def get_screenshot(request):
# Wait until the page is loaded
driver.get(url)
time.sleep(5)
-
- # write 3 chat messages in #chatbox-input
- chatbox = driver.find_element('id', 'chatbox-input')
- chatbox.send_keys('Hello!')
- time.sleep(0.1)
- chatbox.send_keys(u'\ue007')
- time.sleep(0.5)
-
- chatbox.send_keys('Welcome to my website!')
- time.sleep(0.1)
- chatbox.send_keys(u'\ue007')
- time.sleep(0.5)
-
- chatbox.send_keys('You are currently viewing a dynamically generated screenshot of my website!')
- time.sleep(0.1)
- chatbox.send_keys(u'\ue007')
- time.sleep(0.5)
screenshot = driver.get_screenshot_as_png()
screenshot = Image.open(BytesIO(screenshot))