Изучая Aiogram, мне стало понятно, что лимиты для тг-ботов достаточно большие, поэтому с их помощью можно хранить объемные данные
Немного покопавшись, я создал библиотеку, для того, чтобы было проще работать с данными
Репозиторий на Гитхабе: https://github.com/dima-doroshenko/aiostorage
Пример использования
import asyncio
from os import getenv
from aiostorage import Storage, DefaultMemory
# Получить токен бота можно через @BotFather
TOKEN = getenv("BOT_TOKEN")
# Сначала создайте чат с ботом
# ID чата - ваш ID или юзернейм
CHAT_ID = getenv("CHAT_ID")
storage = Storage(
bot_token=TOKEN,
chat_id=CHAT_ID,
memory=DefaultMemory()
)
async def main() -> None:
await storage.init()
asyncio.run(main())
Загрузка данных
Ключи (key) в дальнейшем будут использоваться, чтобы получить загруженные данные (value)
await storage.upload_from_bytes('key 1', b'value')
# В виде байтов
await storage.upload_from_text('key 2', 'value')
# В виде текста
await storage.upload_file('file.txt', 'key 3')
# Файлом
Скачивание данных
await storage.download_as_bytes('key 1')
# >>> b'value'
await storage.download_as_text('key 2')
# >>> 'value'
await storage.downlaod_file('key 3', 'newfile.txt')
# Данные из файла 'file.txt' будут записаны в 'newfile.txt'
Другие методы
await storage.delete('key 3')
# удаление ключа
await storage.objects() # Список всех объектов
# >>> ('key 1', 'key 2')
await storage.get_size_of('key 1') # Размер объекта в байтах
# >>> 5
Если при создании объекта класса Storage параметр memory будет передан как DefaultMemory(), то создастся json-файл, в котором будут записываться все ключи и значения. Я добавил возможность перенести так называемую память в БД Sqlite или SqlAlchemy (подробней можете почитать на Гитхабе)