Source code for scratchattach.eventhandlers.message_events

"""MessageEvents class"""
from __future__ import annotations

from scratchattach.site import user
from ._base import BaseEventHandler
import time

[docs] class MessageEvents(BaseEventHandler): """ Class that calls events when you receive messages on your Scratch account. Data fetched from Scratch's API. """
[docs] def __init__(self, user, *, update_interval=2): super().__init__() self.user = user self.current_message_count = 0 self.update_interval = update_interval
[docs] def _updater(self): """ A process that listens for cloud activity and executes events on cloud activity """ self.current_message_count = int(self.user.message_count()) self.call_event("on_ready") while True: if self.running is False: return message_count = int(self.user.message_count()) if message_count != self.current_message_count: self.call_event("on_count_change", [int(self.current_message_count), int(message_count)]) if message_count != 0: if message_count < self.current_message_count: self.current_message_count = 0 if self.user._session is not None: # authentication check if self.user._session.username == self.user.username: # authorization check new_messages = self.user._session.messages(limit=message_count-self.current_message_count) for message in new_messages[::-1]: self.call_event("on_message", [message]) self.current_message_count = int(message_count) time.sleep(self.update_interval)