Skip to content
This repository was archived by the owner on Dec 2, 2024. It is now read-only.
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions .env.example

This file was deleted.

4 changes: 2 additions & 2 deletions MeowerBot/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@
# Public library imports
from . import bot as botm

from .bot import Bot, cbids, CallBackIds
from .bot import Bot, CallBackIds

__all__ = ["__version__", "Bot", "botm", "cbids", "CallBackIds"]
__all__ = ["__version__", "Bot", "botm", "CallBackIds"]
51 changes: 10 additions & 41 deletions MeowerBot/_cache.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,23 @@
import time
from typing import Dict, List, Tuple
from typing import Dict, Tuple, Any

from MeowerBot.context import Chat, PartialChat, PartialUser, User
from MeowerBot.context import Chat, User
from MeowerBot.data.generic import UUID

# 5 hours
CASHE_EXPIRATION = 60 * 60 * 5


class Cache:
chats: Dict[UUID, Tuple[float, Chat | PartialChat]]
users: Dict[str, Tuple[float, User | PartialUser]]
bots: Dict[str, float]
chats: Dict[str, Tuple[float, Chat]]
users: Dict[str, Tuple[float, User]]

def __init__(self):
self.bots = {}
self.chats = {}
self.users = {}

def get_user(self, user_id: str) -> User | PartialUser | None:
def get_user(self, user_id: str) -> User | None | bool:
if user_id not in self.users:
return None

Expand All @@ -27,6 +26,10 @@ def get_user(self, user_id: str) -> User | PartialUser | None:
self.users.pop(user_id)
return None

if not isinstance(user[1], User):
self.users.pop(user_id)
return False

return user[1]

def add_user(self, user: User):
Expand All @@ -38,7 +41,7 @@ def add_user(self, user: User):

self.users[user.id] = (time.time(), user)

def get_chat(self, chat_id: UUID) -> Chat | PartialChat | None:
def get_chat(self, chat_id: UUID) -> Chat | None:
if chat_id not in self.chats:
return None

Expand All @@ -59,38 +62,4 @@ def add_chat(self, chat: Chat):

self.chats[chat.id] = (time.time(), chat)

def try_clear_bots(self):
ret = []
rem = []
for username, timeout in self.bots.items():
if timeout + CASHE_EXPIRATION < time.time():
rem.append(username)
continue

ret.append(username)

for user in rem:
del self.bots[user]

return ret

def add_bot(self, user):
if user in self.bots:
self.bots[user] = time.time()
return

self.bots[user] = time.time()
if user not in self.users:
return

self.users[user][1].is_bot = True

def remove_bot(self, user):
if user not in self.bots:
return

del self.bots[user]
if user not in self.users:
return

self.users[user][1].is_bot = False
2 changes: 1 addition & 1 deletion MeowerBot/_version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = '3.3.2'
__version__ = '4.0.0-alpha.2'
6 changes: 5 additions & 1 deletion MeowerBot/api/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
from ..data.api.chats import ChatGroup
from ..data.api.reports import PagedRequest
from ..data.api.user import (
Relationship
Relationship,
User as RawUser
)
from ..data.generic import Post

Expand All @@ -26,6 +27,9 @@ async def _get(self, username, url, page=1, query=None, params=None):

return await self.client.get(urljoin(f"/users/{username}/", url), params={"q": query, "p": page, **params})

async def get(self, username: str):
return api_resp(RawUser, await self._get(username, ""))

async def get_posts(self, username, query, page=1):
return api_resp(PagedRequest[Post], await self._get(username, "posts", query=query, page=page, params={"autoget": None}))

Expand Down
Loading