|  | 5333559b25   | feat(utils/format_duration): add natural | 2025-01-06 12:08:34 -05:00 |  | 
			
				
					|  | 74629ad984   | feat(commands/voice/queue): add immutability checks | 2025-01-06 11:59:43 -05:00 |  | 
			
				
					|  | b0e378105e   | feat(commands/voice): allow immutable commands from non-vc members | 2025-01-06 11:53:19 -05:00 |  | 
			
				
					|  | 290e85a1c1   | fix(commands/voice): check if player exists before playing next | 2025-01-06 11:53:02 -05:00 |  | 
			
				
					|  | 42735f9a60   | refactor: tweak duration bracket bolding | 2025-01-06 11:36:27 -05:00 |  | 
			
				
					|  | c0173b87e9   | fix: don't edit on channel send | 2025-01-06 11:14:49 -05:00 |  | 
			
				
					|  | d3fd79e87f   | feat(commands/voice/playing): add --description | 2025-01-06 10:45:38 -05:00 |  | 
			
				
					|  | d9d35a2672   | refactor(constants): sort variables | 2025-01-06 10:20:14 -05:00 |  | 
			
				
					|  | 6887ebe087   | refactor: tweak some descriptions | 2025-01-06 10:12:58 -05:00 |  | 
			
				
					|  | 5216d611c3   | feat(commands/voice/playing): add percentage | 2025-01-06 10:01:44 -05:00 |  | 
			
				
					|  | 2204c24e29   | refactor(commands/voice/queue): don't show queuer on first queue | 2025-01-06 09:55:28 -05:00 |  | 
			
				
					|  | 0aef94db2d   | feat: add player progress tracking | 2025-01-06 09:51:22 -05:00 |  | 
			
				
					|  | e2834532b2   | fix(tasks/cleanup): use .items() | 2025-01-06 07:14:32 -05:00 |  | 
			
				
					|  | 63a2db8278   | refactor: clean up initialization code | 2025-01-06 00:48:02 -05:00 |  | 
			
				
					|  | 84768653a9   | fix(commands/voice): return early if no player | 2025-01-06 00:39:05 -05:00 |  | 
			
				
					|  | 565dbb6f47   | refactor: minor fixes everywhere | 2025-01-06 00:39:04 -05:00 |  | 
			
				
					|  | ebde4f1310   | fix: runs threads for background tasks | 2025-01-05 19:42:22 -05:00 |  | 
			
				
					|  | 82cd56ace8   | refactor(state): switch to LimitedSizeDict | 2025-01-05 19:24:44 -05:00 |  | 
			
				
					|  | 3c4480c834   | feat: keep track of message responses for all commands | 2025-01-05 19:24:19 -05:00 |  | 
			
				
					|  | 3848deb887   | feat: set status to idle appropriately | 2025-01-05 19:23:50 -05:00 |  | 
			
				
					|  | d7ab46a20e   | feat(commands/voice/queue): allow queueing more than 5 if only member in channel | 2025-01-05 18:33:36 -05:00 |  | 
			
				
					|  | ac2fc1c52d   | refactor: add helper for sending messages in channel | 2025-01-05 18:26:45 -05:00 |  | 
			
				
					|  | c27998abc7   | refactor(commands/voice): add check reaction for join and leave | 2025-01-05 18:17:24 -05:00 |  | 
			
				
					|  | 614359abd1   | fix(commands/voice/queue): actually pass edited | 2025-01-05 18:06:13 -05:00 |  | 
			
				
					|  | 4a1ef90059   | refactor: tweak some messages | 2025-01-05 17:44:15 -05:00 |  | 
			
				
					|  | cf2348c918   | refactor: remove dynamic handler system Can just use client.add_listener instead | 2025-01-05 17:33:52 -05:00 |  | 
			
				
					|  | 17bcdc687d   | feat: delete queued songs on message delete | 2025-01-05 17:26:36 -05:00 |  | 
			
				
					|  | d5623502b0   | feat(commands/voice/queue): replace queued song on message edit | 2025-01-05 17:04:34 -05:00 |  | 
			
				
					|  | 186eda4934   | refactor(youtubedl): clean up formatting and use dataclasses | 2025-01-05 16:59:49 -05:00 |  | 
			
				
					|  | 5281236e0f   | fix(events): use add_listener to allow reloading Also ignore messages whose embeds have changed. | 2025-01-05 16:59:21 -05:00 |  | 
			
				
					|  | 100f829e7a   | fix(commands/voice/queue): clean up queue failure message | 2025-01-05 16:58:14 -05:00 |  | 
			
				
					|  | 9790ef2914   | feat(commands/voice): limit to 5 queued songs without manage channels permission | 2025-01-05 16:51:39 -05:00 |  | 
			
				
					|  | 1a1272956c   | feat(commands/voice/queue): use paginators for list | 2025-01-05 16:51:23 -05:00 |  | 
			
				
					|  | 19c7bc477f   | feat(commands/voice/queue): add --next | 2025-01-05 16:50:32 -05:00 |  | 
			
				
					|  | e540b266c7   | feat(commands/execute): track sent messages | 2025-01-05 16:49:33 -05:00 |  | 
			
				
					|  | 116ed896ab   | fix(commands/utils): fix partial exact matching play & playing | 2025-01-05 16:48:46 -05:00 |  | 
			
				
					|  | 6930f964c5   | feat(commands/voice): add playing | 2025-01-05 16:48:22 -05:00 |  | 
			
				
					|  | f08b9f0766   | refactor(youtubedl): use collections.deque for player queue | 2025-01-03 20:01:19 -05:00 |  | 
			
				
					|  | 1c7b8797bc   | chore: add readme | 2025-01-03 19:09:24 -05:00 |  | 
			
				
					|  | 92a0eee92c   | feat(core): automatically leave voice channel when empty | 2025-01-03 18:53:22 -05:00 |  | 
			
				
					|  | 409373ee27   | fix(commands/voice): handle edge case where player dies | 2025-01-01 16:52:15 -05:00 |  | 
			
				
					|  | 642d4aef81   | refactor(commands/voice/queue): tweak descriptions | 2025-01-01 16:39:47 -05:00 |  | 
			
				
					|  | d0ddb36812   | fix: put lock on skip command | 2025-01-01 15:38:07 -05:00 |  | 
			
				
					|  | db2be32a43   | feat(utils/format_duration): add weeks | 2025-01-01 15:33:57 -05:00 |  | 
			
				
					|  | 0fa1123a87   | refactor(commands/voice/queue): remove shorthand flag from --now | 2025-01-01 15:18:21 -05:00 |  | 
			
				
					|  | 2f0e849c84   | fix(commands/voice/queue): don't allow negative indices | 2025-01-01 15:11:02 -05:00 |  | 
			
				
					|  | 7e27c9158b   | feat(commands/voice/queue): add --page | 2024-12-31 22:18:23 -05:00 |  | 
			
				
					|  | 64919008a5   | feat(commands/voice): send message when song plays | 2024-12-31 21:45:28 -05:00 |  | 
			
				
					|  | 99f5d3d338   | fix(commands/voice/queue): fix --remove-multiple | 2024-12-31 20:37:49 -05:00 |  | 
			
				
					|  | e85d90fb36   | feat(commands/voice/queue): add --duration | 2024-12-31 20:03:40 -05:00 |  |