{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":48729353,"defaultBranch":"master","name":"MusicBot","ownerLogin":"Just-Some-Bots","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2015-12-29T05:30:11.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/22779351?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1720122119.0","currentOid":""},"activityList":{"items":[{"before":"7c49c86a3c9276341e63d9182bf6fb7bcbb92529","after":"30c8577a1099f35463f99d4b1b3f6af019b27c17","ref":"refs/heads/dev","pushedAt":"2024-09-07T05:21:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"speed handled upstream\n\nsince we pull directly, no need to wait to revert this until it's pushed to pypi","shortMessageHtmlLink":"speed handled upstream"}},{"before":"6dd29d7555ab0ae2c65df168cb15ff5daddc7dd1","after":"1235d9dac3116d531ac181608e1cbb115e23c747","ref":"refs/heads/review","pushedAt":"2024-09-07T05:20:05.000Z","pushType":"push","commitsCount":132,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"Merge branch 'dev' into review","shortMessageHtmlLink":"Merge branch 'dev' into review"}},{"before":"7dc7ad665c150c69b22bb2de6bd71fd7650240ce","after":"7c49c86a3c9276341e63d9182bf6fb7bcbb92529","ref":"refs/heads/dev","pushedAt":"2024-09-06T02:41:33.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"Bugfix 20240905 (#2423)\n\n* Fix relative seek and improve feedback of seek command.\r\n\r\n* format seek time floats\r\n\r\n* Fix playnext not respecting playlists\r\n\r\n* ignore activity timer when voice client is already disconnected","shortMessageHtmlLink":"Bugfix 20240905 (#2423)"}},{"before":"f8301ca21bde09c9c32c60545e2b4df786b9b7f9","after":"7dc7ad665c150c69b22bb2de6bd71fd7650240ce","ref":"refs/heads/dev","pushedAt":"2024-08-31T05:04:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"Update Examples and adjust config parser. (#2422)\n\n* make sure to set default value in new example options.\r\n\r\n* update some example options.\r\ntweak how getbool fails.\r\nadd getstr for explicit strip of whitespace and fallback on empty.","shortMessageHtmlLink":"Update Examples and adjust config parser. (#2422)"}},{"before":"e5514bc77f82cf6531369f9b34c02eb79279d137","after":"f8301ca21bde09c9c32c60545e2b4df786b9b7f9","ref":"refs/heads/dev","pushedAt":"2024-08-30T22:04:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"Ytdlp oauth2 plugin integration (#2421)\n\n* Commit original code with notice of origin and license.\n\n* format original source code\n\n* Integrate the OAuth2 plugin as optional. \nUses original library if it is installed, to prevent conflicts and provide easier testing.\n\n* fix typo with importlib.\n\n* Updates for lint / formatting.\n\n* Enable ytdlp logging with original oauth2 plugin.\nUpdates the warning about original plugin use.\n\n* handle ModuleNotFoundError when checking for OAuth2 plugin.\n\n* Address the extractor permissions being too strict and thus confusing.\nThis also updates some inconsistent documentation and logic around allowing all extractors.","shortMessageHtmlLink":"Ytdlp oauth2 plugin integration (#2421)"}},{"before":"2738e6d218d3411c8b5333112b4ad027664308dc","after":"e5514bc77f82cf6531369f9b34c02eb79279d137","ref":"refs/heads/dev","pushedAt":"2024-08-06T02:21:53.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"Fix missing playback_speed on streamed entries. (#2419)","shortMessageHtmlLink":"Fix missing playback_speed on streamed entries. (#2419)"}},{"before":"561e03499619dcb0fef3c131395f91f34bad62e2","after":"2738e6d218d3411c8b5333112b4ad027664308dc","ref":"refs/heads/dev","pushedAt":"2024-08-06T01:22:31.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"Windows patches 2024-08-05 (#2418)\n\n* Fix windows install.ps1 hanging if winget terms are not accepted yet.\r\nMinor changes to description / informative text.\r\n\r\n* Update requirements.txt for windows aiodns bug.","shortMessageHtmlLink":"Windows patches 2024-08-05 (#2418)"}},{"before":"ac333d27cf0f713454819c992178b80c892fb5fd","after":"561e03499619dcb0fef3c131395f91f34bad62e2","ref":"refs/heads/dev","pushedAt":"2024-07-29T05:10:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"Cookie management command & bug fix (#2417)\n\n* Add owner-only command to manage cookies.\r\n\r\n* Ensure ytdlp rotates UA strings with each request, while not set static.\r\n\r\n* Add warning to setcookies help text.\r\n\r\n* Make header check timeout errors graceful.\r\n\r\n* format\r\n\r\n* Change MusicBot to bot's username in uptime command.\r\n\r\n* format and lint\r\n\r\n* Fix typo and copy-paste blunder.","shortMessageHtmlLink":"Cookie management command & bug fix (#2417)"}},{"before":"de021b5cc18c92f8ee8de53cbfb1acf90c0346ca","after":"ac333d27cf0f713454819c992178b80c892fb5fd","ref":"refs/heads/dev","pushedAt":"2024-07-24T03:46:14.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"Bug-fixes and more options. (#2416)\n\n* Add technical support for cookies.txt passed to yt-dlp. For those who know the risks and want to take them.\r\n\r\n* Remove unused code.\r\n\r\n* Fix to_ini for debug level config\r\n\r\n* Add dev-only command to make markdown from config / permissions code.\r\n\r\n* Fix AttributeError with out-of-date colorama on windows.\r\n\r\n* Fix exception handling if aiohttp import fails.\r\n\r\n* Add ffmpeg start-up check.\r\n\r\n* Ensure windows has colorama 0.4.6+ if colorlog does not require it.\r\n\r\n* Change version constant and modification detection logic.\r\n\r\n* remove todo\r\n\r\n* Add support for spaces in aliased commands, enabling commands with pre-defined arguments to be aliased as well as simple renames.\r\n\r\n* format\r\n\r\n* More format changes.\r\n\r\n* Make debug command more debug-y\r\n\r\n* Create some UA string \"options\" via constants. \r\nThese are not recommended to be changed. Basically only for debug / ye-who-knows.\r\nI will not provide ANY support for these, use them at your own risk!\r\n\r\n* add note about PCMVolumeTransformer\r\n\r\n* format & lint\r\n\r\n* Pre-download next track in queue.\r\nDoes not affect autoplaylist tracks, as they are added 1x1 while q is empty.\r\n\r\n* format\r\n\r\n* lints\r\n\r\n* Add option for status message to count paused players, off by default.\r\n\r\n* Make pre-download happen a tad later to reduce network congestion for current entry playback.\r\nNote that this seems to create some jitter in audio playback while download is ongoing.\r\n\r\n* Better checks for player inactivity.\r\n\r\n* Remove TODO and format.\r\n\r\n* Remove bogus statement about {n_paused} status message variable.\r\n\r\n* Experimental proxy option for ytdlp.\r\n\r\n* Add UA changing option to ini config.\r\n\r\n* Revise options and help texts for PR #2416","shortMessageHtmlLink":"Bug-fixes and more options. (#2416)"}},{"before":"f068fe8dd93f631fdbc304b6e4e0673302dfdc05","after":"f7786d795133e18b0c8b55e523ebcbed356ab7ca","ref":"refs/heads/master","pushedAt":"2024-07-04T19:40:41.000Z","pushType":"pr_merge","commitsCount":32,"pusher":{"login":"jayktaylor","name":"Jayden","path":"/jayktaylor","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7265189?s=80&v=4"},"commit":{"message":"Merge pull request #2414 from Just-Some-Bots/review\n\nReview","shortMessageHtmlLink":"Merge pull request #2414 from Just-Some-Bots/review"}},{"before":"58fa9d35527b28c287a498f8f746e6582ef28f25","after":"de021b5cc18c92f8ee8de53cbfb1acf90c0346ca","ref":"refs/heads/dev","pushedAt":"2024-05-31T15:48:53.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"Potentially fix high-cpu deadlock bug. (#2411)\n\n* Attempt to squash the high-cpu bug.\r\n- Make play calls explicit, rather than implied through adding entries.\r\n- Handle player errors and ensure progress of queue or autoplaylist.\r\n- Prevent early garbage collection of created async tasks.\r\n- Run shutdown on downloader thread pool. Waits threads rather than let them dangle.\r\n- Reduce usage of infinite loops and update some logging.\r\n\r\n* Make pylint happy with 3.8 compatible call.\r\n\r\n* Ensure task exceptions are retrieved by the done callback.\r\n\r\n* Try to read ffmpeg stderr stream until playback stops or an exception is set.\r\n\r\n* return player to stopped state for playback finished or it wont restart later...\r\n\r\n* Deal with aiohttp client errors in the safe_*_message functions...\r\n\r\n* Move stderr future checking before the return statements in _playback_finished callback.\r\nOtherwise that could loop infinitely...","shortMessageHtmlLink":"Potentially fix high-cpu deadlock bug. (#2411)"}},{"before":"04be5557d8276494f3859fb20bfd9a255ef8f0b5","after":"58fa9d35527b28c287a498f8f746e6582ef28f25","ref":"refs/heads/dev","pushedAt":"2024-05-27T00:54:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"Update some command help text.","shortMessageHtmlLink":"Update some command help text."}},{"before":"31348d6e191cbf30f21f29599616ecb753362854","after":"dff6600cf19154782959f95faa29aa07e2e8addf","ref":"refs/heads/gh-pages","pushedAt":"2024-05-27T00:41:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"Update commands and latest changelog\n\nAdds all available commands. Move disconnect to general commands as it was never really an admin command.\nMake sure we tell users we've moved to using the essentials build and a few other changes I forgot to mention.","shortMessageHtmlLink":"Update commands and latest changelog"}},{"before":"c122a02b2aa10420196400d1a879fdd04a0e1be5","after":"31348d6e191cbf30f21f29599616ecb753362854","ref":"refs/heads/gh-pages","pushedAt":"2024-05-26T07:38:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"Typo fix","shortMessageHtmlLink":"Typo fix"}},{"before":"e6767800508ba7ed9db930e8b6a3786cdcb008d5","after":"c122a02b2aa10420196400d1a879fdd04a0e1be5","ref":"refs/heads/gh-pages","pushedAt":"2024-05-26T07:31:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"surely this is the last format change","shortMessageHtmlLink":"surely this is the last format change"}},{"before":"7eb2748f1930930c38f214234496f66a14b4dfa3","after":"e6767800508ba7ed9db930e8b6a3786cdcb008d5","ref":"refs/heads/gh-pages","pushedAt":"2024-05-26T07:29:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"add embed np","shortMessageHtmlLink":"add embed np"}},{"before":"a6de3ee1fe2f849cc7cc0ef34b9e5b215ea79cb3","after":"7eb2748f1930930c38f214234496f66a14b4dfa3","ref":"refs/heads/gh-pages","pushedAt":"2024-05-26T07:27:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"I hate format...","shortMessageHtmlLink":"I hate format..."}},{"before":"3df4ea610111a801c8f31eb4c762561769288168","after":"a6de3ee1fe2f849cc7cc0ef34b9e5b215ea79cb3","ref":"refs/heads/gh-pages","pushedAt":"2024-05-26T07:26:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"format fix","shortMessageHtmlLink":"format fix"}},{"before":"6bd85b36734088bb02a06af88ff8d34e589edfa8","after":"3df4ea610111a801c8f31eb4c762561769288168","ref":"refs/heads/gh-pages","pushedAt":"2024-05-26T07:25:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"Create new change log for dev","shortMessageHtmlLink":"Create new change log for dev"}},{"before":"473f70cb11b1a47e9bb076450838c94dfa0aa7c1","after":"04be5557d8276494f3859fb20bfd9a255ef8f0b5","ref":"refs/heads/dev","pushedAt":"2024-05-26T05:31:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"add sub command reset\n\nadds an option to reset config options to default as defined in ConfigDefaults.\n\nMaybe find a way to create option_defaults.ini for use here?","shortMessageHtmlLink":"add sub command reset"}},{"before":"ddbc8e6b184287d6aae5bde5b35f453d2ac591a7","after":"473f70cb11b1a47e9bb076450838c94dfa0aa7c1","ref":"refs/heads/dev","pushedAt":"2024-05-18T13:54:46.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"Provide option for auto-unpause, default off. (#2408)\n\n* Provide option for auto-unpause, default off.\r\n\r\n* Add option to example_options.ini","shortMessageHtmlLink":"Provide option for auto-unpause, default off. (#2408)"}},{"before":"26ee42d3fc694b92dcc0f7f5c1093afe48aaafdd","after":"6dd29d7555ab0ae2c65df168cb15ff5daddc7dd1","ref":"refs/heads/review","pushedAt":"2024-05-17T17:08:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"merge dev to review:\n\ncommit ddbc8e6b184287d6aae5bde5b35f453d2ac591a7\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri May 17 11:11:51 2024 -0500\n\n add some with multiple\n\n add latency as ping\n\ncommit c79d72a2011ba738f740b06bc3a1db71afac9e5d\nMerge: 4c1326f dd96f1c\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri May 17 11:09:52 2024 -0500\n\n Merge branch 'pr/2405' into dev\n\ncommit 4c1326f876481673241dd10c43925472cec5f454\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri May 17 08:56:52 2024 -0500\n\n fix broken resolve\n\ncommit a76f648240e30bd7cfd4b661682f3b597039f0be\nAuthor: Fae \nDate: Fri May 17 06:50:19 2024 -0700\n\n Add uptime command (#2407)\n\n Co-authored-by: Snow <135516526+BabyBoySnow@users.noreply.github.com>\n\ncommit c256eb97c4aeee97f4e86cc8b64bdad35d449ae2\nAuthor: Fae \nDate: Fri May 17 06:46:45 2024 -0700\n\n Add latency and botlatency commands. (#2406)\n\ncommit dd96f1c89915f954593b6664c7d49ff309b3a0b8\nAuthor: itsTheFae \nDate: Fri May 17 06:26:36 2024 -0700\n\n Add the follow command\n\ncommit 876ffb81708bc9554fa2e9a9e60bb4a35190b3f1\nAuthor: Fae \nDate: Wed May 15 18:39:41 2024 -0700\n\n Bug fixes, QOL tweaks, and code clean up. (#2404)\n\n * Bug fixes, QOL tweaks, and code clean up.\n\n * Fix regression of relative seek.\n\ncommit c7ac43a0f48b843144d317d814f10d840d6c28f3\nAuthor: Fae \nDate: Wed May 15 06:31:49 2024 -0700\n\n Add multi-playlist support and local media support. (#2403)\n\ncommit e2ad0fe3003a534e1bb17148e66c07be9486c3b1\nAuthor: Fae \nDate: Wed May 15 05:32:35 2024 -0700\n\n Seek and speed features (#2402)\n\n * Adds seeking and playback speed support.\n\n * Update example_options.ini\n\n * Add relative seek.\n\ncommit 20e674d724596d81eac49510152cc59e510ac1e8\nAuthor: Fae \nDate: Tue May 14 08:33:08 2024 -0700\n\n Installer updates (#2401)\n\n * Update install.sh to work in cloned directory.\n\n * Update install.ps1 to work in cloned directory, and clean up some output.\n\n * Update install.bat to be more informative and less lazy.\n\n * Update run.py to show pip packages when checking, and handle missing discord.py when extensions are installed.\n\n * Tidy up comments\n\n * Update comment for disk check option.\n\n * Don't forget TerminateSignal can set an exit code now.\n\n * Remove refreshenv call\n\ncommit bea0b4671d855ba16509fcb7cafc01a3314debdd\nAuthor: Fae \nDate: Tue May 14 08:06:31 2024 -0700\n\n remove unused bootstrap and travis files. (#2400)\n\ncommit 86e54e2d7a762a097bf02125242b96559f180474\nAuthor: Fae \nDate: Mon May 6 19:52:12 2024 -0700\n\n Add commands for config and permission editing and reloading. (#2397)\n\n * Add commands for config and permission editing and reloading.\n Refactors how options are registered, and adds a new dependency configupdater.\n\n * Update example_options.ini\n\n * Some fixes for setperms\n\ncommit 2b2b88a92a923d8a5dd13d8711002edc851df5d2\nAuthor: Fae \nDate: Fri Apr 5 09:20:01 2024 -0700\n\n Round robin patch (#2396)\n\n * Fix index errors in reorder_for_round_robin function.\n\n * Update comments\n\ncommit 4c287a4acf32d0ee8a5419ec2021953513b609a0\nAuthor: Fae \nDate: Fri Apr 5 07:44:04 2024 -0700\n\n Updates for the Installer and Updater scripts. (#2395)\n\n * Updates for installer and update scripts.\n Adds ffmpeg install step to install.ps1 using winget tool\n Installers now prompt before installing.\n SysD service file requires user and group settings.\n\n * Update requirements.txt to use voice and speed options for discord.py repo pull.\n\ncommit e935b0d98df8f60022f840c85ba86664b033956d\nMerge: 9ed048c 7ba155e\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Apr 4 13:34:13 2024 -0500\n\n Merge branch 'dev' of https://github.com/Just-Some-Bots/MusicBot into dev\n\ncommit 9ed048c8e99902805b0c68a3d975a2d78870218c\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Apr 4 13:33:51 2024 -0500\n\n use essentials build\n\n Use a newer binary file.\n\ncommit 7ba155e7c242a48731ae05a531efeb1a59bd805a\nAuthor: Fae \nDate: Thu Apr 4 11:31:06 2024 -0700\n\n General stability updates. (#2394)\n\n * just debug logs mostly\n\n * Reorganize a little bit of logging at startup. still debugging though.\n\n * This should just be empty, for now...\n\n * clean up some logs.\n\n * no more async main in run.py.\n This refactors further signal and shutdown handling for the bot.\n\n * Fix up pip install attempt and make code checks happy.\n\n * Set console title in run.py main.\n Improve some more logic with graceful recovery cases.\n Fix some check complaints.\n\n * More fixes for graceful startup and shutdown on windows.\n\n * Use asyncio not self.loop.\n\n * Ensure restart still works as expected.\n\n * More fixes\n\n * pylint\n\n * restructure how on-ready fires other events.\n try not to send updates while on_ready runs first time.\n\n * fix the obviously broken bits.\n\n * Fix --no-checks only skip optional checks.\n Also log python version.\n\n * refine some exception handling in auto playlists and on shutdown.\n\n * Fix logic issue with auto playlist.\n\n * improve replace in autoplaylist.\n\n * Allow run.bat and run.sh to pass CLI args to python.\n Simplify checks done in run.sh.\n\n * Bootleg connection resumption.\n Probably still busted and shitty, but it's close.\n\n * Fix custom log functions to use stacklevel 2 on windows.\n Organize log formats in order of log level number.\n\n * correct stacklevel ...\n\n * Update voice_state_update warning to be more clear.\n\n * Create player is no serialized player exists.\n oops. :)\n\n * Ensure auto playlists actually kick off in non-serialized guild.\n\n * run formatting and tidy up some spam.\n\n * Move auto_pause and availability into MusicPlayer.\n\n * Change status updates to run on disconnect again, also adds an offline status for logout/shutdown.\n\n * Prevent deadlock if exception is thrown in signal handler.\n\n * change guild auto pause handler to wait for connection.\n\n * Update player.py formatting\n\n * Update network test with ICMP ping via sub process call\n\n * Make sure old queue.json does not stop the show.\n\n * Use shutil.which() to get ping binary path. Tries to catch errors from sys call.\n\n * Make sure shutil also fails gracefully.\n\n * proper 3.8 compatible types should be part of this too.\n\n * Copy over some missing changes.\n\n * Attempt to handle the discord API connection termination.\n\n * Fix backward logic.\n\n * Don't resume an auto-paused player when returning from network outage.\n\n * Fix race condition in unpause check.\n\n * remove entry_added check in favor of check on play\n\n * refactor playlist entry meta and handle auto-playlist expansion of playlist links differently.\n also disables extraction logs.\n also adds indicator for autoplaylist entries, though none should be enqueued to playlist queue now.\n\n * Try to avoid excessive auto-pause retry when player is being discarded/reconnected.\n\n * Attempt to rejoin on API termination when configured to auto-join.\n If auto-join bot is moved, attempt to join old channel instead.\n\n * remove redundant calls to finish_playing event.\n\n * Fix error with rouge player check in disconnect_all_voice_clients\n\n * Now playing messages should not repeat on reconnect.\n\n * fix erroneous logic in last_np_msg content check.\n\n * dyslexic logic strikes again. gotta love it.\n\n * Add more sanity checks to play-invoked unpause.\n Allow unpause check to trigger summon if perms.summonplay is set.\n\n * update self summon to pass message\n\n Added setting lnp in summon, which uses message so we need to pass it in our calls.\n\n * lnp inside of summon cmd\n\n Sets lnp inside the summon command for various instances when it's needed.\n A quality of life change surely.\n\n * last_np_msg should actually compare the content of embed and not just the hash in the collection.\n\n I'm an idiot. : )\n\n * Track last played song subject for better control of last now playing message.\n\n * format fix\n\n * Respect queue persist option, and make sure auto-playlist starts without a queue.\n\n ---------\n\n Co-authored-by: Snow <135516526+BabyBoySnow@users.noreply.github.com>\n\ncommit 4823581656ebe7f664d51d2c0dff12c6ef1fbf12\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Mar 21 23:01:55 2024 -0500\n\n Revert \"update binaries\"\n\n This reverts commit 0d3b768e53366f342908d79b567b699e1f3088f6.\n\ncommit 0d3b768e53366f342908d79b567b699e1f3088f6\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Mar 21 22:58:40 2024 -0500\n\n update binaries\n\ncommit 440482f1fabfb57a8ce110fb6d4bf1b1bb7ac69c\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Mar 21 20:33:38 2024 -0500\n\n Revert \"update binaries\"\n\n This reverts commit 76e7d36cab24f59f6f95408df8f985f71e23c56d.\n\ncommit 76e7d36cab24f59f6f95408df8f985f71e23c56d\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Sat Mar 16 21:29:39 2024 -0500\n\n update binaries\n\ncommit 1ad2cd29fae9d06b5721d82812cd58e3cb0d8ebd\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Mar 7 14:27:04 2024 -0600\n\n new black version\n\ncommit 03c10ea4d2e5eb53c8aa9a987cebd56dfadd278a\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Mar 7 14:13:55 2024 -0600\n\n update self summon to pass message\n\n Added setting lnp in summon, which uses message so we need to pass it in our calls.\n\ncommit 611f4c0582f3dd156b1066c0b7a3ad62a66efeff\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Mar 7 13:39:03 2024 -0600\n\n lnp inside of summon cmd\n\n Sets lnp inside the summon command for various instances when it's needed.\n A quality of life change surely.\n\ncommit df97f588e0fb6ff708e241ffa6ec1d5595f69cef\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Tue Mar 5 19:09:39 2024 -0600\n\n remove pre commit as a requirment\n\n Didn't work as desired. Leaving files for those who want to use pre commit\n\ncommit 2ce9dbcc6962837e0b5ca4b70ae7d63eeb7a56c7\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri Feb 16 20:11:32 2024 -0600\n\n actually make max 1000 lol\n\ncommit 1d635bad560355f0e401fe3339ec818af6669d71\nAuthor: Fae \nDate: Wed Feb 14 12:07:13 2024 -0800\n\n Graceful invalid queue (#2391)\n\n * return none rather than raise an error on bad deserialize version.\n\n * Python 3.8 compat I somehow missed.\n\n * py 3.8 compat with proper formatting.\n\n * now actually use the type alias.\n\n * i am scatter brain today. :)\n\ncommit 0b9f37b6c3bafc7a6056059a19bd2dedf05029fb\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Tue Feb 13 22:20:36 2024 -0600\n\n Update LICENSE\n\ncommit 7dfd0be1f3a414a74379ac0b02db78c0c7e68edf\nAuthor: Fae \nDate: Tue Feb 13 20:06:56 2024 -0800\n\n More player updates (#2390)\n\n * Update spotify.py with doc strings, and linted/typed code.\n\n * Refactor Config and add constants for default file paths.\n Refactor server_specific_data into its own class.\n Adds bot commands `blockuser` and `blocksong`\n Removes command `blacklist` replaced by `blockuser`\n Adds a bunch of doc strings and linting/typing changes.\n\n * Make sure Files section get validated as well!\n\n * Update .gitignore\n\n * Update downloader.py, entry.py, json.py, and 4 more files\n\n * Update event_emitter.py\n\n * Update bot.py\n\n * Update config.py comma\n\n * Update en.json\n\n * Add blocklists to example_options.ini\n and add basic extractors to example_permissions.ini\n\n ---------\n\n Co-authored-by: Snow <135516526+BabyBoySnow@users.noreply.github.com>\n\ncommit d741aa289b11f73c8e1f306b5b93618d5790d281\nAuthor: Fae \nDate: Tue Feb 13 19:52:54 2024 -0800\n\n Refactor config internals. (#2389)\n\n * Refactor Config and add constants for default file paths.\n Refactor server_specific_data into its own class.\n Adds bot commands `blockuser` and `blocksong`\n Removes command `blacklist` replaced by `blockuser`\n Adds a bunch of doc strings and linting/typing changes.\n\n * Make sure Files section get validated as well!\n\n * Update .gitignore\n\n * forgot a comma.\n\ncommit b55b5c39733178ca8bade66fdf58df9350eeea71\nAuthor: Fae \nDate: Tue Feb 13 11:08:11 2024 -0800\n\n Overhaul startup and logging, bring back graceful dep failures. (#2387)\n\n Adds CLI args for logs and update checking.\n Includes bug fix for python 3.12 deprecation warning.\n Converts doBotInit() to setup_hook()\n Removes logging code from bot.py and musicbot/__init__.py\n Likely includes some groundwork for later changes in util.py\n\ncommit 662fa3b33bfe6dd67052b071936509efae813ded\nAuthor: Fae \nDate: Tue Feb 13 11:07:58 2024 -0800\n\n Fix StatusMessage handling, and removes dead code. (#2388)\n\ncommit 516078e4176962edcb9f29f148eec4b790280bcc\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Sat Feb 10 19:56:37 2024 -0600\n\n name change\n\ncommit 04df6a74bd2ef6bc7240f85a44073a1146ce3603\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Sat Feb 10 19:52:16 2024 -0600\n\n Create pre-commit.yaml\n\ncommit d33cb6a29c98486acb9a2758bf2f265e4a632396\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Sat Feb 10 19:49:06 2024 -0600\n\n force black to run before commits.\n\ncommit 331786c599f6afaed35f8f10ad6074b854fe5f35\nAuthor: DestinyofYeet <57575330+DestinyofYeet@users.noreply.github.com>\nDate: Sat Feb 10 23:04:35 2024 +0100\n\n Fix: File section is now validated (#2386)\n\n * file section is now validated + black\n\n * black format I forgot to include\n\n * updated black and re-formatted\n\ncommit fd6f85473df1f4e0cf54376d2df019f93af2de83\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Feb 8 12:39:15 2024 -0600\n\n Update playlist.py\n\ncommit 592a754b07455b92d56da29f0ce76be3fea90892\nAuthor: Fae \nDate: Wed Feb 7 19:18:53 2024 -0800\n\n Optimize play commands (#2382)\n\n * half-broken start of a rewrite.\n\n * more half-broken code, stashing on repo :)\n\n * Substantially less broken, but still broken optimizations...\n\n * in the middle of changing ytdlp settings, so this is half broken still.\n we call to extract_info many more times that we maybe should, so its time to rectify that...\n\n * Mostly working, requires lots of cleanup. stashing for now.\n\n * Mostly working, mostly tested, just needs tidy up.\n\n * Flake8 and Black\n\n * Make Entry types use and serialize extracted info.\n\n * add shuffle for entries under shuffleplay command.\n\n * Cleanup with a bit of black, flake8 and mypy.\n\n * commit early and often, and this is why.\n Mostly code clean up. Coverage tests still pending.\n Tiny scope creeps:\n pldump now names files, and tries the public channel if DM fails.\n now playing status got a little brush up i guess...\n\n * patch issue in deserialize player. minor typing fixes.\n\n * Fix some empty channel check and bot check issues.\n\n * Fix print() in cmd_skip to use return Response instead.\n\n * Use is_empty_voice_channel util in channel activity checks.\n\n * Force HEAD requests and ytdlp to use the same UA string.\n Sending \"MusicBot\" UA to some providers will get blocked or rate limited quickly.\n\n * Get more info on duration failures.\n\n * Allow defer queue serialization for better disk IO when importing playlists.\n Preempt failure of YT links by checking for deleted/private names.\n Also changes track numbering for tracks missing titles.\n\n * run black\n\n * Fix mypy complaints against ytdlp options.\n\n * Actually send to channel when DM fails. :)\n\n * Detect youtube:search with 0 results.\n\n * Allow StageChannel type in is_empty_voice_channel\n\n * Forgot to import StageChannel\n\n * Improve download checks.\n\n * general clean up, add some notes for later. Also some black, flake8, and mypy compliance\n\n * check for missing author ahead of download call, and don't spam about it.\n\n * More typing and code clean up.\n\n * run black\n\n * Remove stream check to enable all media through stream...\n some code tidy up with info references.\n\n * Fix cmd_search for new backend.\n\n * remove unused method\n\n * run black and do some more mypy typing clean up.\n\n * Remove shlex from search. The search engines will handle the quotes.\n\n * Start PR prep, remove changes to ignore and flake file.\n\n * Replace EMOJI_IDLE_ICON with sleeping face emoji, and run Black.\n\n * Revert changes in run.py as out of scope from commit 6016bdb2\n\n * Fix broken startup if logs directory is missing.\n\n * Add missing certifi requirement.\n\n * Fix bug with missing duration.\n\n * Better compound link support for youtube and ignored carrier videos.\n\n * black format\n\ncommit 45f3b7dd1a48937174d2d948c8b8458d0c47ef2a\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Mon Feb 5 18:16:58 2024 -0600\n\n update readme to include black\n\ncommit 8d11ae368cc59a552808852f77dc5569b0e8e8a2\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Mon Feb 5 18:01:07 2024 -0600\n\n new black version\n\ncommit 37bcf1f0c557f56b64aa79d2a66d0de0fc512ee2\nAuthor: Fae \nDate: Mon Feb 5 15:53:13 2024 -0800\n\n fix for timer events in server specific data. (#2385)\n\n * hot fix for timer events in server specific data.\n\n * fix both events.\n\ncommit 270da4d742d9db92a857c14dc34cd7081e81826d\nAuthor: Fae \nDate: Fri Jan 26 11:38:31 2024 -0800\n\n Fix missing logs bug (now on dev) (#2384)\n\n * Fix broken startup is logs directory is missing.\n\n * Run black\n\n * Add certifi to requirements, since it's missing.\n\ncommit 5810590a91822530c0a9ae48c5d3b59e6de6467f\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Mon Jan 22 19:08:21 2024 -0600\n\n I haven't done anything productive in awhile\n\n Missed ` in i18n\n Changes show config on launch:\n only show timeout's if enabled.\n Add search list.\n\ncommit 8d8148fb9ee4ab9fe47ceb3f80bbc26fcd8c6dee\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Jan 18 23:25:18 2024 -0600\n\n Revert \"add ping\"\n\n This reverts commit 0a0e1716239f451f33feed3086d63081df78f624.\n\ncommit 0a0e1716239f451f33feed3086d63081df78f624\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Jan 18 23:24:21 2024 -0600\n\n add ping\n\ncommit 7694da00f9ff6fda7d6a275be40c24515819493a\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Jan 11 13:53:46 2024 -0600\n\n Change command disconnect\n\n Update the disconnect command so that it doesn't say disconnected when it doesn't have an active player in the guild. Additionally adds i18n support.\n\n Update cmd-restart-invalid-arg i18n to match with what's in the code.\n\ncommit 01773d4d44cae6d256be0da8dc4cff1c25232d6f\nAuthor: Fae \nDate: Mon Jan 8 18:45:11 2024 -0800\n\n Restart overhaul - with upgrade commands (#2373)\n\n * Attempt full process restart. Clean up bot.py global. Clean up some of run.py\n\n * Ensure discord TCPConnector is closed. Run black.\n\n * Use the correct creationflag name.\n\n * Fix _wait_delete_msg() to check for bot.is_closed()\n\n * Make sure logging is shutdown.\n\n * Add i18n and command responses.\n\n * Run black\n\n * attempt upgrade options for restart command\n\n * Remove unused code\n\n * load self.exit_signal with actual signal, not just type.\n\n * make it easier to get RestartCode qualities from RestartSignal\n\n * Update command output and help text.\n\n * ensure black formatting\n\n * git needs shell=True on linux\n\n * Actually decode bytes to utf8.\n\n * run black on merged dev\n\n * run black on merged dev\n\n * Clean up exception handling, and remove cruft import.\n\n * Clean up exception handling and remove cruft import.\n\n * Squashed commit of the following:\n\n commit 7b4b153a30d0c45bc2e6e16432b864adf096eb83\n Author: Snow <135516526+BabyBoySnow@users.noreply.github.com>\n Date: Mon Jan 8 20:43:33 2024 -0600\n\n Remove shuffle play\n\n Can't get it working right, will look into again at a later time. Maybe we need to do something like get_info?\n\n ---------\n\n Co-authored-by: Snow <135516526+BabyBoySnow@users.noreply.github.com>\n\ncommit 7b4b153a30d0c45bc2e6e16432b864adf096eb83\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Mon Jan 8 20:43:33 2024 -0600\n\n Remove shuffle play\n\n Can't get it working right, will look into again at a later time. Maybe we need to do something like get_info?\n\ncommit eb26ab91870a0541180c08e9bd33db0ed6685fc1\nAuthor: Fae \nDate: Sat Jan 6 20:03:25 2024 -0800\n\n Pause resume updates (#2381)\n\n * Auto unpause when play-like commands are used.\n Clean up the old auto pause code (cause I've learned since then)\n\n * clean up a bit more, ensure things work.\n\n * Flake8\n\n * actually import typing.\n\n * Quote the custom type\n\n * run black on dev merge. grumble grumble\n\n * correct the function comment.\n\ncommit 13484ce2b352e984f57078349dba7a0ed8ac23a4\nAuthor: Fae \nDate: Wed Dec 27 11:04:03 2023 -0800\n\n Fix skip tally and cmd prefix bugs (#2380)\n\n * Fix issue with _get_guild_cmd_prefix in non-guild channels.\n\n * tally num_skips by counting members who are in skippers set of author.id numbers.\n\n * remove TODO note.\n\ncommit 8e8a433e7681b6d25ba412eee8a06a803ded7123\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri Dec 22 18:00:10 2023 -0600\n\n remove todo\n\ncommit 29a510d20f15eb0104b324072aa4f7418b215212\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri Dec 22 17:29:58 2023 -0600\n\n Fixes, and rework\n\n Rework repeat off. Set fallback owner group to have skip looped songs perms.\n\ncommit 0cf25c17d1569bf5255db2aa8df4d8d09ca42d3b\nAuthor: Fae \nDate: Fri Dec 22 14:50:00 2023 -0800\n\n Stop spotify playlists fetch on clear command (#2378)\n\n * Exit the spotify album/playlist loops when clear is used.\n\n * add guild to command args, fix bad ref\n\n * ditch the sleep method. this should work well enough...\n\ncommit a08f79274aeb304dd7962eb9ae0d73e396e843ec\nAuthor: Fae \nDate: Fri Dec 22 14:49:15 2023 -0800\n\n Update flake8 config and run Flake8 over the whole project. (#2379)\n\n Also changes skip command permission checks for looped songs.\n\ncommit 9c9e6caf20c145a04ca277381074906b94317044\nAuthor: Fae \nDate: Tue Dec 19 17:20:31 2023 -0800\n\n Server specific data cleanup (#2377)\n\n * use guild.id in server_specific_data key\n\n * auto black the whole repo.\n\ncommit 7cde7ad7ec1dea54d2b520042b46d16dcd5fbbbb\nAuthor: Fae \nDate: Mon Dec 18 12:58:40 2023 -0800\n\n Fix error thrown when non-yt link is used. (#2374)\n\n * Fix error thrown when non-yt link is used.\n\n * run black\n\ncommit e11464f00066e84c1ce4b4f60150d4683ca2e089\nAuthor: Fae \nDate: Sat Dec 16 17:46:13 2023 -0800\n\n Better SSL Patch (#2371)\n\n * Proper fix for SSL issue on windows with missing cert store cert.\n This should only use certifi if certs are missing, not by default.\n\n * patch only when broken.\n\n * Fix bot._cleanup() method.\n Remove some code cruft from pre 3.8.\n Make sure aiohttp isn't closed prematurely...\n\n * Flake8, black, and general clean up.\n\n * Make sure to clean up what could be broken.\n\n * fix this little thing before it stops the show.\n\n * run black on run.py\n\ncommit 7b1802372e22175e6bae44316c403786017f1310\nAuthor: Fae \nDate: Sat Dec 16 12:34:46 2023 -0800\n\n Fix error when timer options are missing and default int is used. (#2372)\n\ncommit 8ce4ce2f2dd19a953ea4a0c6ff2d3dbe5b99dd89\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri Dec 15 22:07:43 2023 -0600\n\n rework repeat command\n\n Add some new options and handle invalid options better. I found myself doing repeat on a lot and cycling through everything so I reworked it.\n Remove unnecessary json strings.\n\ncommit cd9c168cb15a2fa362eb15ad9d7a9c7381da2f1c\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri Dec 15 20:11:28 2023 -0600\n\n run black\n\ncommit 3d0132e5ea271ad3b73d257f5e3149dd0c932fe1\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri Dec 15 20:10:52 2023 -0600\n\n small change\n\n Make np text less ugly\n\ncommit 608354472ec0fdb20d10bc631e35c9c6593aa288\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri Dec 15 17:10:06 2023 -0600\n\n forgot black\n\ncommit 117ec1719542dea537c5f37b4a229f0b99b7399f\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri Dec 15 17:09:02 2023 -0600\n\n oops, that was server deafen.\n\n Need to find a better method of error catching, maybe let admin know we need perms then try again after sleeping for some time?\n\ncommit 19a19e1dcdc0120929b6b64f6a4f30f6c2494791\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri Dec 15 15:05:24 2023 -0600\n\n deafen if set to.\n\n Edit for stage channels to deafen if set to.\n\ncommit 612f341e67bc6d7a6c54cf367591bf44a6d1d902\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri Dec 15 14:26:47 2023 -0600\n\n Fix stage channels\n\n Stage channels where being recognized as text channels. This should fix that.\n Closes #2252\n Add autoplaylist cache map to gitignore\n\ncommit 9c14a19462baf20ad250bdf8138ea44c23a9cfb2\nAuthor: Fae \nDate: Wed Dec 13 19:38:31 2023 -0800\n\n Inactive player timeout & timer touch ups. (#2366)\n\n * Add inactivity option based on player state, in addition to VC activity.\n\n * Naming consistency.\n\n * Fix auto join channels check.\n\n * clean up VC and guild references. Prevent redundant resets.\n\n * Add shorthand english time format support to time-related config options.\n Tiny scope creep for this branch...\n\n * missing import re\n\n * I should remove test prints before commits.\n\n * revert scope creep\n\n * Remove guild name from activity message.\n\n * Black & Flake8\n\n * Make sure these timers don't block further execution.\n\n * Make some logs info level and remove log from finally to make it less chatty.\n\n * Update status message on disconnect.\n\n * Make sure to clear both active timers on disconnect.\n\n * Simplify update_now_playing_status.\n\n * check for paused players over just active players.\n\n * black\n\n * black\n\n * Prevent starting an already active VC timer.\n\n * Clarify and document options.\n\n * black\n\n * Revert to LeaveAfterSong to remain compatible with existing config.\n\ncommit b5573868443e94165a736caca0c0f95ddc75ede9\nAuthor: Fae \nDate: Wed Dec 13 18:20:27 2023 -0800\n\n Prefix per server (#2367)\n\n * Initial per-server command prefix\n\n * Add example_option, and file check.\n\n * clean up and add missing import json\n\n * add method to clear prefix\n\n * ensure black format.\n\n * Remove redundant space check.\n\n * Add i18n strings.\n\n * make command list less error prone in multi-guild.\n\n * Try to make emoji prefix possible.\n\n * black format\n\n * tidy output and add i18n string.\n\n * ensure prefix is listed.\n\n * Fix missing prefix\n\n * fix missing , in i18n/en.json\n\n * make emoji prefix work without backspace required.\n\n * Rename option to EnablePrefixPerGuild instead.\n\n * Add prefix history for better clean command, and match animated emoji/better emoji checking.\n\n * Fix typo, add regex emoji check to on_message, and convert regex to raw strings for Flake8.\n\n * Note for future reference\n\n * Better support for emoji in unicode rather than markdown. Fixed emoji check for animated emoji in help command.\n\ncommit dcc703e55bb3294bb02b6e435b84e9a04a761368\nAuthor: Fae \nDate: Wed Dec 13 18:20:09 2023 -0800\n\n Typing compatible with 3.8 (#2370)\n\ncommit 2785ac39a3e41a221bf4c075679f246dc59033e5\nAuthor: Fae \nDate: Tue Dec 12 12:13:24 2023 -0800\n\n Cache autoplay retention option & cache folder option. (#2365)\n\n * Add option and logic to retain autoplaylist data in cache. Testing required.\n\n * await preload in a proper place.\n\n * Add config option to set audio cache directory.\n Refactor audio cache into its own class.\n Clean up some auto playlist handling.\n All to enable cache retention of auto playlist entries...\n Some of this could help with stability in the long run though.\n\n * Flake8 & black and fix my errors.\n\n * Handle cache earlier. Actually save cachemap on updates...\n Add some maybe temporary logs for debug.\n\n * Playlist urls now removed from cache map on purge_from_ap.\n Fixed broken asyncio.Lock usage.\n Refactored with Flake8 and Black.\n Added annotations/typing\n\n * Use proper forward ref.\n\n * make autoplaylist command work without player in voice.\n Clarify example options more.\n\n * Count retained size against cache immediately.\n\n * satisfy flake8 and black\n\n * don't add the current size in the purge test.\n\ncommit dce4dadaeec123c257d9346e196cf1ea2dafb031\nAuthor: Fae \nDate: Mon Dec 4 10:54:33 2023 -0800\n\n Fix spotify ssl issue (#2364)\n\n * patch spotify.py SSL with certifi\n\n * remove ssl_context from global scope\n\ncommit 330b11107a51dd171354d4c4e6e581abe6768623\nAuthor: Fae \nDate: Sat Dec 2 15:40:46 2023 -0800\n\n Allow cache config shorthand & clarify functionality. (#2363)\n\n * StorageLimitBytes now with notation conversion.\n\n * Clarify/Document cache options in example_options.ini\n\n * Function name consistency.\n\n * Linux instead of *nix\n\ncommit 10371b57f7866b59f2e1ab6663549ab7466338b4\nAuthor: Fae \nDate: Thu Nov 30 12:54:09 2023 -0800\n\n More audio cache options. (#2362)\n\n * Lets try cache management.\n\n * early bail if no limits are set. Fix missing pathlib.\n\n * Fix invalid use of rmtree.\n\n * Fix bytes/days in show config\n\n * bytes typo\n\n * Log removed count and size to debug.\n\n * Add 'cache' command for info and on-demand clear.\n\n * Typo\n\n * format_bytes to 3 decimal places. Add 'days' in time limit info.\n\n * Format uses binary prefix, lets be clear.\n\n * Get file size early.\n\n * Fix formatting in example_options.ini\n\n * improve cache info.\n\n * Add basic automatic cache clear.\n\n * Update cached_audio_bytes when cleared\n\n * Make sure we update the cache size value.\n\n * might as well update here too.\n\n * Add i18n strings for cache command.\n\n * Throw command error on invalid option.\n\n * make sure example_options match config defaults.\n\n * Compat with Windows, only remove cache dir on startup, & fix sorting order.\n\n * Make SaveVideos=no work as expected on Windows.\n Also fix a typo.\n\ncommit ff0cb1d69a1ec6fb70619654788efff903c2f10d\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Wed Nov 29 22:51:32 2023 -0600\n\n Shuffle play fixes\n\n Fix that shuffleplay wasn't actually shuffling due to an early return. Follow same format as the rest of the help docs. Fix format issue for repeat command no songs errror. Add an expire in to repeat command no voice.\n\ncommit 579eeb373c080be329c817750fc10ca28c2a3a9e\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Wed Nov 29 21:08:31 2023 -0600\n\n Clarification.\n\n Clarify that the playlist plays the first few songs in order only if nothing else is playing first.\n Also ran black.\n\ncommit 8f36dadd460260e7311c7a5e3a776228dbd982d8\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Wed Nov 29 20:50:05 2023 -0600\n\n Fix mentions in now playing\n\n There's an issue where using mentions in a title doesn't convert and shows as <@numbers> instead. This ensures now playing mentions work correctly by putting it into a field instead of a title. I'm sure there's a better way to hack the name parameter for add_field but this seems work fine.\n\ncommit b691d45b4aac0587ddb31a99044dcee6b4a1ff95\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Wed Nov 29 19:43:51 2023 -0600\n\n Shuffle the playlist\n\n I did this wrong, this will correctly shuffle the playlist after it's been fully downloaded. Due to the nature of how _cmd_play works, the first few songs of the playlist will be played in the order they are in the playlist.\n\ncommit 7e2adb0ae8e4c2205921b1f92e6ee5b6fd08c060\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Wed Nov 29 19:13:27 2023 -0600\n\n Adds shuffleplay\n\n A shorthand command of doing the play command and then the shuffle command\n\ncommit 0d3eb97128c7812a4a40841e8cbdd09b8d424fad\nAuthor: DestinyofYeet <57575330+DestinyofYeet@users.noreply.github.com>\nDate: Tue Nov 28 23:26:27 2023 +0100\n\n Round robin queue (#2361)\n\n * Added a round-robin queue\n\n * ran black\n\n * added round_robin_queue to !option\n\n * ran black\n\n * changed default option to no\n\n * Extra info\n\n ---------\n\n Co-authored-by: Snow <135516526+BabyBoySnow@users.noreply.github.com>\n\ncommit dd98309ccf5351926ee5c88c6d70435700761a40\nAuthor: DestinyofYeet <57575330+DestinyofYeet@users.noreply.github.com>\nDate: Wed Nov 22 23:44:13 2023 +0100\n\n \"Now playing\" now respects DeleteNowPlaying option (#2358)\n\ncommit 72956879d4171120585b475ff8ab907ee7be3968\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Wed Nov 22 13:52:49 2023 -0600\n\n Squashed commit of the following:\n\n commit 607783b894dbdcd3083dd0e2e5481c97266d081a\n Author: DestinyofYeet <57575330+DestinyofYeet@users.noreply.github.com>\n Date: Wed Nov 22 14:43:34 2023 +0100\n\n \"Now playing\" now respects DeleteNowPlaying option\n\ncommit e8eebff250b5c1f09c1e810d93de8db51badcab1\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri Nov 17 15:51:20 2023 -0600\n\n Remove checks for request usage.\n\n Something weird was going on where this was raising errors, even with no modifications to the code.\n\ncommit 24e2798380a3b530808ebea63489be9ab6815b2d\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri Nov 10 21:02:18 2023 -0600\n\n only delete invoking if set to\n\n Also add missing expire_in\n\ncommit 5fe62090b89a79d30a3a41e8aef7b036c2930e69\nAuthor: P.H. Knot <36478829+phknot@users.noreply.github.com>\nDate: Tue Nov 7 01:22:06 2023 +0100\n\n Include git in Dockerfile (#2355)\n\n git is needed to install the\n git+https://github.com/Rapptz/discord.py pip dependency\n\ncommit f141234b63ee2d910564998ba692e450dc48b86f\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Sun Nov 5 21:30:23 2023 -0600\n\n fix messages deleting even when set not to\n\ncommit 18006563b6a3547387cf7ca0bf2b00004bc1a27c\nMerge: 773fa3d 2dd4f73\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Oct 26 04:08:13 2023 -0500\n\n Merge pull request #2352 from DestinyofYeet/fix-autoplaylist-skipping-song\n\n fixed that the autoplaylist skips the current song playing when enabling it\n\ncommit 2dd4f73108daf1c5413e7b07ff1cd29a1bb2a45c\nAuthor: DestinyofYeet <57575330+DestinyofYeet@users.noreply.github.com>\nDate: Thu Oct 26 11:04:28 2023 +0200\n\n fixed that the autoplaylist skips the current song playing when enabling it\n\ncommit 773fa3d1b5ab56c2bfe330c29c9a13e2527b7bfb\nMerge: f9c3621 2be8f19\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Oct 26 03:53:20 2023 -0500\n\n Merge pull request #2351 from DestinyofYeet/move-message-fix\n\n Move message fix\n\ncommit 2be8f198c05a5ae19a28da69308e1ab087318d1b\nAuthor: DestinyofYeet <57575330+DestinyofYeet@users.noreply.github.com>\nDate: Thu Oct 26 10:46:08 2023 +0200\n\n bot.py: fixed move-message\n en.json: fixed spelling mistakes\n\ncommit f9c3621dae32be17acde9157e46f3f24c2efafa6\nAuthor: DestinyofYeet <57575330+DestinyofYeet@users.noreply.github.com>\nDate: Thu Oct 19 23:46:37 2023 +0200\n\n Disconnect timer (#2350)\n\n * apparently auto_paused was needed, whoops\n\n * Made the text more informative and fixed a bug where the bot would not disconnect when moved between VC's\n\n * ran black\n\ncommit ce179c1bbd2f30d0e56a34405d7914a64eebdae1\nAuthor: DestinyofYeet <57575330+DestinyofYeet@users.noreply.github.com>\nDate: Thu Oct 19 22:42:23 2023 +0200\n\n apparently auto_paused was needed, whoops (#2349)\n\ncommit 16534403c460b0082676a10fa2bc742aba64fc94\nMerge: b5b6f32 03789a0\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Oct 19 15:28:12 2023 -0500\n\n Merge pull request #2348 from DestinyofYeet/disconnect-timer\n\n updated inactivity timeout logic\n\ncommit 03789a01ebbbb83f965bbf8c4744adf710fef924\nMerge: fc49fe7 b1a1c8a\nAuthor: DestinyofYeet \nDate: Thu Oct 19 22:23:25 2023 +0200\n\n Merge remote-tracking branch 'origin/disconnect-timer' into disconnect-timer\n\ncommit fc49fe73f099545103263f68357d046cdaf5c510\nAuthor: DestinyofYeet \nDate: Thu Oct 19 22:23:21 2023 +0200\n\n fixed bound channels and changed text as requested\n\ncommit b1a1c8a1ccef41e6200888748e17fa8c77feebe7\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Oct 19 15:15:06 2023 -0500\n\n Update example_options.ini\n\n Missed one lol\n\ncommit 5cf64d88232d1b7a50035b2e2070574200729f19\nAuthor: DestinyofYeet \nDate: Thu Oct 19 21:29:51 2023 +0200\n\n bot.py: updated inactivity timeout logic\n\n example_options.ini: added space between text and #\n\ncommit b5b6f326bc1d9fef9700a3d71e775a24f0322fa6\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri Oct 13 20:32:58 2023 -0500\n\n No real point in having a different set for this\n\n Refactor to use ssd instead of a separate list for guild ID's and timers.\n\ncommit 764bc3bd19d762e6e5e2499e21069c2b0f99ef3c\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri Oct 13 06:07:51 2023 -0500\n\n Attempt to send it to a channel.\n\n I'm not really sure if this is wanted or needed but I like it. If anyone complains it can always be removed.\n\ncommit 08239419320e9b172f157ef9db54ae22a6625ce2\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri Oct 13 04:52:31 2023 -0500\n\n Should close #2265\n\n Thanks ole for pointing out the way to do this.\n\ncommit 13e18782dc0e7a4588df751920b01be062c700b0\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri Oct 13 04:06:36 2023 -0500\n\n Remove unnecessary list.\n\n Never get's used. Every byte matters.\n\ncommit 381634fc40ec6dbace89eb51c4f48245e7f9c415\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Sun Oct 1 20:59:32 2023 -0500\n\n change from debug to info.\n\n Make sure we don't disconnect from binded voice channels. Add a little more detail about canceled timers.\n\ncommit 8acff12f4c3c6729d93901af6f8f6e24d2900406\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri Sep 29 16:20:16 2023 -0500\n\n forgot to run black over it\n\ncommit 5e6686e27bdf442fbccddc5294127c79c17e98c9\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri Sep 29 16:19:04 2023 -0500\n\n I did not account for user moving to a different channel and taking the bot with them.\n\ncommit a19faa3d1f3c33bc17a4388d19282d388a22a11c\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Fri Sep 29 15:30:00 2023 -0500\n\n Feat: Leave inactive VC after x time.\n\n Saw this requested a few different times. I tested with 1 server, hasn't been tested with multiple servers. Should be fine but time will tell.\n\ncommit 922f5f2cf3ea039858b468332159d7fe677a8a0d\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Sep 28 19:37:02 2023 -0500\n\n waiting for pypi release.\n\ncommit 54086ba16d9a9444860397a59efbb18b868bcd26\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Sep 28 16:59:28 2023 -0500\n\n Update requirements.txt\n\n Target was merged.\n\ncommit c9f95d8d11f981ebae0f46ac04d4c834bfa9eb19\nMerge: b8c744e cc769bb\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Sep 28 13:27:51 2023 -0500\n\n Merge pull request #1544 from obi23lipnik/playlist_manipulations\n\n Adds 'autoplaylist' command to allow better autoplaylist manipulation\n\ncommit cc769bbe0b1a3cf842b44d9f6a7eef543906aa47\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Sep 28 13:24:12 2023 -0500\n\n Remove redundant code and run black\n\n There was no point in having a save command since the autoplaylist command has it.\n\ncommit f903623c15ec03b0718bfa580520fab03276f807\nMerge: de51079 b8c744e\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Thu Sep 28 13:06:39 2023 -0500\n\n Merge branch 'dev' into pr/1544\n\ncommit b8c744e02a637fadee13c79b13c610d256b57c25\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Wed Sep 27 19:08:37 2023 -0500\n\n typo.\n\n Fix typo.\n\ncommit 3eacf3f71a8a7485d6cbbbe035ff9d865ebd0b4d\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Wed Sep 27 19:07:01 2023 -0500\n\n change video ID handling\n\n Update the way we grab a video ID from a url to account for links being used that don't have the watchv in it. Could potentially solve #2341?\n\ncommit 8b316d20be1bee56b00f9b32dac3724b14eca9e8\nAuthor: TheerapakG \nDate: Sun Sep 24 22:32:40 2023 +0700\n\n fix: pass stderr bytesio for dpy voice rewrite (#2336)\n\ncommit 8c0500592b9b204bf2e6d6a5e4f7c03bed268a90\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Sun Sep 24 09:39:17 2023 -0500\n\n target borkeds rewrite of voice handling\n\ncommit 22905cd5ed08c2af0de3c13e16bf2a1cb0e17a28\nAuthor: TheerapakG \nDate: Sun Sep 24 12:55:37 2023 +0700\n\n refactor: remove PatchedBuff (#2335)\n\ncommit 870165f096da50afac299cf8d1bfb7f561409d7f\nAuthor: Snow <135516526+BabyBoySnow@users.noreply.github.com>\nDate: Sat Sep 9 20:01:30 2023 -0500\n\n Update PULL_REQUEST_TEMPLATE.md\n\n Target the dev branch.\n\ncommit de51079c8dd5b743581986ee53d4d2b711cde051\nMerge: 47a5e46 f068fe8\nAuthor: BabyBoySnow \nDate: Sat Jul 29 23:00:22 2023 -0500\n\n Merge branch 'master' into pr/1544\n\ncommit 47a5e46edf12dd4dffed1b58c43d260e0b401f47\nAuthor: David Lipnik \nDate: Tue Mar 20 22:36:07 2018 +0000\n\n Removes redundat cmd handle\n\ncommit 1d1ca21634a9f9076181c1859d54263b566ef4f8\nAuthor: David Lipnik \nDate: Tue Mar 20 22:28:03 2018 +0000\n\n Removes and applies better formatting (shorter lines)\n\ncommit f55ca8fca228171b783f79a48fb2d81d564a071b\nAuthor: David Lipnik \nDate: Tue Mar 20 17:44:34 2018 +0000\n\n Adds 'autoplaylist [+, -, add, remove]' command and refactors functioning parts of save/unsave commands\n\ncommit 06f114be34bf0d79a29bb5b019406998f6cc40f5\nAuthor: David Lipnik \nDate: Tue Mar 20 15:41:11 2018 +0000\n\n Removes redundant newline and uses better wording on cmd-unsave-invalid exception\n\ncommit 674da785aad4a5d440050919583db796d27b1a54\nAuthor: David Lipnik \nDate: Tue Mar 20 15:09:26 2018 +0000\n\n Adds 'unsave' command","shortMessageHtmlLink":"merge dev to review:"}},{"before":"c79d72a2011ba738f740b06bc3a1db71afac9e5d","after":"ddbc8e6b184287d6aae5bde5b35f453d2ac591a7","ref":"refs/heads/dev","pushedAt":"2024-05-17T16:11:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"add some with multiple\n\nadd latency as ping","shortMessageHtmlLink":"add some with multiple"}},{"before":"4c1326f876481673241dd10c43925472cec5f454","after":"c79d72a2011ba738f740b06bc3a1db71afac9e5d","ref":"refs/heads/dev","pushedAt":"2024-05-17T16:10:09.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"Merge branch 'pr/2405' into dev","shortMessageHtmlLink":"Merge branch 'pr/2405' into dev"}},{"before":"a76f648240e30bd7cfd4b661682f3b597039f0be","after":"4c1326f876481673241dd10c43925472cec5f454","ref":"refs/heads/dev","pushedAt":"2024-05-17T13:56:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"fix broken resolve","shortMessageHtmlLink":"fix broken resolve"}},{"before":"c256eb97c4aeee97f4e86cc8b64bdad35d449ae2","after":"a76f648240e30bd7cfd4b661682f3b597039f0be","ref":"refs/heads/dev","pushedAt":"2024-05-17T13:50:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"Add uptime command (#2407)\n\nCo-authored-by: Snow <135516526+BabyBoySnow@users.noreply.github.com>","shortMessageHtmlLink":"Add uptime command (#2407)"}},{"before":"876ffb81708bc9554fa2e9a9e60bb4a35190b3f1","after":"c256eb97c4aeee97f4e86cc8b64bdad35d449ae2","ref":"refs/heads/dev","pushedAt":"2024-05-17T13:46:45.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"Add latency and botlatency commands. (#2406)","shortMessageHtmlLink":"Add latency and botlatency commands. (#2406)"}},{"before":"c7ac43a0f48b843144d317d814f10d840d6c28f3","after":"876ffb81708bc9554fa2e9a9e60bb4a35190b3f1","ref":"refs/heads/dev","pushedAt":"2024-05-16T01:39:41.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"Bug fixes, QOL tweaks, and code clean up. (#2404)\n\n* Bug fixes, QOL tweaks, and code clean up.\r\n\r\n* Fix regression of relative seek.","shortMessageHtmlLink":"Bug fixes, QOL tweaks, and code clean up. (#2404)"}},{"before":"e2ad0fe3003a534e1bb17148e66c07be9486c3b1","after":"c7ac43a0f48b843144d317d814f10d840d6c28f3","ref":"refs/heads/dev","pushedAt":"2024-05-15T13:31:49.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"Add multi-playlist support and local media support. (#2403)","shortMessageHtmlLink":"Add multi-playlist support and local media support. (#2403)"}},{"before":"20e674d724596d81eac49510152cc59e510ac1e8","after":"e2ad0fe3003a534e1bb17148e66c07be9486c3b1","ref":"refs/heads/dev","pushedAt":"2024-05-15T12:32:35.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"BabyBoySnow","name":"Snow","path":"/BabyBoySnow","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/135516526?s=80&v=4"},"commit":{"message":"Seek and speed features (#2402)\n\n* Adds seeking and playback speed support.\r\n\r\n* Update example_options.ini\r\n\r\n* Add relative seek.","shortMessageHtmlLink":"Seek and speed features (#2402)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0wN1QwNToyMTozMy4wMDAwMDBazwAAAASvfnRo","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0wN1QwNToyMTozMy4wMDAwMDBazwAAAASvfnRo","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNS0xNVQxMjozMjozNS4wMDAwMDBazwAAAARKhXv3"}},"title":"Activity ยท Just-Some-Bots/MusicBot"}