big update
This commit is contained in:
33
db.py
Normal file
33
db.py
Normal file
@@ -0,0 +1,33 @@
|
||||
from ZODB import DB
|
||||
from ZODB.Connection import Connection
|
||||
from ZODB.FileStorage import FileStorage
|
||||
from persistent import Persistent
|
||||
from persistent.mapping import PersistentMapping
|
||||
from transaction import commit
|
||||
from telegram import Message, Chat
|
||||
|
||||
|
||||
def get_conn(read_only=False) -> Connection:
|
||||
storage = FileStorage('users.fs', read_only=read_only)
|
||||
db = DB(storage)
|
||||
conn = db.open()
|
||||
if not hasattr(conn.root, 'subscribers'):
|
||||
conn.root.subscribers = PersistentMapping()
|
||||
return conn
|
||||
|
||||
|
||||
class Subscriber(Persistent):
|
||||
def __init__(self, user_id, name):
|
||||
self.uid = user_id
|
||||
self.name = name
|
||||
|
||||
def update_from_message(self, m: Message):
|
||||
self.name = Subscriber.get_name(m.chat)
|
||||
|
||||
@classmethod
|
||||
def get_name(cls, chat: Chat):
|
||||
return f'{chat.first_name or ""} {chat.last_name or ""} {chat.title or ""}'.strip()
|
||||
|
||||
@classmethod
|
||||
def from_chat(cls, chat: Chat):
|
||||
return cls(chat.id, cls.get_name(chat))
|
Reference in New Issue
Block a user