2024-04-19 09:46:54 +08:00
|
|
|
package com.coloryr.allmusic.server.core.command;
|
2024-04-17 22:15:12 +08:00
|
|
|
|
2024-04-19 09:46:54 +08:00
|
|
|
import com.coloryr.allmusic.server.core.AllMusic;
|
|
|
|
|
import com.coloryr.allmusic.server.core.music.play.PlayMusic;
|
2024-06-21 11:06:14 +08:00
|
|
|
import com.coloryr.allmusic.server.core.objs.message.PAL;
|
2024-04-19 09:46:54 +08:00
|
|
|
import com.coloryr.allmusic.server.core.objs.music.SongInfoObj;
|
2024-04-17 22:15:12 +08:00
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.Collections;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
public class CommandPush extends ACommand {
|
|
|
|
|
@Override
|
|
|
|
|
public void ex(Object sender, String name, String[] args) {
|
|
|
|
|
if (AllMusic.getConfig().needPermission &&
|
2024-05-17 09:04:46 +08:00
|
|
|
!AllMusic.side.checkPermission(name, "allmusic.push")) {
|
2024-04-17 22:15:12 +08:00
|
|
|
AllMusic.side.sendMessage(sender, AllMusic.getMessage().push.noPermission);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (PlayMusic.getListSize() == 0 && PlayMusic.getIdleListSize() == 0) {
|
|
|
|
|
AllMusic.side.sendMessage(sender, AllMusic.getMessage().musicPlay.emptyPlay);
|
|
|
|
|
}
|
|
|
|
|
SongInfoObj id = null;
|
|
|
|
|
if (args.length == 1) {
|
|
|
|
|
id = PlayMusic.findPlayerMusic(name);
|
|
|
|
|
if (id == null) {
|
|
|
|
|
AllMusic.side.sendMessage(sender, AllMusic.getMessage().push.noId);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
SongInfoObj id1 = PlayMusic.findMusicIndex(1);
|
|
|
|
|
if (id1 != null && id1.getID().equalsIgnoreCase(id.getID())) {
|
|
|
|
|
AllMusic.side.sendMessage(sender, AllMusic.getMessage().push.pushErr);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
} else if (args.length == 2) {
|
|
|
|
|
if (args[1].equalsIgnoreCase("cancel")) {
|
|
|
|
|
if (!PlayMusic.pushSender.equalsIgnoreCase(name)) {
|
|
|
|
|
AllMusic.side.sendMessage(sender, AllMusic.getMessage().push.err1);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (PlayMusic.pushTime <= 0) {
|
|
|
|
|
AllMusic.side.sendMessage(sender, AllMusic.getMessage().push.err2);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
PlayMusic.pushTime = -1;
|
|
|
|
|
AllMusic.clearPush();
|
|
|
|
|
AllMusic.side.bq(AllMusic.getMessage().push.cancel);
|
|
|
|
|
PlayMusic.pushSender = null;
|
|
|
|
|
return;
|
|
|
|
|
} else {
|
|
|
|
|
try {
|
|
|
|
|
int index = Integer.parseInt(args[1]);
|
|
|
|
|
id = PlayMusic.findMusicIndex(index);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
AllMusic.side.sendMessage(sender, AllMusic.getMessage().push.noId);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (id == null) {
|
2024-06-21 11:06:14 +08:00
|
|
|
AllMusic.side.sendMessage(sender, AllMusic.getMessage().push.noId1.replace(PAL.index, args[1]));
|
2024-04-17 22:15:12 +08:00
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else if (args.length > 2) {
|
|
|
|
|
AllMusic.side.sendMessage(sender, AllMusic.getMessage().command.error);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (PlayMusic.pushTime <= 0) {
|
|
|
|
|
if (id == null) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
PlayMusic.pushTime = AllMusic.getConfig().voteTime;
|
|
|
|
|
PlayMusic.push = id;
|
|
|
|
|
AllMusic.addPush(name);
|
|
|
|
|
AllMusic.side.sendMessage(sender, AllMusic.getMessage().push.doVote);
|
|
|
|
|
String data = AllMusic.getMessage().push.bq;
|
|
|
|
|
AllMusic.side.bq(data
|
2024-06-21 11:06:14 +08:00
|
|
|
.replace(PAL.player, name)
|
|
|
|
|
.replace(PAL.time, String.valueOf(AllMusic.getConfig().voteTime))
|
|
|
|
|
.replace(PAL.musicName, id.getName())
|
|
|
|
|
.replace(PAL.musicAuthor, id.getAuthor()));
|
2024-04-17 22:15:12 +08:00
|
|
|
AllMusic.side.bqRun(AllMusic.getMessage().push.bq1, AllMusic.getMessage().push.bq2, "/music push");
|
|
|
|
|
} else {
|
|
|
|
|
if (id != null) {
|
|
|
|
|
AllMusic.side.sendMessage(sender, AllMusic.getMessage().push.err3);
|
|
|
|
|
return;
|
|
|
|
|
}
|
2024-05-03 13:14:31 +08:00
|
|
|
if (!AllMusic.containPush(name)) {
|
2024-04-17 22:15:12 +08:00
|
|
|
AllMusic.addPush(name);
|
|
|
|
|
AllMusic.side.sendMessage(sender, AllMusic.getMessage().push.agree);
|
|
|
|
|
String data = AllMusic.getMessage().push.bqAgree;
|
2024-06-21 11:06:14 +08:00
|
|
|
data = data.replace(PAL.player, name)
|
|
|
|
|
.replace(PAL.count, "" + AllMusic.getVoteCount());
|
2024-04-17 22:15:12 +08:00
|
|
|
AllMusic.side.bq(data);
|
|
|
|
|
} else {
|
|
|
|
|
AllMusic.side.sendMessage(sender, AllMusic.getMessage().push.arAgree);
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-06-09 20:41:33 +08:00
|
|
|
AllMusic.getConfig().removeNoMusicPlayer(name);
|
2024-04-17 22:15:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2024-04-18 09:03:23 +08:00
|
|
|
public List<String> tab(String name, String[] args, int index) {
|
2024-04-17 22:15:12 +08:00
|
|
|
if (args.length == 1 || (args.length == 2 && args[1].isEmpty())) {
|
|
|
|
|
List<String> list = new ArrayList<>();
|
|
|
|
|
List<SongInfoObj> list1 = PlayMusic.getList();
|
|
|
|
|
for (int a = 1; a < list1.size(); a++) {
|
|
|
|
|
SongInfoObj item = list1.get(a);
|
|
|
|
|
if (item.getCall().equalsIgnoreCase(name)) {
|
|
|
|
|
list.add(String.valueOf(a));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return list;
|
|
|
|
|
}
|
|
|
|
|
return Collections.emptyList();
|
|
|
|
|
}
|
|
|
|
|
}
|