37 lines
872 B
Python
37 lines
872 B
Python
|
import asyncio
|
||
|
|
||
|
|
||
|
class ChatFollowing:
|
||
|
queue = asyncio.Queue()
|
||
|
|
||
|
def __init__(self, chat_id):
|
||
|
self.chat_id = chat_id
|
||
|
|
||
|
|
||
|
class MessagesStorage:
|
||
|
lock = asyncio.Lock()
|
||
|
chats = []
|
||
|
|
||
|
@staticmethod
|
||
|
async def register_chat(chat):
|
||
|
async with MessagesStorage.lock:
|
||
|
MessagesStorage.chats.append(chat)
|
||
|
|
||
|
@staticmethod
|
||
|
async def remove_chat(chat):
|
||
|
async with MessagesStorage.lock:
|
||
|
MessagesStorage.chats.remove(chat)
|
||
|
|
||
|
@staticmethod
|
||
|
async def put(message_result):
|
||
|
async with MessagesStorage.lock:
|
||
|
for chat in MessagesStorage.chats:
|
||
|
if message_result.message["chatId"] == chat.chat_id:
|
||
|
chat.queue.put_nowait(message_result)
|
||
|
|
||
|
|
||
|
class MessageResult:
|
||
|
def __init__(self, status, message):
|
||
|
self.status = status
|
||
|
self.message = message
|