Discord bot that shows valorant your daily store by using the Ingame API

Overview

Valorant store checker - Discord Bot

Discord bot that shows valorant your daily store by using the Ingame API. written using Python and the Pycord library

Screenshot

image image

Usage

Command Action
store Shows my daily store

Prerequisites

  • Python 3.6+

Installations

  • Install requirements
pip install -r requirements.txt
  • Store discord bot token in .env and server id for slash command (if private server)
TOKEN=
   
    
SERVER_ID= 
    
     
CHANNEL_LOOP = 
     
       (if you want to loop)

     
    
   
  • Run the bot
python bot.py

Special thanks

Valorant Client API by RumbleMike

for providing a great API about Valorant!

Valorant-API.com

for every skin names and images!

Comments
  • Missing Access HOW TO FIX?

    Missing Access HOW TO FIX?

    Ignoring exception in on_message Traceback (most recent call last): File "C:\Users\USER-PC\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\client.py", line 382, in _run_event await coro(*args, **kwargs) File "C:\Users\USER-PC\Downloads\ValorantStoreChecker-discord-bot-master\ValorantStoreChecker-discord-bot-master\bot.py", line 59, in on_message await bot.register_commands(commands=command, guild_id=message.guild.id, force=True) File "C:\Users\USER-PC\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\bot.py", line 471, in register_commands registered = await register("bulk", data) File "C:\Users\USER-PC\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\http.py", line 351, in request raise Forbidden(response, data) discord.errors.Forbidden: 403 Forbidden (error code: 50001): Missing Access

    everything seems correct but for some reason when i put -setup global or -setup guild it happens

    opened by codsec 37
  • Login Command: decode JSON failed

    Login Command: decode JSON failed

    Using the login command results in an error. image changing the code in https://github.com/staciax/Valorant-DiscordBot/blob/c76f330f2d3d1dc691330e542dab056fc3122dd2/utils/valorant/auth.py#L97 to disable the content_type check to r.json(content_type=None) reveals that the response of the riot games api to https://auth.riotgames.com/api/v1/authorization is returning a 403. I don't know what your source is but the same issue is mentioned here but the suggest fix doesn't work for me. I also found this which might be helpful.

    bug 
    opened by doluk 17
  • ImportError 'TextStyle' from 'discord'

    ImportError 'TextStyle' from 'discord'

    Getting this ImportError while trying to set up bot.

    /Downloads/Valorant-DiscordBot-master/utils/valorant/view.py", line 5, in <module> from discord import Interaction, TextStyle, ui ImportError: cannot import name 'TextStyle' from 'discord' (/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/discord/__init__.py)

    opened by jennck 10
  • account hacked.

    account hacked.

    a friend told me his account's name and pass got changed I asked him if he had 2fa enabled and he said he did but he also used /2fa command I'm not sure if it's related to the bot or not but his acc was Immortal 3 and had lots of skins

    opened by Chan0n 10
  • valorantstore bot no setting up

    valorantstore bot no setting up

    image the bot couldn't setup, its stuck on "setting up..." waited for 30 minutes and still no sign of "setup in guild!" P.S. am a beginner

    opened by ryanfrrl 9
  • got error when using -setup guild

    got error when using -setup guild

    I got a problem when i try to use -setup guild. it says discord.errors.Forbidden: 403 Forbidden (error code: 50001): Missing Access what should i do? image

    opened by Malvian62 8
  • How can I get player_mission and battle_pass?

    How can I get player_mission and battle_pass?

    I found this api -> StoryContract, but it doesn't work! requests return this

    {'httpStatus': 404, 'errorCode': 'RESOURCE_NOT_FOUND', 'message': 'resource not found'}
    

    then I tired url from your repo endpoints

    https://github.com/staciax/Valorant-DiscordBot/blob/cc1e9d8bb2902a71ad674e4840b9fcef7b823763/utils/valorant/endpoint.py#L116

    it return 👇

    {'httpStatus': 400, 'errorCode': 'INVALID_HEADERS', 'message': 'Bad headers used for request'}
    

    so maybe my headers is wrong? what's the correct one?

    async def fetch_contract(u):
        #url="https://pd.ap.a.pvp.net/contract-definitions/v2/definitions/story"
        url=f"https://pd.ap.a.pvp.net/contracts/v1/contracts/"+u['auth_user_id']
        headers = {
            "Content-Type": "application/json",
            "X-Riot-Entitlements-JWT": u['entitlements_token'],
            "Authorization": "Bearer " + u['access_token']
        }
        async with aiohttp.ClientSession() as session:
            async with session.get(url, headers=headers) as response:
                res = json.loads(await response.text())
    
        return res
    
    opened by Aewait 7
  • Cannot connect to host auth.riotgames.com:443

    Cannot connect to host auth.riotgames.com:443

    Capture Cannot connect to host auth.riotgames.com:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)')]

    opened by SploeCyber 7
  • /login issue

    /login issue

    Ive changed the host of the bot and since im facing the issue that the bot is not responding to the /login command - afaik all other command semm to work but I can not test properly since login isnt working for me.

    Console responds with this when using /login:

    Task exception was never retrieved future: <Task finished name='CommandTree-invoker' coro=<CommandTree._from_interaction..wrapper() done, defined at /home/container/.local/lib/python3.10/site-packages/discord/app_commands/tree.py:1087> exception=ValueError('Both or neither of value and tb must be given')> Traceback (most recent call last): File "/home/container/.local/lib/python3.10/site-packages/discord/app_commands/commands.py", line 850, in _do_call return await self._callback(self.binding, interaction, **params) # type: ignore File "/home/container/cogs/valorant.py", line 93, in login authenticate = await auth.authenticate(username, password) File "/home/container/utils/valorant/auth.py", line 120, in authenticate data = await r.json() File "/home/container/.local/lib/python3.10/site-packages/aiohttp/client_reqrep.py", line 1103, in json raise ContentTypeError( aiohttp.client_exceptions.ContentTypeError: 0, message='Attempt to decode JSON with unexpected mimetype: text/html; charset=utf-8', url=URL('https://auth.riotgames.com/api/v1/authorization')

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last): File "/home/container/.local/lib/python3.10/site-packages/discord/app_commands/tree.py", line 1240, in _call await command._invoke_with_namespace(interaction, namespace) File "/home/container/.local/lib/python3.10/site-packages/discord/app_commands/commands.py", line 876, in _invoke_with_namespace return await self._do_call(interaction, transformed_values) File "/home/container/.local/lib/python3.10/site-packages/discord/app_commands/commands.py", line 869, in _do_call raise CommandInvokeError(self, e) from e discord.app_commands.errors.CommandInvokeError: Command 'login' raised an exception: ContentTypeError: 0, message='Attempt to decode JSON with unexpected mimetype: text/html; charset=utf-8', url=URL('https://auth.riotgames.com/api/v1/authorization')

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last): File "/home/container/.local/lib/python3.10/site-packages/discord/app_commands/tree.py", line 1089, in wrapper await self._call(interaction) File "/home/container/.local/lib/python3.10/site-packages/discord/app_commands/tree.py", line 1244, in _call await self.on_error(interaction, e) File "/home/container/cogs/errors.py", line 65, in on_app_command_error traceback.print_exception(type(error), error) File "/usr/local/lib/python3.10/traceback.py", line 116, in print_exception value, tb = _parse_value_tb(exc, value, tb) File "/usr/local/lib/python3.10/traceback.py", line 95, in _parse_value_tb raise ValueError("Both or neither of value and tb must be given") ValueError: Both or neither of value and tb must be given Unclosed client session client_session: <utils.valorant.auth.ClientSession object at 0x7f6af47e6f80> Unclosed connector connections: ['[(<aiohttp.client_proto.ResponseHandler object at 0x7f6af51b29e0>, 58355373.88184868)]'] connector: <aiohttp.connector.TCPConnector object at 0x7f6af47e6d40>

    Any recommendations what I could try to fix this?

    opened by nagisa404 6
  • How can I get price of the skin & its rank?

    How can I get price of the skin & its rank?

    HELLO!

    I'm new in Python,while using valorant-api, I found that the price of the skin and the rank of the skin (not the weapons/skinlevels includes in api,but like epic skin). How can I get the price of the skin and this rank?

    image

    url = f"https://valorant-api.com/v1/weapons/skinlevels/{skinuuid}"
    headers = {'Connection': 'close'}
    res = requests.get(url=url,headers=headers)
    res1 = json.loads(res.text)
    

    the res of this code is👇

    {'status': 200, 'data': {'uuid': 'fc4c3dcb-4f6d-5e8e-3dc3-1695f55d24c2', 'displayName': '王牌戰隊 幻象', 'levelItem': None, 'displayIcon': 'https://media.valorant-api.com/weaponskinlevels/fc4c3dcb-4f6d-5e8e-3dc3-1695f55d24c2/displayicon.png', 'streamedVideo': None, 'assetPath': 'ShooterGame/Content/Equippables/Guns/Rifles/Carbine/Flush/Levels/Carbine_Flush_Lv1_PrimaryAsset'}}
    

    PS: I use ValorantClientAPI to fetch my daily shop

    opened by Aewait 5
  • Can't load emoji

    Can't load emoji

    Bot didn;t load emoji บอทไม่โหลด emoji ครับ

    ไม่สามารถสร้างอีโมจิได้ กรุณาลองอีกครรั้ง ไม่สามารถสร้างอีโมจิได้ กรุณาลองอีกครรั้ง ไม่สามารถสร้างอีโมจิได้ กรุณาลองอีกครรั้ง ไม่สามารถสร้างอีโมจิได้ กรุณาลองอีกครรั้ง ไม่สามารถสร้างอีโมจิได้ กรุณาลองอีกครรั้ง ไม่สามารถสร้างอีโมจิได้ กรุณาลองอีกครรั้ง ไม่สามารถสร้างอีโมจิได้ กรุณาลองอีกครรั้ง Response Status: 200 image_2022-04-30_182949427

    opened by BEERZXD 5
  • /login issue

    /login issue

    BOT IS READY ! Version: 3.3.5 Task exception was never retrieved future: <Task finished name='CommandTree-invoker' coro=<CommandTree._from_interaction..wrapper() done, defined at C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\app_commands\tree.py:1087> exception=TypeError('Subscripted generics cannot be used with class and instance checks')> Traceback (most recent call last): File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\app_commands\commands.py", line 850, in _do_call return await self._callback(self.binding, interaction, **params) # type: ignore File "E:\Downloads\Compressed\Valorant-DiscordBot-3.4.0\Valorant-DiscordBot-3.4.0\cogs\valorant.py", line 93, in login authenticate = await auth.authenticate(username, password) File "E:\Downloads\Compressed\Valorant-DiscordBot-3.4.0\Valorant-DiscordBot-3.4.0\utils\valorant\auth.py", line 122, in authenticate data = await r.json() File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\aiohttp\client_reqrep.py", line 1103, in json raise ContentTypeError( aiohttp.client_exceptions.ContentTypeError: 0, message='Attempt to decode JSON with unexpected mimetype: text/html; charset=utf-8', url=URL('https://auth.riotgames.com/api/v1/authorization')

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last): File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\app_commands\tree.py", line 1240, in _call await command._invoke_with_namespace(interaction, namespace) File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\app_commands\commands.py", line 876, in _invoke_with_namespace return await self._do_call(interaction, transformed_values) File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\app_commands\commands.py", line 869, in _do_call raise CommandInvokeError(self, e) from e discord.app_commands.errors.CommandInvokeError: Command 'login' raised an exception: ContentTypeError: 0, message='Attempt to decode JSON with unexpected mimetype: text/html; charset=utf-8', url=URL('https://auth.riotgames.com/api/v1/authorization')

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last): File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\app_commands\tree.py", line 1089, in wrapper await self._call(interaction) File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\app_commands\tree.py", line 1244, in _call await self.on_error(interaction, e) File "E:\Downloads\Compressed\Valorant-DiscordBot-3.4.0\Valorant-DiscordBot-3.4.0\cogs\errors.py", line 61, in on_app_command_error elif isinstance(error, Union[AppCommandNotFound, MissingPermissions, BotMissingPermissions]): File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\typing.py", line 697, in instancecheck return self.subclasscheck(type(obj)) File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\typing.py", line 700, in subclasscheck raise TypeError("Subscripted generics cannot be used with" TypeError: Subscripted generics cannot be used with class and instance checks Unclosed client session client_session: <utils.valorant.auth.ClientSession object at 0x000002A7EDAB6C40> Unclosed connector connections: ['[(<aiohttp.client_proto.ResponseHandler object at 0x000002A7ED9F6E80>, 30102.031), (<aiohttp.client_proto.ResponseHandler object at 0x000002A7ED71F0A0>, 30102.078)]'] connector: <aiohttp.connector.TCPConnector object at 0x000002A7ED2099A0>

    opened by nungsorb 0
Releases(v3.4.0)
  • v3.4.0(Oct 17, 2022)

    What's Changed

    • Add Docker CI by @marchingon12 in https://github.com/staciax/Valorant-DiscordBot/pull/71
    • Update en-US localization by @overestimate in https://github.com/staciax/Valorant-DiscordBot/pull/75
    • Renamed .json of Traditional Chinese(zh-TW) to fix the issue of localisation by @scarrrr316 in https://github.com/staciax/Valorant-DiscordBot/pull/77
    • Allow users to add notify with multilingual names by @scarrrr316 in https://github.com/staciax/Valorant-DiscordBot/pull/78
    • Support direct deployment to Replit by @scarrrr316 in https://github.com/staciax/Valorant-DiscordBot/pull/79
    • Added 'Run on Repl.it' badge by @scarrrr316 in https://github.com/staciax/Valorant-DiscordBot/pull/80
    • Update pyproject.toml by @scarrrr316 in https://github.com/staciax/Valorant-DiscordBot/pull/81
    • Update README.md by @scarrrr316 in https://github.com/staciax/Valorant-DiscordBot/pull/82
    • Bugfix: update Riot Client User Agent version by @mzfan in https://github.com/staciax/Valorant-DiscordBot/pull/87
    • Riot user agent version update by @mzfan in https://github.com/staciax/Valorant-DiscordBot/pull/88
    • Fix tier emojis in /nightmarket command. by @R3nzTheCodeGOD in https://github.com/staciax/Valorant-DiscordBot/pull/89
    • Turkish language support by @mustafa383 in https://github.com/staciax/Valorant-DiscordBot/pull/91

    New Contributors

    • @overestimate made their first contribution in https://github.com/staciax/Valorant-DiscordBot/pull/75
    • @scarrrr316 made their first contribution in https://github.com/staciax/Valorant-DiscordBot/pull/77
    • @mzfan made their first contribution in https://github.com/staciax/Valorant-DiscordBot/pull/87
    • @R3nzTheCodeGOD made their first contribution in https://github.com/staciax/Valorant-DiscordBot/pull/89
    • @mustafa383 made their first contribution in https://github.com/staciax/Valorant-DiscordBot/pull/91

    Full Changelog: https://github.com/staciax/Valorant-DiscordBot/compare/v3.3.5...v3.4.0

    Source code(tar.gz)
    Source code(zip)
  • v3.3.5(Jul 4, 2022)

    What's Changed

    • German by @Hackante in https://github.com/staciax/Valorant-DiscordBot/pull/69

    New Contributors

    • @Hackante made their first contribution in https://github.com/staciax/Valorant-DiscordBot/pull/69

    Full Changelog: https://github.com/staciax/Valorant-DiscordBot/compare/v3.2.6...v3.3.5

    Source code(tar.gz)
    Source code(zip)
  • v3.2.1(Jun 18, 2022)

  • v3.1.3-fix(Jun 14, 2022)

    • Cleaned imports

    • Better error handler

    Catching specific errors that might be raised. added a super call to close optimized imports

    • cloudflare fix

    What's Changed

    • Code clean up by @RyugaXhypeR in https://github.com/staciax/Valorant-DiscordBot/pull/58

    New Contributors

    • @RyugaXhypeR made their first contribution in https://github.com/staciax/Valorant-DiscordBot/pull/58

    Full Changelog: https://github.com/staciax/Valorant-DiscordBot/compare/v3.1.1...v3.1.2

    Source code(tar.gz)
    Source code(zip)
  • v3.1.1(Jun 11, 2022)

    Command

    • /bundles support multiple bundle

    Locale

    • Fixed bug not translating some texts
    • Fixed cookies can't refresh

    Bug fixes

    • cloudflare -.-
    • back to aiohttp
    Source code(tar.gz)
    Source code(zip)
  • v3.0.8(May 25, 2022)

  • v3.0.7-v2(May 22, 2022)

  • v3.0.6-v3(May 20, 2022)

  • v3.0.5(May 19, 2022)

  • v3.0.4-v2(May 14, 2022)

    Add commands

    /notify channel - change notify channel ['DM', 'CHANNEL']

    support quick check (without login)

    • /point, /mission, /battlepass, /nightmarket

    language

    • add dm_message error
    • language for /notify channel

    Add config commands

    • -unsync guild, -unsync global

    Bug fixes in v2

    • /nightmarket is not working
    Source code(tar.gz)
    Source code(zip)
  • v3.0.3(May 2, 2022)

    Utility funtion to class

    • GetItems, GetEmoji, Generate_Embed, JSON

    update commands

    /store - add button share when use store without login

    pull request

    • add Dockerfile by kiznick

    bug fixes

    type object 'JSON' has no attribute 'json_read'

    Source code(tar.gz)
    Source code(zip)
  • v3.0.2(Apr 29, 2022)

    New feature

    • Add Vietnamese language translation by TMADZ2007
    • update france, thai language
    • update default season_id
    • setup_emoji can force update
    • update mission embed format
    • debug command owner only can use it
    • little bug fixed
    Source code(tar.gz)
    Source code(zip)
  • v3.0.1(Apr 27, 2022)

    New feature

    • Add commands support Interaction Locale** (translate)

    • /notify add, /notify list, /notify mode ,/notify test, /bundle, /bundles, /debug

    Supported new languages

    • fr - France

    Bug Fixes

    • commands error when using languages ​​other than en-US, th
    • some bundles could not be searched.
    Source code(tar.gz)
    Source code(zip)
  • v3.0.0(Apr 25, 2022)

    New Commands

    • /bundle - inspect a specific bundle
    • /bundles - Show the current featured bundles
    • /debug - Command debug for the bot

    Breaking Changes

    • change library pycord to discord.py

    • rewrite all code and clearly specify the type of attribute

    • /notify to commands group /notify add - Set a notification when a specific skin is available on your store /notify list - View skins you have set a for notification. /notify mode - Change notification mode /notify test - Testing notification

    • /store without /login everyone can see message

    New Feature

    • interaction.locale - automatic change language response
    • currently th-TH, en-US | you can add new languages in folder languages
    • change -setup guild to -sync guild , -sync global

    Bug Fixes

    • wait for testing

    Road Map

    • /contract
    • /party
    • /career

    Moved to discord.py library

    Source code(tar.gz)
    Source code(zip)
  • 2.2.6(Apr 10, 2022)

  • 2.2.5(Mar 25, 2022)

  • v2.2.0(Mar 22, 2022)

  • 2.1.0(Mar 14, 2022)

  • v2.0.0(Feb 14, 2022)

Owner
STACIA
my name is stacia.
STACIA
Python script to scrape users/id/badges/creation-date from a Discord Server Memberlist

Discord Server Badges Scraper - Credits to bytixo he made this Custom Discord Vanity Creator How To Use Install discum 1.2 Open a terminal and execute

apolo 13 Dec 09, 2022
send sms via grafana alert webhook

notifier fire alarm What does this project do: the aim of this project is to send alarm notification from grafana alert manager via kavenegar api. sta

Ali Soltani 4 Oct 20, 2021
SaltConf21: Adding Workflow Approval to Salt

SaltConf21: Adding Workflow Approval to Salt Running To run the example, install Docker and docker-compose and run the following commands: docker-comp

SSYS Sistemas 4 Nov 24, 2021
Insane Weather Bot is here! Give suggestions, fork, and do much more to help us enhance the abilities of Insane Weather Bot.

Insane_Weather_Bot Insane Weather Bot is here! Give suggestions, fork, and do much more to help us enhance the abilities of Insane Weather Bot. Weathe

1 Jan 02, 2022
Python API for working with RESQML models

resqpy: Python API for working with RESQML models Introduction resqpy is a pure python package which provides a programming interface (API) for readin

BP 44 Dec 14, 2022
A simple bot discord in PY with moderation controls

Voila un bot discord en py avec les commandes simples de modération tout simplement faut changer les lignes 70 vous mettez votre token de votre bot 53

Ethan 1 Nov 20, 2021
Video Stream: an Advanced Telegram Bot that's allow you to play Video & Music on Telegram Group Video Chat

Video Stream is an Advanced Telegram Bot that's allow you to play Video & Music

SHU KURENAI TEAM 4 Nov 05, 2022
Brute force instagram account / actonetor, 2021

Brute force instagram account / actonetor, 2021

actonetor 6 Nov 16, 2022
Crypto Signal Provider - A web application that allows users to select a cryptocurrency

Crypto_Signal_Provider This is a web application that allows users to select a c

Raul 2 Dec 11, 2022
Open Source Discord Account Creator

Alter Token Generator Open Source Discord Account Creator This program abuses the discord api and uses the 2Captcha captcha solving service to make di

24 Dec 13, 2022
Discord Token Generator - Python (Generates Tokens and Joins your Server Automatically) hCaptcha Bypass **FREE**

Best Discord Token Generator {hCaptcha bypass FREE Unlimited Memberboost} Install few requirements & run main.py it will redirect you to the Download

1 Oct 27, 2021
A powerful bot to copy your google drive data to your team drive

⚛️ Clonebot - Heroku version ⚡ CloneBot is a telegram bot that allows you to copy folder/team drive to team drives. One of the main advantage of this

MsGsuite 269 Dec 23, 2022
Credit Card And SK Checker Written In Python

Credit Card And SK Checker Written In Python

Rimuru Tempest 57 Jan 08, 2023
Grocy-create-product - A script supports the batch creation of new products in Grocy

grocy-create-product This script supports the batch creation of new products in

André Heuer 6 Jul 28, 2022
:cloud: Python API for ThePirateBay.

Unofficial Python API for ThePirateBay. Build Status Test Coverage Version Downloads (30 days) Installation $ pip install ThePirateBay Note that ThePi

Karan Goel 334 Oct 21, 2022
WikiChecker - Repositorio oficial del complemento WikiChecker para NVDA.

WikiChecker Buscador rápido de artículos en Wikipedia. Introducción. El complemento WikiChecker para NVDA permite a los usuarios consultar de forma rá

2 Jan 10, 2022
An advanced telegram country information finder bot.

Country-Info-Bot-V2 An advanced telegram country information finder bot Made with Python3 (C) @FayasNoushad Copyright permission under MIT License Lic

Fayas Noushad 16 Nov 12, 2022
A Simple Telegram Bot that can Download Files From Mega.nz and Upload It to Telegram

MegaDL-Bot A Simple Telegram Bot By @mrkpbots to Download Files From Mega.nz and Upload It to Telegram Features No Login Required All Mega.nz File Lin

MRKP BOTS 5 Feb 20, 2022
Бот - Гуль для твоего телеграм аккаунта

Я - Гуль (бот), теперь работает в чатах Отблагодарить автора за проделанную работу можно здесь Помощь с установкой тут Установка на Андроид После уста

57 Nov 06, 2022
A Django-style ORM idea for manipulating Google Datastore entities

No SeiQueLa ORM EM DESENVOLVIMENTO Uma ideia de ORM no estilo do Django para manipular entidades do Google Datastore. Montando seu modelo: from noseiq

Geraldo Castro 16 Nov 01, 2022