use of com.github.vaerys.objects.QueueObject in project DiscordSailv2 by Vaerys-Dawn.
the class QueueHandler method reactionAdded.
public static void reactionAdded(CommandObject object, IReaction reaction) {
ReactionEmoji thumbsUp = Utility.getReaction(Constants.EMOJI_APPROVE);
ReactionEmoji thumbsDown = Utility.getReaction(Constants.EMOJI_DISAPPROVE);
ReactionEmoji ok = Utility.getReaction("white_check_mark");
ReactionEmoji no = Utility.getReaction(Constants.EMOJI_REMOVE_PIN);
ArrayList<QueueObject> queuedMessages = Globals.getDailyMessages().getQueue();
IMessage message = object.message.get();
IUser owner = object.client.creator.get();
// exit if not the queue channel
if (object.channel.longID != Globals.queueChannelID) {
return;
}
// exit if not the owner.
if (reaction.getCount() == 0) {
return;
}
if (!reaction.getUserReacted(owner)) {
return;
}
// exit if no embeds
if (message.getEmbeds().size() == 0) {
return;
}
// exit if not enough reactions
if (message.getReactions().size() <= 1) {
return;
}
checkQueue();
for (QueueObject q : queuedMessages) {
if (q.getMessageId() == message.getLongID()) {
// getToggles the embed
IEmbed embed = message.getEmbeds().get(0);
RequestBuffer.request(() -> message.removeAllReactions()).get();
switch(q.getType()) {
// do if daily request
case Constants.QUEUE_DAILY:
try {
// getToggles the data
long userID = Long.parseLong(embed.getFooter().getText());
long uID = -1;
DayOfWeek day = null;
for (IEmbed.IEmbedField f : embed.getEmbedFields()) {
if (f.getName().equalsIgnoreCase(dowString)) {
day = DayOfWeek.valueOf(f.getValue());
} else if (f.getName().equalsIgnoreCase(uIDString)) {
uID = Long.parseLong(f.getValue());
}
}
UserObject user = new UserObject(object.client.getUserByID(userID), null);
// do if accepted
if (reaction.getEmoji().equals(thumbsUp)) {
user.sendDm("> A daily message you sent was approved. **[" + uID + "]**");
Globals.getDailyMessages().getMessages().add(new DailyMessage(embed.getDescription(), day, userID, uID));
RequestBuffer.request(() -> message.addReaction(ok)).get();
q.toggleMarkedForRemoval();
return;
// do if denied
} else if (reaction.getEmoji().equals(thumbsDown)) {
user.sendDm("> A daily message you sent was denied. **[" + uID + "]**");
q.toggleMarkedForRemoval();
RequestBuffer.request(() -> message.addReaction(no)).get();
return;
} else {
return;
}
} catch (NumberFormatException e) {
q.toggleMarkedForRemoval();
} catch (IllegalArgumentException e) {
q.toggleMarkedForRemoval();
}
default:
return;
}
}
}
}
use of com.github.vaerys.objects.QueueObject in project DiscordSailv2 by Vaerys-Dawn.
the class QueueHandler method checkQueue.
public static void checkQueue() {
IChannel queueChannel = Globals.client.getChannelByID(Globals.queueChannelID);
if (queueChannel == null)
return;
ArrayList<QueueObject> queuedMessages = Globals.getDailyMessages().getQueue();
ListIterator iterator = queuedMessages.listIterator();
while (iterator.hasNext()) {
QueueObject object = (QueueObject) iterator.next();
IMessage item = queueChannel.getMessageByID(object.getMessageId());
if (item == null) {
item = RequestBuffer.request(() -> {
return queueChannel.fetchMessage(object.getMessageId());
}).get();
}
if (item == null) {
iterator.remove();
} else if (object.isMarkedForRemoval()) {
iterator.remove();
}
}
}
use of com.github.vaerys.objects.QueueObject in project DiscordSailv2 by Vaerys-Dawn.
the class DailyMessages method newDailyMsgUID.
public long newDailyMsgUID() {
long result;
Random random = new Random();
List<Long> uIDs = dailyMessages.stream().filter(dailyMessage -> dailyMessage.getUID() != -1).map(dailyMessage -> dailyMessage.getUID()).collect(Collectors.toList());
uIDs.addAll(queuedRequests.stream().map(queueObject -> queueObject.getuID()).collect(Collectors.toList()));
if (uIDs.size() >= 8999) {
return -1;
}
// for (DailyMessage d : dailyMessages) {
// if (d.getUID() != -1) {
// uIDs.add(d.getUID());
// }
// }
// for (QueueObject o : queuedRequests) {
// uIDs.add(o.getuID());
// }
result = random.nextInt(9000) + 1000;
while (uIDs.contains(result)) {
result = random.nextInt(9000) + 1000;
}
return result;
}
use of com.github.vaerys.objects.QueueObject in project DiscordSailv2 by Vaerys-Dawn.
the class QueueHandler method addToQueue.
public static void addToQueue(CommandObject object, String content, DayOfWeek dayOfWeek, String type) {
ReactionEmoji thumbsUp = Utility.getReaction(Constants.EMOJI_APPROVE);
ReactionEmoji thumbsDown = Utility.getReaction(Constants.EMOJI_DISAPPROVE);
IChannel channel = object.client.get().getChannelByID(Globals.queueChannelID);
if (channel != null) {
switch(type) {
case Constants.QUEUE_DAILY:
long uID = Globals.getDailyMessages().newDailyMsgUID();
if (uID == -1) {
object.client.creator.sendDm("> Max limit of Daily messages hit.");
break;
}
XEmbedBuilder embedBuilder = new XEmbedBuilder(object);
embedBuilder.withAuthorName("New Daily Message - " + object.guild.get().getName());
embedBuilder.withFooterText(object.user.longID + "");
embedBuilder.withTitle(object.user.username);
embedBuilder.withDesc(content);
embedBuilder.appendField(dowString, dayOfWeek + "", true);
embedBuilder.appendField(uIDString, uID + "", true);
IMessage message = RequestHandler.sendEmbedMessage("", embedBuilder, channel).get();
RequestBuffer.request(() -> message.addReaction(thumbsUp)).get();
RequestBuffer.request(() -> message.addReaction(thumbsDown)).get();
Globals.getDailyMessages().getQueue().add(new QueueObject(message.getLongID(), uID, type));
checkQueue();
return;
default:
return;
}
}
}
Aggregations