* Fix creation of IdentifierData in config
Also adds some new tests regarding partial primary keys.
Resolves#3796.
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
* Removes `MAX_BALANCE` from bank, user `bank.get_max_balance()` now
`[p]bankset maxbal` can be used to set the maximum bank balance
Signed-off-by: Guy <guyreis96@gmail.com>
* Initial Commit
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* I need to make sure I keep aika on her toes.
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* Fixes a few missing kwargs and case consistency
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* Fixes a few missing kwargs and case consistency v2 and typos
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* Reset cooldowns + add changelogs
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* Add 3 extra file formats.
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* IRDUMB - fix capitalization.
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* Fix a silent error, and some incorrect messages.
Signed-off-by: guyre <27962761+drapersniper@users.noreply.github.com>
* Remove unnecessary emojis from queue when they are not needed
Signed-off-by: guyre <27962761+drapersniper@users.noreply.github.com>
* Remove duplicated call in `[p]playlist update`
Signed-off-by: guyre <27962761+drapersniper@users.noreply.github.com>
* Remove duplicated call in `[p]playlist update`
Signed-off-by: guyre <27962761+drapersniper@users.noreply.github.com>
* Resolve conflicts
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* Bring all files up to date + Black
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* Facepalm
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* *Sigh*
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* *Sigh* 2.0
Signed-off-by: Draper <27962761+Drapersniper@users.noreply.github.com>
* Merge branch 'V3/develop' of https://github.com/Cog-Creators/Red-DiscordBot into audio-misc-pt1
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
# Resolve Conflicts:
# redbot/cogs/audio/audio.py
# redbot/cogs/audio/utils.py
* Import missing Typecheck
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Fix Broken docstrings
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Sort Local Tracks
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* 🤦
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Reorder the sorting of local tracks,
`alphanumerical lower then alphanumerical upper`
`a comes before A, but B comes after A`
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Black formatting
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Make the local file sorting case insensitive
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Add global blacklist/whitelist + fix some issues with original server based whitelist/blacklist
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Remove the pre-commit yaml
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Nottin to see
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Further improvement to the blacklists
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Further improvement to the blacklists
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Fix the __str__ method on LocalTracks Object
* Rename LocalTracks.to_string_hidden() to LocalTracks.to_string_user() To keep it inline with the Query object
* Remove encoding pragmas + a few typo fixes
* Update some typehints + fix some typos
* Remove this duplicate call
* Black
* fix capitalization
* Address preda's review
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Remove the API from the audio cog
- Is in direct conflict with goals stated in #2804
- Features this was intended to enable can be enabled in other more
appropriate ways later on
* changelog
* Address Aika's review
* Black
* *sigh* dont use github web ui
* Fuck windows Long live linux... *sigh* no lets ensure windows users can still use local tracks
* Merge branch 'V3/develop' of https://github.com/Cog-Creators/Red-DiscordBot into refactoring
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
# Conflicts:
# redbot/cogs/audio/audio.py
* 👀 + chore
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* facepalm
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* facepalm... again y u h8 me bruh
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* fuk this fuk u tube fuck python fuck all
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* awyehfqwajefhnqeffawefqa eqewarfqaesf qwef qaf qwfr
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* fuck everything
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* oh lord saviour resus i love you just make this work
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Change logic to be no errors within last 10 seconds... this should be a valid work around discord ratelimits caused by the spam
* Remove auto deletion
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* See I did a ting
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* irdumb
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* black
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Add an is_url attribute to Query objects
* chore
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Black
* Address Aikas review
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Hyperlink Playlist names
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Make shit bold
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* why was this here
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* why was this here
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Initial commit
* Workinnng
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Improve SQL Statements + migrate from SQL Alchemy + Databases to APSW
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* apsw tested and working
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* chose
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Migrate Playlist to DB 3 TODO
1 Migrate Config to Schema 3 without playlists
and update get_playlist methods
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Revert "Migrate Playlist to DB 3 TODO 1 Migrate Config to Schema 3 without playlists and update get_playlist methods"
This reverts commit 4af33cff
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Implement schema migration
* Lets not touch the deps since #3192 is already adding them
* chore
* *sigh* Black
* Follow the existing logic and always default Playlist to guild scope
* wghqjegqf black
* Update usage of last_fetched and last_updated to be Ints... However column migration still pending
* Some bug fixes
* Update usage of last_fetched and last_updated to be Ints... However column migration still pending
* working
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* partial match
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* better partial match
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* black
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* I thought i done this before
* Delete 3195.misc.1.rst
Wrong PR
* Thanks Sinbad
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Thanks Sinbad
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Log Errors in init ...
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Update error logs.
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Create index
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* :Drapersweat:
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Chore
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Revert "Chore"
This reverts commit edcc9a9f
UGHHHH
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Allow removing tracks from queue by URL
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Words matter
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* *sigh*
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* chore
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* arghhh CONFLICTS
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Review sinbads latest comment ..
ToDo.. Nuke existing playlist - check version and set version
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* migrate the DB schema to v3 (to keep in line with the schema visioning of Config
* Add a Todo
* *sigh* conflicts and black
* *sigh* black
* Passively delete playlist deletion mechanism
* Delete Old entries on startup
* Since we are dropping the table mightaware make these into JSON for future proofing
* Don't Dump strings in JSON field ? :think:
* Move some things around to make easier to use 1 connection to the Audio DB
* Move some things around to make easier to use 1 connection to the Audio DB
* *sigh*
* Clean up api
* *sigh* black
* Red + reorder some variables
* 🤦
* how could i forget this .......
* Black
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Black
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Black
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* #automagically
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* FINAFUCKINGLY
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* FINAFUCKINGLY
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Remove unused config default
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Remove the API from the audio Cog (Properly)
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Missed these changes
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* ARGHHH
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Some fixes I've noticed while running through the code line by line
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Translation + UX (show playlist author ID if can't find user)
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* *sigh* missed this one
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* this is no longer needed ....
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* 🤦
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* fix new lines in error messages
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Black
* Sinbads Review
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Sinbads Review
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* *sigh* copy paste
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* imrpove backups
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Im a fucking idiot
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Fix#3238
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* chore
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* humans
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* humans
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* add play alias to playlists
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Im dumb ...
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Im dumb ...
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* fix new line
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* fix new line
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* show playlist count on playlist picker
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* DJ/Vote system fixes
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* DJ/Vote system fixes
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* *sigh* fix currency check
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* show playlist count on playlist picker
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* DJ/Vote system fixes
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* DJ/Vote system fixes
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* *sigh* fix currency check
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Fix duplicate messages on timeout
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* fix SQL Statement logic
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* fix SQL Statement logic
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Markdown escape
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Markdown escape
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Markdown escape fix
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Markdown escape fix
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* clean up local cache more frequently
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* clean up db more frequently
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Await in hell
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* *sigh* im dumb
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* *sigh* im dumb
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Black cuz I hate red
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Black cuz I hate red
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* StringIO to ByteIO
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* StringIO to ByteIO
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* *sigh* im dumb
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* :Facepalm: the whole purpose of this is so its offline so this can be backed up without being blocking
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Run write queries on ThreadPoolExecutor
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* Backup Audio.db
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* *sigh* im dumb
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* blaaaack
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* *sigh*
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* formatting
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* remove duplicated string of code
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
* ffs awaits
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
Co-authored-by: Michael H <michael@michaelhall.tech>
* PostgreSQL driver and general drivers cleanup
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Make tests pass
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Add black --target-version flag in make.bat
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Rewrite postgres driver
Most of the logic is now in PL/pgSQL.
This completely avoids the use of Python f-strings to format identifiers into queries. Although an SQL-injection attack would have been impossible anyway (only the owner would have ever had the ability to do that), using PostgreSQL's format() is more reliable for unusual identifiers. Performance-wise, I'm not sure whether this is an improvement, but I highly doubt that it's worse.
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Reformat
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Fix PostgresDriver.delete_all_data()
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Clean up PL/pgSQL code
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* More PL/pgSQL cleanup
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* PL/pgSQL function optimisations
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Ensure compatibility with PostgreSQL 10 and below
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* More/better docstrings for PG functions
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Fix typo in docstring
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Return correct value on toggle()
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Use composite type for PG function parameters
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Fix JSON driver's Config.clear_all()
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Correct description for Mongo tox recipe
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Fix linting errors
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Update dep specification after merging bumpdeps
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Add towncrier entries
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Update from merge
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Mention [postgres] extra in install docs
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Support more connection options and use better defaults
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Actually pass PG env vars in tox
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* Replace event trigger with manual DELETE queries
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
Stop saving json files with 4 indents, this will significantly reduce file size and improve `.set()` performance for config saves when using the JSON driver.
Signed-off-by: Draper <guyreis96@gmail.com>
This was causing a KeyError to be raised whenever a key containing $ or . was part of the identifiers path, even if the value was actually in the dict.
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
- Fixes defaults being mixed into custom groups above the document level when doing `Group.all()`
- Fixes `Config.clear_all()` with Mongo driver
- Fixes `Group.set()` with Mongo driver on custom groups above the document level
- Fixes `IdentifierData.custom_group_data` being set to the wrong thing in `BaseDriver.import/export_data` (although this was an inconsequential bug)
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* swap to click for setup
* Initial changes
* expose some stuff to allow for per-driver optimizations
* overwrite base config
* add red log
* add one print juuuust in case
* fix this
* thanks kowlin
* damn
* oops
* fix thing
* partial commit
* Working mongo -> json conversion, it sucks tho
* remove unused line
* Wrote initial optimized json importer
* optimized json importer
* remove useless line
* update mongo to json converter
* lets try writing the correct entry
* oops
* style fix
* add some garbage data filters going from old mongo to json
* ignore garbage data in mongov2 conversions
* simplify code a bit and add a completion message
* missed one
* Update pipfile lock
* Lock click version
* Require custom group initialization before usage and write that data to disk
* Style
* add tests
* remove custom info update method from drivers
* clean up remnant
* Turn config objects into a singleton to deal with custom group identifiers
* Fix dumbassery
* Stupid stupid stupid
* modify config to use identifier data class and update json driver
* move identifier data attributes into read only properties
* Update mongo get and set methods
* Update get/set to use UUID separately, make clear work
* Remove not implemented and fix get_raw
* Update remaining untouched get/set/clear
* Fix get_raw
* Finally fix get_raw and set_raw
* style
* This is better
* Sorry guys
* Update get behavior to handle "all" calls as expected
* style again
* Why do you do this to me
* style once more
* Update mongo schema
Essentially resolves#2038, although this is escaping and not rejecting keys as that issue implies.
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
* [V3 JSON] Return deepcopy in JSON driver
* Add a test
* foo not bar
* Add a test for setting and then mutating
* Resolve issue for setting and mutating as well
* Reformat
* Cleanup quotes in cogs
* More quote cleanup that I missed
fixed a little bit of grammar here and there as well.
* [V3 Warnings] Change allowcustomreasons docstring
To help not confuse users who would believe that the command would use allow or disallow.
* Run black reformat
* Add the identifier as an initialization parameter
* Remove config object singleton and opt for a shared JSON datastore
* Fix bot unloading to deal with memory leaks
* Fix tests
* Fix clear all bug
* Remove get_driver
* Rename self.driver to self._driver
* Do not unnecessarily pass the cog identifier
* Remove unused import
* Fix type annotation
* Missed a keyword rename
* Modify signature of get/set methods in drivers