Изучая 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 (подробней можете почитать на Гитхабе)

Комментарии (5)