Бесконечное хранилище данных в Telegram

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

Источник: https://habr.com/ru/articles/878602/


Интересные статьи

Интересные статьи

Проведение экспериментов в IT-инфраструктуре стало важной практикой для повышения надежности и устойчивости систем. Пользователи ожидают мгновенного отклика и безотказной работы приложений, и даже неб...
Эффективность управления командировками зависит от множества факторов, включая использование подходящих инструментов и правильную организацию документооборота. Важно наладить этот процесс от разработк...
За годы работы разработчиком iOS, я собрал множество инструментов и полезных штук, которые облегчают процесс разработки. В этой статье, я хочу поделиться одним из таких инструментов. Это будет не боль...
VUE.JS - это javascript фрэймворк, с версии 18.5 его добавили в ядро битрикса, поэтому можно его использовать из коробки.
В «1С-Битрикс» считают: современный интернет-магазин должен быть визуально привлекательным, адаптированным для просмотра с мобильных устройств и максимально персонализированным с помощью технологии Бо...