Added remove_track and swap_track method in player

This commit is contained in:
Choco
2024-05-30 21:41:48 +08:00
parent 9f2e0e59cd
commit 20bef0e681
3 changed files with 52 additions and 90 deletions

View File

@@ -166,40 +166,16 @@ async def backTo(player: Player, member: Member, data: Dict):
player.queue.backto(index + 1)
await player.stop()
async def moveTrack(player: Player, member: Member, data: Dict):
async def moveTrack(player: Player, member: Member, data: Dict) -> None:
if not player.is_privileged(member):
return missingPermission(member.id)
c = player.queue._position - 1
position = data.get("position")
new_position = data.get("newPosition")
moveItem = player.queue._queue[position]
player.queue._queue.remove(moveItem)
player.queue._queue.insert(new_position, moveItem)
index = data.get("index")
new_index = data.get("newIndex")
if index == new_index:
return
if position > c and new_position <= c:
player.queue._position += 1
elif position < c and new_position >= c:
player.queue._position -= 1
elif position == c:
player.queue._position = new_position + 1
return {
"op": "moveTrack",
"position": {
"index": position - c,
"track_id": moveItem.track_id
},
"newPosition": {
"index": new_position - c
},
"guild_id": player.guild.id,
"requester_id": member.id,
"skip_users": [member.id]
}
await player.move_track(index, new_index, member)
async def addTracks(player: Player, member: Member, data: Dict):
raw_tracks = data.get("tracks", [])
@@ -249,28 +225,12 @@ async def repeatTrack(player: Player, member: Member, data: Dict):
await player.set_repeat()
async def removeTrack(player: Player, member: Member, data: Dict):
async def removeTrack(player: Player, member: Member, data: Dict) -> None:
if not player.is_privileged(member):
return missingPermission(member.id)
position = data.get("position")
verify_id = data.get("track_id")
track = player.queue._queue[position]
if track.track_id == verify_id:
player.queue._queue.remove(track)
if position < player.queue._position:
player.queue._position -= 1
return {
"op": "removeTrack",
"positions": [position],
"track_ids": [track.track_id],
"current_queue_position": player.queue._position,
"requester_id": member.id,
"guild_id": player.guild.id
}
index, index2 = data.get("index"), data.get("index2")
await player.remove_track(index, index2, requester=member)
async def updatePause(player: Player, member: Member, data: Dict):
pause = data.get("pause", True)