Back to d4j v2

This commit is contained in:
NovaFox161
2018-09-12 15:50:44 -05:00
parent c83028a78f
commit feb9c3f5f3
59 changed files with 1884 additions and 1720 deletions
@@ -1,9 +1,19 @@
package org.dreamexposure.discal.client;
import discord4j.core.DiscordClient;
import discord4j.core.DiscordClientBuilder;
import org.dreamexposure.discal.client.listeners.discal.CrossTalkEventListener;
import org.dreamexposure.discal.client.listeners.discord.ReadyEventListener;
import org.dreamexposure.discal.client.message.MessageManager;
import org.dreamexposure.discal.client.module.command.*;
import org.dreamexposure.discal.client.service.KeepAliveHandler;
import org.dreamexposure.discal.core.database.DatabaseManager;
import org.dreamexposure.discal.core.logger.Logger;
import org.dreamexposure.discal.core.network.google.Authorization;
import org.dreamexposure.discal.core.object.BotSettings;
import org.dreamexposure.novautils.event.EventManager;
import org.dreamexposure.novautils.network.crosstalk.ClientSocketHandler;
import sx.blah.discord.api.ClientBuilder;
import sx.blah.discord.api.IDiscordClient;
import sx.blah.discord.api.events.EventDispatcher;
import java.io.File;
import java.io.FileReader;
@@ -11,7 +21,7 @@ import java.io.IOException;
import java.util.Properties;
public class DisCalClient {
private static DiscordClient client;
private static IDiscordClient client;
public static void main(String[] args) throws IOException {
//Get settings
@@ -25,13 +35,16 @@ public class DisCalClient {
//Handle client setup
client = createClient();
/*
//Register discord events
client.getEventDispatcher().on(ReadyEvent.class).subscribe(ReadyEventListener::handle);
EventDispatcher dispatcher = client.getDispatcher();
dispatcher.registerListener(new ReadyEventListener());
//Register discal events
EventManager.get().registerEventListener(new CrossTalkEventListener());
//Login
client.login();
//Register commands
CommandExecutor executor = CommandExecutor.getExecutor().enable();
executor.registerCommand(new HelpCommand());
@@ -62,10 +75,6 @@ public class DisCalClient {
ClientSocketHandler.initListener();
KeepAliveHandler.startKeepAlive(60);
*/
//Login
client.login().block();
}
/**
@@ -73,16 +82,18 @@ public class DisCalClient {
*
* @return The client if successful, otherwise <code>null</code>.
*/
private static DiscordClient createClient() {
DiscordClientBuilder clientBuilder = new DiscordClientBuilder(BotSettings.TOKEN.get());
private static IDiscordClient createClient() {
ClientBuilder clientBuilder = new ClientBuilder().withToken(BotSettings.TOKEN.get());
//In case of disconnects and shit
clientBuilder.setMaxReconnectAttempts(10);
clientBuilder.setMaxReconnectAttempts(10);
//Handle shard count and index.
clientBuilder.setShardCount(Integer.valueOf(BotSettings.SHARD_COUNT.get()));
clientBuilder.setShardIndex(Integer.valueOf(BotSettings.SHARD_INDEX.get()));
clientBuilder.setShard(Integer.valueOf(BotSettings.SHARD_INDEX.get()), Integer.valueOf(BotSettings.SHARD_COUNT.get()));
return clientBuilder.build();
}
//Public stuffs
public static DiscordClient getClient() {
public static IDiscordClient getClient() {
return client;
}
}
@@ -1,8 +1,5 @@
package org.dreamexposure.discal.client.announcement;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.object.entity.Message;
import discord4j.core.object.util.Snowflake;
import org.dreamexposure.discal.client.message.AnnouncementMessageFormatter;
import org.dreamexposure.discal.client.message.MessageManager;
import org.dreamexposure.discal.core.database.DatabaseManager;
@@ -11,6 +8,8 @@ import org.dreamexposure.discal.core.object.announcement.Announcement;
import org.dreamexposure.discal.core.object.announcement.AnnouncementCreatorResponse;
import org.dreamexposure.discal.core.utils.AnnouncementUtils;
import org.dreamexposure.discal.core.utils.PermissionChecker;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.handle.obj.IMessage;
import java.util.ArrayList;
import java.util.UUID;
@@ -49,13 +48,13 @@ public class AnnouncementCreator {
* @param e The event received upon init.
* @return A new Announcement.
*/
public Announcement init(MessageCreateEvent e, GuildSettings settings) {
public Announcement init(MessageReceivedEvent e, GuildSettings settings) {
if (!hasAnnouncement(settings.getGuildID())) {
Announcement a = new Announcement(settings.getGuildID());
a.setAnnouncementChannelId(e.getMessage().getChannelId().asString());
a.setAnnouncementChannelId(e.getMessage().getChannel().getStringID());
if (PermissionChecker.botHasMessageManagePerms(e)) {
Message msg = MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Announcement.Create.Init", settings), AnnouncementMessageFormatter.getFormatAnnouncementEmbed(a, settings, e.getGuild().block()), e);
IMessage msg = MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Announcement.Create.Init", settings), AnnouncementMessageFormatter.getFormatAnnouncementEmbed(a, settings), e);
a.setCreatorMessage(msg);
} else {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Notif.MANAGE_MESSAGES", settings), e);
@@ -67,7 +66,7 @@ public class AnnouncementCreator {
return getAnnouncement(settings.getGuildID());
}
public Announcement init(MessageCreateEvent e, String announcementId, GuildSettings settings) {
public Announcement init(MessageReceivedEvent e, String announcementId, GuildSettings settings) {
if (!hasAnnouncement(settings.getGuildID()) && AnnouncementUtils.announcementExists(announcementId, settings.getGuildID())) {
Announcement toCopy = DatabaseManager.getManager().getAnnouncement(UUID.fromString(announcementId), settings.getGuildID());
@@ -75,7 +74,7 @@ public class AnnouncementCreator {
Announcement a = new Announcement(toCopy);
if (PermissionChecker.botHasMessageManagePerms(e)) {
Message msg = MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Announcement.Copy.Success", settings), AnnouncementMessageFormatter.getFormatAnnouncementEmbed(a, settings, e.getGuild().block()), e);
IMessage msg = MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Announcement.Copy.Success", settings), AnnouncementMessageFormatter.getFormatAnnouncementEmbed(a, settings), e);
a.setCreatorMessage(msg);
} else {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Notif.MANAGE_MESSAGES", settings), e);
@@ -87,7 +86,7 @@ public class AnnouncementCreator {
return getAnnouncement(settings.getGuildID());
}
public Announcement edit(MessageCreateEvent e, String announcementId, GuildSettings settings) {
public Announcement edit(MessageReceivedEvent e, String announcementId, GuildSettings settings) {
if (!hasAnnouncement(settings.getGuildID()) && AnnouncementUtils.announcementExists(announcementId, settings.getGuildID())) {
Announcement edit = DatabaseManager.getManager().getAnnouncement(UUID.fromString(announcementId), settings.getGuildID());
@@ -96,7 +95,7 @@ public class AnnouncementCreator {
a.setEditing(true);
if (PermissionChecker.botHasMessageManagePerms(e)) {
Message msg = MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Announcement.Edit.Init", settings), AnnouncementMessageFormatter.getFormatAnnouncementEmbed(a, settings, e.getGuild().block()), e);
IMessage msg = MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Announcement.Edit.Init", settings), AnnouncementMessageFormatter.getFormatAnnouncementEmbed(a, settings), e);
a.setCreatorMessage(msg);
} else {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Notif.MANAGE_MESSAGES", settings), e);
@@ -108,7 +107,7 @@ public class AnnouncementCreator {
return getAnnouncement(settings.getGuildID());
}
public boolean terminate(Snowflake guildId) {
public boolean terminate(long guildId) {
if (hasAnnouncement(guildId)) {
announcements.remove(getAnnouncement(guildId));
return true;
@@ -116,7 +115,7 @@ public class AnnouncementCreator {
return false;
}
public AnnouncementCreatorResponse confirmAnnouncement(Snowflake guildId) {
public AnnouncementCreatorResponse confirmAnnouncement(long guildId) {
if (hasAnnouncement(guildId)) {
Announcement a = getAnnouncement(guildId);
if (a.hasRequiredValues()) {
@@ -136,7 +135,7 @@ public class AnnouncementCreator {
* @param guildId The ID of the guild
* @return The Announcement in the creator for the guild.
*/
public Announcement getAnnouncement(Snowflake guildId) {
public Announcement getAnnouncement(long guildId) {
for (Announcement a: announcements) {
if (a.getGuildId() == guildId) {
a.setLastEdit(System.currentTimeMillis());
@@ -146,7 +145,7 @@ public class AnnouncementCreator {
return null;
}
public Message getCreatorMessage(Snowflake guildId) {
public IMessage getCreatorMessage(long guildId) {
if (hasAnnouncement(guildId))
return getAnnouncement(guildId).getCreatorMessage();
return null;
@@ -157,9 +156,9 @@ public class AnnouncementCreator {
}
//Setters
public void setCreatorMessage(Message message) {
if (message != null && hasCreatorMessage(message.getGuild().block().getId()))
getAnnouncement(message.getGuild().block().getId()).setCreatorMessage(message);
public void setCreatorMessage(IMessage message) {
if (message != null && hasCreatorMessage(message.getGuild().getLongID()))
getAnnouncement(message.getGuild().getLongID()).setCreatorMessage(message);
}
//Booleans/Checkers
@@ -170,7 +169,7 @@ public class AnnouncementCreator {
* @param guildId The ID of the guild.
* @return <code>true</code> if active, else <code>false</code>.
*/
public boolean hasAnnouncement(Snowflake guildId) {
public boolean hasAnnouncement(long guildId) {
for (Announcement a: announcements) {
if (a.getGuildId() == guildId)
return true;
@@ -178,7 +177,7 @@ public class AnnouncementCreator {
return false;
}
public boolean hasCreatorMessage(Snowflake guildId) {
public boolean hasCreatorMessage(long guildId) {
return hasAnnouncement(guildId) && getAnnouncement(guildId).getCreatorMessage() != null;
}
}
@@ -2,9 +2,6 @@ package org.dreamexposure.discal.client.calendar;
import com.google.api.services.calendar.model.AclRule;
import com.google.api.services.calendar.model.Calendar;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.object.entity.Message;
import discord4j.core.object.util.Snowflake;
import org.dreamexposure.discal.client.message.CalendarMessageFormatter;
import org.dreamexposure.discal.client.message.MessageManager;
import org.dreamexposure.discal.core.calendar.CalendarAuth;
@@ -15,6 +12,8 @@ import org.dreamexposure.discal.core.object.calendar.CalendarCreatorResponse;
import org.dreamexposure.discal.core.object.calendar.CalendarData;
import org.dreamexposure.discal.core.object.calendar.PreCalendar;
import org.dreamexposure.discal.core.utils.PermissionChecker;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.handle.obj.IMessage;
import java.util.ArrayList;
@@ -52,13 +51,13 @@ public class CalendarCreator {
* @param calendarName The name of the calendar to create.
* @return The PreCalendar object created.
*/
public PreCalendar init(MessageCreateEvent e, String calendarName, GuildSettings settings, boolean handleCreatorMessage) {
public PreCalendar init(MessageReceivedEvent e, String calendarName, GuildSettings settings, boolean handleCreatorMessage) {
if (!hasPreCalendar(settings.getGuildID())) {
PreCalendar calendar = new PreCalendar(settings.getGuildID(), calendarName);
if (handleCreatorMessage) {
if (PermissionChecker.botHasMessageManagePerms(e)) {
Message msg = MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Create.Init", settings), CalendarMessageFormatter.getPreCalendarEmbed(calendar, settings), e);
IMessage msg = MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Create.Init", settings), CalendarMessageFormatter.getPreCalendarEmbed(calendar, settings), e);
calendar.setCreatorMessage(msg);
} else {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Notif.MANAGE_MESSAGES", settings), e);
@@ -71,7 +70,7 @@ public class CalendarCreator {
}
@SuppressWarnings("SameParameterValue")
public PreCalendar edit(MessageCreateEvent event, GuildSettings settings, boolean handleCreatorMessage) {
public PreCalendar edit(MessageReceivedEvent event, GuildSettings settings, boolean handleCreatorMessage) {
if (!hasPreCalendar(settings.getGuildID())) {
//TODO: Support multiple calendars
CalendarData data = DatabaseManager.getManager().getMainCalendar(settings.getGuildID());
@@ -87,7 +86,7 @@ public class CalendarCreator {
if (handleCreatorMessage) {
if (PermissionChecker.botHasMessageManagePerms(event)) {
Message msg = MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Edit.Init", settings), CalendarMessageFormatter.getPreCalendarEmbed(preCalendar, settings), event);
IMessage msg = MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Edit.Init", settings), CalendarMessageFormatter.getPreCalendarEmbed(preCalendar, settings), event);
preCalendar.setCreatorMessage(msg);
} else {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Notif.MANAGE_MESSAGES", settings), event);
@@ -97,7 +96,7 @@ public class CalendarCreator {
calendars.add(preCalendar);
return preCalendar;
} catch (Exception e) {
Logger.getLogger().exception(event.getMessage().getAuthor().block(), "Failed to init calendar editor", e, this.getClass());
Logger.getLogger().exception(event.getAuthor(), "Failed to init calendar editor", e, this.getClass());
return null;
}
} else {
@@ -105,7 +104,7 @@ public class CalendarCreator {
}
}
public boolean terminate(Snowflake guildId) {
public boolean terminate(long guildId) {
if (hasPreCalendar(guildId)) {
calendars.remove(getPreCalendar(guildId));
return true;
@@ -119,7 +118,7 @@ public class CalendarCreator {
* @param e The event received upon confirmation.
* @return A CalendarCreatorResponse Object with detailed info about the confirmation.
*/
public CalendarCreatorResponse confirmCalendar(MessageCreateEvent e, GuildSettings settings) {
public CalendarCreatorResponse confirmCalendar(MessageReceivedEvent e, GuildSettings settings) {
if (hasPreCalendar(settings.getGuildID())) {
PreCalendar preCalendar = getPreCalendar(settings.getGuildID());
if (preCalendar.hasRequiredValues()) {
@@ -147,7 +146,7 @@ public class CalendarCreator {
response.setCreatorMessage(preCalendar.getCreatorMessage());
return response;
} catch (Exception ex) {
Logger.getLogger().exception(e.getMessage().getAuthor().block(), "Failed to confirm calendar.", ex, this.getClass());
Logger.getLogger().exception(e.getAuthor(), "Failed to confirm calendar.", ex, this.getClass());
CalendarCreatorResponse response = new CalendarCreatorResponse(false);
response.setEdited(false);
response.setCreatorMessage(preCalendar.getCreatorMessage());
@@ -175,7 +174,7 @@ public class CalendarCreator {
response.setCreatorMessage(preCalendar.getCreatorMessage());
return response;
} catch (Exception ex) {
Logger.getLogger().exception(e.getMessage().getAuthor().block(), "Failed to update calendar.", ex, this.getClass());
Logger.getLogger().exception(e.getAuthor(), "Failed to update calendar.", ex, this.getClass());
CalendarCreatorResponse response = new CalendarCreatorResponse(false);
response.setEdited(true);
response.setCreatorMessage(preCalendar.getCreatorMessage());
@@ -195,7 +194,7 @@ public class CalendarCreator {
* @param guildId The ID of the guild whose PreCalendar is to be returned.
* @return The PreCalendar belonging to the guild.
*/
public PreCalendar getPreCalendar(Snowflake guildId) {
public PreCalendar getPreCalendar(long guildId) {
for (PreCalendar c: calendars) {
if (c.getGuildId() == guildId) {
c.setLastEdit(System.currentTimeMillis());
@@ -205,7 +204,7 @@ public class CalendarCreator {
return null;
}
public Message getCreatorMessage(Snowflake guildId) {
public IMessage getCreatorMessage(long guildId) {
if (hasPreCalendar(guildId))
return getPreCalendar(guildId).getCreatorMessage();
return null;
@@ -223,7 +222,7 @@ public class CalendarCreator {
* @param guildId The ID of the guild to check for.
* @return <code>true</code> if a PreCalendar exists, else <code>false</code>.
*/
public Boolean hasPreCalendar(Snowflake guildId) {
public Boolean hasPreCalendar(long guildId) {
for (PreCalendar c: calendars) {
if (c.getGuildId() == guildId)
return true;
@@ -231,13 +230,13 @@ public class CalendarCreator {
return false;
}
public boolean hasCreatorMessage(Snowflake guildId) {
public boolean hasCreatorMessage(long guildId) {
return hasPreCalendar(guildId) && getPreCalendar(guildId).getCreatorMessage() != null;
}
//Setters
public void setCreatorMessage(Message msg) {
if (msg != null && hasPreCalendar(msg.getGuild().block().getId()))
getPreCalendar(msg.getGuild().block().getId()).setCreatorMessage(msg);
public void setCreatorMessage(IMessage msg) {
if (msg != null && hasPreCalendar(msg.getGuild().getLongID()))
getPreCalendar(msg.getGuild().getLongID()).setCreatorMessage(msg);
}
}
@@ -2,9 +2,6 @@ package org.dreamexposure.discal.client.event;
import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.model.Event;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.object.entity.Message;
import discord4j.core.object.util.Snowflake;
import org.dreamexposure.discal.client.message.EventMessageFormatter;
import org.dreamexposure.discal.client.message.MessageManager;
import org.dreamexposure.discal.core.calendar.CalendarAuth;
@@ -17,6 +14,8 @@ import org.dreamexposure.discal.core.object.event.EventCreatorResponse;
import org.dreamexposure.discal.core.object.event.PreEvent;
import org.dreamexposure.discal.core.utils.EventUtils;
import org.dreamexposure.discal.core.utils.PermissionChecker;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.handle.obj.IMessage;
import java.io.IOException;
import java.util.ArrayList;
@@ -55,7 +54,7 @@ public class EventCreator {
* @param e The event received upon initialization.
* @return The PreEvent for the guild.
*/
public PreEvent init(MessageCreateEvent e, GuildSettings settings, boolean handleMessage) {
public PreEvent init(MessageReceivedEvent e, GuildSettings settings, boolean handleMessage) {
if (!hasPreEvent(settings.getGuildID())) {
PreEvent event = new PreEvent(settings.getGuildID());
try {
@@ -67,7 +66,7 @@ public class EventCreator {
}
if (handleMessage) {
if (PermissionChecker.botHasMessageManagePerms(e)) {
Message message = MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Event.Create.Init", settings), EventMessageFormatter.getPreEventEmbed(event, settings), e);
IMessage message = MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Event.Create.Init", settings), EventMessageFormatter.getPreEventEmbed(event, settings), e);
event.setCreatorMessage(message);
MessageManager.deleteMessage(e);
} else {
@@ -81,7 +80,7 @@ public class EventCreator {
return getPreEvent(settings.getGuildID());
}
public PreEvent init(MessageCreateEvent e, GuildSettings settings, String summary, boolean handleMessage) {
public PreEvent init(MessageReceivedEvent e, GuildSettings settings, String summary, boolean handleMessage) {
if (!hasPreEvent(settings.getGuildID())) {
PreEvent event = new PreEvent(settings.getGuildID());
event.setSummary(summary);
@@ -95,7 +94,7 @@ public class EventCreator {
}
if (handleMessage) {
if (PermissionChecker.botHasMessageManagePerms(e)) {
Message message = MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Event.Create.Init", settings), EventMessageFormatter.getPreEventEmbed(event, settings), e);
IMessage message = MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Event.Create.Init", settings), EventMessageFormatter.getPreEventEmbed(event, settings), e);
event.setCreatorMessage(message);
MessageManager.deleteMessage(e);
} else {
@@ -110,7 +109,7 @@ public class EventCreator {
}
//Copy event
public PreEvent init(MessageCreateEvent e, String eventId, GuildSettings settings, boolean handleMessage) {
public PreEvent init(MessageReceivedEvent e, String eventId, GuildSettings settings, boolean handleMessage) {
if (!hasPreEvent(settings.getGuildID())) {
//TODO: Handle multiple calendars...
try {
@@ -129,7 +128,7 @@ public class EventCreator {
if (handleMessage) {
if (PermissionChecker.botHasMessageManagePerms(e)) {
Message message = MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Event.Copy.Init", settings), EventMessageFormatter.getPreEventEmbed(event, settings), e);
IMessage message = MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Event.Copy.Init", settings), EventMessageFormatter.getPreEventEmbed(event, settings), e);
event.setCreatorMessage(message);
MessageManager.deleteMessage(e);
} else {
@@ -147,7 +146,7 @@ public class EventCreator {
return getPreEvent(settings.getGuildID());
}
public PreEvent edit(MessageCreateEvent e, String eventId, GuildSettings settings, boolean handleMessage) {
public PreEvent edit(MessageReceivedEvent e, String eventId, GuildSettings settings, boolean handleMessage) {
if (!hasPreEvent(settings.getGuildID())) {
//TODO: Handle multiple calendars...
try {
@@ -167,7 +166,7 @@ public class EventCreator {
if (handleMessage) {
if (PermissionChecker.botHasMessageManagePerms(e)) {
Message message = MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Event.Edit.Init", settings), EventMessageFormatter.getPreEventEmbed(event, settings), e);
IMessage message = MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Event.Edit.Init", settings), EventMessageFormatter.getPreEventEmbed(event, settings), e);
event.setCreatorMessage(message);
MessageManager.deleteMessage(e);
} else {
@@ -185,7 +184,7 @@ public class EventCreator {
return getPreEvent(settings.getGuildID());
}
public boolean terminate(Snowflake guildId) {
public boolean terminate(long guildId) {
if (hasPreEvent(guildId)) {
events.remove(getPreEvent(guildId));
return true;
@@ -199,7 +198,7 @@ public class EventCreator {
* @param e The event received upon confirmation.
* @return The response containing detailed info about the confirmation.
*/
public EventCreatorResponse confirmEvent(MessageCreateEvent e, GuildSettings settings) {
public EventCreatorResponse confirmEvent(MessageReceivedEvent e, GuildSettings settings) {
if (hasPreEvent(settings.getGuildID())) {
PreEvent preEvent = getPreEvent(settings.getGuildID());
if (preEvent.hasRequiredValues()) {
@@ -240,7 +239,7 @@ public class EventCreator {
response.setEdited(false);
return response;
} catch (Exception ex) {
Logger.getLogger().exception(e.getMember().get(), "Failed to create event.", ex, this.getClass());
Logger.getLogger().exception(e.getAuthor(), "Failed to create event.", ex, this.getClass());
EventCreatorResponse response = new EventCreatorResponse(false);
response.setEdited(false);
return response;
@@ -260,7 +259,7 @@ public class EventCreator {
response.setEdited(true);
return response;
} catch (Exception ex) {
Logger.getLogger().exception(e.getMember().get(), "Failed to update event.", ex, this.getClass());
Logger.getLogger().exception(e.getAuthor(), "Failed to update event.", ex, this.getClass());
EventCreatorResponse response = new EventCreatorResponse(false);
response.setEdited(true);
return response;
@@ -279,7 +278,7 @@ public class EventCreator {
* @param guildId The ID of the guild.
* @return The PreEvent belonging to the guild.
*/
public PreEvent getPreEvent(Snowflake guildId) {
public PreEvent getPreEvent(long guildId) {
for (PreEvent e: events) {
if (e.getGuildId() == guildId) {
e.setLastEdit(System.currentTimeMillis());
@@ -289,7 +288,7 @@ public class EventCreator {
return null;
}
public Message getCreatorMessage(Snowflake guildId) {
public IMessage getCreatorMessage(long guildId) {
if (hasPreEvent(guildId))
return getPreEvent(guildId).getCreatorMessage();
return null;
@@ -307,7 +306,7 @@ public class EventCreator {
* @param guildId The ID of the guild.
* @return <code>true</code> if a PreEvent exists, otherwise <code>false</code>.
*/
public boolean hasPreEvent(Snowflake guildId) {
public boolean hasPreEvent(long guildId) {
for (PreEvent e: events) {
if (e.getGuildId() == guildId)
return true;
@@ -315,13 +314,13 @@ public class EventCreator {
return false;
}
public boolean hasCreatorMessage(Snowflake guildId) {
public boolean hasCreatorMessage(long guildId) {
return hasPreEvent(guildId) && getPreEvent(guildId).getCreatorMessage() != null;
}
//Setters
public void setCreatorMessage(Message msg) {
if (msg != null && hasPreEvent(msg.getGuild().block().getId()))
getPreEvent(msg.getGuild().block().getId()).setCreatorMessage(msg);
public void setCreatorMessage(IMessage msg) {
if (msg != null && hasPreEvent(msg.getGuild().getLongID()))
getPreEvent(msg.getGuild().getLongID()).setCreatorMessage(msg);
}
}
@@ -1,8 +1,5 @@
package org.dreamexposure.discal.client.listeners.discal;
import discord4j.core.object.entity.Guild;
import discord4j.core.object.entity.Member;
import discord4j.core.object.util.Snowflake;
import org.dreamexposure.discal.client.DisCalClient;
import org.dreamexposure.discal.client.message.MessageManager;
import org.dreamexposure.discal.core.database.DatabaseManager;
@@ -18,6 +15,8 @@ import org.dreamexposure.novautils.events.network.crosstalk.CrossTalkReceiveEven
import org.dreamexposure.novautils.network.crosstalk.ClientSocketHandler;
import org.json.JSONArray;
import org.json.JSONObject;
import sx.blah.discord.handle.obj.IGuild;
import sx.blah.discord.handle.obj.IUser;
import java.util.List;
@@ -33,10 +32,10 @@ import java.util.List;
public class CrossTalkEventListener implements EventListener {
@SuppressWarnings("unused")
public void handle(CrossTalkReceiveEvent event) {
Guild g = null;
IGuild g = null;
//Check if this even applies to us!
if (event.getData().has("Guild-Id")) {
g = DisCalClient.getClient().getGuildById(Snowflake.of(event.getData().getString("Guild-Id"))).block();
g = DisCalClient.getClient().getGuildByID(Long.valueOf(event.getData().getString("Guild-Id")));
if (g == null) return; //Guild not connected to this client, correct client will handle this.
}
if (event.getData().getString("Reason").equals(CrossTalkReason.UPDATE.name())) {
@@ -44,7 +43,7 @@ public class CrossTalkEventListener implements EventListener {
if (event.getData().getString("Realm").equals(DisCalRealm.BOT_SETTINGS.name())) {
//Handle bot settings updates...
if (event.getData().has("Bot-Nick")) {
g.changeSelfNickname(event.getData().getString("Bot-Nick")).subscribe();
g.setUserNickname(g.getClient().getOurUser(), event.getData().getString("Bot-Nick"));
}
}
} else if (event.getData().getString("Reason").equals(CrossTalkReason.HANDLE.name())) {
@@ -53,22 +52,22 @@ public class CrossTalkEventListener implements EventListener {
MessageManager.reloadLangs();
} else if (!event.getData().getString("Realm").equals(DisCalRealm.GUILD_LEAVE.name())) {
//Leave guild...
g.leave().subscribe();
g.leave();
} else if (!event.getData().getString("Realm").equals(DisCalRealm.GUILD_MAX_CALENDARS.name())) {
//Change max calendar limit..
GuildSettings settings = DatabaseManager.getManager().getSettings(g.getId());
GuildSettings settings = DatabaseManager.getManager().getSettings(g.getLongID());
settings.setMaxCalendars(event.getData().getInt("Max-Calendars"));
DatabaseManager.getManager().updateSettings(settings);
} else if (!event.getData().getString("Realm").equals(DisCalRealm.GUILD_IS_DEV.name())) {
//Change if the guild is a dev guild or not
GuildSettings settings = DatabaseManager.getManager().getSettings(g.getId());
GuildSettings settings = DatabaseManager.getManager().getSettings(g.getLongID());
settings.setDevGuild(!settings.isDevGuild());
DatabaseManager.getManager().updateSettings(settings);
} else if (!event.getData().getString("Realm").equals(DisCalRealm.GUILD_IS_PATRON.name())) {
//Change if the guild is a patron guild or not
GuildSettings settings = DatabaseManager.getManager().getSettings(g.getId());
GuildSettings settings = DatabaseManager.getManager().getSettings(g.getLongID());
settings.setPatronGuild(!settings.isPatronGuild());
DatabaseManager.getManager().updateSettings(settings);
@@ -79,12 +78,12 @@ public class CrossTalkEventListener implements EventListener {
if (event.getData().getString("Realm").equals(DisCalRealm.WEBSITE_DASHBOARD_GUILD.name())) {
//Requires us to grab data for guild and return a response containing the WebGuild with needed info...
String memId = event.getData().getString("Member-Id");
Member member = g.getMembers().filter(m -> m.getId().asString().equals(memId)).blockLast();
IUser member = g.getUserByID(Long.valueOf(memId));
JSONObject newData = new JSONObject();
newData.put("Guild", new WebGuild().fromGuild(g));
newData.put("Sufficient-Role", PermissionChecker.hasSufficientRole(g, member));
newData.put("Manager-Server", PermissionChecker.hasManageServerRole(member));
newData.put("Manager-Server", PermissionChecker.hasManageServerRole(g, member));
ClientSocketHandler.sendToServer(Integer.valueOf(BotSettings.SHARD_INDEX.get()), newData, BotSettings.CROSSTALK_SERVER_HOST.get(), event.getOneTimeResponsePort());
} else if (event.getData().getString("Realm").equals(DisCalRealm.WEBSITE_DASHBOARD_DEFAULTS.name())) {
@@ -1,10 +1,11 @@
package org.dreamexposure.discal.client.listeners.discord;
import discord4j.core.event.domain.lifecycle.ReadyEvent;
import org.dreamexposure.discal.client.message.MessageManager;
import org.dreamexposure.discal.client.module.announcement.AnnouncementThreader;
import org.dreamexposure.discal.client.service.TimeManager;
import org.dreamexposure.discal.core.logger.Logger;
import sx.blah.discord.api.events.EventSubscriber;
import sx.blah.discord.handle.impl.events.ReadyEvent;
/**
* @author NovaFox161
@@ -15,19 +16,20 @@ import org.dreamexposure.discal.core.logger.Logger;
* Contact: nova@dreamexposure.org
*/
public class ReadyEventListener {
public static void handle(ReadyEvent event) {
@EventSubscriber
public void onReadyEvent(ReadyEvent event) {
Logger.getLogger().debug("Ready!");
try {
TimeManager.getManager().init();
//START ANNOUNCEMENT THREADER HERE
//Lets test the new announcement multi-threader...
AnnouncementThreader.getThreader().init();
MessageManager.reloadLangs();
Logger.getLogger().debug("[ReadyEvent] Connection success!");
} catch (Exception e) {
Logger.getLogger().exception(null, "BAD!!!", e, ReadyEventListener.class);
Logger.getLogger().exception(null, "BAD!!!", e, this.getClass());
}
}
}
@@ -2,13 +2,6 @@ package org.dreamexposure.discal.client.message;
import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.model.Event;
import discord4j.core.object.entity.Guild;
import discord4j.core.object.entity.Role;
import discord4j.core.object.entity.TextChannel;
import discord4j.core.object.entity.User;
import discord4j.core.object.util.Image;
import discord4j.core.object.util.Snowflake;
import discord4j.core.spec.EmbedCreateSpec;
import org.dreamexposure.discal.client.DisCalClient;
import org.dreamexposure.discal.core.calendar.CalendarAuth;
import org.dreamexposure.discal.core.database.DatabaseManager;
@@ -22,13 +15,19 @@ import org.dreamexposure.discal.core.object.event.EventData;
import org.dreamexposure.discal.core.utils.ChannelUtils;
import org.dreamexposure.discal.core.utils.GlobalConst;
import org.dreamexposure.discal.core.utils.ImageUtils;
import sx.blah.discord.api.internal.json.objects.EmbedObject;
import sx.blah.discord.handle.obj.IChannel;
import sx.blah.discord.handle.obj.IGuild;
import sx.blah.discord.handle.obj.IRole;
import sx.blah.discord.handle.obj.IUser;
import sx.blah.discord.util.EmbedBuilder;
/**
* Created by Nova Fox on 3/4/2017.
* Website: www.cloudcraftgaming.com
* For Project: DisCal
*/
@SuppressWarnings({"Duplicates", "OptionalGetWithoutIsPresent", "ConstantConditions"})
@SuppressWarnings({"Duplicates"})
public class AnnouncementMessageFormatter {
/**
@@ -37,47 +36,49 @@ public class AnnouncementMessageFormatter {
* @param a The Announcement to embed.
* @return The EmbedObject for the Announcement.
*/
public static EmbedCreateSpec getFormatAnnouncementEmbed(Announcement a, GuildSettings settings, Guild guild) {
EmbedCreateSpec em = new EmbedCreateSpec();
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.setTitle(MessageManager.getMessage("Embed.Announcement.Info.Title", settings));
public static EmbedObject getFormatAnnouncementEmbed(Announcement a, GuildSettings settings) {
EmbedBuilder em = new EmbedBuilder();
em.withAuthorIcon(GlobalConst.discalSite);
em.withAuthorName("DisCal");
em.withAuthorUrl(GlobalConst.discalSite);
em.withTitle(MessageManager.getMessage("Embed.Announcement.Info.Title", settings));
try {
em.addField(MessageManager.getMessage("Embed.Announcement.Info.ID", settings), a.getAnnouncementId().toString(), true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Info.ID", settings), a.getAnnouncementId().toString(), true);
} catch (NullPointerException e) {
em.addField(MessageManager.getMessage("Embed.Announcement.Info.ID", settings), "ID IS NULL???", true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Info.ID", settings), "ID IS NULL???", true);
}
em.addField(MessageManager.getMessage("Embed.Announcement.Info.Type", settings), a.getAnnouncementType().name(), true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Info.Type", settings), a.getAnnouncementType().name(), true);
if (a.getAnnouncementType().equals(AnnouncementType.SPECIFIC)) {
em.addField(MessageManager.getMessage("Embed.Announcement.Info.EventID", settings), a.getEventId(), true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Info.EventID", settings), a.getEventId(), true);
EventData ed = DatabaseManager.getManager().getEventData(a.getGuildId(), a.getEventId());
if (ed.getImageLink() != null && ImageUtils.validate(ed.getImageLink()))
em.setImage(ed.getImageLink());
em.withImage(ed.getImageLink());
} else if (a.getAnnouncementType().equals(AnnouncementType.COLOR)) {
em.addField(MessageManager.getMessage("Embed.Announcement.Info.Color", settings), a.getEventColor().name(), true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Info.Color", settings), a.getEventColor().name(), true);
} else if (a.getAnnouncementType().equals(AnnouncementType.RECUR)) {
em.addField(MessageManager.getMessage("Embed.Announcement.Info.RecurID", settings), a.getEventId(), true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Info.RecurID", settings), a.getEventId(), true);
EventData ed = DatabaseManager.getManager().getEventData(a.getGuildId(), a.getEventId());
if (ed.getImageLink() != null && ImageUtils.validate(ed.getImageLink()))
em.setImage(ed.getImageLink());
em.withImage(ed.getImageLink());
}
em.addField(MessageManager.getMessage("Embed.Announcement.Info.Hours", settings), String.valueOf(a.getHoursBefore()), true);
em.addField(MessageManager.getMessage("Embed.Announcement.Info.Minutes", settings), String.valueOf(a.getMinutesBefore()), true);
em.addField(MessageManager.getMessage("Embed.Announcement.Info.Channel", settings), ChannelUtils.getChannelNameFromNameOrId(a.getAnnouncementChannelId(), guild), true);
em.addField(MessageManager.getMessage("Embed.Announcement.Info.Info", settings), a.getInfo(), false);
em.appendField(MessageManager.getMessage("Embed.Announcement.Info.Hours", settings), String.valueOf(a.getHoursBefore()), true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Info.Minutes", settings), String.valueOf(a.getMinutesBefore()), true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Info.Channel", settings), ChannelUtils.getChannelNameFromNameOrId(a.getAnnouncementChannelId(), DisCalClient.getClient().getGuildByID(a.getGuildId())), true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Info.Info", settings), a.getInfo(), false);
if (a.getAnnouncementType().equals(AnnouncementType.COLOR)) {
EventColor c = a.getEventColor();
em.setColor(c.asColor());
em.withColor(c.getR(), c.getG(), c.getB());
} else {
em.setColor(GlobalConst.discalColor);
em.withColor(GlobalConst.discalColor);
}
em.addField(MessageManager.getMessage("Embed.Announcement.Info.Enabled", settings), a.isEnabled() + "", true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Info.Enabled", settings), a.isEnabled() + "", true);
return em;
return em.build();
}
/**
@@ -86,15 +87,17 @@ public class AnnouncementMessageFormatter {
* @param a The Announcement to embed.
* @return The EmbedObject for a Condensed Announcement.
*/
public static EmbedCreateSpec getCondensedAnnouncementEmbed(Announcement a, GuildSettings settings) {
EmbedCreateSpec em = new EmbedCreateSpec();
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.setTitle(MessageManager.getMessage("Embed.Announcement.Condensed.Title", settings));
em.addField(MessageManager.getMessage("Embed.Announcement.Condensed.ID", settings), a.getAnnouncementId().toString(), false);
em.addField(MessageManager.getMessage("Embed.Announcement.Condensed.Time", settings), condensedTime(a), false);
public static EmbedObject getCondensedAnnouncementEmbed(Announcement a, GuildSettings settings) {
EmbedBuilder em = new EmbedBuilder();
em.withAuthorIcon(GlobalConst.discalSite);
em.withAuthorName("DisCal");
em.withAuthorUrl(GlobalConst.discalSite);
em.withTitle(MessageManager.getMessage("Embed.Announcement.Condensed.Title", settings));
em.appendField(MessageManager.getMessage("Embed.Announcement.Condensed.ID", settings), a.getAnnouncementId().toString(), false);
em.appendField(MessageManager.getMessage("Embed.Announcement.Condensed.Time", settings), condensedTime(a), false);
if (a.getAnnouncementType().equals(AnnouncementType.SPECIFIC)) {
em.addField(MessageManager.getMessage("Embed.Announcement.Condensed.EventID", settings), a.getEventId(), false);
em.appendField(MessageManager.getMessage("Embed.Announcement.Condensed.EventID", settings), a.getEventId(), false);
try {
Calendar service = CalendarAuth.getCalendarService(settings);
@@ -104,7 +107,7 @@ public class AnnouncementMessageFormatter {
Event event = service.events().get(data.getCalendarAddress(), a.getEventId()).execute();
EventData ed = DatabaseManager.getManager().getEventData(settings.getGuildID(), event.getId());
if (ed.getImageLink() != null && ImageUtils.validate(ed.getImageLink()))
em.setThumbnail(ed.getImageLink());
em.withThumbnail(ed.getImageLink());
if (event.getSummary() != null) {
String summary = event.getSummary();
@@ -112,29 +115,29 @@ public class AnnouncementMessageFormatter {
summary = summary.substring(0, 250);
summary = summary + " (continues on Google Calendar View)";
}
em.addField(MessageManager.getMessage("Embed.Announcement.Condensed.Summary", settings), summary, true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Condensed.Summary", settings), summary, true);
}
} catch (Exception e) {
//Failed to get from google cal.
Logger.getLogger().exception(null, "Failed to get event for announcement.", e, AnnouncementMessageFormatter.class);
}
} else if (a.getAnnouncementType().equals(AnnouncementType.COLOR)) {
em.addField(MessageManager.getMessage("Embed.Announcement.Condensed.Color", settings), a.getEventColor().name(), true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Condensed.Color", settings), a.getEventColor().name(), true);
} else if (a.getAnnouncementType().equals(AnnouncementType.RECUR)) {
em.addField(MessageManager.getMessage("Embed.Announcement.Condensed.RecurID", settings), a.getEventId(), true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Condensed.RecurID", settings), a.getEventId(), true);
}
em.setFooter(MessageManager.getMessage("Embed.Announcement.Condensed.Type", "%type%", a.getAnnouncementType().name(), settings), null);
em.withFooterText(MessageManager.getMessage("Embed.Announcement.Condensed.Type", "%type%", a.getAnnouncementType().name(), settings));
if (a.getAnnouncementType().equals(AnnouncementType.COLOR)) {
EventColor c = a.getEventColor();
em.setColor(c.asColor());
em.withColor(c.getR(), c.getG(), c.getB());
} else {
em.setColor(GlobalConst.discalColor);
em.withColor(56, 138, 237);
}
em.addField(MessageManager.getMessage("Embed.Announcement.Info.Enabled", settings), a.isEnabled() + "", true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Info.Enabled", settings), a.isEnabled() + "", true);
return em;
return em.build();
}
/**
@@ -145,38 +148,41 @@ public class AnnouncementMessageFormatter {
* @param data The BotData belonging to the guild.
*/
public static void sendAnnouncementMessage(Announcement announcement, Event event, CalendarData data, GuildSettings settings) {
EmbedCreateSpec em = new EmbedCreateSpec();
Guild guild = DisCalClient.getClient().getGuildById(announcement.getGuildId()).block();
EmbedBuilder em = new EmbedBuilder();
em.withAuthorIcon(GlobalConst.discalSite);
em.withAuthorUrl(GlobalConst.discalSite);
IGuild guild = DisCalClient.getClient().getGuildByID(announcement.getGuildId());
if (guild != null) {
//Set all of the stuff for embeds regardless of announcement settings
if (settings.isBranded())
em.setAuthor(guild.getName(), null, guild.getIconUrl(Image.Format.PNG).get());
em.withAuthorName(guild.getName());
else
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.withAuthorName("DisCal");
em.setTitle(MessageManager.getMessage("Embed.Announcement.Announce.Title", settings));
em.withTitle(MessageManager.getMessage("Embed.Announcement.Announce.Title", settings));
EventData ed = DatabaseManager.getManager().getEventData(announcement.getGuildId(), event.getId());
if (ed.getImageLink() != null && ImageUtils.validate(ed.getImageLink()))
em.setImage(ed.getImageLink());
em.withImage(ed.getImageLink());
em.setUrl(event.getHtmlLink());
em.withUrl(event.getHtmlLink());
try {
EventColor ec = EventColor.fromNameOrHexOrID(event.getColorId());
em.setColor(ec.asColor());
em.withColor(ec.getR(), ec.getG(), ec.getB());
} catch (Exception e) {
//I dunno, color probably null.
em.setColor(GlobalConst.discalColor);
em.withColor(56, 138, 237);
}
if (!settings.usingSimpleAnnouncements()) {
em.setFooter(MessageManager.getMessage("Embed.Announcement.Announce.ID", "%id%", announcement.getAnnouncementId().toString(), settings), null);
em.withFooterText(MessageManager.getMessage("Embed.Announcement.Announce.ID", "%id%", announcement.getAnnouncementId().toString(), settings));
}
if (announcement.isInfoOnly() && announcement.getInfo() != null && !announcement.getInfo().equalsIgnoreCase("none")) {
//Only send info...
em.addField(MessageManager.getMessage("Embed.Announcement.Announce.Info", settings), announcement.getInfo(), false);
em.appendField(MessageManager.getMessage("Embed.Announcement.Announce.Info", settings), announcement.getInfo(), false);
} else {
//Requires all announcement data
if (event.getSummary() != null) {
@@ -185,7 +191,7 @@ public class AnnouncementMessageFormatter {
summary = summary.substring(0, 250);
summary = summary + " (continues on Google Calendar View)";
}
em.addField(MessageManager.getMessage("Embed.Announcement.Announce.Summary", settings), summary, true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Announce.Summary", settings), summary, true);
}
if (event.getDescription() != null) {
String description = event.getDescription();
@@ -193,17 +199,17 @@ public class AnnouncementMessageFormatter {
description = description.substring(0, 250);
description = description + " (continues on Google Calendar View)";
}
em.addField(MessageManager.getMessage("Embed.Announcement.Announce.Description", settings), description, true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Announce.Description", settings), description, true);
}
if (!settings.usingSimpleAnnouncements()) {
em.addField(MessageManager.getMessage("Embed.Announcement.Announce.Date", settings), EventMessageFormatter.getHumanReadableDate(event.getStart(), settings, false), true);
em.addField(MessageManager.getMessage("Embed.Announcement.Announce.Time", settings), EventMessageFormatter.getHumanReadableTime(event.getStart(), settings, false), true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Announce.Date", settings), EventMessageFormatter.getHumanReadableDate(event.getStart(), settings, false), true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Announce.Time", settings), EventMessageFormatter.getHumanReadableTime(event.getStart(), settings, false), true);
try {
Calendar service = CalendarAuth.getCalendarService(settings);
String tz = service.calendars().get(data.getCalendarAddress()).execute().getTimeZone();
em.addField(MessageManager.getMessage("Embed.Announcement.Announce.TimeZone", settings), tz, true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Announce.TimeZone", settings), tz, true);
} catch (Exception e1) {
em.addField(MessageManager.getMessage("Embed.Announcement.Announce.TimeZone", settings), "Unknown *Error Occurred", true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Announce.TimeZone", settings), "Unknown *Error Occurred", true);
}
} else {
String start = EventMessageFormatter.getHumanReadableDate(event.getStart(), settings, false) + " at " + EventMessageFormatter.getHumanReadableTime(event.getStart(), settings, false);
@@ -215,29 +221,29 @@ public class AnnouncementMessageFormatter {
start = start + " (TZ UNKNOWN/ERROR)";
}
em.addField(MessageManager.getMessage("Embed.Announcement.Announce.Start", settings), start, false);
em.appendField(MessageManager.getMessage("Embed.Announcement.Announce.Start", settings), start, false);
}
if (event.getLocation() != null && !event.getLocation().equalsIgnoreCase("")) {
if (event.getLocation().length() > 300) {
String location = event.getLocation().substring(0, 300).trim() + "... (cont. on Google Cal)";
em.addField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), location, true);
em.appendField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), location, true);
} else {
em.addField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), event.getLocation(), true);
em.appendField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), event.getLocation(), true);
}
}
if (!settings.usingSimpleAnnouncements())
em.addField(MessageManager.getMessage("Embed.Announcement.Announce.EventID", settings), event.getId(), false);
em.appendField(MessageManager.getMessage("Embed.Announcement.Announce.EventID", settings), event.getId(), false);
if (!announcement.getInfo().equalsIgnoreCase("None") && !announcement.getInfo().equalsIgnoreCase(""))
em.addField(MessageManager.getMessage("Embed.Announcement.Announce.Info", settings), announcement.getInfo(), false);
em.appendField(MessageManager.getMessage("Embed.Announcement.Announce.Info", settings), announcement.getInfo(), false);
}
TextChannel channel = null;
IChannel channel = null;
try {
channel = guild.getChannels().ofType(TextChannel.class).filter(c -> c.getId().asLong() == Long.valueOf(announcement.getAnnouncementChannelId())).blockLast();
channel = guild.getChannelByID(Long.valueOf(announcement.getAnnouncementChannelId()));
} catch (Exception e) {
Logger.getLogger().exception(null, "An error occurred when looking for announcement channel! | Announcement: " + announcement.getAnnouncementId() + " | TYPE: " + announcement.getAnnouncementType() + " | Guild: " + announcement.getGuildId(), e, AnnouncementMessageFormatter.class);
}
@@ -248,18 +254,19 @@ public class AnnouncementMessageFormatter {
return;
}
MessageManager.sendMessageAsync(getSubscriberMentions(announcement, guild), em, channel);
MessageManager.sendMessageAsync(getSubscriberMentions(announcement, guild), em.build(), channel);
}
}
public static void sendAnnouncementDM(Announcement announcement, Event event, User user, CalendarData data, GuildSettings settings) {
EmbedCreateSpec em = new EmbedCreateSpec();
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.setTitle(MessageManager.getMessage("Embed.Announcement.Announce.Title", settings));
public static void sendAnnouncementDM(Announcement announcement, Event event, IUser user, CalendarData data, GuildSettings settings) {
EmbedBuilder em = new EmbedBuilder();
em.withAuthorIcon(GlobalConst.discalSite);
em.withAuthorName("DisCal");
em.withAuthorUrl(GlobalConst.discalSite);
em.withTitle(MessageManager.getMessage("Embed.Announcement.Announce.Title", settings));
EventData ed = DatabaseManager.getManager().getEventData(announcement.getGuildId(), event.getId());
if (ed.getImageLink() != null && ImageUtils.validate(ed.getImageLink())) {
em.setImage(ed.getImageLink());
em.withImage(ed.getImageLink());
}
if (event.getSummary() != null) {
String summary = event.getSummary();
@@ -267,7 +274,7 @@ public class AnnouncementMessageFormatter {
summary = summary.substring(0, 250);
summary = summary + " (continues on Google Calendar View)";
}
em.addField(MessageManager.getMessage("Embed.Announcement.Announce.Summary", settings), summary, true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Announce.Summary", settings), summary, true);
}
if (event.getDescription() != null) {
String description = event.getDescription();
@@ -275,17 +282,17 @@ public class AnnouncementMessageFormatter {
description = description.substring(0, 250);
description = description + " (continues on Google Calendar View)";
}
em.addField(MessageManager.getMessage("Embed.Announcement.Announce.Description", settings), description, true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Announce.Description", settings), description, true);
}
if (!settings.usingSimpleAnnouncements()) {
em.addField(MessageManager.getMessage("Embed.Announcement.Announce.Date", settings), EventMessageFormatter.getHumanReadableDate(event.getStart(), settings, false), true);
em.addField(MessageManager.getMessage("Embed.Announcement.Announce.Time", settings), EventMessageFormatter.getHumanReadableTime(event.getStart(), settings, false), true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Announce.Date", settings), EventMessageFormatter.getHumanReadableDate(event.getStart(), settings, false), true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Announce.Time", settings), EventMessageFormatter.getHumanReadableTime(event.getStart(), settings, false), true);
try {
Calendar service = CalendarAuth.getCalendarService(settings);
String tz = service.calendars().get(data.getCalendarAddress()).execute().getTimeZone();
em.addField(MessageManager.getMessage("Embed.Announcement.Announce.TimeZone", settings), tz, true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Announce.TimeZone", settings), tz, true);
} catch (Exception e1) {
em.addField(MessageManager.getMessage("Embed.Announcement.Announce.TimeZone", settings), "Unknown *Error Occurred", true);
em.appendField(MessageManager.getMessage("Embed.Announcement.Announce.TimeZone", settings), "Unknown *Error Occurred", true);
}
} else {
String start = EventMessageFormatter.getHumanReadableDate(event.getStart(), settings, false) + " at " + EventMessageFormatter.getHumanReadableTime(event.getStart(), settings, false);
@@ -297,39 +304,39 @@ public class AnnouncementMessageFormatter {
start = start + " (TZ UNKNOWN/ERROR)";
}
em.addField(MessageManager.getMessage("Embed.Announcement.Announce.Start", settings), start, false);
em.appendField(MessageManager.getMessage("Embed.Announcement.Announce.Start", settings), start, false);
}
if (event.getLocation() != null && !event.getLocation().equalsIgnoreCase("")) {
if (event.getLocation().length() > 300) {
String location = event.getLocation().substring(0, 300).trim() + "... (cont. on Google Cal)";
em.addField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), location, true);
em.appendField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), location, true);
} else {
em.addField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), event.getLocation(), true);
em.appendField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), event.getLocation(), true);
}
}
if (!settings.usingSimpleAnnouncements()) {
em.addField(MessageManager.getMessage("Embed.Announcement.Announce.EventID", settings), event.getId(), false);
em.appendField(MessageManager.getMessage("Embed.Announcement.Announce.EventID", settings), event.getId(), false);
}
em.addField(MessageManager.getMessage("Embed.Announcement.Announce.Info", settings), announcement.getInfo(), false);
em.setUrl(event.getHtmlLink());
em.appendField(MessageManager.getMessage("Embed.Announcement.Announce.Info", settings), announcement.getInfo(), false);
em.withUrl(event.getHtmlLink());
if (!settings.usingSimpleAnnouncements()) {
em.setFooter(MessageManager.getMessage("Embed.Announcement.Announce.ID", "%id%", announcement.getAnnouncementId().toString(), settings), null);
em.withFooterText(MessageManager.getMessage("Embed.Announcement.Announce.ID", "%id%", announcement.getAnnouncementId().toString(), settings));
}
try {
EventColor ec = EventColor.fromNameOrHexOrID(event.getColorId());
em.setColor(ec.asColor());
em.withColor(ec.getR(), ec.getG(), ec.getB());
} catch (Exception e) {
//I dunno, color probably null.
em.setColor(GlobalConst.discalColor);
em.withColor(GlobalConst.discalColor);
}
Guild guild = DisCalClient.getClient().getGuildById(announcement.getGuildId()).block();
IGuild guild = DisCalClient.getClient().getGuildByID(announcement.getGuildId());
String msg = MessageManager.getMessage("Embed.Announcement.Announce.Dm.Message", "%guild%", guild.getName(), settings);
MessageManager.sendDirectMessageAsync(msg, em, user);
MessageManager.sendDirectMessageAsync(msg, em.build(), user);
}
/**
@@ -344,14 +351,14 @@ public class AnnouncementMessageFormatter {
public static String getSubscriberNames(Announcement a) {
//Loop and get subs without mentions...
Guild guild = DisCalClient.getClient().getGuildById(a.getGuildId()).block();
IGuild guild = DisCalClient.getClient().getGuildByID(a.getGuildId());
StringBuilder userMentions = new StringBuilder();
for (String userId: a.getSubscriberUserIds()) {
try {
User user = DisCalClient.getClient().getUserById(Snowflake.of(userId)).block();
IUser user = guild.getUserByID(Long.valueOf(userId));
if (user != null)
userMentions.append(user.asMember(a.getGuildId()).block().getDisplayName()).append(" ");
userMentions.append(user.getName()).append(" ");
} catch (Exception e) {
//User does not exist, safely ignore.
}
@@ -367,7 +374,7 @@ public class AnnouncementMessageFormatter {
mentionHere = true;
} else {
try {
Role role = guild.getRoles().filter(r -> r.getId().asLong() == Long.valueOf(roleId)).blockLast();
IRole role = guild.getRoleByID(Long.valueOf(roleId));
if (role != null)
roleMentions.append(role.getName()).append(" ");
} catch (Exception ignore) {
@@ -378,7 +385,7 @@ public class AnnouncementMessageFormatter {
String message = "Subscribers: " + userMentions + " " + roleMentions;
if (mentionEveryone)
message = message + " " + guild.getEveryoneRole().block().getName();
message = message + " " + guild.getEveryoneRole().getName();
if (mentionHere)
message = message + " here";
@@ -390,13 +397,13 @@ public class AnnouncementMessageFormatter {
return message;
}
private static String getSubscriberMentions(Announcement a, Guild guild) {
private static String getSubscriberMentions(Announcement a, IGuild guild) {
StringBuilder userMentions = new StringBuilder();
for (String userId: a.getSubscriberUserIds()) {
try {
User user = DisCalClient.getClient().getUserById(Snowflake.of(userId)).block();
IUser user = guild.getUserByID(Long.valueOf(userId));
if (user != null)
userMentions.append(user.getMention()).append(" ");
userMentions.append(user.mention(true)).append(" ");
} catch (Exception e) {
//User does not exist, safely ignore.
@@ -413,9 +420,9 @@ public class AnnouncementMessageFormatter {
mentionHere = true;
} else {
try {
Role role = guild.getRoles().filter(r -> r.getId().asString().equalsIgnoreCase(roleId)).blockLast();
IRole role = guild.getRoleByID(Long.valueOf(roleId));
if (role != null)
roleMentions.append(role.getMention()).append(" ");
roleMentions.append(role.mention()).append(" ");
} catch (Exception e) {
//Role does not exist, safely ignore.
}
@@ -427,7 +434,7 @@ public class AnnouncementMessageFormatter {
String message = "Subscribers: " + userMentions + " " + roleMentions;
if (mentionEveryone)
message = message + " " + guild.getEveryoneRole().block().getMention();
message = message + " " + guild.getEveryoneRole().mention();
if (mentionHere)
message = message + " @here";
@@ -1,11 +1,11 @@
package org.dreamexposure.discal.client.message;
import com.google.api.services.calendar.model.Calendar;
import discord4j.core.object.util.Snowflake;
import discord4j.core.spec.EmbedCreateSpec;
import org.dreamexposure.discal.core.object.GuildSettings;
import org.dreamexposure.discal.core.object.calendar.PreCalendar;
import org.dreamexposure.discal.core.utils.GlobalConst;
import sx.blah.discord.api.internal.json.objects.EmbedObject;
import sx.blah.discord.util.EmbedBuilder;
/**
* Created by Nova Fox on 11/10/17.
@@ -14,26 +14,28 @@ import org.dreamexposure.discal.core.utils.GlobalConst;
*/
public class CalendarMessageFormatter {
//TODO: Add support for multiple calendars.
public static String getCalendarLink(Snowflake guildId) {
return "https://www.discalbot.com/embed/calendar/" + guildId.asString();
public static String getCalendarLink(long guildId) {
return "https://www.discalbot.com/embed/calendar/" + guildId;
}
public static EmbedCreateSpec getCalendarLinkEmbed(Calendar cal, GuildSettings settings) {
EmbedCreateSpec em = new EmbedCreateSpec();
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.setTitle(MessageManager.getMessage("Embed.Calendar.Link.Title", settings));
em.addField(MessageManager.getMessage("Embed.Calendar.Link.Summary", settings), cal.getSummary(), true);
public static EmbedObject getCalendarLinkEmbed(Calendar cal, GuildSettings settings) {
EmbedBuilder em = new EmbedBuilder();
em.withAuthorIcon(GlobalConst.discalSite);
em.withAuthorName("DisCal");
em.withAuthorUrl(GlobalConst.discalSite);
em.withTitle(MessageManager.getMessage("Embed.Calendar.Link.Title", settings));
em.appendField(MessageManager.getMessage("Embed.Calendar.Link.Summary", settings), cal.getSummary(), true);
try {
em.addField(MessageManager.getMessage("Embed.Calendar.Link.Description", settings), cal.getDescription(), true);
em.appendField(MessageManager.getMessage("Embed.Calendar.Link.Description", settings), cal.getDescription(), true);
} catch (NullPointerException | IllegalArgumentException e) {
//Some error, desc probably never set, just ignore no need to log.
}
em.addField(MessageManager.getMessage("Embed.Calendar.Link.TimeZone", settings), cal.getTimeZone(), false);
em.setUrl(CalendarMessageFormatter.getCalendarLink(settings.getGuildID()));
em.setFooter(MessageManager.getMessage("Embed.Calendar.Link.CalendarId", "%id%", cal.getId(), settings), null);
em.setColor(GlobalConst.discalColor);
em.appendField(MessageManager.getMessage("Embed.Calendar.Link.TimeZone", settings), cal.getTimeZone(), false);
em.withUrl(CalendarMessageFormatter.getCalendarLink(settings.getGuildID()));
em.withFooterText(MessageManager.getMessage("Embed.Calendar.Link.CalendarId", "%id%", cal.getId(), settings));
em.withColor(GlobalConst.discalColor);
return em;
return em.build();
}
/**
@@ -42,32 +44,34 @@ public class CalendarMessageFormatter {
* @param calendar The PreCalendar to create an EmbedObject for.
* @return The EmbedObject for the PreCalendar.
*/
public static EmbedCreateSpec getPreCalendarEmbed(PreCalendar calendar, GuildSettings settings) {
EmbedCreateSpec em = new EmbedCreateSpec();
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.setTitle(MessageManager.getMessage("Embed.Calendar.Pre.Title", settings));
public static EmbedObject getPreCalendarEmbed(PreCalendar calendar, GuildSettings settings) {
EmbedBuilder em = new EmbedBuilder();
em.withAuthorIcon(GlobalConst.discalSite);
em.withAuthorName("DisCal");
em.withAuthorUrl(GlobalConst.discalSite);
em.withTitle(MessageManager.getMessage("Embed.Calendar.Pre.Title", settings));
if (calendar.getSummary() != null)
em.addField(MessageManager.getMessage("Embed.Calendar.Pre.Summary", settings), calendar.getSummary(), true);
em.appendField(MessageManager.getMessage("Embed.Calendar.Pre.Summary", settings), calendar.getSummary(), true);
else
em.addField(MessageManager.getMessage("Embed.Calendar.Pre.Summary", settings), "***UNSET***", true);
em.appendField(MessageManager.getMessage("Embed.Calendar.Pre.Summary", settings), "***UNSET***", true);
if (calendar.getDescription() != null)
em.addField(MessageManager.getMessage("Embed.Calendar.Pre.Description", settings), calendar.getDescription(), false);
em.appendField(MessageManager.getMessage("Embed.Calendar.Pre.Description", settings), calendar.getDescription(), false);
else
em.addField(MessageManager.getMessage("Embed.Calendar.Pre.Description", settings), "***UNSET***", false);
em.appendField(MessageManager.getMessage("Embed.Calendar.Pre.Description", settings), "***UNSET***", false);
if (calendar.getTimezone() != null)
em.addField(MessageManager.getMessage("Embed.Calendar.Pre.TimeZone", settings), calendar.getTimezone(), true);
em.appendField(MessageManager.getMessage("Embed.Calendar.Pre.TimeZone", settings), calendar.getTimezone(), true);
else
em.addField(MessageManager.getMessage("Embed.Calendar.Pre.TimeZone", settings), "***UNSET***", true);
em.appendField(MessageManager.getMessage("Embed.Calendar.Pre.TimeZone", settings), "***UNSET***", true);
if (calendar.isEditing())
em.addField(MessageManager.getMessage("Embed.Calendar.Pre.CalendarId", settings), calendar.getCalendarId(), false);
em.appendField(MessageManager.getMessage("Embed.Calendar.Pre.CalendarId", settings), calendar.getCalendarId(), false);
em.setFooter(MessageManager.getMessage("Embed.Calendar.Pre.Key", settings), null);
em.setColor(GlobalConst.discalColor);
em.withFooterText(MessageManager.getMessage("Embed.Calendar.Pre.Key", settings));
em.withColor(GlobalConst.discalColor);
return em;
return em.build();
}
}
@@ -3,7 +3,6 @@ package org.dreamexposure.discal.client.message;
import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.model.Event;
import com.google.api.services.calendar.model.EventDateTime;
import discord4j.core.spec.EmbedCreateSpec;
import org.dreamexposure.discal.core.calendar.CalendarAuth;
import org.dreamexposure.discal.core.database.DatabaseManager;
import org.dreamexposure.discal.core.enums.event.EventColor;
@@ -15,6 +14,8 @@ import org.dreamexposure.discal.core.object.event.EventData;
import org.dreamexposure.discal.core.object.event.PreEvent;
import org.dreamexposure.discal.core.utils.GlobalConst;
import org.dreamexposure.discal.core.utils.ImageUtils;
import sx.blah.discord.api.internal.json.objects.EmbedObject;
import sx.blah.discord.util.EmbedBuilder;
import javax.annotation.Nullable;
import java.time.Instant;
@@ -37,13 +38,15 @@ public class EventMessageFormatter {
* @param settings The guild's settings
* @return The EmbedObject of the event.
*/
public static EmbedCreateSpec getEventEmbed(Event event, GuildSettings settings) {
public static EmbedObject getEventEmbed(Event event, GuildSettings settings) {
EventData ed = DatabaseManager.getManager().getEventData(settings.getGuildID(), event.getId());
EmbedCreateSpec em = new EmbedCreateSpec();
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.setTitle(MessageManager.getMessage("Embed.Event.Info.Title", settings));
EmbedBuilder em = new EmbedBuilder();
em.withAuthorIcon(GlobalConst.discalSite);
em.withAuthorName("DisCal");
em.withAuthorUrl(GlobalConst.discalSite);
em.withTitle(MessageManager.getMessage("Embed.Event.Info.Title", settings));
if (ed.getImageLink() != null && ImageUtils.validate(ed.getImageLink())) {
em.setImage(ed.getImageLink());
em.withImage(ed.getImageLink());
}
if (event.getSummary() != null) {
String summary = event.getSummary();
@@ -52,7 +55,7 @@ public class EventMessageFormatter {
summary = summary + " (continues on Google Calendar View)";
}
em.addField(MessageManager.getMessage("Embed.Event.Info.Summary", settings), summary, true);
em.appendField(MessageManager.getMessage("Embed.Event.Info.Summary", settings), summary, true);
}
if (event.getDescription() != null) {
String description = event.getDescription();
@@ -60,42 +63,42 @@ public class EventMessageFormatter {
description = description.substring(0, 500);
description = description + " (continues on Google Calendar View)";
}
em.addField(MessageManager.getMessage("Embed.Event.Info.Description", settings), description, true);
em.appendField(MessageManager.getMessage("Embed.Event.Info.Description", settings), description, true);
}
em.addField(MessageManager.getMessage("Embed.Event.Info.StartDate", settings), getHumanReadableDate(event.getStart(), settings, false), true);
em.addField(MessageManager.getMessage("Embed.Event.Info.StartTime", settings), getHumanReadableTime(event.getStart(), settings, false), true);
em.addField(MessageManager.getMessage("Embed.Event.Info.EndDate", settings), getHumanReadableDate(event.getEnd(), settings, false), true);
em.addField(MessageManager.getMessage("Embed.Event.Info.EndTime", settings), getHumanReadableTime(event.getEnd(), settings, false), true);
em.appendField(MessageManager.getMessage("Embed.Event.Info.StartDate", settings), getHumanReadableDate(event.getStart(), settings, false), true);
em.appendField(MessageManager.getMessage("Embed.Event.Info.StartTime", settings), getHumanReadableTime(event.getStart(), settings, false), true);
em.appendField(MessageManager.getMessage("Embed.Event.Info.EndDate", settings), getHumanReadableDate(event.getEnd(), settings, false), true);
em.appendField(MessageManager.getMessage("Embed.Event.Info.EndTime", settings), getHumanReadableTime(event.getEnd(), settings, false), true);
try {
//TODO: add support for multiple calendars...
CalendarData data = DatabaseManager.getManager().getMainCalendar(settings.getGuildID());
Calendar service = CalendarAuth.getCalendarService(settings);
String tz = service.calendars().get(data.getCalendarAddress()).execute().getTimeZone();
em.addField(MessageManager.getMessage("Embed.Event.Info.TimeZone", settings), tz, true);
em.appendField(MessageManager.getMessage("Embed.Event.Info.TimeZone", settings), tz, true);
} catch (Exception e1) {
em.addField(MessageManager.getMessage("Embed.Event.Info.TimeZone", settings), "Error/Unknown", true);
em.appendField(MessageManager.getMessage("Embed.Event.Info.TimeZone", settings), "Error/Unknown", true);
}
if (event.getLocation() != null && !event.getLocation().equalsIgnoreCase("")) {
if (event.getLocation().length() > 300) {
String location = event.getLocation().substring(0, 300).trim() + "... (cont. on Google Cal)";
em.addField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), location, true);
em.appendField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), location, true);
} else {
em.addField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), event.getLocation(), true);
em.appendField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), event.getLocation(), true);
}
}
//TODO: Add info on recurrence here.
em.setUrl(event.getHtmlLink());
em.setFooter(MessageManager.getMessage("Embed.Event.Info.ID", "%id%", event.getId(), settings), null);
em.withUrl(event.getHtmlLink());
em.withFooterText(MessageManager.getMessage("Embed.Event.Info.ID", "%id%", event.getId(), settings));
try {
EventColor ec = EventColor.fromId(Integer.valueOf(event.getColorId()));
em.setColor(ec.asColor());
em.withColor(ec.getR(), ec.getG(), ec.getB());
} catch (Exception e) {
//Color is null, ignore and add our default.
em.setColor(GlobalConst.discalColor);
em.withColor(56, 138, 237);
}
return em;
return em.build();
}
/**
@@ -104,13 +107,15 @@ public class EventMessageFormatter {
* @param event The event involved.
* @return The EmbedObject of the event.
*/
public static EmbedCreateSpec getCondensedEventEmbed(Event event, GuildSettings settings) {
EmbedCreateSpec em = new EmbedCreateSpec();
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.setTitle(MessageManager.getMessage("Embed.Event.Condensed.Title", settings));
public static EmbedObject getCondensedEventEmbed(Event event, GuildSettings settings) {
EmbedBuilder em = new EmbedBuilder();
em.withAuthorIcon(GlobalConst.discalSite);
em.withAuthorName("DisCal");
em.withAuthorUrl(GlobalConst.discalSite);
em.withTitle(MessageManager.getMessage("Embed.Event.Condensed.Title", settings));
EventData ed = DatabaseManager.getManager().getEventData(settings.getGuildID(), event.getId());
if (ed.getImageLink() != null && ImageUtils.validate(ed.getImageLink()))
em.setThumbnail(ed.getImageLink());
em.withThumbnail(ed.getImageLink());
if (event.getSummary() != null) {
String summary = event.getSummary();
@@ -118,28 +123,28 @@ public class EventMessageFormatter {
summary = summary.substring(0, 250);
summary = summary + " (continues on Google Calendar View)";
}
em.addField(MessageManager.getMessage("Embed.Event.Condensed.Summary", settings), summary, true);
em.appendField(MessageManager.getMessage("Embed.Event.Condensed.Summary", settings), summary, true);
}
em.addField(MessageManager.getMessage("Embed.Event.Condensed.Date", settings), getHumanReadableDate(event.getStart(), settings, false), true);
em.appendField(MessageManager.getMessage("Embed.Event.Condensed.Date", settings), getHumanReadableDate(event.getStart(), settings, false), true);
if (event.getLocation() != null && !event.getLocation().equalsIgnoreCase("")) {
if (event.getLocation().length() > 300) {
String location = event.getLocation().substring(0, 300).trim() + "... (cont. on Google Cal)";
em.addField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), location, true);
em.appendField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), location, true);
} else {
em.addField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), event.getLocation(), true);
em.appendField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), event.getLocation(), true);
}
}
em.addField(MessageManager.getMessage("Embed.Event.Condensed.ID", settings), event.getId(), false);
em.setUrl(event.getHtmlLink());
em.appendField(MessageManager.getMessage("Embed.Event.Condensed.ID", settings), event.getId(), false);
em.withUrl(event.getHtmlLink());
try {
EventColor ec = EventColor.fromId(Integer.valueOf(event.getColorId()));
em.setColor(ec.asColor());
em.withColor(ec.getR(), ec.getG(), ec.getB());
} catch (Exception e) {
//Color is null, ignore and add our default.
em.setColor(GlobalConst.discalColor);
em.withColor(GlobalConst.discalColor);
}
return em;
return em.build();
}
/**
@@ -148,20 +153,22 @@ public class EventMessageFormatter {
* @param event The PreEvent to get an embed for.
* @return The EmbedObject of the PreEvent.
*/
public static EmbedCreateSpec getPreEventEmbed(PreEvent event, GuildSettings settings) {
EmbedCreateSpec em = new EmbedCreateSpec();
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.setTitle(MessageManager.getMessage("Embed.Event.Pre.Title", settings));
public static EmbedObject getPreEventEmbed(PreEvent event, GuildSettings settings) {
EmbedBuilder em = new EmbedBuilder();
em.withAuthorIcon(GlobalConst.discalSite);
em.withAuthorName("DisCal");
em.withAuthorUrl(GlobalConst.discalSite);
em.withTitle(MessageManager.getMessage("Embed.Event.Pre.Title", settings));
try {
if (event.getEventData() != null && event.getEventData().getImageLink() != null && ImageUtils.validate(event.getEventData().getImageLink())) {
em.setImage(event.getEventData().getImageLink());
em.withImage(event.getEventData().getImageLink());
}
} catch (NullPointerException e) {
//TODO: find out why this is happening
Logger.getLogger().exception(null, "[Event] Failed to handle event image. Is event null?", e, EventMessageFormatter.class);
}
if (event.isEditing())
em.addField(MessageManager.getMessage("Embed.Event.Pre.Id", settings), event.getEventId(), false);
em.appendField(MessageManager.getMessage("Embed.Event.Pre.Id", settings), event.getEventId(), false);
if (event.getSummary() != null) {
String summary = event.getSummary();
@@ -169,9 +176,9 @@ public class EventMessageFormatter {
summary = summary.substring(0, 250);
summary = summary + " (continues on Google Calendar View)";
}
em.addField(MessageManager.getMessage("Embed.Event.Pre.Summary", settings), summary, true);
em.appendField(MessageManager.getMessage("Embed.Event.Pre.Summary", settings), summary, true);
} else {
em.addField(MessageManager.getMessage("Embed.Event.Pre.Summary", settings), "NOT SET", true);
em.appendField(MessageManager.getMessage("Embed.Event.Pre.Summary", settings), "NOT SET", true);
}
if (event.getDescription() != null) {
String description = event.getDescription();
@@ -179,36 +186,36 @@ public class EventMessageFormatter {
description = description.substring(0, 500);
description = description + " (continues on Google Calendar View)";
}
em.addField(MessageManager.getMessage("Embed.Event.Pre.Description", settings), description, true);
em.appendField(MessageManager.getMessage("Embed.Event.Pre.Description", settings), description, true);
} else {
em.addField(MessageManager.getMessage("Embed.Event.Pre.Description", settings), "NOT SET", true);
em.appendField(MessageManager.getMessage("Embed.Event.Pre.Description", settings), "NOT SET", true);
}
if (event.shouldRecur()) {
em.addField(MessageManager.getMessage("Embed.Event.Pre.Recurrence", settings), event.getRecurrence().toHumanReadable(), false);
em.appendField(MessageManager.getMessage("Embed.Event.Pre.Recurrence", settings), event.getRecurrence().toHumanReadable(), false);
} else {
em.addField(MessageManager.getMessage("Embed.Event.Pre.Recurrence", settings), "N/a", true);
em.appendField(MessageManager.getMessage("Embed.Event.Pre.Recurrence", settings), "N/a", true);
}
em.addField(MessageManager.getMessage("Embed.Event.Pre.StartDate", settings), getHumanReadableDate(event.getViewableStartDate(), settings, true), true);
em.addField(MessageManager.getMessage("Embed.Event.Pre.StartTime", settings), EventMessageFormatter.getHumanReadableTime(event.getViewableStartDate(), settings, true), true);
em.addField(MessageManager.getMessage("Embed.Event.Pre.EndDate", settings), getHumanReadableDate(event.getViewableEndDate(), settings, true), true);
em.addField(MessageManager.getMessage("Embed.Event.Pre.EndTime", settings), EventMessageFormatter.getHumanReadableTime(event.getViewableEndDate(), settings, true), true);
em.addField(MessageManager.getMessage("Embed.Event.Pre.TimeZone", settings), event.getTimeZone(), true);
em.appendField(MessageManager.getMessage("Embed.Event.Pre.StartDate", settings), getHumanReadableDate(event.getViewableStartDate(), settings, true), true);
em.appendField(MessageManager.getMessage("Embed.Event.Pre.StartTime", settings), EventMessageFormatter.getHumanReadableTime(event.getViewableStartDate(), settings, true), true);
em.appendField(MessageManager.getMessage("Embed.Event.Pre.EndDate", settings), getHumanReadableDate(event.getViewableEndDate(), settings, true), true);
em.appendField(MessageManager.getMessage("Embed.Event.Pre.EndTime", settings), EventMessageFormatter.getHumanReadableTime(event.getViewableEndDate(), settings, true), true);
em.appendField(MessageManager.getMessage("Embed.Event.Pre.TimeZone", settings), event.getTimeZone(), true);
if (event.getLocation() != null && !event.getLocation().equalsIgnoreCase("")) {
if (event.getLocation().length() > 300) {
String location = event.getLocation().substring(0, 300).trim() + "... (cont. on Google Cal)";
em.addField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), location, true);
em.appendField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), location, true);
} else {
em.addField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), event.getLocation(), true);
em.appendField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), event.getLocation(), true);
}
} else {
em.addField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), "N/a", true);
em.appendField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), "N/a", true);
}
em.setFooter(MessageManager.getMessage("Embed.Event.Pre.Key", settings), null);
em.setColor(event.getColor().asColor());
em.withFooterText(MessageManager.getMessage("Embed.Event.Pre.Key", settings));
em.withColor(event.getColor().asColor());
return em;
return em.build();
}
/**
@@ -217,35 +224,37 @@ public class EventMessageFormatter {
* @param ecr The CreatorResponse involved.
* @return The EmbedObject for the CreatorResponse.
*/
public static EmbedCreateSpec getEventConfirmationEmbed(EventCreatorResponse ecr, GuildSettings settings) {
public static EmbedObject getEventConfirmationEmbed(EventCreatorResponse ecr, GuildSettings settings) {
EventData ed = DatabaseManager.getManager().getEventData(settings.getGuildID(), ecr.getEvent().getId());
EmbedCreateSpec em = new EmbedCreateSpec();
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.setTitle(MessageManager.getMessage("Embed.Event.Confirm.Title", settings));
EmbedBuilder em = new EmbedBuilder();
em.withAuthorIcon(GlobalConst.discalSite);
em.withAuthorName("DisCal");
em.withAuthorUrl(GlobalConst.discalSite);
em.withTitle(MessageManager.getMessage("Embed.Event.Confirm.Title", settings));
if (ed.getImageLink() != null && ImageUtils.validate(ed.getImageLink())) {
em.setImage(ed.getImageLink());
em.withImage(ed.getImageLink());
}
em.addField(MessageManager.getMessage("Embed.Event.Confirm.ID", settings), ecr.getEvent().getId(), false);
em.addField(MessageManager.getMessage("Embed.Event.Confirm.Date", settings), getHumanReadableDate(ecr.getEvent().getStart(), settings, false), false);
em.appendField(MessageManager.getMessage("Embed.Event.Confirm.ID", settings), ecr.getEvent().getId(), false);
em.appendField(MessageManager.getMessage("Embed.Event.Confirm.Date", settings), getHumanReadableDate(ecr.getEvent().getStart(), settings, false), false);
if (ecr.getEvent().getLocation() != null && !ecr.getEvent().getLocation().equalsIgnoreCase("")) {
if (ecr.getEvent().getLocation().length() > 300) {
String location = ecr.getEvent().getLocation().substring(0, 300).trim() + "... (cont. on Google Cal)";
em.addField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), location, true);
em.appendField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), location, true);
} else {
em.addField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), ecr.getEvent().getLocation(), true);
em.appendField(MessageManager.getMessage("Embed.Event.Confirm.Location", settings), ecr.getEvent().getLocation(), true);
}
}
em.setFooter(MessageManager.getMessage("Embed.Event.Confirm.Footer", settings), null);
em.setImage(ecr.getEvent().getHtmlLink());
em.withFooterText(MessageManager.getMessage("Embed.Event.Confirm.Footer", settings));
em.withUrl(ecr.getEvent().getHtmlLink());
try {
EventColor ec = EventColor.fromId(Integer.valueOf(ecr.getEvent().getColorId()));
em.setColor(ec.asColor());
em.withColor(ec.getR(), ec.getG(), ec.getB());
} catch (Exception e) {
//Color is null, ignore and add our default.
em.setColor(GlobalConst.discalColor);
em.withColor(GlobalConst.discalColor);
}
return em;
return em.build();
}
/**
@@ -1,18 +1,21 @@
package org.dreamexposure.discal.client.message;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.object.entity.Message;
import discord4j.core.object.entity.TextChannel;
import discord4j.core.object.entity.User;
import discord4j.core.spec.EmbedCreateSpec;
import discord4j.core.spec.MessageCreateSpec;
import discord4j.core.spec.MessageEditSpec;
import org.dreamexposure.discal.core.file.ReadFile;
import org.dreamexposure.discal.core.logger.Logger;
import org.dreamexposure.discal.core.object.GuildSettings;
import org.dreamexposure.discal.core.utils.GlobalConst;
import org.json.JSONArray;
import org.json.JSONObject;
import sx.blah.discord.api.internal.json.objects.EmbedObject;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.handle.obj.IChannel;
import sx.blah.discord.handle.obj.IMessage;
import sx.blah.discord.handle.obj.IPrivateChannel;
import sx.blah.discord.handle.obj.IUser;
import sx.blah.discord.util.DiscordException;
import sx.blah.discord.util.MessageBuilder;
import sx.blah.discord.util.MissingPermissionsException;
import sx.blah.discord.util.RequestBuffer;
import java.util.ArrayList;
import java.util.List;
@@ -92,101 +95,286 @@ public class MessageManager {
}
//Message sending
public static void sendMessageAsync(String message, TextChannel channel) {
channel.createMessage(new MessageCreateSpec().setContent(message)).subscribe();
public static void sendMessageAsync(String message, IChannel channel) {
RequestBuffer.request(() -> {
try {
new MessageBuilder(channel.getClient()).appendContent(message).withChannel(channel).build();
} catch (DiscordException | MissingPermissionsException ignore) {
//No reason to print exception.
}
});
}
public static void sendMessageAsync(EmbedCreateSpec embed, TextChannel channel) {
channel.createMessage(new MessageCreateSpec().setEmbed(embed)).subscribe();
public static void sendMessageAsync(EmbedObject embed, IChannel channel) {
RequestBuffer.request(() -> {
try {
new MessageBuilder(channel.getClient()).withEmbed(embed).withChannel(channel).build();
} catch (DiscordException | MissingPermissionsException ignore) {
//No reason to print exception.
}
});
}
public static void sendMessageAsync(String message, EmbedCreateSpec embed, TextChannel channel) {
channel.createMessage(new MessageCreateSpec().setContent(message).setEmbed(embed)).subscribe();
public static void sendMessageAsync(String message, EmbedObject embed, IChannel channel) {
RequestBuffer.request(() -> {
try {
new MessageBuilder(channel.getClient()).appendContent(message).withEmbed(embed).withChannel(channel).build();
} catch (DiscordException | MissingPermissionsException ignore) {
//No reason to print exception.
}
});
}
public static void sendMessageAsync(String message, MessageCreateEvent event) {
event.getMessage().getChannel().flatMap(c -> c.createMessage(new MessageCreateSpec().setContent(message))).subscribe();
public static void sendMessageAsync(String message, MessageReceivedEvent event) {
RequestBuffer.request(() -> {
try {
new MessageBuilder(event.getClient()).appendContent(message).withChannel(event.getChannel()).build();
} catch (DiscordException | MissingPermissionsException ignore) {
//No reason to print exception.
}
});
}
public static void sendMessageAsync(EmbedCreateSpec embed, MessageCreateEvent event) {
event.getMessage().getChannel().flatMap(c -> c.createMessage(new MessageCreateSpec().setEmbed(embed))).subscribe();
public static void sendMessageAsync(EmbedObject embed, MessageReceivedEvent event) {
RequestBuffer.request(() -> {
try {
new MessageBuilder(event.getClient()).withEmbed(embed).withChannel(event.getChannel()).build();
} catch (DiscordException | MissingPermissionsException ignore) {
//No reason to print exception.
}
});
}
public static void sendMessageAsync(String message, EmbedCreateSpec embed, MessageCreateEvent event) {
event.getMessage().getChannel().flatMap(c -> c.createMessage(new MessageCreateSpec().setContent(message).setEmbed(embed))).subscribe();
public static void sendMessageAsync(String message, EmbedObject embed, MessageReceivedEvent event) {
RequestBuffer.request(() -> {
try {
new MessageBuilder(event.getClient()).appendContent(message).withEmbed(embed).withChannel(event.getChannel()).build();
} catch (DiscordException | MissingPermissionsException ignore) {
//No reason to print exception.
}
});
}
public static Message sendMessageSync(String message, MessageCreateEvent event) {
return event.getMessage().getChannel().flatMap(c -> c.createMessage(new MessageCreateSpec().setContent(message))).block();
public static IMessage sendMessageSync(String message, MessageReceivedEvent event) {
return RequestBuffer.request(() -> {
try {
return new MessageBuilder(event.getClient()).appendContent(message).withChannel(event.getMessage().getChannel()).build();
} catch (DiscordException | MissingPermissionsException e) {
//Failed to send message.
return null;
}
}).get();
}
public static Message sendMessageSync(EmbedCreateSpec embed, MessageCreateEvent event) {
return event.getMessage().getChannel().flatMap(c -> c.createMessage(new MessageCreateSpec().setEmbed(embed))).block();
public static IMessage sendMessageSync(EmbedObject embed, MessageReceivedEvent event) {
return RequestBuffer.request(() -> {
try {
return new MessageBuilder(event.getClient()).withEmbed(embed).withChannel(event.getMessage().getChannel()).build();
} catch (DiscordException | MissingPermissionsException e) {
//Failed to send message.
return null;
}
}).get();
}
public static Message sendMessageSync(String message, EmbedCreateSpec embed, MessageCreateEvent event) {
return event.getMessage().getChannel().flatMap(c -> c.createMessage(new MessageCreateSpec().setContent(message).setEmbed(embed))).block();
public static IMessage sendMessageSync(String message, EmbedObject embed, MessageReceivedEvent event) {
return RequestBuffer.request(() -> {
try {
return new MessageBuilder(event.getClient()).appendContent(message).withEmbed(embed).withChannel(event.getMessage().getChannel()).build();
} catch (DiscordException | MissingPermissionsException e) {
//Failed to send message.
return null;
}
}).get();
}
public static Message sendMessageSync(String message, TextChannel channel) {
return channel.createMessage(new MessageCreateSpec().setContent(message)).block();
public static IMessage sendMessageSync(String message, IChannel channel) {
return RequestBuffer.request(() -> {
try {
return new MessageBuilder(channel.getClient()).appendContent(message).withChannel(channel).build();
} catch (DiscordException | MissingPermissionsException e) {
//Failed to send message.
return null;
}
}).get();
}
public static Message sendMessageSync(EmbedCreateSpec embed, TextChannel channel) {
return channel.createMessage(new MessageCreateSpec().setEmbed(embed)).block();
public static IMessage sendMessageSync(EmbedObject embed, IChannel channel) {
return RequestBuffer.request(() -> {
try {
return new MessageBuilder(channel.getClient()).withEmbed(embed).withChannel(channel).build();
} catch (DiscordException | MissingPermissionsException e) {
//Failed to send message.
return null;
}
}).get();
}
public static Message sendMessageSync(String message, EmbedCreateSpec embed, TextChannel channel) {
return channel.createMessage(new MessageCreateSpec().setContent(message).setEmbed(embed)).block();
public static IMessage sendMessageSync(String message, EmbedObject embed, IChannel channel) {
return RequestBuffer.request(() -> {
try {
return new MessageBuilder(channel.getClient()).appendContent(message).withEmbed(embed).withChannel(channel).build();
} catch (DiscordException | MissingPermissionsException e) {
//Failed to send message.
return null;
}
}).get();
}
public static void sendDirectMessageAsync(String message, User user) {
user.getPrivateChannel().flatMap(c -> c.createMessage(new MessageCreateSpec().setContent(message))).subscribe();
public static void sendDirectMessageAsync(String message, IUser user) {
RequestBuffer.request(() -> {
try {
IPrivateChannel pc = user.getOrCreatePMChannel();
new MessageBuilder(user.getClient()).withChannel(pc).appendContent(message).build();
} catch (DiscordException | MissingPermissionsException ignore) {
//Failed to send message.
}
});
}
public static void sendDirectMessageAsync(EmbedCreateSpec embed, User user) {
user.getPrivateChannel().flatMap(c -> c.createMessage(new MessageCreateSpec().setEmbed(embed))).subscribe();
public static void sendDirectMessageAsync(EmbedObject embed, IUser user) {
RequestBuffer.request(() -> {
try {
IPrivateChannel pc = user.getOrCreatePMChannel();
new MessageBuilder(user.getClient()).withChannel(pc).withEmbed(embed).build();
} catch (DiscordException | MissingPermissionsException ignore) {
//Failed to send message.
}
});
}
public static void sendDirectMessageAsync(String message, EmbedCreateSpec embed, User user) {
user.getPrivateChannel().flatMap(c -> c.createMessage(new MessageCreateSpec().setContent(message).setEmbed(embed))).subscribe();
public static void sendDirectMessageAsync(String message, EmbedObject embed, IUser user) {
RequestBuffer.request(() -> {
try {
IPrivateChannel pc = user.getOrCreatePMChannel();
new MessageBuilder(user.getClient()).withChannel(pc).appendContent(message).withEmbed(embed).build();
} catch (DiscordException | MissingPermissionsException ignore) {
//Failed to send message.
}
});
}
public static Message sendDirectMessageSync(String message, User user) {
return user.getPrivateChannel().flatMap(c -> c.createMessage(new MessageCreateSpec().setContent(message))).block();
public static IMessage sendDirectMessageSync(String message, IUser user) {
return RequestBuffer.request(() -> {
try {
IPrivateChannel pc = user.getOrCreatePMChannel();
return new MessageBuilder(user.getClient()).withChannel(pc).appendContent(message).build();
} catch (DiscordException | MissingPermissionsException ignore) {
//Failed to send message.
return null;
}
}).get();
}
public static Message sendDirectMessageSync(EmbedCreateSpec embed, User user) {
return user.getPrivateChannel().flatMap(c -> c.createMessage(new MessageCreateSpec().setEmbed(embed))).block();
public static IMessage sendDirectMessageSync(EmbedObject embed, IUser user) {
return RequestBuffer.request(() -> {
try {
IPrivateChannel pc = user.getOrCreatePMChannel();
return new MessageBuilder(user.getClient()).withChannel(pc).withEmbed(embed).build();
} catch (DiscordException | MissingPermissionsException ignore) {
//Failed to send message.
return null;
}
}).get();
}
public static Message sendDirectMessageSync(String message, EmbedCreateSpec embed, User user) {
return user.getPrivateChannel().flatMap(c -> c.createMessage(new MessageCreateSpec().setContent(message).setEmbed(embed))).block();
public static IMessage sendDirectMessageSync(EmbedObject embed, String message, IUser user) {
return RequestBuffer.request(() -> {
try {
IPrivateChannel pc = user.getOrCreatePMChannel();
return new MessageBuilder(user.getClient()).withChannel(pc).appendContent(message).withEmbed(embed).build();
} catch (DiscordException | MissingPermissionsException ignore) {
//Failed to send message.
return null;
}
}).get();
}
//Message editing
public static void editMessage(String message, Message original) {
original.edit(new MessageEditSpec().setContent(message)).subscribe();
public static void editMessage(String content, IMessage message) {
try {
RequestBuffer.request(() -> {
try {
if (message != null && !message.isDeleted())
message.edit(content);
} catch (DiscordException | MissingPermissionsException e) {
//Failed to edit.
}
});
} catch (NullPointerException ignore) {
}
}
public static void editMessage(String message, EmbedCreateSpec embed, Message original) {
original.edit(new MessageEditSpec().setContent(message).setEmbed(embed)).subscribe();
public static void editMessage(String content, EmbedObject embed, IMessage message) {
try {
RequestBuffer.request(() -> {
try {
if (message != null && !message.isDeleted())
message.edit(content, embed);
} catch (DiscordException | MissingPermissionsException e) {
//Failed to edit.
}
});
} catch (NullPointerException ignore) {
}
}
public static void editMessage(String message, MessageCreateEvent event) {
event.getMessage().edit(new MessageEditSpec().setContent(message)).subscribe();
public static void editMessage(String content, MessageReceivedEvent event) {
try {
RequestBuffer.request(() -> {
try {
if (event.getMessage() != null && !event.getMessage().isDeleted())
event.getMessage().edit(content);
} catch (DiscordException | MissingPermissionsException e) {
//Failed to edit.
}
});
} catch (NullPointerException ignore) {
}
}
public static void editMessage(String message, EmbedCreateSpec embed, MessageCreateEvent event) {
event.getMessage().edit(new MessageEditSpec().setContent(message).setEmbed(embed)).subscribe();
public static void editMessage(String content, EmbedObject embed, MessageReceivedEvent event) {
try {
RequestBuffer.request(() -> {
try {
if (event.getMessage() != null && !event.getMessage().isDeleted())
event.getMessage().edit(content, embed);
} catch (DiscordException | MissingPermissionsException e) {
//Failed to edit.
}
});
} catch (NullPointerException ignore) {
}
}
//Message deleting
public static void deleteMessage(Message message) {
message.delete().subscribe();
public static void deleteMessage(IMessage message) {
try {
RequestBuffer.request(() -> {
try {
if (!message.isDeleted())
message.delete();
} catch (DiscordException | MissingPermissionsException e) {
//Failed to delete.
}
});
} catch (NullPointerException ignore) {
}
}
public static void deleteMessage(MessageCreateEvent event) {
event.getMessage().delete().subscribe();
public static void deleteMessage(MessageReceivedEvent event) {
try {
RequestBuffer.request(() -> {
try {
if (!event.getMessage().isDeleted())
event.getMessage().delete();
} catch (DiscordException | MissingPermissionsException e) {
//Failed to delete.
}
});
} catch (NullPointerException ignore) {
}
}
}
@@ -4,8 +4,6 @@ import com.google.api.client.util.DateTime;
import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.model.Event;
import com.google.api.services.calendar.model.Events;
import discord4j.core.object.entity.Guild;
import discord4j.core.object.util.Snowflake;
import org.dreamexposure.discal.client.DisCalClient;
import org.dreamexposure.discal.client.message.AnnouncementMessageFormatter;
import org.dreamexposure.discal.core.calendar.CalendarAuth;
@@ -18,6 +16,7 @@ import org.dreamexposure.discal.core.object.announcement.Announcement;
import org.dreamexposure.discal.core.object.calendar.CalendarData;
import org.dreamexposure.discal.core.utils.EventUtils;
import org.dreamexposure.discal.core.utils.GuildUtils;
import sx.blah.discord.handle.obj.IGuild;
import java.io.IOException;
import java.util.ArrayList;
@@ -29,10 +28,10 @@ public class AnnouncementThread extends Thread {
private Calendar discalService;
private HashMap<Snowflake, GuildSettings> allSettings = new HashMap<>();
private HashMap<Snowflake, CalendarData> calendars = new HashMap<>();
private HashMap<Snowflake, Calendar> customServices = new HashMap<>();
private HashMap<Snowflake, List<Event>> allEvents = new HashMap<>();
private HashMap<Long, GuildSettings> allSettings = new HashMap<>();
private HashMap<Long, CalendarData> calendars = new HashMap<>();
private HashMap<Long, Calendar> customServices = new HashMap<>();
private HashMap<Long, List<Event>> allEvents = new HashMap<>();
public AnnouncementThread() {
}
@@ -49,8 +48,8 @@ public class AnnouncementThread extends Thread {
Logger.getLogger().exception(null, "Failed to get service! 01a0101", e, this.getClass());
}
for (Guild g : DisCalClient.getClient().getGuilds().toIterable()) {
List<Announcement> allAnnouncements = DatabaseManager.getManager().getEnabledAnnouncements(g.getId());
for (IGuild g : DisCalClient.getClient().getGuilds()) {
List<Announcement> allAnnouncements = DatabaseManager.getManager().getEnabledAnnouncements(g.getLongID());
for (Announcement a : allAnnouncements) {
try {
Logger.getLogger().announcement("starting an announcement", a.getGuildId() + "", a.getAnnouncementId() + "", "N/a");
@@ -2,7 +2,6 @@ package org.dreamexposure.discal.client.module.command;
import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.model.CalendarListEntry;
import discord4j.core.event.domain.message.MessageCreateEvent;
import org.dreamexposure.discal.client.message.MessageManager;
import org.dreamexposure.discal.client.network.google.GoogleExternalAuth;
import org.dreamexposure.discal.core.calendar.CalendarAuth;
@@ -12,6 +11,7 @@ import org.dreamexposure.discal.core.object.GuildSettings;
import org.dreamexposure.discal.core.object.calendar.CalendarData;
import org.dreamexposure.discal.core.object.command.CommandInfo;
import org.dreamexposure.discal.core.utils.PermissionChecker;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import java.util.ArrayList;
import java.util.List;
@@ -21,7 +21,6 @@ import java.util.List;
* Website: www.cloudcraftgaming.com
* For Project: DisCal
*/
@SuppressWarnings("OptionalGetWithoutIsPresent")
public class AddCalendarCommand implements ICommand {
/**
* Gets the command this Object is responsible for.
@@ -70,7 +69,7 @@ public class AddCalendarCommand implements ICommand {
* @return <code>true</code> if successful, else <code>false</code>.
*/
@Override
public boolean issueCommand(String[] args, MessageCreateEvent event, GuildSettings settings) {
public boolean issueCommand(String[] args, MessageReceivedEvent event, GuildSettings settings) {
if (settings.isDevGuild() || settings.isPatronGuild()) {
if (PermissionChecker.hasManageServerRole(event)) {
if (args.length == 0) {
@@ -100,7 +99,7 @@ public class AddCalendarCommand implements ICommand {
}
if (valid) {
//Update and save.
CalendarData data = new CalendarData(settings.getGuildID(), 1);
CalendarData data = new CalendarData(event.getGuild().getLongID(), 1);
data.setCalendarId(args[0]);
data.setCalendarAddress(args[0]);
data.setExternal(true);
@@ -117,7 +116,7 @@ public class AddCalendarCommand implements ICommand {
}
} catch (Exception e) {
MessageManager.sendMessageAsync(MessageManager.getMessage("AddCalendar.Select.Failure.Unknown", settings), event);
Logger.getLogger().exception(event.getMember().get(), "Failed to connect external calendar!", e, this.getClass());
Logger.getLogger().exception(event.getAuthor(), "Failed to connect external calendar!", e, this.getClass());
}
}
} else {
@@ -1,7 +1,5 @@
package org.dreamexposure.discal.client.module.command;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.object.entity.Message;
import org.dreamexposure.discal.client.calendar.CalendarCreator;
import org.dreamexposure.discal.client.message.CalendarMessageFormatter;
import org.dreamexposure.discal.client.message.MessageManager;
@@ -15,6 +13,9 @@ import org.dreamexposure.discal.core.utils.CalendarUtils;
import org.dreamexposure.discal.core.utils.GeneralUtils;
import org.dreamexposure.discal.core.utils.PermissionChecker;
import org.dreamexposure.discal.core.utils.TimeZoneUtils;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.handle.obj.IMessage;
import sx.blah.discord.handle.obj.Permissions;
import java.util.ArrayList;
@@ -87,12 +88,13 @@ public class CalendarCommand implements ICommand {
* @return <code>true</code> if successful, else <code>false</code>.
*/
@Override
public boolean issueCommand(String[] args, MessageCreateEvent event, GuildSettings settings) {
public boolean issueCommand(String[] args, MessageReceivedEvent event, GuildSettings settings) {
if (args.length < 1) {
MessageManager.sendMessageAsync(MessageManager.getMessage("Notification.Args.Few", settings), event);
} else {
long guildId = event.getGuild().getLongID();
//TODO: Add support for multiple calendars...
CalendarData calendarData = DatabaseManager.getManager().getMainCalendar(settings.getGuildID());
CalendarData calendarData = DatabaseManager.getManager().getMainCalendar(guildId);
switch (args[0].toLowerCase()) {
case "create":
@@ -157,12 +159,13 @@ public class CalendarCommand implements ICommand {
return false;
}
private void moduleCreate(String[] args, MessageCreateEvent event, CalendarData calendarData, GuildSettings settings) {
if (CalendarCreator.getCreator().hasPreCalendar(settings.getGuildID())) {
if (CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()).getCreatorMessage() != null) {
private void moduleCreate(String[] args, MessageReceivedEvent event, CalendarData calendarData, GuildSettings settings) {
long guildId = event.getGuild().getLongID();
if (CalendarCreator.getCreator().hasPreCalendar(guildId)) {
if (CalendarCreator.getCreator().getPreCalendar(guildId).getCreatorMessage() != null) {
MessageManager.deleteMessage(event);
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(settings.getGuildID()));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.AlreadyInit", settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()), settings), event));
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(guildId));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.AlreadyInit", settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(guildId), settings), event));
} else {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Calendar.AlreadyInit", settings), event);
}
@@ -184,18 +187,19 @@ public class CalendarCommand implements ICommand {
}
}
private void moduleCancel(MessageCreateEvent event, CalendarData calendarData, GuildSettings settings) {
if (CalendarCreator.getCreator().hasPreCalendar(settings.getGuildID())) {
Message message = CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()).getCreatorMessage();
boolean editing = CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()).isEditing();
if (CalendarCreator.getCreator().terminate(settings.getGuildID())) {
private void moduleCancel(MessageReceivedEvent event, CalendarData calendarData, GuildSettings settings) {
long guildId = event.getGuild().getLongID();
if (CalendarCreator.getCreator().hasPreCalendar(guildId)) {
IMessage message = CalendarCreator.getCreator().getPreCalendar(guildId).getCreatorMessage();
boolean editing = CalendarCreator.getCreator().getPreCalendar(guildId).isEditing();
if (CalendarCreator.getCreator().terminate(guildId)) {
if (message != null) {
if (!editing) {
MessageManager.deleteMessage(event);
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(settings.getGuildID()));
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(guildId));
} else {
MessageManager.deleteMessage(event);
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(settings.getGuildID()));
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(guildId));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Cancel.Edit.Success", settings), event));
}
} else {
@@ -216,13 +220,14 @@ public class CalendarCommand implements ICommand {
}
}
private void moduleView(MessageCreateEvent event, CalendarData calendarData, GuildSettings settings) {
if (CalendarCreator.getCreator().hasPreCalendar(settings.getGuildID())) {
PreCalendar preCalendar = CalendarCreator.getCreator().getPreCalendar(settings.getGuildID());
private void moduleView(MessageReceivedEvent event, CalendarData calendarData, GuildSettings settings) {
long guildId = event.getGuild().getLongID();
if (CalendarCreator.getCreator().hasPreCalendar(guildId)) {
PreCalendar preCalendar = CalendarCreator.getCreator().getPreCalendar(guildId);
if (preCalendar.getCreatorMessage() != null) {
MessageManager.deleteMessage(event);
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(settings.getGuildID()));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Review", settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()), settings), event));
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(guildId));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Review", settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(guildId), settings), event));
} else {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Calendar.Review", settings), CalendarMessageFormatter.getPreCalendarEmbed(preCalendar, settings), event);
}
@@ -234,14 +239,15 @@ public class CalendarCommand implements ICommand {
}
}
private void moduleConfirm(MessageCreateEvent event, CalendarData calendarData, GuildSettings settings) {
if (CalendarCreator.getCreator().hasPreCalendar(settings.getGuildID())) {
private void moduleConfirm(MessageReceivedEvent event, CalendarData calendarData, GuildSettings settings) {
long guildId = event.getGuild().getLongID();
if (CalendarCreator.getCreator().hasPreCalendar(guildId)) {
CalendarCreatorResponse response = CalendarCreator.getCreator().confirmCalendar(event, settings);
if (response.isSuccessful()) {
if (response.isEdited()) {
if (response.getCreatorMessage() != null) {
MessageManager.deleteMessage(event);
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(settings.getGuildID()));
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(guildId));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Confirm.Edit.Success", settings), CalendarMessageFormatter.getCalendarLinkEmbed(response.getCalendar(), settings), event));
} else {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Calendar.Confirm.Edit.Success", settings), CalendarMessageFormatter.getCalendarLinkEmbed(response.getCalendar(), settings), event);
@@ -249,7 +255,7 @@ public class CalendarCommand implements ICommand {
} else {
if (response.getCalendar() != null) {
MessageManager.deleteMessage(event);
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(settings.getGuildID()));
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(guildId));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Confirm.Create.Success", settings), CalendarMessageFormatter.getCalendarLinkEmbed(response.getCalendar(), settings), event));
} else {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Calendar.Confirm.Create.Success", settings), CalendarMessageFormatter.getCalendarLinkEmbed(response.getCalendar(), settings), event);
@@ -259,16 +265,16 @@ public class CalendarCommand implements ICommand {
if (response.isEdited()) {
if (response.getCreatorMessage() != null) {
MessageManager.deleteMessage(event);
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(settings.getGuildID()));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Confirm.Edit.Failure", settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()), settings), event));
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(guildId));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Confirm.Edit.Failure", settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(guildId), settings), event));
} else {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Calendar.Confirm.Edit.Failure", settings), event);
}
} else {
if (response.getCreatorMessage() != null) {
MessageManager.deleteMessage(event);
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(settings.getGuildID()));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Confirm.Create.Failure", settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()), settings), event));
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(guildId));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Confirm.Create.Failure", settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(guildId), settings), event));
} else {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Calendar.Confirm.Create.Failure", settings), event);
}
@@ -282,18 +288,19 @@ public class CalendarCommand implements ICommand {
}
}
private void moduleDelete(MessageCreateEvent event, CalendarData calendarData, GuildSettings settings) {
if (CalendarCreator.getCreator().hasPreCalendar(settings.getGuildID())) {
if (CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()).getCreatorMessage() != null) {
private void moduleDelete(MessageReceivedEvent event, CalendarData calendarData, GuildSettings settings) {
long guildId = event.getMessage().getGuild().getLongID();
if (CalendarCreator.getCreator().hasPreCalendar(guildId)) {
if (CalendarCreator.getCreator().getPreCalendar(guildId).getCreatorMessage() != null) {
MessageManager.deleteMessage(event);
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(settings.getGuildID()));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Delete.Failure.InCreator", settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()), settings), event));
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(guildId));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Delete.Failure.InCreator", settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(guildId), settings), event));
} else {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Calendar.Delete.Failure.InCreator", settings), event);
}
return;
}
if (!PermissionChecker.hasManageServerRole(event)) {
if (!event.getMessage().getAuthor().getPermissionsForGuild(event.getMessage().getGuild()).contains(Permissions.MANAGE_SERVER)) {
MessageManager.sendMessageAsync(MessageManager.getMessage("Notification.Perm.MANAGE_SERVER", settings), event);
return;
}
@@ -309,14 +316,15 @@ public class CalendarCommand implements ICommand {
}
}
private void moduleSummary(String[] args, MessageCreateEvent event, CalendarData calendarData, GuildSettings settings) {
private void moduleSummary(String[] args, MessageReceivedEvent event, CalendarData calendarData, GuildSettings settings) {
long guildId = event.getGuild().getLongID();
if (args.length > 1) {
if (CalendarCreator.getCreator().hasPreCalendar(settings.getGuildID())) {
if (CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()).getCreatorMessage() != null) {
CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()).setSummary(GeneralUtils.getContent(args, 1));
if (CalendarCreator.getCreator().hasPreCalendar(guildId)) {
if (CalendarCreator.getCreator().getPreCalendar(guildId).getCreatorMessage() != null) {
CalendarCreator.getCreator().getPreCalendar(guildId).setSummary(GeneralUtils.getContent(args, 1));
MessageManager.deleteMessage(event);
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(settings.getGuildID()));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Summary.N.Success", settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()), settings), event));
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(guildId));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Summary.N.Success", settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(guildId), settings), event));
} else {
String msg = MessageManager.getMessage("Creator.Calendar.Summary.O.Success", "%summary%", GeneralUtils.getContent(args, 1), settings);
MessageManager.sendMessageAsync(msg, event);
@@ -328,11 +336,11 @@ public class CalendarCommand implements ICommand {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Calendar.HasCalendar", settings), event);
}
} else {
if (CalendarCreator.getCreator().hasPreCalendar(settings.getGuildID())) {
if (CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()).getCreatorMessage() != null) {
if (CalendarCreator.getCreator().hasPreCalendar(guildId)) {
if (CalendarCreator.getCreator().getPreCalendar(guildId).getCreatorMessage() != null) {
MessageManager.deleteMessage(event);
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(settings.getGuildID()));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Summary.Specify", settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()), settings), event));
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(guildId));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Summary.Specify", settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(guildId), settings), event));
} else {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Calendar.Summary.Specify", settings), event);
}
@@ -342,14 +350,15 @@ public class CalendarCommand implements ICommand {
}
}
private void moduleDescription(String[] args, MessageCreateEvent event, CalendarData calendarData, GuildSettings settings) {
private void moduleDescription(String[] args, MessageReceivedEvent event, CalendarData calendarData, GuildSettings settings) {
long guildId = event.getGuild().getLongID();
if (args.length > 1) {
if (CalendarCreator.getCreator().hasPreCalendar(settings.getGuildID())) {
CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()).setDescription(GeneralUtils.getContent(args, 1));
if (CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()).getCreatorMessage() != null) {
if (CalendarCreator.getCreator().hasPreCalendar(guildId)) {
CalendarCreator.getCreator().getPreCalendar(guildId).setDescription(GeneralUtils.getContent(args, 1));
if (CalendarCreator.getCreator().getPreCalendar(guildId).getCreatorMessage() != null) {
MessageManager.deleteMessage(event);
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(settings.getGuildID()));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Description.N.Success", settings) + TIME_ZONE_DB, CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()), settings), event));
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(guildId));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Description.N.Success", settings) + TIME_ZONE_DB, CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(guildId), settings), event));
} else {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Calendar.Description.O.Success", "%desc%", GeneralUtils.getContent(args, 1), settings) + TIME_ZONE_DB, event);
}
@@ -360,11 +369,11 @@ public class CalendarCommand implements ICommand {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Calendar.HasCalendar", settings), event);
}
} else {
if (CalendarCreator.getCreator().hasPreCalendar(settings.getGuildID())) {
if (CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()).getCreatorMessage() != null) {
if (CalendarCreator.getCreator().hasPreCalendar(guildId)) {
if (CalendarCreator.getCreator().getPreCalendar(guildId).getCreatorMessage() != null) {
MessageManager.deleteMessage(event);
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(settings.getGuildID()));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Description.Specify", settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()), settings), event));
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(guildId));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.Description.Specify", settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(guildId), settings), event));
} else {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Calendar.Description.Specify", settings), event);
}
@@ -374,25 +383,26 @@ public class CalendarCommand implements ICommand {
}
}
private void moduleTimezone(String[] args, MessageCreateEvent event, CalendarData calendarData, GuildSettings settings) {
private void moduleTimezone(String[] args, MessageReceivedEvent event, CalendarData calendarData, GuildSettings settings) {
long guildId = event.getGuild().getLongID();
if (args.length == 2) {
String value = args[1];
if (CalendarCreator.getCreator().hasPreCalendar(settings.getGuildID())) {
if (CalendarCreator.getCreator().hasPreCalendar(guildId)) {
if (TimeZoneUtils.isValid(value)) {
CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()).setTimezone(value);
CalendarCreator.getCreator().getPreCalendar(guildId).setTimezone(value);
if (CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()).getCreatorMessage() != null) {
if (CalendarCreator.getCreator().getPreCalendar(guildId).getCreatorMessage() != null) {
MessageManager.deleteMessage(event);
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(settings.getGuildID()));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.TimeZone.N.Success", settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()), settings), event));
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(guildId));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.TimeZone.N.Success", settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(guildId), settings), event));
} else {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Calendar.TimeZone.O.Success", "%tz%", value, settings), event);
}
} else {
if (CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()).getCreatorMessage() != null) {
if (CalendarCreator.getCreator().getPreCalendar(guildId).getCreatorMessage() != null) {
MessageManager.deleteMessage(event);
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(settings.getGuildID()));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.TimeZone.Invalid", "%tz_db%", TIME_ZONE_DB, settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()), settings), event));
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(guildId));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.TimeZone.Invalid", "%tz_db%", TIME_ZONE_DB, settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(guildId), settings), event));
} else {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Calendar.TimeZone.Invalid", "%tz_db%", TIME_ZONE_DB, settings), event);
}
@@ -404,18 +414,19 @@ public class CalendarCommand implements ICommand {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Calendar.HasCalendar", settings), event);
}
} else {
if (CalendarCreator.getCreator().hasPreCalendar(settings.getGuildID())) {
if (CalendarCreator.getCreator().hasPreCalendar(guildId)) {
MessageManager.deleteMessage(event);
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(settings.getGuildID()));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.TimeZone.Specify", settings) + TIME_ZONE_DB, CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()), settings), event));
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(guildId));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.TimeZone.Specify", settings) + TIME_ZONE_DB, CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(guildId), settings), event));
} else {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Calendar.TimeZone.Specify", settings) + TIME_ZONE_DB, event);
}
}
}
private void moduleEdit(MessageCreateEvent event, CalendarData calendarData, GuildSettings settings) {
if (!CalendarCreator.getCreator().hasPreCalendar(settings.getGuildID())) {
private void moduleEdit(MessageReceivedEvent event, CalendarData calendarData, GuildSettings settings) {
long guildId = event.getGuild().getLongID();
if (!CalendarCreator.getCreator().hasPreCalendar(guildId)) {
if (!calendarData.getCalendarAddress().equalsIgnoreCase("primary")) {
PreCalendar calendar = CalendarCreator.getCreator().edit(event, settings, true);
if (calendar.getCreatorMessage() != null) {
@@ -427,10 +438,10 @@ public class CalendarCommand implements ICommand {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Calendar.NoCalendar", settings), event);
}
} else {
if (CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()).getCreatorMessage() != null) {
if (CalendarCreator.getCreator().getPreCalendar(guildId).getCreatorMessage() != null) {
MessageManager.deleteMessage(event);
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(settings.getGuildID()));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.AlreadyInit", settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(settings.getGuildID()), settings), event));
MessageManager.deleteMessage(CalendarCreator.getCreator().getCreatorMessage(guildId));
CalendarCreator.getCreator().setCreatorMessage(MessageManager.sendMessageSync(MessageManager.getMessage("Creator.Calendar.AlreadyInit", settings), CalendarMessageFormatter.getPreCalendarEmbed(CalendarCreator.getCreator().getPreCalendar(guildId), settings), event));
} else {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Calendar.AlreadyInit", settings), event);
}
@@ -1,9 +1,10 @@
package org.dreamexposure.discal.client.module.command;
import discord4j.core.event.domain.message.MessageCreateEvent;
import org.dreamexposure.discal.client.DisCalClient;
import org.dreamexposure.discal.core.object.GuildSettings;
import org.dreamexposure.discal.core.utils.GeneralUtils;
import sx.blah.discord.api.events.EventDispatcher;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import java.util.ArrayList;
@@ -37,11 +38,12 @@ public class CommandExecutor {
* @return The CommandExecutor's instance.
*/
public CommandExecutor enable() {
DisCalClient.getClient().getEventDispatcher().on(MessageCreateEvent.class).subscribe(CommandListener::onMessageEvent);
EventDispatcher dispatcher = DisCalClient.getClient().getDispatcher();
dispatcher.registerListener(new CommandListener(this));
return instance;
}
//Functionals
/**
@@ -60,7 +62,7 @@ public class CommandExecutor {
* @param argsOr The command arguments used.
* @param event The Event received.
*/
void issueCommand(String cmd, String[] argsOr, MessageCreateEvent event, GuildSettings settings) {
void issueCommand(String cmd, String[] argsOr, MessageReceivedEvent event, GuildSettings settings) {
String[] args;
if (argsOr.length > 0) {
@@ -1,11 +1,12 @@
package org.dreamexposure.discal.client.module.command;
import discord4j.core.event.domain.message.MessageCreateEvent;
import org.dreamexposure.discal.client.DisCalClient;
import org.dreamexposure.discal.core.database.DatabaseManager;
import org.dreamexposure.discal.core.logger.Logger;
import org.dreamexposure.discal.core.object.GuildSettings;
import org.dreamexposure.discal.core.utils.PermissionChecker;
import sx.blah.discord.api.events.EventSubscriber;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import java.util.ArrayList;
import java.util.Arrays;
@@ -15,9 +16,9 @@ import java.util.Arrays;
* Website: www.cloudcraftgaming.com
* For Project: DisCal
*/
@SuppressWarnings({"unused", "OptionalGetWithoutIsPresent", "ToArrayCallWithZeroLengthArrayArgument"})
@SuppressWarnings({"unused", "ToArrayCallWithZeroLengthArrayArgument"})
class CommandListener {
private static CommandExecutor cmd;
private CommandExecutor cmd;
/**
* Creates a new CommandListener listener.
@@ -33,16 +34,16 @@ class CommandListener {
*
* @param event The event received to check for a command.
*/
@SuppressWarnings("WeakerAccess")
public static void onMessageEvent(MessageCreateEvent event) {
@EventSubscriber
public void onMessageEvent(MessageReceivedEvent event) {
try {
if (event.getMessage().getContent().get().isEmpty() && !event.getMember().get().isBot()) {
if (event.getMessage() != null && event.getGuild() != null && event.getChannel() != null && !event.getChannel().isPrivate() && event.getMessage().getContent() != null && event.getMessage().getContent().length() > 0 && !event.getAuthor().isBot()) {
//Message is a valid guild message (not DM and not from a bot). Check if in correct channel.
GuildSettings settings = DatabaseManager.getManager().getSettings(event.getGuildId().get());
if (event.getMessage().getContent().get().startsWith(settings.getPrefix())) {
if (PermissionChecker.isCorrectChannel(event, settings)) {
GuildSettings settings = DatabaseManager.getManager().getSettings(event.getGuild().getLongID());
if (event.getMessage().getContent().startsWith(settings.getPrefix())) {
if (PermissionChecker.isCorrectChannel(event)) {
//Prefixed with ! which should mean it is a command, convert and confirm.
String[] argsOr = event.getMessage().getContent().get().split("\\s+");
String[] argsOr = event.getMessage().getContent().split("\\s+");
if (argsOr.length > 1) {
ArrayList<String> argsOr2 = new ArrayList<>(Arrays.asList(argsOr).subList(1, argsOr.length));
String[] args = argsOr2.toArray(new String[argsOr2.size()]);
@@ -54,9 +55,9 @@ class CommandListener {
cmd.issueCommand(argsOr[0].replace(settings.getPrefix(), ""), new String[0], event, settings);
}
}
} else if (!event.getMessage().mentionsEveryone() && !event.getMessage().getContent().get().contains("@here") && (event.getMessage().toString().startsWith("<@" + DisCalClient.getClient().getSelfId().get() + ">") || event.getMessage().toString().startsWith("<@!" + DisCalClient.getClient().getSelfId().get() + ">"))) {
if (PermissionChecker.isCorrectChannel(event, settings)) {
String[] argsOr = event.getMessage().getContent().get().split("\\s+");
} else if (!event.getMessage().mentionsEveryone() && !event.getMessage().mentionsHere() && (event.getMessage().toString().startsWith("<@" + DisCalClient.getClient().getOurUser().getStringID() + ">") || event.getMessage().toString().startsWith("<@!" + DisCalClient.getClient().getOurUser().getStringID() + ">"))) {
if (PermissionChecker.isCorrectChannel(event)) {
String[] argsOr = event.getMessage().getContent().split("\\s+");
if (argsOr.length > 2) {
ArrayList<String> argsOr2 = new ArrayList<>(Arrays.asList(argsOr).subList(2, argsOr.length));
String[] args = argsOr2.toArray(new String[argsOr2.size()]);
@@ -74,7 +75,7 @@ class CommandListener {
}
}
} catch (Exception e) {
Logger.getLogger().exception(event.getMember().get(), "Command error; event message: " + event.getMessage().getContent(), e, CommandListener.class);
Logger.getLogger().exception(event.getAuthor(), "Command error; event message: " + event.getMessage().getContent(), e, this.getClass());
}
}
}
@@ -1,12 +1,5 @@
package org.dreamexposure.discal.client.module.command;
import discord4j.core.DiscordClient;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.object.entity.Channel;
import discord4j.core.object.entity.Guild;
import discord4j.core.object.entity.Member;
import discord4j.core.object.entity.Message;
import discord4j.core.spec.EmbedCreateSpec;
import org.dreamexposure.discal.client.message.MessageManager;
import org.dreamexposure.discal.core.crypto.KeyGenerator;
import org.dreamexposure.discal.core.database.DatabaseManager;
@@ -19,6 +12,13 @@ import org.dreamexposure.discal.core.object.web.UserAPIAccount;
import org.dreamexposure.discal.core.utils.GlobalConst;
import org.dreamexposure.novautils.network.crosstalk.ClientSocketHandler;
import org.json.JSONObject;
import sx.blah.discord.api.IDiscordClient;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.handle.obj.IChannel;
import sx.blah.discord.handle.obj.IGuild;
import sx.blah.discord.handle.obj.IMessage;
import sx.blah.discord.handle.obj.IUser;
import sx.blah.discord.util.EmbedBuilder;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
@@ -87,8 +87,8 @@ public class DevCommand implements ICommand {
* @return <code>true</code> if successful, else <code>false</code>.
*/
@Override
public boolean issueCommand(String[] args, MessageCreateEvent event, GuildSettings settings) {
if (event.getMember().get().getId() == GlobalConst.novaId || event.getMember().get().getId() == GlobalConst.xaanitId || event.getMember().get().getId() == GlobalConst.calId || event.getMember().get().getId() == GlobalConst.dreamId) {
public boolean issueCommand(String[] args, MessageReceivedEvent event, GuildSettings settings) {
if (event.getAuthor().getLongID() == GlobalConst.novaId || event.getAuthor().getLongID() == GlobalConst.xaanitId || event.getAuthor().getLongID() == GlobalConst.calId || event.getAuthor().getLongID() == GlobalConst.dreamId) {
if (args.length < 1) {
MessageManager.sendMessageAsync("Please specify the function you would like to execute. To view valid functions use `!help dev`", event);
} else {
@@ -131,7 +131,7 @@ public class DevCommand implements ICommand {
return false;
}
private void modulePatron(String[] args, MessageCreateEvent event) {
private void modulePatron(String[] args, MessageReceivedEvent event) {
if (args.length == 2) {
try {
Long.valueOf(args[1]);
@@ -156,13 +156,13 @@ public class DevCommand implements ICommand {
}
@SuppressWarnings("all")
private void moduleEval(MessageCreateEvent event) {
Guild guild = event.getGuild().block();
Member user = event.getMember().get();
Message message = event.getMessage();
DiscordClient client = event.getClient();
Channel channel = event.getMessage().getChannel().block();
String input = message.getContent().get().substring(message.getContent().get().indexOf("eval") + 5).replaceAll("`", "");
private void moduleEval(MessageReceivedEvent event) {
IGuild guild = event.getGuild();
IUser user = event.getAuthor();
IMessage message = event.getMessage();
IDiscordClient client = event.getClient();
IChannel channel = event.getMessage().getChannel();
String input = message.getContent().substring(message.getContent().indexOf("eval") + 5).replaceAll("`", "");
Object o = null;
factory.put("guild", guild);
factory.put("channel", channel);
@@ -170,33 +170,37 @@ public class DevCommand implements ICommand {
factory.put("message", message);
factory.put("command", this);
factory.put("client", client);
factory.put("builder", new EmbedCreateSpec());
factory.put("cUser", client.getSelf().block());
factory.put("builder", new EmbedBuilder());
factory.put("cUser", client.getOurUser());
try {
o = factory.eval(input);
} catch (Exception ex) {
EmbedCreateSpec em = new EmbedCreateSpec();
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.setTitle("Error");
em.setDescription(ex.getMessage());
em.setFooter("Eval failed", null);
em.setColor(GlobalConst.discalColor);
MessageManager.sendMessageAsync(em, event);
EmbedBuilder em = new EmbedBuilder();
em.withAuthorName("DisCal");
em.withAuthorUrl(GlobalConst.discalSite);
em.withAuthorIcon(GlobalConst.iconUrl);
em.withTitle("Error");
em.appendDesc(ex.getMessage());
em.withFooterText("Eval failed");
em.withColor(GlobalConst.discalColor);
MessageManager.sendMessageAsync(em.build(), event);
return;
}
EmbedCreateSpec em = new EmbedCreateSpec();
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.setTitle("Success! -- Eval Output.");
em.setColor(GlobalConst.discalColor);
em.setDescription(o == null ? "No output, object is null" : o.toString());
em.addField("Input", "```java\n" + input + "\n```", false);
em.setFooter("Eval successful!", null);
MessageManager.sendMessageAsync(em, event);
EmbedBuilder em = new EmbedBuilder();
em.withAuthorName("DisCal");
em.withAuthorUrl(GlobalConst.discalSite);
em.withAuthorIcon(GlobalConst.iconUrl);
em.withTitle("Success! -- Eval Output.");
em.withColor(GlobalConst.discalColor);
em.appendDesc(o == null ? "No output, object is null" : o.toString());
em.appendField("Input", "```java\n" + input + "\n```", false);
em.withFooterText("Eval successful!");
MessageManager.sendMessageAsync(em.build(), event);
}
private void moduleDevGuild(String[] args, MessageCreateEvent event) {
private void moduleDevGuild(String[] args, MessageReceivedEvent event) {
if (args.length == 2) {
try {
Long.valueOf(args[1]);
@@ -220,7 +224,7 @@ public class DevCommand implements ICommand {
}
}
private void moduleMaxCalendars(String[] args, MessageCreateEvent event) {
private void moduleMaxCalendars(String[] args, MessageReceivedEvent event) {
if (args.length == 3) {
try {
int mc = Integer.valueOf(args[2]);
@@ -252,7 +256,7 @@ public class DevCommand implements ICommand {
}
}
private void moduleLeaveGuild(String[] args, MessageCreateEvent event) {
private void moduleLeaveGuild(String[] args, MessageReceivedEvent event) {
if (args.length == 2) {
try {
Long.valueOf(args[1]);
@@ -276,7 +280,7 @@ public class DevCommand implements ICommand {
}
}
private void moduleReloadLangs(MessageCreateEvent event) {
private void moduleReloadLangs(MessageReceivedEvent event) {
MessageManager.reloadLangs();
//Just send this across the network with CrossTalk... and let the changes propagate
@@ -291,7 +295,7 @@ public class DevCommand implements ICommand {
}
private void registerApiKey(String[] args, MessageCreateEvent event) {
private void registerApiKey(String[] args, MessageReceivedEvent event) {
if (args.length == 2) {
MessageManager.sendMessageAsync("Registering new API key...", event);
@@ -306,7 +310,7 @@ public class DevCommand implements ICommand {
if (DatabaseManager.getManager().updateAPIAccount(account)) {
MessageManager.sendMessageAsync("Check your DMs for the new API Key!", event);
MessageManager.sendDirectMessageAsync(account.getAPIKey(), event.getMember().get());
MessageManager.sendDirectMessageAsync(account.getAPIKey(), event.getAuthor());
} else {
MessageManager.sendMessageAsync("Error occurred! Could not register new API key!", event);
}
@@ -315,7 +319,7 @@ public class DevCommand implements ICommand {
}
}
private void blockAPIKey(String[] args, MessageCreateEvent event) {
private void blockAPIKey(String[] args, MessageReceivedEvent event) {
if (args.length == 2) {
MessageManager.sendMessageAsync("Blocking API key...", event);
@@ -333,7 +337,7 @@ public class DevCommand implements ICommand {
}
}
private void moduleCheckSettings(String[] args, MessageCreateEvent event) {
private void moduleCheckSettings(String[] args, MessageReceivedEvent event) {
if (args.length == 2) {
//String id = args[1];
@@ -1,16 +1,17 @@
package org.dreamexposure.discal.client.module.command;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.object.entity.GuildChannel;
import discord4j.core.object.entity.Member;
import discord4j.core.object.entity.Role;
import discord4j.core.spec.EmbedCreateSpec;
import org.dreamexposure.discal.client.DisCalClient;
import org.dreamexposure.discal.client.message.MessageManager;
import org.dreamexposure.discal.core.database.DatabaseManager;
import org.dreamexposure.discal.core.object.GuildSettings;
import org.dreamexposure.discal.core.object.command.CommandInfo;
import org.dreamexposure.discal.core.utils.*;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.handle.obj.IChannel;
import sx.blah.discord.handle.obj.IGuild;
import sx.blah.discord.handle.obj.IRole;
import sx.blah.discord.handle.obj.IUser;
import sx.blah.discord.util.EmbedBuilder;
import java.util.ArrayList;
@@ -19,7 +20,6 @@ import java.util.ArrayList;
* Website: www.cloudcraftgaming.com
* For Project: DisCal
*/
@SuppressWarnings({"OptionalGetWithoutIsPresent", "ConstantConditions"})
public class DisCalCommand implements ICommand {
/**
@@ -79,7 +79,7 @@ public class DisCalCommand implements ICommand {
* @return <code>true</code> if successful, else <code>false</code>.
*/
@Override
public boolean issueCommand(String[] args, MessageCreateEvent event, GuildSettings settings) {
public boolean issueCommand(String[] args, MessageReceivedEvent event, GuildSettings settings) {
if (args.length < 1) {
moduleDisCalInfo(event, settings);
} else {
@@ -131,20 +131,25 @@ public class DisCalCommand implements ICommand {
return false;
}
private void moduleDisCalInfo(MessageCreateEvent event, GuildSettings settings) {
EmbedCreateSpec em = new EmbedCreateSpec();
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.setTitle(MessageManager.getMessage("Embed.DisCal.Info.Title", settings));
em.addField(MessageManager.getMessage("Embed.DisCal.Info.Developer", settings), "NovaFox161", true);
em.addField(MessageManager.getMessage("Embed.Discal.Info.Version", settings), GlobalConst.version, true);
em.addField(MessageManager.getMessage("Embed.DisCal.Info.Library", settings), "Discord4J, version 2.9.2", false);
em.addField(MessageManager.getMessage("Embed.DisCal.Info.TotalGuilds", settings), DisCalClient.getClient().getGuilds().count().block().intValue() + "", true);
em.addField(MessageManager.getMessage("Embed.DisCal.Info.TotalCalendars", settings), DatabaseManager.getManager().getCalendarCount() + "", true);
em.addField(MessageManager.getMessage("Embed.DisCal.Info.TotalAnnouncements", settings), DatabaseManager.getManager().getAnnouncementCount() + "", true);
em.setFooter(MessageManager.getMessage("Embed.DisCal.Info.Patron", settings) + ": https://www.patreon.com/Novafox", null);
em.setUrl("https://www.discalbot.com");
em.setColor(GlobalConst.discalColor);
MessageManager.sendMessageAsync(em, event);
private void moduleDisCalInfo(MessageReceivedEvent event, GuildSettings settings) {
IGuild guild = event.getGuild();
EmbedBuilder em = new EmbedBuilder();
em.withAuthorIcon(GlobalConst.discalSite);
em.withAuthorName("DisCal");
em.withAuthorUrl(GlobalConst.discalSite);
em.withTitle(MessageManager.getMessage("Embed.DisCal.Info.Title", settings));
em.appendField(MessageManager.getMessage("Embed.DisCal.Info.Developer", settings), "NovaFox161", true);
em.appendField(MessageManager.getMessage("Embed.Discal.Info.Version", settings), GlobalConst.version, true);
em.appendField(MessageManager.getMessage("Embed.DisCal.Info.Library", settings), "Discord4J, version 2.10.1", false);
em.appendField(MessageManager.getMessage("Embed.DisCal.Info.TotalGuilds", settings), DisCalClient.getClient().getGuilds().size() + "", true);
em.appendField(MessageManager.getMessage("Embed.DisCal.Info.TotalCalendars", settings), DatabaseManager.getManager().getCalendarCount() + "", true);
em.appendField(MessageManager.getMessage("Embed.DisCal.Info.TotalAnnouncements", settings), DatabaseManager.getManager().getAnnouncementCount() + "", true);
em.appendField(MessageManager.getMessage("Embed.DisCal.Info.Ping", "%shard%", (guild.getShard().getInfo()[0] + 1) + "/" + DisCalClient.getClient().getShardCount(), settings), guild.getShard().getResponseTime() + "ms", false);
em.withFooterText(MessageManager.getMessage("Embed.DisCal.Info.Patron", settings) + ": https://www.patreon.com/Novafox");
em.withUrl("https://www.discalbot.com");
em.withColor(GlobalConst.discalColor);
MessageManager.sendMessageAsync(em.build(), event);
}
/**
@@ -153,17 +158,17 @@ public class DisCalCommand implements ICommand {
* @param args The args of the command.
* @param event The event received.
*/
private void moduleControlRole(String[] args, MessageCreateEvent event, GuildSettings settings) {
private void moduleControlRole(String[] args, MessageReceivedEvent event, GuildSettings settings) {
if (PermissionChecker.hasSufficientRole(event)) {
if (args.length > 1) {
String roleName = GeneralUtils.getContent(args, 1);
Role controlRole;
IRole controlRole;
if (!"everyone".equalsIgnoreCase(roleName)) {
controlRole = RoleUtils.getRoleFromID(roleName, event);
if (controlRole != null) {
settings.setControlRole(controlRole.getId().asString());
settings.setControlRole(controlRole.getStringID());
DatabaseManager.getManager().updateSettings(settings);
//Send message.
MessageManager.sendMessageAsync(MessageManager.getMessage("DisCal.ControlRole.Set", "%role%", controlRole.getName(), settings), event);
@@ -193,7 +198,7 @@ public class DisCalCommand implements ICommand {
* @param args The command args
* @param event The event received.
*/
private void moduleDisCalChannel(String[] args, MessageCreateEvent event, GuildSettings settings) {
private void moduleDisCalChannel(String[] args, MessageReceivedEvent event, GuildSettings settings) {
if (args.length == 2) {
String channelName = args[1];
if (channelName.equalsIgnoreCase("all")) {
@@ -203,9 +208,9 @@ public class DisCalCommand implements ICommand {
MessageManager.sendMessageAsync(MessageManager.getMessage("DisCal.Channel.All", settings), event);
} else {
if (ChannelUtils.channelExists(channelName, event)) {
GuildChannel channel = ChannelUtils.getChannelFromNameOrId(channelName, event);
IChannel channel = ChannelUtils.getChannelFromNameOrId(channelName, event);
if (channel != null) {
settings.setDiscalChannel(channel.getId().asString());
settings.setDiscalChannel(channel.getStringID());
DatabaseManager.getManager().updateSettings(settings);
MessageManager.sendMessageAsync(MessageManager.getMessage("DisCal.Channel.Set", "%channel%", channel.getName(), settings), event);
} else {
@@ -220,52 +225,54 @@ public class DisCalCommand implements ICommand {
}
}
private void moduleSimpleAnnouncement(MessageCreateEvent event, GuildSettings settings) {
private void moduleSimpleAnnouncement(MessageReceivedEvent event, GuildSettings settings) {
settings.setSimpleAnnouncements(!settings.usingSimpleAnnouncements());
DatabaseManager.getManager().updateSettings(settings);
MessageManager.sendMessageAsync(MessageManager.getMessage("DisCal.SimpleAnnouncement", "%value%", settings.usingSimpleAnnouncements() + "", settings), event);
}
private void moduleSettings(MessageCreateEvent event, GuildSettings settings) {
EmbedCreateSpec em = new EmbedCreateSpec();
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.setTitle(MessageManager.getMessage("Embed.DisCal.Settings.Title", settings));
em.addField(MessageManager.getMessage("Embed.DisCal.Settings.ExternalCal", settings), String.valueOf(settings.useExternalCalendar()), true);
private void moduleSettings(MessageReceivedEvent event, GuildSettings settings) {
EmbedBuilder em = new EmbedBuilder();
em.withAuthorIcon(GlobalConst.discalSite);
em.withAuthorName("DisCal");
em.withAuthorUrl(GlobalConst.discalSite);
em.withTitle(MessageManager.getMessage("Embed.DisCal.Settings.Title", settings));
em.appendField(MessageManager.getMessage("Embed.DisCal.Settings.ExternalCal", settings), String.valueOf(settings.useExternalCalendar()), true);
if (RoleUtils.roleExists(settings.getControlRole(), event)) {
em.addField(MessageManager.getMessage("Embed.Discal.Settings.Role", settings), RoleUtils.getRoleNameFromID(settings.getControlRole(), event), true);
em.appendField(MessageManager.getMessage("Embed.Discal.Settings.Role", settings), RoleUtils.getRoleNameFromID(settings.getControlRole(), event), true);
} else {
em.addField(MessageManager.getMessage("Embed.Discal.Settings.Role", settings), "everyone", true);
em.appendField(MessageManager.getMessage("Embed.Discal.Settings.Role", settings), "everyone", true);
}
if (ChannelUtils.channelExists(settings.getDiscalChannel(), event)) {
em.addField(MessageManager.getMessage("Embed.DisCal.Settings.Channel", settings), ChannelUtils.getChannelNameFromNameOrId(settings.getDiscalChannel(), event.getGuild().block()), false);
em.appendField(MessageManager.getMessage("Embed.DisCal.Settings.Channel", settings), ChannelUtils.getChannelNameFromNameOrId(settings.getDiscalChannel(), event.getGuild()), false);
} else {
em.addField(MessageManager.getMessage("Embed.DisCal.Settings.Channel", settings), "All Channels", true);
em.appendField(MessageManager.getMessage("Embed.DisCal.Settings.Channel", settings), "All Channels", true);
}
em.addField(MessageManager.getMessage("Embed.DisCal.Settings.SimpleAnn", settings), String.valueOf(settings.usingSimpleAnnouncements()), true);
em.addField(MessageManager.getMessage("Embed.DisCal.Settings.Patron", settings), String.valueOf(settings.isPatronGuild()), true);
em.addField(MessageManager.getMessage("Embed.DisCal.Settings.Dev", settings), String.valueOf(settings.isDevGuild()), true);
em.addField(MessageManager.getMessage("Embed.DisCal.Settings.MaxCal", settings), String.valueOf(settings.getMaxCalendars()), true);
em.addField(MessageManager.getMessage("Embed.DisCal.Settings.Language", settings), settings.getLang(), true);
em.addField(MessageManager.getMessage("Embed.DisCal.Settings.Prefix", settings), settings.getPrefix(), true);
em.appendField(MessageManager.getMessage("Embed.DisCal.Settings.SimpleAnn", settings), String.valueOf(settings.usingSimpleAnnouncements()), true);
em.appendField(MessageManager.getMessage("Embed.DisCal.Settings.Patron", settings), String.valueOf(settings.isPatronGuild()), true);
em.appendField(MessageManager.getMessage("Embed.DisCal.Settings.Dev", settings), String.valueOf(settings.isDevGuild()), true);
em.appendField(MessageManager.getMessage("Embed.DisCal.Settings.MaxCal", settings), String.valueOf(settings.getMaxCalendars()), true);
em.appendField(MessageManager.getMessage("Embed.DisCal.Settings.Language", settings), settings.getLang(), true);
em.appendField(MessageManager.getMessage("Embed.DisCal.Settings.Prefix", settings), settings.getPrefix(), true);
//TODO: Add translations...
em.addField("Using Branding", settings.isBranded() + "", true);
em.setFooter(MessageManager.getMessage("Embed.DisCal.Info.Patron", settings) + ": https://www.patreon.com/Novafox", null);
em.setUrl("https://www.discalbot.com/");
em.setColor(GlobalConst.discalColor);
MessageManager.sendMessageAsync(em, event);
em.appendField("Using Branding", settings.isBranded() + "", true);
em.withFooterText(MessageManager.getMessage("Embed.DisCal.Info.Patron", settings) + ": https://www.patreon.com/Novafox");
em.withUrl("https://www.discalbot.com/");
em.withColor(GlobalConst.discalColor);
MessageManager.sendMessageAsync(em.build(), event);
}
private void moduleDmAnnouncements(MessageCreateEvent event, GuildSettings settings) {
private void moduleDmAnnouncements(MessageReceivedEvent event, GuildSettings settings) {
if (settings.isDevGuild()) {
Member user = event.getMember().get();
IUser user = event.getAuthor();
if (settings.getDmAnnouncements().contains(user.getId().asString())) {
settings.getDmAnnouncements().remove(user.getId().asString());
if (settings.getDmAnnouncements().contains(user.getStringID())) {
settings.getDmAnnouncements().remove(user.getStringID());
DatabaseManager.getManager().updateSettings(settings);
MessageManager.sendMessageAsync(MessageManager.getMessage("DisCal.DmAnnouncements.Off", settings), event);
} else {
settings.getDmAnnouncements().add(user.getId().asString());
settings.getDmAnnouncements().add(user.getStringID());
DatabaseManager.getManager().updateSettings(settings);
MessageManager.sendMessageAsync(MessageManager.getMessage("DisCal.DmAnnouncements.On", settings), event);
}
@@ -274,7 +281,7 @@ public class DisCalCommand implements ICommand {
}
}
private void modulePrefix(String[] args, MessageCreateEvent event, GuildSettings settings) {
private void modulePrefix(String[] args, MessageReceivedEvent event, GuildSettings settings) {
if (PermissionChecker.hasManageServerRole(event)) {
if (args.length == 2) {
String prefix = args[1];
@@ -291,7 +298,7 @@ public class DisCalCommand implements ICommand {
}
}
private void moduleLanguage(String[] args, MessageCreateEvent event, GuildSettings settings) {
private void moduleLanguage(String[] args, MessageReceivedEvent event, GuildSettings settings) {
if (PermissionChecker.hasManageServerRole(event)) {
if (args.length == 2) {
String value = args[1];
@@ -315,11 +322,11 @@ public class DisCalCommand implements ICommand {
}
}
private void moduleInvite(MessageCreateEvent event, GuildSettings settings) {
private void moduleInvite(MessageReceivedEvent event, GuildSettings settings) {
MessageManager.sendMessageAsync(MessageManager.getMessage("DisCal.InviteLink", "%link%", GlobalConst.supportInviteLink, settings), event);
}
private void moduleBrand(MessageCreateEvent event, GuildSettings settings) {
private void moduleBrand(MessageReceivedEvent event, GuildSettings settings) {
if (PermissionChecker.hasSufficientRole(event)) {
if (settings.isPatronGuild()) {
settings.setBranded(!settings.isBranded());
@@ -334,7 +341,7 @@ public class DisCalCommand implements ICommand {
}
}
private void moduleDashboard(MessageCreateEvent event, GuildSettings settings) {
private void moduleDashboard(MessageReceivedEvent event, GuildSettings settings) {
MessageManager.sendMessageAsync(MessageManager.getMessage("DisCal.DashboardLink", "%link%", GlobalConst.discalDashboardLink, settings), event);
}
}
File diff suppressed because it is too large Load Diff
@@ -4,7 +4,6 @@ import com.google.api.client.util.DateTime;
import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.model.Event;
import com.google.api.services.calendar.model.Events;
import discord4j.core.event.domain.message.MessageCreateEvent;
import org.dreamexposure.discal.client.message.EventMessageFormatter;
import org.dreamexposure.discal.client.message.MessageManager;
import org.dreamexposure.discal.core.calendar.CalendarAuth;
@@ -13,6 +12,7 @@ import org.dreamexposure.discal.core.logger.Logger;
import org.dreamexposure.discal.core.object.GuildSettings;
import org.dreamexposure.discal.core.object.calendar.CalendarData;
import org.dreamexposure.discal.core.object.command.CommandInfo;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import java.util.ArrayList;
import java.util.List;
@@ -22,7 +22,6 @@ import java.util.List;
* Website: www.cloudcraftgaming.com
* For Project: DisCal
*/
@SuppressWarnings("OptionalGetWithoutIsPresent")
public class EventListCommand implements ICommand {
/**
* Gets the command this Object is responsible for.
@@ -69,7 +68,7 @@ public class EventListCommand implements ICommand {
* @return <code>true</code> if successful, else <code>false</code>.
*/
@Override
public boolean issueCommand(String[] args, MessageCreateEvent event, GuildSettings settings) {
public boolean issueCommand(String[] args, MessageReceivedEvent event, GuildSettings settings) {
//Get events from calendar
if (args.length < 1) {
moduleSimpleList(args, event, settings);
@@ -96,13 +95,13 @@ public class EventListCommand implements ICommand {
}
@SuppressWarnings("Duplicates")
private void moduleSimpleList(String[] args, MessageCreateEvent event, GuildSettings settings) {
private void moduleSimpleList(String[] args, MessageReceivedEvent event, GuildSettings settings) {
if (args.length == 0) {
try {
Calendar service = CalendarAuth.getCalendarService(settings);
DateTime now = new DateTime(System.currentTimeMillis());
CalendarData calendarData = DatabaseManager.getManager().getMainCalendar(settings.getGuildID());
CalendarData calendarData = DatabaseManager.getManager().getMainCalendar(event.getGuild().getLongID());
Events events = service.events().list(calendarData.getCalendarAddress())
.setMaxResults(1)
.setTimeMin(now)
@@ -118,7 +117,7 @@ public class EventListCommand implements ICommand {
}
} catch (Exception e) {
MessageManager.sendMessageAsync(MessageManager.getMessage("Notification.Error.Unknown", settings), event);
Logger.getLogger().exception(event.getMember().get(), "Failed to list events.", e, this.getClass());
Logger.getLogger().exception(event.getAuthor(), "Failed to list events.", e, this.getClass());
e.printStackTrace();
}
} else if (args.length == 1) {
@@ -136,7 +135,7 @@ public class EventListCommand implements ICommand {
Calendar service = CalendarAuth.getCalendarService(settings);
DateTime now = new DateTime(System.currentTimeMillis());
CalendarData calendarData = DatabaseManager.getManager().getMainCalendar(settings.getGuildID());
CalendarData calendarData = DatabaseManager.getManager().getMainCalendar(event.getGuild().getLongID());
Events events = service.events().list(calendarData.getCalendarAddress())
.setMaxResults(eventNum)
.setTimeMin(now)
@@ -157,7 +156,7 @@ public class EventListCommand implements ICommand {
}
} catch (Exception e) {
MessageManager.sendMessageAsync(MessageManager.getMessage("Notification.Error.Unknown", settings), event);
Logger.getLogger().exception(event.getMember().get(), "Failed to list events.", e, this.getClass());
Logger.getLogger().exception(event.getAuthor(), "Failed to list events.", e, this.getClass());
e.printStackTrace();
}
} catch (NumberFormatException e) {
@@ -168,12 +167,12 @@ public class EventListCommand implements ICommand {
}
}
private void moduleSearch(String[] args, MessageCreateEvent event, GuildSettings settings) {
private void moduleSearch(String[] args, MessageReceivedEvent event, GuildSettings settings) {
}
@SuppressWarnings("Duplicates")
private void moduleDay(String[] args, MessageCreateEvent event, GuildSettings settings) {
private void moduleDay(String[] args, MessageReceivedEvent event, GuildSettings settings) {
if (args.length == 1) {
//Get the upcoming events in the next 24 hours.
try {
@@ -181,7 +180,7 @@ public class EventListCommand implements ICommand {
DateTime now = new DateTime(System.currentTimeMillis());
DateTime twentyFourHoursFromNow = new DateTime(now.getValue() + 86400000L);
CalendarData calendarData = DatabaseManager.getManager().getMainCalendar(settings.getGuildID());
CalendarData calendarData = DatabaseManager.getManager().getMainCalendar(event.getGuild().getLongID());
Events events = service.events().list(calendarData.getCalendarAddress())
.setMaxResults(20)
.setTimeMin(now)
@@ -204,7 +203,7 @@ public class EventListCommand implements ICommand {
}
} catch (Exception e) {
MessageManager.sendMessageAsync(MessageManager.getMessage("Notification.Error.Unknown", settings), event);
Logger.getLogger().exception(event.getMember().get(), "Failed to list events.", e, this.getClass());
Logger.getLogger().exception(event.getAuthor(), "Failed to list events.", e, this.getClass());
e.printStackTrace();
}
}
@@ -1,11 +1,12 @@
package org.dreamexposure.discal.client.module.command;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.spec.EmbedCreateSpec;
import org.dreamexposure.discal.client.message.MessageManager;
import org.dreamexposure.discal.core.object.GuildSettings;
import org.dreamexposure.discal.core.object.command.CommandInfo;
import org.dreamexposure.discal.core.utils.GlobalConst;
import sx.blah.discord.api.internal.json.objects.EmbedObject;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.util.EmbedBuilder;
import java.util.ArrayList;
@@ -14,6 +15,7 @@ import java.util.ArrayList;
* Website: www.cloudcraftgaming.com
* For Project: DisCal
*/
@SuppressWarnings("Duplicates")
public class HelpCommand implements ICommand {
/**
* Gets the command this Object is responsible for.
@@ -59,23 +61,25 @@ public class HelpCommand implements ICommand {
* @return <code>true</code> if successful, else <code>false</code>.
*/
@Override
public boolean issueCommand(String[] args, MessageCreateEvent event, GuildSettings settings) {
public boolean issueCommand(String[] args, MessageReceivedEvent event, GuildSettings settings) {
if (args.length < 1) {
EmbedCreateSpec em = new EmbedCreateSpec();
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.setTitle("DisCal Command Help");
EmbedBuilder em = new EmbedBuilder();
em.withAuthorIcon(GlobalConst.discalSite);
em.withAuthorName("DisCal");
em.withAuthorUrl(GlobalConst.discalSite);
em.withTitle("DisCal Command Help");
for (ICommand c: CommandExecutor.getExecutor().getCommands()) {
if (c.getAliases().size() > 0) {
String al = c.getAliases().toString();
em.addField(c.getCommand() + " " + al, c.getCommandInfo().getDescription(), true);
em.appendField(c.getCommand() + " " + al, c.getCommandInfo().getDescription(), true);
} else {
em.addField(c.getCommand(), c.getCommandInfo().getDescription(), true);
em.appendField(c.getCommand(), c.getCommandInfo().getDescription(), true);
}
}
em.setFooter("Check out the official site for more command info!", null);
em.setUrl("https://www.discalbot.com/commands");
em.setColor(GlobalConst.discalColor);
MessageManager.sendMessageAsync(em, event);
em.withFooterText("Check out the official site for more command info!");
em.withUrl("https://www.discalbot.com/commands");
em.withColor(GlobalConst.discalColor);
MessageManager.sendMessageAsync(em.build(), event);
} else if (args.length == 1) {
String cmdFor = args[0];
ICommand cmd = CommandExecutor.getExecutor().getCommand(cmdFor);
@@ -98,43 +102,47 @@ public class HelpCommand implements ICommand {
}
//Embed formatters
private EmbedCreateSpec getCommandInfoEmbed(ICommand cmd) {
EmbedCreateSpec em = new EmbedCreateSpec();
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.addField("Command", cmd.getCommand(), true);
em.addField("Description", cmd.getCommandInfo().getDescription(), true);
em.addField("Example", cmd.getCommandInfo().getExample(), true);
private EmbedObject getCommandInfoEmbed(ICommand cmd) {
EmbedBuilder em = new EmbedBuilder();
em.withAuthorIcon(GlobalConst.discalSite);
em.withAuthorName("DisCal");
em.withAuthorUrl(GlobalConst.discalSite);
em.appendField("Command", cmd.getCommand(), true);
em.appendField("Description", cmd.getCommandInfo().getDescription(), true);
em.appendField("Example", cmd.getCommandInfo().getExample(), true);
//Loop through sub commands
if (cmd.getCommandInfo().getSubCommands().size() > 0) {
String subs = cmd.getCommandInfo().getSubCommands().keySet().toString();
subs = subs.replace("[", "").replace("]", "");
em.addField("Sub-Commands", subs, false);
em.appendField("Sub-Commands", subs, false);
}
em.setFooter("<> = required | () = optional", null);
em.withFooterText("<> = required | () = optional");
em.setUrl("https://www.discalbot.com/commands");
em.withUrl("https://www.discalbot.com/commands");
em.setColor(GlobalConst.discalColor);
em.withColor(GlobalConst.discalColor);
return em;
return em.build();
}
private EmbedCreateSpec getSubCommandEmbed(ICommand cmd, String subCommand) {
EmbedCreateSpec em = new EmbedCreateSpec();
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.addField("Command", cmd.getCommand(), true);
em.addField("Sub Command", subCommand, true);
private EmbedObject getSubCommandEmbed(ICommand cmd, String subCommand) {
EmbedBuilder em = new EmbedBuilder();
em.withAuthorIcon(GlobalConst.discalSite);
em.withAuthorName("DisCal");
em.withAuthorUrl(GlobalConst.discalSite);
em.appendField("Command", cmd.getCommand(), true);
em.appendField("Sub Command", subCommand, true);
em.addField("Usage", cmd.getCommandInfo().getSubCommands().get(subCommand), false);
em.appendField("Usage", cmd.getCommandInfo().getSubCommands().get(subCommand), false);
em.setFooter("<> = required | () = optional", null);
em.withFooterText("<> = required | () = optional");
em.setUrl("https://www.discalbot.com/commands");
em.withUrl("https://www.discalbot.com/commands");
em.setColor(GlobalConst.discalColor);
em.withColor(GlobalConst.discalColor);
return em;
return em.build();
}
}
@@ -1,8 +1,8 @@
package org.dreamexposure.discal.client.module.command;
import discord4j.core.event.domain.message.MessageCreateEvent;
import org.dreamexposure.discal.core.object.GuildSettings;
import org.dreamexposure.discal.core.object.command.CommandInfo;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import java.util.ArrayList;
import java.util.List;
@@ -38,5 +38,5 @@ public interface ICommand {
return info;
}
boolean issueCommand(String[] args, MessageCreateEvent event, GuildSettings settings);
boolean issueCommand(String[] args, MessageReceivedEvent event, GuildSettings settings);
}
@@ -1,7 +1,6 @@
package org.dreamexposure.discal.client.module.command;
import com.google.api.services.calendar.model.Calendar;
import discord4j.core.event.domain.message.MessageCreateEvent;
import org.dreamexposure.discal.client.message.CalendarMessageFormatter;
import org.dreamexposure.discal.client.message.MessageManager;
import org.dreamexposure.discal.core.calendar.CalendarAuth;
@@ -10,6 +9,7 @@ import org.dreamexposure.discal.core.logger.Logger;
import org.dreamexposure.discal.core.object.GuildSettings;
import org.dreamexposure.discal.core.object.calendar.CalendarData;
import org.dreamexposure.discal.core.object.command.CommandInfo;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import java.util.ArrayList;
@@ -18,7 +18,6 @@ import java.util.ArrayList;
* Website: www.cloudcraftgaming.com
* For Project: DisCal
*/
@SuppressWarnings("OptionalGetWithoutIsPresent")
public class LinkCalendarCommand implements ICommand {
/**
* Gets the command this Object is responsible for.
@@ -68,10 +67,10 @@ public class LinkCalendarCommand implements ICommand {
* @return <code>true</code> if successful, else <code>false</code>.
*/
@Override
public boolean issueCommand(String[] args, MessageCreateEvent event, GuildSettings settings) {
public boolean issueCommand(String[] args, MessageReceivedEvent event, GuildSettings settings) {
try {
//TODO: Handle multiple calendars...
CalendarData data = DatabaseManager.getManager().getMainCalendar(settings.getGuildID());
CalendarData data = DatabaseManager.getManager().getMainCalendar(event.getGuild().getLongID());
if (data.getCalendarAddress().equalsIgnoreCase("primary")) {
//Does not have a calendar.
@@ -82,7 +81,7 @@ public class LinkCalendarCommand implements ICommand {
MessageManager.sendMessageAsync(CalendarMessageFormatter.getCalendarLinkEmbed(cal, settings), event);
}
} catch (Exception e) {
Logger.getLogger().exception(event.getMember().get(), "Failed to connect to Google Cal.", e, this.getClass());
Logger.getLogger().exception(event.getAuthor(), "Failed to connect to Google Cal.", e, this.getClass());
MessageManager.sendMessageAsync(MessageManager.getMessage("Notification.Error.Unknown", settings), event);
}
return false;
@@ -1,9 +1,5 @@
package org.dreamexposure.discal.client.module.command;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.object.entity.Guild;
import discord4j.core.object.entity.User;
import discord4j.core.spec.EmbedCreateSpec;
import org.dreamexposure.discal.client.DisCalClient;
import org.dreamexposure.discal.client.message.MessageManager;
import org.dreamexposure.discal.core.database.DatabaseManager;
@@ -14,6 +10,11 @@ import org.dreamexposure.discal.core.utils.EventUtils;
import org.dreamexposure.discal.core.utils.GlobalConst;
import org.dreamexposure.discal.core.utils.TimeUtils;
import org.dreamexposure.discal.core.utils.UserUtils;
import sx.blah.discord.api.internal.json.objects.EmbedObject;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.handle.obj.IGuild;
import sx.blah.discord.handle.obj.IUser;
import sx.blah.discord.util.EmbedBuilder;
import java.util.ArrayList;
@@ -75,7 +76,7 @@ public class RsvpCommand implements ICommand {
* @return <code>true</code> if successful, else <code>false</code>.
*/
@Override
public boolean issueCommand(String[] args, MessageCreateEvent event, GuildSettings settings) {
public boolean issueCommand(String[] args, MessageReceivedEvent event, GuildSettings settings) {
if (args.length > 0) {
switch (args[0].toLowerCase()) {
case "ontime":
@@ -106,14 +107,14 @@ public class RsvpCommand implements ICommand {
return false;
}
private void moduleGoing(String[] args, MessageCreateEvent event, GuildSettings settings) {
private void moduleGoing(String[] args, MessageReceivedEvent event, GuildSettings settings) {
if (args.length == 2) {
String eventId = args[1];
if (EventUtils.eventExists(settings, eventId)) {
if (!TimeUtils.inPast(eventId, settings)) {
RsvpData data = DatabaseManager.getManager().getRsvpData(settings.getGuildID(), eventId);
data.removeCompletely(event.getMember().get().getId().asString());
data.getGoingOnTime().add(event.getMember().get().getId().asString());
data.removeCompletely(event.getAuthor().getStringID());
data.getGoingOnTime().add(event.getAuthor().getStringID());
DatabaseManager.getManager().updateRsvpData(data);
MessageManager.sendMessageAsync(MessageManager.getMessage("RSVP.going.success", settings), getRsvpEmbed(data, settings), event);
@@ -128,14 +129,14 @@ public class RsvpCommand implements ICommand {
}
}
private void moduleGoingLate(String[] args, MessageCreateEvent event, GuildSettings settings) {
private void moduleGoingLate(String[] args, MessageReceivedEvent event, GuildSettings settings) {
if (args.length == 2) {
String eventId = args[1];
if (EventUtils.eventExists(settings, eventId)) {
if (!TimeUtils.inPast(eventId, settings)) {
RsvpData data = DatabaseManager.getManager().getRsvpData(settings.getGuildID(), eventId);
data.removeCompletely(event.getMember().get().getId().asString());
data.getGoingLate().add(event.getMember().get().getId().asString());
data.removeCompletely(event.getAuthor().getStringID());
data.getGoingLate().add(event.getAuthor().getStringID());
DatabaseManager.getManager().updateRsvpData(data);
MessageManager.sendMessageAsync(MessageManager.getMessage("RSVP.late.success", settings), getRsvpEmbed(data, settings), event);
@@ -150,14 +151,14 @@ public class RsvpCommand implements ICommand {
}
}
private void moduleNotGoing(String[] args, MessageCreateEvent event, GuildSettings settings) {
private void moduleNotGoing(String[] args, MessageReceivedEvent event, GuildSettings settings) {
if (args.length == 2) {
String eventId = args[1];
if (EventUtils.eventExists(settings, eventId)) {
if (!TimeUtils.inPast(eventId, settings)) {
RsvpData data = DatabaseManager.getManager().getRsvpData(settings.getGuildID(), eventId);
data.removeCompletely(event.getMember().get().getId().asString());
data.getNotGoing().add(event.getMember().get().getId().asString());
data.removeCompletely(event.getAuthor().getStringID());
data.getNotGoing().add(event.getAuthor().getStringID());
DatabaseManager.getManager().updateRsvpData(data);
MessageManager.sendMessageAsync(MessageManager.getMessage("RSVP.not.success", settings), getRsvpEmbed(data, settings), event);
@@ -172,13 +173,13 @@ public class RsvpCommand implements ICommand {
}
}
private void moduleRemove(String[] args, MessageCreateEvent event, GuildSettings settings) {
private void moduleRemove(String[] args, MessageReceivedEvent event, GuildSettings settings) {
if (args.length == 2) {
String eventId = args[1];
if (EventUtils.eventExists(settings, eventId)) {
if (!TimeUtils.inPast(eventId, settings)) {
RsvpData data = DatabaseManager.getManager().getRsvpData(settings.getGuildID(), eventId);
data.removeCompletely(event.getMember().get().getId().asString());
data.removeCompletely(event.getAuthor().getStringID());
DatabaseManager.getManager().updateRsvpData(data);
MessageManager.sendMessageAsync(MessageManager.getMessage("RSVP.remove.success", settings), getRsvpEmbed(data, settings), event);
@@ -193,18 +194,17 @@ public class RsvpCommand implements ICommand {
}
}
private void moduleUnsure(String[] args, MessageCreateEvent event, GuildSettings settings) {
private void moduleUnsure(String[] args, MessageReceivedEvent event, GuildSettings settings) {
if (args.length == 2) {
String eventId = args[1];
if (EventUtils.eventExists(settings, eventId)) {
if (!TimeUtils.inPast(eventId, settings)) {
RsvpData data = DatabaseManager.getManager().getRsvpData(settings.getGuildID(), eventId);
data.removeCompletely(event.getMember().get().getId().asString());
data.getUndecided().add(event.getMember().get().getId().asString());
data.removeCompletely(event.getAuthor().getStringID());
data.getUndecided().add(event.getAuthor().getStringID());
DatabaseManager.getManager().updateRsvpData(data);
MessageManager.sendMessageAsync(MessageManager.getMessage("RSVP.unsure.success", settings), getRsvpEmbed(data, settings), event);
} else {
MessageManager.sendMessageAsync(MessageManager.getMessage("Notifications.Event.InPast", settings), event);
}
@@ -216,7 +216,7 @@ public class RsvpCommand implements ICommand {
}
}
private void moduleList(String[] args, MessageCreateEvent event, GuildSettings settings) {
private void moduleList(String[] args, MessageReceivedEvent event, GuildSettings settings) {
if (args.length == 2) {
String eventId = args[1];
if (EventUtils.eventExists(settings, eventId)) {
@@ -232,57 +232,59 @@ public class RsvpCommand implements ICommand {
}
private EmbedCreateSpec getRsvpEmbed(RsvpData data, GuildSettings settings) {
EmbedCreateSpec em = new EmbedCreateSpec();
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.setTitle(MessageManager.getMessage("Embed.RSVP.List.Title", settings));
em.addField("Event ID", data.getEventId(), false);
private EmbedObject getRsvpEmbed(RsvpData data, GuildSettings settings) {
EmbedBuilder em = new EmbedBuilder();
em.withAuthorIcon(GlobalConst.discalSite);
em.withAuthorName("DisCal");
em.withAuthorUrl(GlobalConst.discalSite);
em.withTitle(MessageManager.getMessage("Embed.RSVP.List.Title", settings));
em.appendField("Event ID", data.getEventId(), false);
Guild g = DisCalClient.getClient().getGuildById(settings.getGuildID()).block();
IGuild g = DisCalClient.getClient().getGuildByID(settings.getGuildID());
StringBuilder onTime = new StringBuilder();
for (User u : UserUtils.getUsers(data.getGoingOnTime(), g)) {
onTime.append(u.asMember(settings.getGuildID()).block().getDisplayName()).append(", ");
for (IUser u : UserUtils.getUsers(data.getGoingOnTime(), g)) {
onTime.append(u.getDisplayName(g)).append(", ");
}
StringBuilder late = new StringBuilder();
for (User u : UserUtils.getUsers(data.getGoingLate(), g)) {
late.append(u.asMember(settings.getGuildID()).block().getDisplayName()).append(", ");
for (IUser u : UserUtils.getUsers(data.getGoingLate(), g)) {
late.append(u.getDisplayName(g)).append(", ");
}
StringBuilder unsure = new StringBuilder();
for (User u : UserUtils.getUsers(data.getUndecided(), g)) {
unsure.append(u.asMember(settings.getGuildID()).block().getDisplayName()).append(", ");
for (IUser u : UserUtils.getUsers(data.getUndecided(), g)) {
unsure.append(u.getDisplayName(g)).append(", ");
}
StringBuilder notGoing = new StringBuilder();
for (User u : UserUtils.getUsers(data.getNotGoing(), g)) {
notGoing.append(u.asMember(settings.getGuildID()).block().getDisplayName()).append(", ");
for (IUser u : UserUtils.getUsers(data.getNotGoing(), g)) {
notGoing.append(u.getDisplayName(g)).append(", ");
}
if (onTime.toString().isEmpty())
em.addField("On time", "N/a", true);
em.appendField("On time", "N/a", true);
else
em.addField("On Time", onTime.toString(), true);
em.appendField("On Time", onTime.toString(), true);
if (late.toString().isEmpty())
em.addField("Late", "N/a", true);
em.appendField("Late", "N/a", true);
else
em.addField("Late", late.toString(), true);
em.appendField("Late", late.toString(), true);
if (unsure.toString().isEmpty())
em.addField("Unsure", "N/a", true);
em.appendField("Unsure", "N/a", true);
else
em.addField("Unsure", unsure.toString(), true);
em.appendField("Unsure", unsure.toString(), true);
if (notGoing.toString().isEmpty())
em.addField("Not Going", "N/a", true);
em.appendField("Not Going", "N/a", true);
else
em.addField("Not Going", notGoing.toString(), true);
em.appendField("Not Going", notGoing.toString(), true);
em.setFooter(MessageManager.getMessage("Embed.RSVP.List.Footer", settings), null);
em.setColor(GlobalConst.discalColor);
em.withFooterText(MessageManager.getMessage("Embed.RSVP.List.Footer", settings));
em.withColor(GlobalConst.discalColor);
return em;
return em.build();
}
}
@@ -1,8 +1,6 @@
package org.dreamexposure.discal.client.module.command;
import com.google.api.services.calendar.model.Calendar;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.spec.EmbedCreateSpec;
import org.dreamexposure.discal.client.message.CalendarMessageFormatter;
import org.dreamexposure.discal.client.message.MessageManager;
import org.dreamexposure.discal.core.calendar.CalendarAuth;
@@ -12,6 +10,8 @@ import org.dreamexposure.discal.core.object.GuildSettings;
import org.dreamexposure.discal.core.object.calendar.CalendarData;
import org.dreamexposure.discal.core.object.command.CommandInfo;
import org.dreamexposure.discal.core.utils.GlobalConst;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.util.EmbedBuilder;
import java.time.LocalDateTime;
import java.time.ZoneId;
@@ -69,16 +69,15 @@ public class TimeCommand implements ICommand {
* @return <code>true</code> if successful, else <code>false</code>.
*/
@Override
public boolean issueCommand(String[] args, MessageCreateEvent event, GuildSettings settings) {
public boolean issueCommand(String[] args, MessageReceivedEvent event, GuildSettings settings) {
calendarTime(event, settings);
return false;
}
@SuppressWarnings("OptionalGetWithoutIsPresent")
private void calendarTime(MessageCreateEvent event, GuildSettings settings) {
private void calendarTime(MessageReceivedEvent event, GuildSettings settings) {
try {
//TODO: Handle multiple calendars...
CalendarData data = DatabaseManager.getManager().getMainCalendar(settings.getGuildID());
CalendarData data = DatabaseManager.getManager().getMainCalendar(event.getGuild().getLongID());
if (data.getCalendarAddress().equalsIgnoreCase("primary")) {
//Does not have a calendar.
@@ -93,19 +92,21 @@ public class TimeCommand implements ICommand {
String thisIsTheCorrectTime = format.format(ldt);
//Build embed and send.
EmbedCreateSpec em = new EmbedCreateSpec();
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.setTitle(MessageManager.getMessage("Embed.Time.Title", settings));
em.addField(MessageManager.getMessage("Embed.Time.Time", settings), thisIsTheCorrectTime, false);
em.addField(MessageManager.getMessage("Embed.Time.TimeZone", settings), cal.getTimeZone(), false);
EmbedBuilder em = new EmbedBuilder();
em.withAuthorIcon(GlobalConst.discalSite);
em.withAuthorName("DisCal");
em.withAuthorUrl(GlobalConst.discalSite);
em.withTitle(MessageManager.getMessage("Embed.Time.Title", settings));
em.appendField(MessageManager.getMessage("Embed.Time.Time", settings), thisIsTheCorrectTime, false);
em.appendField(MessageManager.getMessage("Embed.Time.TimeZone", settings), cal.getTimeZone(), false);
em.setFooter(MessageManager.getMessage("Embed.Time.Footer", settings), null);
em.setUrl(CalendarMessageFormatter.getCalendarLink(settings.getGuildID()));
em.setColor(GlobalConst.discalColor);
MessageManager.sendMessageAsync(em, event);
em.withFooterText(MessageManager.getMessage("Embed.Time.Footer", settings));
em.withUrl(CalendarMessageFormatter.getCalendarLink(settings.getGuildID()));
em.withColor(GlobalConst.discalColor);
MessageManager.sendMessageAsync(em.build(), event);
}
} catch (Exception e) {
Logger.getLogger().exception(event.getMember().get(), "Failed to connect to Google Cal.", e, this.getClass());
Logger.getLogger().exception(event.getAuthor(), "Failed to connect to Google Cal.", e, this.getClass());
MessageManager.sendMessageAsync(MessageManager.getMessage("Notification.Error.Unknown", settings), event);
}
}
@@ -1,11 +1,11 @@
package org.dreamexposure.discal.client.module.misc;
import discord4j.core.object.data.stored.PresenceBean;
import discord4j.core.object.presence.Presence;
import org.dreamexposure.discal.client.DisCalClient;
import org.dreamexposure.discal.core.database.DatabaseManager;
import org.dreamexposure.discal.core.object.BotSettings;
import org.dreamexposure.discal.core.utils.GlobalConst;
import sx.blah.discord.handle.obj.ActivityType;
import sx.blah.discord.handle.obj.StatusType;
import java.util.ArrayList;
import java.util.TimerTask;
@@ -22,41 +22,35 @@ public class StatusChanger extends TimerTask {
/**
* Creates the StatusChanger and its Statuses list.
*/
public StatusChanger() {
statuses.add("Discord Calendar");
statuses.add("!help for help");
statuses.add("!DisCal for info");
public StatusChanger() {
statuses.add("Discord Calendar");
statuses.add("!help for help");
statuses.add("!DisCal for info");
statuses.add("Powered by DreamExposure");
statuses.add("Ultimate calendar bot!");
statuses.add("%guCount% guilds on shard!");
statuses.add("%calCount% calendars!");
statuses.add("%annCount% announcements!");
statuses.add("%shards% shards!");
statuses.add("Used on %guCount% guilds!");
statuses.add("%calCount% calendars!");
statuses.add("%annCount% announcements!");
statuses.add("%shards% shards!");
statuses.add("Version " + GlobalConst.version);
statuses.add("DisCal is on Patreon!");
statuses.add("Share DisCal!!");
index = 0;
}
statuses.add("DisCal is on Patreon!");
statuses.add("Share DisCal!!");
index = 0;
}
@Override
public void run() {
String status = statuses.get(index);
status = status.replace("%guCount%", DisCalClient.getClient().getGuilds().count().block() + "");
status = status.replace("%calCount%", DatabaseManager.getManager().getCalendarCount() + "");
status = status.replace("%annCount%", DatabaseManager.getManager().getAnnouncementCount() + "");
@Override
public void run() {
String status = statuses.get(index);
status = status.replace("%guCount%", DisCalClient.getClient().getGuilds().size() + "");
status = status.replace("%calCount%", DatabaseManager.getManager().getCalendarCount() + "");
status = status.replace("%annCount%", DatabaseManager.getManager().getAnnouncementCount() + "");
status = status.replace("%shards%", BotSettings.SHARD_COUNT.get());
DisCalClient.getClient().changePresence(StatusType.ONLINE, ActivityType.PLAYING, status);
PresenceBean pb = new PresenceBean();
pb.setStatus(status);
Presence presence = new Presence(pb);
DisCalClient.getClient().updatePresence(presence).subscribe();
//Set new index.
//Set new index.
if (index + 1 >= statuses.size())
index = 0;
index = 0;
else
index++;
}
index++;
}
}
@@ -4,9 +4,6 @@ import com.google.api.client.http.HttpStatusCodes;
import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.CalendarScopes;
import com.google.api.services.calendar.model.CalendarListEntry;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.object.entity.User;
import discord4j.core.spec.EmbedCreateSpec;
import okhttp3.FormBody;
import okhttp3.Request;
import okhttp3.RequestBody;
@@ -22,6 +19,9 @@ import org.dreamexposure.discal.core.object.GuildSettings;
import org.dreamexposure.discal.core.object.network.google.Poll;
import org.dreamexposure.discal.core.utils.GlobalConst;
import org.json.JSONObject;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.handle.obj.IUser;
import sx.blah.discord.util.EmbedBuilder;
import java.io.IOException;
import java.util.List;
@@ -48,7 +48,7 @@ public class GoogleExternalAuth {
return auth;
}
public void requestCode(MessageCreateEvent event, GuildSettings settings) {
public void requestCode(MessageReceivedEvent event, GuildSettings settings) {
try {
RequestBody body = new FormBody.Builder()
.addEncoded("client_id", Authorization.getAuth().getClientData().getClientId())
@@ -67,20 +67,22 @@ public class GoogleExternalAuth {
JSONObject codeResponse = new JSONObject(response.body().string());
//Send DM to user with code.
EmbedCreateSpec em = new EmbedCreateSpec();
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.setTitle(MessageManager.getMessage("Embed.AddCalendar.Code.Title", settings));
em.addField(MessageManager.getMessage("Embed.AddCalendar.Code.Code", settings), codeResponse.getString("user_code"), true);
em.setFooter(MessageManager.getMessage("Embed.AddCalendar.Code.Footer", settings), null);
EmbedBuilder em = new EmbedBuilder();
em.withAuthorIcon(GlobalConst.discalSite);
em.withAuthorName("DisCal");
em.withAuthorUrl(GlobalConst.discalSite);
em.withTitle(MessageManager.getMessage("Embed.AddCalendar.Code.Title", settings));
em.appendField(MessageManager.getMessage("Embed.AddCalendar.Code.Code", settings), codeResponse.getString("user_code"), true);
em.withFooterText(MessageManager.getMessage("Embed.AddCalendar.Code.Footer", settings));
em.setUrl(codeResponse.getString("verification_url"));
em.setColor(GlobalConst.discalColor);
em.withUrl(codeResponse.getString("verification_url"));
em.withColor(GlobalConst.discalColor);
User user = event.getMember().get();
MessageManager.sendDirectMessageAsync(MessageManager.getMessage("AddCalendar.Auth.Code.Request.Success", settings), em, user);
IUser user = event.getAuthor();
MessageManager.sendDirectMessageAsync(MessageManager.getMessage("AddCalendar.Auth.Code.Request.Success", settings), em.build(), user);
//Start timer to poll Google Cal for auth
Poll poll = new Poll(user, event.getGuild().block());
Poll poll = new Poll(user, event.getGuild());
poll.setDevice_code(codeResponse.getString("device_code"));
poll.setRemainingSeconds(codeResponse.getInt("expires_in"));
@@ -88,20 +90,20 @@ public class GoogleExternalAuth {
poll.setInterval(codeResponse.getInt("interval"));
pollForAuth(poll);
} else {
MessageManager.sendDirectMessageAsync(MessageManager.getMessage("AddCalendar.Auth.Code.Request.Failure.NotOkay", settings), event.getMember().get());
MessageManager.sendDirectMessageAsync(MessageManager.getMessage("AddCalendar.Auth.Code.Request.Failure.NotOkay", settings), event.getAuthor());
Logger.getLogger().debug(event.getMember().get(), "Error requesting access token.", "Status code: " + response.code() + " | " + response.message() + " | " + response.body().string(), this.getClass());
Logger.getLogger().debug(event.getAuthor(), "Error requesting access token.", "Status code: " + response.code() + " | " + response.message() + " | " + response.body().string(), this.getClass());
}
} catch (Exception e) {
//Failed, report issue to dev.
Logger.getLogger().exception(event.getMember().get(), "Failed to request Google Access Code", e, this.getClass());
User u = event.getMember().get();
Logger.getLogger().exception(event.getAuthor(), "Failed to request Google Access Code", e, this.getClass());
IUser u = event.getAuthor();
MessageManager.sendDirectMessageAsync(MessageManager.getMessage("AddCalendar.Auth.Code.Request.Failure.Unknown", settings), u);
}
}
void pollForAuth(Poll poll) {
GuildSettings settings = DatabaseManager.getManager().getSettings(poll.getGuild().getId());
GuildSettings settings = DatabaseManager.getManager().getSettings(poll.getGuild().getLongID());
try {
RequestBody body = new FormBody.Builder()
.addEncoded("client_id", Authorization.getAuth().getClientData().getClientId())
@@ -153,7 +155,7 @@ public class GoogleExternalAuth {
JSONObject aprGrant = new JSONObject(response.body().string());
//Save credentials securely.
GuildSettings gs = DatabaseManager.getManager().getSettings(poll.getGuild().getId());
GuildSettings gs = DatabaseManager.getManager().getSettings(poll.getGuild().getLongID());
AESEncryption encryption = new AESEncryption(gs);
gs.setEncryptedAccessToken(encryption.encrypt(aprGrant.getString("access_token")));
gs.setEncryptedRefreshToken(encryption.encrypt(aprGrant.getString("refresh_token")));
@@ -166,16 +168,18 @@ public class GoogleExternalAuth {
MessageManager.sendDirectMessageAsync(MessageManager.getMessage("AddCalendar.Auth.Poll.Success", settings), poll.getUser());
for (CalendarListEntry i : items) {
if (!i.isDeleted()) {
EmbedCreateSpec em = new EmbedCreateSpec();
em.setAuthor("DisCal", GlobalConst.discalSite, GlobalConst.iconUrl);
em.setTitle(MessageManager.getMessage("Embed.AddCalendar.List.Title", settings));
em.addField(MessageManager.getMessage("Embed.AddCalendar.List.Name", settings), i.getSummary(), false);
em.addField(MessageManager.getMessage("Embed.AddCalendar.List.TimeZone", settings), i.getTimeZone(), false);
em.addField(MessageManager.getMessage("Embed.AddCalendar.List.ID", settings), i.getId(), false);
EmbedBuilder em = new EmbedBuilder();
em.withAuthorIcon(GlobalConst.discalSite);
em.withAuthorName("DisCal");
em.withAuthorUrl(GlobalConst.discalSite);
em.withTitle(MessageManager.getMessage("Embed.AddCalendar.List.Title", settings));
em.appendField(MessageManager.getMessage("Embed.AddCalendar.List.Name", settings), i.getSummary(), false);
em.appendField(MessageManager.getMessage("Embed.AddCalendar.List.TimeZone", settings), i.getTimeZone(), false);
em.appendField(MessageManager.getMessage("Embed.AddCalendar.List.ID", settings), i.getId(), false);
em.setUrl(CalendarMessageFormatter.getCalendarLink(settings.getGuildID()));
em.setColor(GlobalConst.discalColor);
MessageManager.sendDirectMessageAsync(em, poll.getUser());
em.withUrl(CalendarMessageFormatter.getCalendarLink(settings.getGuildID()));
em.withColor(GlobalConst.discalColor);
MessageManager.sendDirectMessageAsync(em.build(), poll.getUser());
}
}
//Response will be handled in guild, and will check. We already saved the tokens anyway.
@@ -26,7 +26,7 @@ public class KeepAliveHandler {
public void run() {
JSONObject data = new JSONObject();
data.put("Reason", "Keep-Alive");
data.put("Server-Count", DisCalClient.getClient().getGuilds().count().block().intValue());
data.put("Server-Count", DisCalClient.getClient().getGuilds().size());
data.put("Mem-Used", usedMemory());
data.put("Uptime", getUptime());
//TODO: Add announcement count!!!
@@ -1,6 +1,5 @@
package org.dreamexposure.discal.core.database;
import discord4j.core.object.util.Snowflake;
import org.dreamexposure.discal.core.crypto.KeyGenerator;
import org.dreamexposure.discal.core.enums.announcement.AnnouncementType;
import org.dreamexposure.discal.core.enums.event.EventColor;
@@ -30,7 +29,7 @@ public class DatabaseManager {
private static DatabaseManager instance;
private DatabaseInfo databaseInfo;
private Map<Snowflake, GuildSettings> guildSettingsCache = new HashMap<>();
private Map<Long, GuildSettings> guildSettingsCache = new HashMap<>();
private DatabaseManager() {
} //Prevent initialization.
@@ -244,7 +243,7 @@ public class DatabaseManager {
"(GUILD_ID, EXTERNAL_CALENDAR, PRIVATE_KEY, ACCESS_TOKEN, REFRESH_TOKEN, CONTROL_ROLE, DISCAL_CHANNEL, SIMPLE_ANNOUNCEMENT, LANG, PREFIX, PATRON_GUILD, DEV_GUILD, MAX_CALENDARS, DM_ANNOUNCEMENTS, 12_HOUR, BRANDED)" +
" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);";
PreparedStatement ps = databaseInfo.getConnection().prepareStatement(insertCommand);
ps.setString(1, settings.getGuildID().asString());
ps.setString(1, String.valueOf(settings.getGuildID()));
ps.setBoolean(2, settings.useExternalCalendar());
ps.setString(3, settings.getPrivateKey());
ps.setString(4, settings.getEncryptedAccessToken());
@@ -291,7 +290,7 @@ public class DatabaseManager {
ps.setString(13, settings.getDmAnnouncementsString());
ps.setBoolean(14, settings.useTwelveHour());
ps.setBoolean(15, settings.isBranded());
ps.setString(16, settings.getGuildID().asString());
ps.setString(16, String.valueOf(settings.getGuildID()));
ps.executeUpdate();
@@ -325,7 +324,7 @@ public class DatabaseManager {
"(GUILD_ID, CALENDAR_NUMBER, CALENDAR_ID, CALENDAR_ADDRESS, EXTERNAL)" +
" VALUES (?, ?, ?, ?, ?);";
PreparedStatement ps = databaseInfo.getConnection().prepareStatement(insertCommand);
ps.setString(1, calData.getGuildId().asString());
ps.setString(1, String.valueOf(calData.getGuildId()));
ps.setInt(2, calData.getCalendarNumber());
ps.setString(3, calData.getCalendarId());
ps.setString(4, calData.getCalendarAddress());
@@ -345,7 +344,7 @@ public class DatabaseManager {
ps.setString(2, calData.getCalendarId());
ps.setString(3, calData.getCalendarAddress());
ps.setBoolean(4, calData.isExternal());
ps.setString(5, calData.getGuildId().asString());
ps.setString(5, String.valueOf(calData.getGuildId()));
ps.executeUpdate();
@@ -384,7 +383,7 @@ public class DatabaseManager {
" VALUE (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
PreparedStatement ps = databaseInfo.getConnection().prepareStatement(insertCommand);
ps.setString(1, announcement.getAnnouncementId().toString());
ps.setString(2, announcement.getGuildId().asString());
ps.setString(2, String.valueOf(announcement.getGuildId()));
ps.setString(3, announcement.getSubscriberRoleIdString());
ps.setString(4, announcement.getSubscriberUserIdString());
ps.setString(5, announcement.getAnnouncementChannelId());
@@ -461,7 +460,7 @@ public class DatabaseManager {
"(GUILD_ID, EVENT_ID, EVENT_END, IMAGE_LINK)" +
" VALUES (?, ?, ?, ?)";
PreparedStatement ps = databaseInfo.getConnection().prepareStatement(insertCommand);
ps.setString(1, data.getGuildId().asString());
ps.setString(1, String.valueOf(data.getGuildId()));
ps.setString(2, data.getEventId());
ps.setLong(3, data.getEventEnd());
ps.setString(4, data.getImageLink());
@@ -510,7 +509,7 @@ public class DatabaseManager {
"(GUILD_ID, EVENT_ID, EVENT_END, GOING_ON_TIME, GOING_LATE, NOT_GOING, UNDECIDED)" +
" VALUES (?, ?, ?, ?, ?, ?, ?)";
PreparedStatement ps = databaseInfo.getConnection().prepareStatement(insertCommand);
ps.setString(1, data.getGuildId().asString());
ps.setString(1, String.valueOf(data.getGuildId()));
ps.setString(2, data.getEventId());
ps.setLong(3, data.getEventEnd());
ps.setString(4, data.getGoingOnTimeString());
@@ -586,7 +585,7 @@ public class DatabaseManager {
return null;
}
public GuildSettings getSettings(Snowflake guildId) {
public GuildSettings getSettings(long guildId) {
if (guildSettingsCache.containsKey(guildId))
return guildSettingsCache.get(guildId);
@@ -645,7 +644,7 @@ public class DatabaseManager {
while (res.next()) {
if (res.getString("GUILD_ID") != null) {
GuildSettings settings = new GuildSettings(Snowflake.of(res.getString("GUILD_ID")));
GuildSettings settings = new GuildSettings(Long.valueOf(res.getString("GUILD_ID")));
settings.setUseExternalCalendar(res.getBoolean("EXTERNAL_CALENDAR"));
settings.setPrivateKey(res.getString("PRIVATE_KEY"));
settings.setEncryptedAccessToken(res.getString("ACCESS_TOKEN"));
@@ -672,13 +671,13 @@ public class DatabaseManager {
return allSettings;
}
public CalendarData getMainCalendar(Snowflake guildId) {
public CalendarData getMainCalendar(long guildId) {
CalendarData calData = new CalendarData(guildId, 1);
try {
if (databaseInfo.getMySQL().checkConnection()) {
String calendarTableName = String.format("%scalendars", databaseInfo.getPrefix());
String query = "SELECT * FROM " + calendarTableName + " WHERE GUILD_ID = '" + guildId.asString() + "';";
String query = "SELECT * FROM " + calendarTableName + " WHERE GUILD_ID = '" + guildId + "';";
PreparedStatement statement = databaseInfo.getConnection().prepareStatement(query);
ResultSet res = statement.executeQuery();
@@ -698,13 +697,13 @@ public class DatabaseManager {
return calData;
}
public CalendarData getCalendar(Snowflake guildId, int calendarNumber) {
public CalendarData getCalendar(long guildId, int calendarNumber) {
CalendarData calData = new CalendarData(guildId, calendarNumber);
try {
if (databaseInfo.getMySQL().checkConnection()) {
String calendarTableName = String.format("%scalendars", databaseInfo.getPrefix());
String query = "SELECT * FROM " + calendarTableName + " WHERE GUILD_ID = '" + guildId.asString() + "';";
String query = "SELECT * FROM " + calendarTableName + " WHERE GUILD_ID = '" + guildId + "';";
PreparedStatement statement = databaseInfo.getConnection().prepareStatement(query);
ResultSet res = statement.executeQuery();
@@ -724,13 +723,13 @@ public class DatabaseManager {
return calData;
}
public ArrayList<CalendarData> getAllCalendars(Snowflake guildId) {
public ArrayList<CalendarData> getAllCalendars(long guildId) {
ArrayList<CalendarData> calendars = new ArrayList<>();
try {
if (databaseInfo.getMySQL().checkConnection()) {
String calendarTableName = String.format("%scalendars", databaseInfo.getPrefix());
String query = "SELECT * FROM " + calendarTableName + " WHERE GUILD_ID = '" + guildId.asString() + "';";
String query = "SELECT * FROM " + calendarTableName + " WHERE GUILD_ID = '" + guildId + "';";
PreparedStatement statement = databaseInfo.getConnection().prepareStatement(query);
ResultSet res = statement.executeQuery();
@@ -759,7 +758,7 @@ public class DatabaseManager {
ResultSet res = stmt.executeQuery();
while (res.next()) {
CalendarData calData = new CalendarData(Snowflake.of(res.getString("GUILD_ID")), res.getInt("CALENDAR_NUMBER"));
CalendarData calData = new CalendarData(Long.valueOf(res.getString("GUILD_ID")), res.getInt("CALENDAR_NUMBER"));
calData.setCalendarId(res.getString("CALENDAR_ID"));
calData.setCalendarAddress(res.getString("CALENDAR_ADDRESS"));
calData.setExternal(res.getBoolean("EXTERNAL"));
@@ -798,7 +797,7 @@ public class DatabaseManager {
return amount;
}
public EventData getEventData(Snowflake guildId, String eventId) {
public EventData getEventData(long guildId, String eventId) {
EventData data = new EventData(guildId);
if (eventId.contains("_"))
@@ -811,7 +810,7 @@ public class DatabaseManager {
if (databaseInfo.getMySQL().checkConnection()) {
String eventTableName = String.format("%sevents", databaseInfo.getPrefix());
String query = "SELECT * FROM " + eventTableName + " WHERE GUILD_ID= '" + guildId.asString() + "';";
String query = "SELECT * FROM " + eventTableName + " WHERE GUILD_ID= '" + guildId + "';";
PreparedStatement statement = databaseInfo.getConnection().prepareStatement(query);
ResultSet res = statement.executeQuery();
@@ -841,7 +840,7 @@ public class DatabaseManager {
while (res.next()) {
if (res.getString("EVENT_ID") != null) {
EventData data = new EventData(Snowflake.of(res.getString("GUILD_ID")));
EventData data = new EventData(Long.valueOf(res.getString("GUILD_ID")));
data.setEventId(res.getString("EVENT_ID"));
data.setEventEnd(res.getLong("EVENT_END"));
@@ -858,14 +857,14 @@ public class DatabaseManager {
return allData;
}
public RsvpData getRsvpData(Snowflake guildId, String eventId) {
public RsvpData getRsvpData(long guildId, String eventId) {
RsvpData data = new RsvpData(guildId);
data.setEventId(eventId);
try {
if (databaseInfo.getMySQL().checkConnection()) {
String rsvpTableName = String.format("%srsvp", databaseInfo.getPrefix());
String query = "SELECT * FROM " + rsvpTableName + " WHERE GUILD_ID= '" + guildId.asString() + "';";
String query = "SELECT * FROM " + rsvpTableName + " WHERE GUILD_ID= '" + guildId + "';";
PreparedStatement statement = databaseInfo.getConnection().prepareStatement(query);
ResultSet res = statement.executeQuery();
@@ -897,7 +896,7 @@ public class DatabaseManager {
while (res.next()) {
if (res.getString("GUILD_ID") != null) {
RsvpData data = new RsvpData(Snowflake.of(res.getString("GUILD_ID")));
RsvpData data = new RsvpData(Long.valueOf(res.getString("GUILD_ID")));
data.setEventId(res.getString("EVENT_ID"));
data.setEventEnd(res.getLong("EVENT_END"));
data.setGoingOnTimeFromString(res.getString("GOING_ON_TIME"));
@@ -923,7 +922,7 @@ public class DatabaseManager {
* @param guildId The ID of the guild the Announcement belongs to.
* @return The {@link Announcement} with the specified ID if it exists, otherwise <c>null</c>.
*/
public Announcement getAnnouncement(UUID announcementId, Snowflake guildId) {
public Announcement getAnnouncement(UUID announcementId, long guildId) {
try {
if (databaseInfo.getMySQL().checkConnection()) {
String announcementTableName = String.format("%sannouncements", databaseInfo.getPrefix());
@@ -965,13 +964,13 @@ public class DatabaseManager {
* @param guildId The ID of the guild whose data is to be retrieved.
* @return An ArrayList of Announcements that belong to the specified Guild.
*/
public ArrayList<Announcement> getAnnouncements(Snowflake guildId) {
public ArrayList<Announcement> getAnnouncements(long guildId) {
ArrayList<Announcement> announcements = new ArrayList<>();
try {
if (databaseInfo.getMySQL().checkConnection()) {
String announcementTableName = String.format("%sannouncements", databaseInfo.getPrefix());
String query = "SELECT * FROM " + announcementTableName + " WHERE GUILD_ID = '" + guildId.asString() + "';";
String query = "SELECT * FROM " + announcementTableName + " WHERE GUILD_ID = '" + guildId + "';";
PreparedStatement statement = databaseInfo.getConnection().prepareStatement(query);
ResultSet res = statement.executeQuery();
@@ -1014,7 +1013,7 @@ public class DatabaseManager {
while (res.next()) {
if (res.getString("ANNOUNCEMENT_ID") != null) {
Announcement announcement = new Announcement(UUID.fromString(res.getString("ANNOUNCEMENT_ID")), Snowflake.of(res.getString("GUILD_ID")));
Announcement announcement = new Announcement(UUID.fromString(res.getString("ANNOUNCEMENT_ID")), Long.valueOf(res.getString("GUILD_ID")));
announcement.setSubscriberRoleIdsFromString(res.getString("SUBSCRIBERS_ROLE"));
announcement.setSubscriberUserIdsFromString(res.getString("SUBSCRIBERS_USER"));
announcement.setAnnouncementChannelId(res.getString("CHANNEL_ID"));
@@ -1052,7 +1051,7 @@ public class DatabaseManager {
while (res.next()) {
if (res.getString("ANNOUNCEMENT_ID") != null) {
Announcement announcement = new Announcement(UUID.fromString(res.getString("ANNOUNCEMENT_ID")), Snowflake.of(res.getString("GUILD_ID")));
Announcement announcement = new Announcement(UUID.fromString(res.getString("ANNOUNCEMENT_ID")), Long.valueOf(res.getString("GUILD_ID")));
announcement.setSubscriberRoleIdsFromString(res.getString("SUBSCRIBERS_ROLE"));
announcement.setSubscriberUserIdsFromString(res.getString("SUBSCRIBERS_USER"));
announcement.setAnnouncementChannelId(res.getString("CHANNEL_ID"));
@@ -1089,7 +1088,7 @@ public class DatabaseManager {
while (res.next()) {
if (res.getString("ANNOUNCEMENT_ID") != null) {
Announcement announcement = new Announcement(UUID.fromString(res.getString("ANNOUNCEMENT_ID")), Snowflake.of(res.getString("GUILD_ID")));
Announcement announcement = new Announcement(UUID.fromString(res.getString("ANNOUNCEMENT_ID")), Long.valueOf(res.getString("GUILD_ID")));
announcement.setSubscriberRoleIdsFromString(res.getString("SUBSCRIBERS_ROLE"));
announcement.setSubscriberUserIdsFromString(res.getString("SUBSCRIBERS_USER"));
announcement.setAnnouncementChannelId(res.getString("CHANNEL_ID"));
@@ -1129,7 +1128,7 @@ public class DatabaseManager {
while (res.next()) {
if (res.getString("ANNOUNCEMENT_ID") != null) {
Announcement announcement = new Announcement(UUID.fromString(res.getString("ANNOUNCEMENT_ID")), Snowflake.of(res.getString("GUILD_ID")));
Announcement announcement = new Announcement(UUID.fromString(res.getString("ANNOUNCEMENT_ID")), Long.valueOf(res.getString("GUILD_ID")));
announcement.setSubscriberRoleIdsFromString(res.getString("SUBSCRIBERS_ROLE"));
announcement.setSubscriberUserIdsFromString(res.getString("SUBSCRIBERS_USER"));
announcement.setAnnouncementChannelId(res.getString("CHANNEL_ID"));
@@ -1157,14 +1156,14 @@ public class DatabaseManager {
return announcements;
}
public ArrayList<Announcement> getEnabledAnnouncements(Snowflake guildId) {
public ArrayList<Announcement> getEnabledAnnouncements(long guildId) {
ArrayList<Announcement> announcements = new ArrayList<>();
try {
if (databaseInfo.getMySQL().checkConnection()) {
String announcementTableName = String.format("%sannouncements", databaseInfo.getPrefix());
PreparedStatement stmt = databaseInfo.getConnection().prepareStatement("SELECT * FROM " + announcementTableName + " WHERE ENABLED = 1 AND GUILD_ID = ?");
stmt.setString(1, guildId.asString());
stmt.setString(1, String.valueOf(guildId));
ResultSet res = stmt.executeQuery();
while (res.next()) {
@@ -1246,7 +1245,7 @@ public class DatabaseManager {
return false;
}
public boolean deleteAnnouncementsForEvent(Snowflake guildId, String eventId) {
public boolean deleteAnnouncementsForEvent(long guildId, String eventId) {
try {
if (databaseInfo.getMySQL().checkConnection()) {
String announcementTableName = String.format("%sannouncements", databaseInfo.getPrefix());
@@ -1254,7 +1253,7 @@ public class DatabaseManager {
String query = "DELETE FROM " + announcementTableName + " WHERE EVENT_ID = ? AND GUILD_ID = ? AND ANNOUNCEMENT_TYPE = ?";
PreparedStatement preparedStmt = databaseInfo.getConnection().prepareStatement(query);
preparedStmt.setString(1, eventId);
preparedStmt.setString(2, guildId.asString());
preparedStmt.setString(2, String.valueOf(guildId));
preparedStmt.setString(3, AnnouncementType.SPECIFIC.name());
preparedStmt.execute();
@@ -1291,14 +1290,14 @@ public class DatabaseManager {
return false;
}
public boolean deleteAllEventData(Snowflake guildId) {
public boolean deleteAllEventData(long guildId) {
try {
if (databaseInfo.getMySQL().checkConnection()) {
String eventTable = String.format("%sevents", databaseInfo.getPrefix());
String query = "DELETE FROM " + eventTable + " WHERE GUILD_ID = ?";
PreparedStatement preparedStmt = databaseInfo.getConnection().prepareStatement(query);
preparedStmt.setString(1, guildId.asString());
preparedStmt.setString(1, String.valueOf(guildId));
preparedStmt.execute();
preparedStmt.close();
@@ -1310,14 +1309,14 @@ public class DatabaseManager {
return false;
}
public boolean deleteAllAnnouncementData(Snowflake guildId) {
public boolean deleteAllAnnouncementData(long guildId) {
try {
if (databaseInfo.getMySQL().checkConnection()) {
String announcementTable = String.format("%sannouncements", databaseInfo.getPrefix());
String query = "DELETE FROM " + announcementTable + " WHERE GUILD_ID = ?";
PreparedStatement preparedStmt = databaseInfo.getConnection().prepareStatement(query);
preparedStmt.setString(1, guildId.asString());
preparedStmt.setString(1, String.valueOf(guildId));
preparedStmt.execute();
preparedStmt.close();
@@ -1329,14 +1328,14 @@ public class DatabaseManager {
return false;
}
public boolean deleteAllRSVPData(Snowflake guildId) {
public boolean deleteAllRSVPData(long guildId) {
try {
if (databaseInfo.getMySQL().checkConnection()) {
String rsvpTable = String.format("%srsvp", databaseInfo.getPrefix());
String query = "DELETE FROM " + rsvpTable + " WHERE GUILD_ID = ?";
PreparedStatement preparedStmt = databaseInfo.getConnection().prepareStatement(query);
preparedStmt.setString(1, guildId.asString());
preparedStmt.setString(1, String.valueOf(guildId));
preparedStmt.execute();
preparedStmt.close();
@@ -1355,7 +1354,7 @@ public class DatabaseManager {
String query = "DELETE FROM " + calendarTable + " WHERE GUILD_ID = ? AND CALENDAR_ADDRESS = ?";
PreparedStatement preparedStmt = databaseInfo.getConnection().prepareStatement(query);
preparedStmt.setString(1, data.getGuildId().asString());
preparedStmt.setString(1, String.valueOf(data.getGuildId()));
preparedStmt.setString(2, data.getCalendarAddress());
preparedStmt.execute();
@@ -1,8 +1,8 @@
package org.dreamexposure.discal.core.logger;
import discord4j.core.object.entity.User;
import org.dreamexposure.discal.core.object.BotSettings;
import org.dreamexposure.discal.core.utils.GlobalConst;
import sx.blah.discord.handle.obj.IUser;
import javax.annotation.Nullable;
import java.io.FileWriter;
@@ -59,7 +59,7 @@ public class Logger {
}
}
public void exception(@Nullable User author, @Nullable String message, Exception e, Class clazz) {
public void exception(@Nullable IUser author, @Nullable String message, Exception e, Class clazz) {
String timeStamp = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(Calendar.getInstance().getTime());
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
@@ -77,7 +77,7 @@ public class Logger {
FileWriter exceptions = new FileWriter(exceptionsFile, true);
exceptions.write("ERROR --- " + timeStamp + " ---" + GlobalConst.lineBreak);
if (author != null)
exceptions.write("user: " + author.getUsername() + "#" + author.getDiscriminator() + GlobalConst.lineBreak);
exceptions.write("user: " + author.getName() + "#" + author.getDiscriminator() + GlobalConst.lineBreak);
if (message != null)
exceptions.write("message: " + message + GlobalConst.lineBreak);
@@ -91,14 +91,14 @@ public class Logger {
}
}
public void debug(@Nullable User author, String message, @Nullable String info, Class clazz) {
public void debug(@Nullable IUser author, String message, @Nullable String info, Class clazz) {
String timeStamp = new SimpleDateFormat("yyyy/MM/dd-HH:mm:ss").format(Calendar.getInstance().getTime());
//ALWAYS LOG TO FILE!
try {
FileWriter file = new FileWriter(debugFile, true);
file.write("DEBUG --- " + timeStamp + " ---" + GlobalConst.lineBreak);
if (author != null)
file.write("user: " + author.getUsername() + "#" + author.getDiscriminator() + GlobalConst.lineBreak);
file.write("user: " + author.getName() + "#" + author.getDiscriminator() + GlobalConst.lineBreak);
if (message != null)
file.write("message: " + message + GlobalConst.lineBreak);
@@ -1,7 +1,5 @@
package org.dreamexposure.discal.core.object;
import discord4j.core.object.util.Snowflake;
import java.util.ArrayList;
import java.util.Collections;
@@ -11,7 +9,7 @@ import java.util.Collections;
* For Project: DisCal-Discord-Bot
*/
public class GuildSettings {
private final Snowflake guildID;
private final long guildID;
private boolean externalCalendar;
private String privateKey;
@@ -35,7 +33,7 @@ public class GuildSettings {
private final ArrayList<String> dmAnnouncements = new ArrayList<>();
public GuildSettings(Snowflake _guildId) {
public GuildSettings(long _guildId) {
guildID = _guildId;
externalCalendar = false;
@@ -59,7 +57,7 @@ public class GuildSettings {
}
//Getters
public Snowflake getGuildID() {
public long getGuildID() {
return guildID;
}
@@ -1,9 +1,8 @@
package org.dreamexposure.discal.core.object.announcement;
import discord4j.core.object.entity.Message;
import discord4j.core.object.util.Snowflake;
import org.dreamexposure.discal.core.enums.announcement.AnnouncementType;
import org.dreamexposure.discal.core.enums.event.EventColor;
import sx.blah.discord.handle.obj.IMessage;
import java.util.ArrayList;
import java.util.Collections;
@@ -17,7 +16,7 @@ import java.util.UUID;
@SuppressWarnings("WeakerAccess")
public class Announcement {
private final UUID announcementId;
private final Snowflake guildId;
private final long guildId;
private final ArrayList<String> subscriberRoleIds = new ArrayList<>();
private final ArrayList<String> subscriberUserIds = new ArrayList<>();
@@ -33,7 +32,7 @@ public class Announcement {
private boolean enabled;
private boolean infoOnly;
private Message creatorMessage;
private IMessage creatorMessage;
private boolean editing;
@@ -44,7 +43,7 @@ public class Announcement {
*
* @param _guildId The ID of the Guild this announcement belongs to.
*/
public Announcement(Snowflake _guildId) {
public Announcement(long _guildId) {
guildId = _guildId;
announcementId = UUID.randomUUID();
announcementChannelId = "N/a";
@@ -66,7 +65,7 @@ public class Announcement {
* @param _announcementId The ID of the announcement object.
* @param _guildId The ID of the guild the announcement belongs to.
*/
public Announcement(UUID _announcementId, Snowflake _guildId) {
public Announcement(UUID _announcementId, long _guildId) {
announcementId = _announcementId;
guildId = _guildId;
announcementChannelId = "N/a";
@@ -144,7 +143,7 @@ public class Announcement {
*
* @return The Guild ID the announcement belongs to.
*/
public Snowflake getGuildId() {
public long getGuildId() {
return guildId;
}
@@ -182,7 +181,7 @@ public class Announcement {
*/
public String getSubscriberRoleIdString() {
StringBuilder subs = new StringBuilder();
Integer i = 0;
int i = 0;
for (String sub: subscriberRoleIds) {
if (i == 0) {
subs = new StringBuilder(sub);
@@ -201,7 +200,7 @@ public class Announcement {
*/
public String getSubscriberUserIdString() {
StringBuilder subs = new StringBuilder();
Integer i = 0;
int i = 0;
for (String sub: subscriberUserIds) {
if (i == 0) {
subs = new StringBuilder(sub);
@@ -273,7 +272,7 @@ public class Announcement {
return infoOnly;
}
public Message getCreatorMessage() {
public IMessage getCreatorMessage() {
return creatorMessage;
}
@@ -368,7 +367,7 @@ public class Announcement {
Collections.addAll(subscriberUserIds, subs);
}
public void setCreatorMessage(Message _message) {
public void setCreatorMessage(IMessage _message) {
creatorMessage = _message;
}
@@ -1,7 +1,7 @@
package org.dreamexposure.discal.core.object.calendar;
import com.google.api.services.calendar.model.Calendar;
import discord4j.core.object.entity.Message;
import sx.blah.discord.handle.obj.IMessage;
/**
* Created by Nova Fox on 11/10/17.
@@ -12,7 +12,7 @@ public class CalendarCreatorResponse {
private final boolean successful;
private boolean edited;
private Message creatorMessage;
private IMessage creatorMessage;
private Calendar calendar;
/**
@@ -59,7 +59,7 @@ public class CalendarCreatorResponse {
return edited;
}
public Message getCreatorMessage() {
public IMessage getCreatorMessage() {
return creatorMessage;
}
@@ -78,7 +78,7 @@ public class CalendarCreatorResponse {
edited = _edit;
}
public void setCreatorMessage(Message msg) {
public void setCreatorMessage(IMessage msg) {
creatorMessage = msg;
}
}
@@ -1,14 +1,12 @@
package org.dreamexposure.discal.core.object.calendar;
import discord4j.core.object.util.Snowflake;
/**
* Created by Nova Fox on 11/10/17.
* Website: www.cloudcraftgaming.com
* For Project: DisCal-Discord-Bot
*/
public class CalendarData {
private final Snowflake guildId;
private final long guildId;
private final int calendarNumber;
private String calendarId;
@@ -16,7 +14,7 @@ public class CalendarData {
private boolean external;
public CalendarData(Snowflake _guildID, int _calendarNumber) {
public CalendarData(long _guildID, int _calendarNumber) {
guildId = _guildID;
calendarNumber = _calendarNumber;
@@ -27,7 +25,7 @@ public class CalendarData {
}
//Getters
public Snowflake getGuildId() {
public long getGuildId() {
return guildId;
}
@@ -1,8 +1,7 @@
package org.dreamexposure.discal.core.object.calendar;
import com.google.api.services.calendar.model.Calendar;
import discord4j.core.object.entity.Message;
import discord4j.core.object.util.Snowflake;
import sx.blah.discord.handle.obj.IMessage;
/**
* Created by Nova Fox on 11/10/17.
@@ -10,7 +9,7 @@ import discord4j.core.object.util.Snowflake;
* For Project: DisCal-Discord-Bot
*/
public class PreCalendar {
private final Snowflake guildId;
private final long guildId;
private String summary;
private String description;
@@ -19,7 +18,7 @@ public class PreCalendar {
private boolean editing;
private String calendarId;
private Message creatorMessage;
private IMessage creatorMessage;
private long lastEdit;
@@ -29,7 +28,7 @@ public class PreCalendar {
* @param _guildId The ID of the guild.
* @param _summary The summary/name of the calendar.
*/
public PreCalendar(Snowflake _guildId, String _summary) {
public PreCalendar(long _guildId, String _summary) {
guildId = _guildId;
summary = _summary;
@@ -38,7 +37,7 @@ public class PreCalendar {
lastEdit = System.currentTimeMillis();
}
public PreCalendar(Snowflake _guildId, Calendar calendar) {
public PreCalendar(long _guildId, Calendar calendar) {
guildId = _guildId;
summary = calendar.getSummary();
@@ -61,7 +60,7 @@ public class PreCalendar {
*
* @return The ID of the guild this PreCalendar belongs to.
*/
public Snowflake getGuildId() {
public long getGuildId() {
return guildId;
}
@@ -100,7 +99,7 @@ public class PreCalendar {
return calendarId;
}
public Message getCreatorMessage() {
public IMessage getCreatorMessage() {
return creatorMessage;
}
@@ -145,7 +144,7 @@ public class PreCalendar {
calendarId = _id;
}
public void setCreatorMessage(Message _message) {
public void setCreatorMessage(IMessage _message) {
creatorMessage = _message;
}
@@ -1,7 +1,7 @@
package org.dreamexposure.discal.core.object.event;
import com.google.api.services.calendar.model.Event;
import discord4j.core.object.entity.Message;
import sx.blah.discord.handle.obj.IMessage;
/**
* Created by Nova Fox on 11/10/17.
@@ -11,7 +11,7 @@ import discord4j.core.object.entity.Message;
public class EventCreatorResponse {
private final boolean successful;
private Message creatorMessage;
private IMessage creatorMessage;
private Event event;
private boolean edited;
@@ -48,7 +48,7 @@ public class EventCreatorResponse {
return successful;
}
public Message getCreatorMessage() {
public IMessage getCreatorMessage() {
return creatorMessage;
}
@@ -66,7 +66,7 @@ public class EventCreatorResponse {
}
//Setters
public void setCreatorMessage(Message _creatorMessage) {
public void setCreatorMessage(IMessage _creatorMessage) {
creatorMessage = _creatorMessage;
}
@@ -1,7 +1,5 @@
package org.dreamexposure.discal.core.object.event;
import discord4j.core.object.util.Snowflake;
import javax.annotation.Nullable;
/**
@@ -10,18 +8,18 @@ import javax.annotation.Nullable;
* For Project: DisCal-Discord-Bot
*/
public class EventData {
private final Snowflake guildId;
private final long guildId;
private String eventId;
private long eventEnd;
private String imageLink;
public EventData(Snowflake _guildId) {
public EventData(long _guildId) {
guildId = _guildId;
}
//Getters
public Snowflake getGuildId() {
public long getGuildId() {
return guildId;
}
@@ -4,8 +4,6 @@ import com.google.api.client.util.DateTime;
import com.google.api.services.calendar.model.Calendar;
import com.google.api.services.calendar.model.Event;
import com.google.api.services.calendar.model.EventDateTime;
import discord4j.core.object.entity.Message;
import discord4j.core.object.util.Snowflake;
import org.dreamexposure.discal.core.calendar.CalendarAuth;
import org.dreamexposure.discal.core.database.DatabaseManager;
import org.dreamexposure.discal.core.enums.event.EventColor;
@@ -13,6 +11,7 @@ import org.dreamexposure.discal.core.logger.Logger;
import org.dreamexposure.discal.core.object.GuildSettings;
import org.dreamexposure.discal.core.object.calendar.CalendarData;
import org.dreamexposure.discal.core.utils.TimeUtils;
import sx.blah.discord.handle.obj.IMessage;
/**
* Created by Nova Fox on 11/10/17.
@@ -20,7 +19,7 @@ import org.dreamexposure.discal.core.utils.TimeUtils;
* For Project: DisCal-Discord-Bot
*/
public class PreEvent {
private final Snowflake guildId;
private final long guildId;
private final String eventId;
private String summary;
@@ -44,7 +43,7 @@ public class PreEvent {
private boolean editing;
private Message creatorMessage;
private IMessage creatorMessage;
private long lastEdit;
@@ -54,7 +53,7 @@ public class PreEvent {
*
* @param _guildId The ID of the guild.
*/
public PreEvent(Snowflake _guildId) {
public PreEvent(long _guildId) {
guildId = _guildId;
eventId = "N/a";
@@ -71,7 +70,7 @@ public class PreEvent {
lastEdit = System.currentTimeMillis();
}
public PreEvent(Snowflake _guildId, Event e) {
public PreEvent(long _guildId, Event e) {
guildId = _guildId;
eventId = e.getId();
@@ -140,7 +139,7 @@ public class PreEvent {
*
* @return The ID of the guild who owns this PreEvent.
*/
public Snowflake getGuildId() {
public long getGuildId() {
return guildId;
}
@@ -250,7 +249,7 @@ public class PreEvent {
return editing;
}
public Message getCreatorMessage() {
public IMessage getCreatorMessage() {
return creatorMessage;
}
@@ -353,7 +352,7 @@ public class PreEvent {
editing = _editing;
}
public void setCreatorMessage(Message _creatorMessage) {
public void setCreatorMessage(IMessage _creatorMessage) {
creatorMessage = _creatorMessage;
}
@@ -1,7 +1,5 @@
package org.dreamexposure.discal.core.object.event;
import discord4j.core.object.util.Snowflake;
import java.util.ArrayList;
import java.util.Collections;
@@ -11,7 +9,7 @@ import java.util.Collections;
* For Project: DisCal-Discord-Bot
*/
public class RsvpData {
private final Snowflake guildId;
private final long guildId;
private String eventId;
private long eventEnd;
@@ -21,12 +19,12 @@ public class RsvpData {
private final ArrayList<String> notGoing = new ArrayList<>();
private final ArrayList<String> undecided = new ArrayList<>();
public RsvpData(Snowflake _guildId) {
public RsvpData(long _guildId) {
guildId = _guildId;
}
//Getters
public Snowflake getGuildId() {
public long getGuildId() {
return guildId;
}
@@ -1,7 +1,7 @@
package org.dreamexposure.discal.core.object.network.google;
import discord4j.core.object.entity.Guild;
import discord4j.core.object.entity.User;
import sx.blah.discord.handle.obj.IGuild;
import sx.blah.discord.handle.obj.IUser;
/**
* Created by Nova Fox on 11/10/17.
@@ -9,25 +9,25 @@ import discord4j.core.object.entity.User;
* For Project: DisCal-Discord-Bot
*/
public class Poll {
private final User user;
private final Guild guild;
private final IUser user;
private final IGuild guild;
private int interval;
private int expires_in;
private int remainingSeconds;
private String device_code;
public Poll(User _user, Guild _guild) {
public Poll(IUser _user, IGuild _guild) {
user = _user;
guild = _guild;
}
//Getters
public User getUser() {
public IUser getUser() {
return user;
}
public Guild getGuild() {
public IGuild getGuild() {
return guild;
}
@@ -1,7 +1,7 @@
package org.dreamexposure.discal.core.object.web;
import discord4j.core.object.entity.TextChannel;
import org.dreamexposure.discal.core.object.GuildSettings;
import sx.blah.discord.handle.obj.IChannel;
/**
* Created by Nova Fox on 1/6/18.
@@ -41,8 +41,8 @@ public class WebChannel {
}
//Functions
public WebChannel fromChannel(TextChannel c, GuildSettings settings) {
id = c.getId().asLong();
public WebChannel fromChannel(IChannel c, GuildSettings settings) {
id = c.getLongID();
name = c.getName();
discalChannel = settings.getDiscalChannel().equalsIgnoreCase(String.valueOf(id));
@@ -1,13 +1,11 @@
package org.dreamexposure.discal.core.object.web;
import discord4j.core.object.entity.Guild;
import discord4j.core.object.entity.Role;
import discord4j.core.object.entity.TextChannel;
import discord4j.core.object.util.Image;
import discord4j.core.object.util.Snowflake;
import org.dreamexposure.discal.core.database.DatabaseManager;
import org.dreamexposure.discal.core.object.GuildSettings;
import org.dreamexposure.discal.core.object.announcement.Announcement;
import sx.blah.discord.handle.obj.IChannel;
import sx.blah.discord.handle.obj.IGuild;
import sx.blah.discord.handle.obj.IRole;
import java.util.ArrayList;
import java.util.List;
@@ -134,17 +132,16 @@ public class WebGuild {
//Functions
public WebGuild fromGuild(Guild g) {
id = g.getId().asString();
public WebGuild fromGuild(IGuild g) {
id = g.getStringID();
name = g.getName();
iconUrl = g.getIconUrl(Image.Format.PNG).get();
botNick = g.getClient().getSelf().block().asMember(Snowflake.of(id)).block().getNickname().get();
iconUrl = g.getIconURL();
botNick = g.getClient().getOurUser().getNicknameForGuild(g);
settings = DatabaseManager.getManager().getSettings(g.getId());
settings = DatabaseManager.getManager().getSettings(g.getLongID());
//Handle lists and stuffs
for (Role r : g.getRoles().toIterable()) {
for (IRole r : g.getRoles()) {
roles.add(new WebRole().fromRole(r, settings));
}
@@ -153,12 +150,12 @@ public class WebGuild {
all.setName("All Channels");
all.setDiscalChannel(settings.getDiscalChannel().equalsIgnoreCase("all"));
channels.add(all);
for (TextChannel c : g.getChannels().ofType(TextChannel.class).toIterable()) {
for (IChannel c : g.getChannels()) {
channels.add(new WebChannel().fromChannel(c, settings));
}
announcements.addAll(DatabaseManager.getManager().getAnnouncements(g.getId()));
announcements.addAll(DatabaseManager.getManager().getAnnouncements(g.getLongID()));
calendar = new WebCalendar().fromCalendar(DatabaseManager.getManager().getMainCalendar(Snowflake.of(id)), settings);
calendar = new WebCalendar().fromCalendar(DatabaseManager.getManager().getMainCalendar(Long.valueOf(id)), settings);
return this;
}
@@ -1,7 +1,7 @@
package org.dreamexposure.discal.core.object.web;
import discord4j.core.object.entity.Role;
import org.dreamexposure.discal.core.object.GuildSettings;
import sx.blah.discord.handle.obj.IRole;
/**
* Created by Nova Fox on 1/6/18.
@@ -61,15 +61,15 @@ public class WebRole {
}
//functions
public WebRole fromRole(Role r, GuildSettings settings) {
id = r.getId().asLong();
public WebRole fromRole(IRole r, GuildSettings settings) {
id = r.getLongID();
name = r.getName();
managed = r.isManaged();
everyone = r.isEveryone();
everyone = r.isEveryoneRole();
if (r.isEveryone() && settings.getControlRole().equalsIgnoreCase("everyone"))
if (r.isEveryoneRole() && settings.getControlRole().equalsIgnoreCase("everyone"))
controlRole = true;
else
controlRole = settings.getControlRole().equalsIgnoreCase(String.valueOf(id));
@@ -1,6 +1,5 @@
package org.dreamexposure.discal.core.utils;
import discord4j.core.object.util.Snowflake;
import org.dreamexposure.discal.core.database.DatabaseManager;
import org.dreamexposure.discal.core.object.announcement.Announcement;
@@ -16,7 +15,7 @@ public class AnnouncementUtils {
* @param value The announcement ID.
* @return <code>true</code> if the announcement exists, else <code>false</code>.
*/
public static Boolean announcementExists(String value, Snowflake guildId) {
public static Boolean announcementExists(String value, long guildId) {
for (Announcement a : DatabaseManager.getManager().getAnnouncements(guildId)) {
if (a.getAnnouncementId().toString().equals(value))
return true;
@@ -1,8 +1,8 @@
package org.dreamexposure.discal.core.utils;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.object.entity.Guild;
import discord4j.core.object.entity.GuildChannel;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.handle.obj.IChannel;
import sx.blah.discord.handle.obj.IGuild;
/**
* Created by Nova Fox on 3/29/2017.
@@ -18,23 +18,23 @@ public class ChannelUtils {
* @param event The event received.
* @return <code>true</code> if exists, else <code>false</code>.
*/
public static boolean channelExists(String nameOrId, MessageCreateEvent event) {
public static boolean channelExists(String nameOrId, MessageReceivedEvent event) {
if (nameOrId.contains("#"))
nameOrId = nameOrId.replace("#", "");
for (GuildChannel c : event.getGuild().block().getChannels().toIterable()) {
if (c.getName().equalsIgnoreCase(nameOrId) || c.getId().asString().equals(nameOrId))
for (IChannel c : event.getGuild().getChannels()) {
if (c.getName().equalsIgnoreCase(nameOrId) || c.getStringID().equals(nameOrId))
return true;
}
return false;
}
public static boolean channelExists(String nameOrId, Guild guild) {
public static boolean channelExists(String nameOrId, IGuild guild) {
if (nameOrId.contains("#"))
nameOrId = nameOrId.replace("#", "");
for (GuildChannel c : guild.getChannels().toIterable()) {
if (c.getName().equalsIgnoreCase(nameOrId) || c.getId().asString().equals(nameOrId))
for (IChannel c : guild.getChannels()) {
if (c.getName().equalsIgnoreCase(nameOrId) || c.getStringID().equals(nameOrId))
return true;
}
return false;
@@ -47,12 +47,12 @@ public class ChannelUtils {
* @param event The event received.
* @return the IChannel if successful, else <code>null</code>.
*/
public static GuildChannel getChannelFromNameOrId(String nameOrId, MessageCreateEvent event) {
public static IChannel getChannelFromNameOrId(String nameOrId, MessageReceivedEvent event) {
if (nameOrId.contains("#"))
nameOrId = nameOrId.replace("#", "");
for (GuildChannel c : event.getGuild().block().getChannels().toIterable()) {
if (c.getName().equalsIgnoreCase(nameOrId) || c.getId().asString().equals(nameOrId))
for (IChannel c : event.getGuild().getChannels()) {
if (c.getName().equalsIgnoreCase(nameOrId) || c.getStringID().equals(nameOrId))
return c;
}
return null;
@@ -64,12 +64,12 @@ public class ChannelUtils {
* @param nameOrId The channel name or ID.
* @return the IChannel if successful, else <code>null</code>.
*/
public static GuildChannel getChannelFromNameOrId(String nameOrId, Guild guild) {
public static IChannel getChannelFromNameOrId(String nameOrId, IGuild guild) {
if (nameOrId.contains("#"))
nameOrId = nameOrId.replace("#", "");
for (GuildChannel c : guild.getChannels().toIterable()) {
if (c.getName().equalsIgnoreCase(nameOrId) || c.getId().asString().equals(nameOrId))
for (IChannel c : guild.getChannels()) {
if (c.getName().equalsIgnoreCase(nameOrId) || c.getStringID().equals(nameOrId))
return c;
}
return null;
@@ -81,11 +81,14 @@ public class ChannelUtils {
* @param nameOrId The channel name or ID.
* @return the IChannel if successful, else <code>null</code>.
*/
public static String getChannelNameFromNameOrId(String nameOrId, Guild guild) {
GuildChannel channel = getChannelFromNameOrId(nameOrId, guild);
if (channel != null)
return channel.getName();
else
return "ERROR";
public static String getChannelNameFromNameOrId(String nameOrId, IGuild guild) {
if (nameOrId.contains("#"))
nameOrId = nameOrId.replace("#", "");
for (IChannel c : guild.getChannels()) {
if (c.getName().equalsIgnoreCase(nameOrId) || c.getStringID().equals(nameOrId))
return c.getName();
}
return "ERROR";
}
}
@@ -2,7 +2,6 @@ package org.dreamexposure.discal.core.utils;
import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.model.Event;
import discord4j.core.object.util.Snowflake;
import org.dreamexposure.discal.core.calendar.CalendarAuth;
import org.dreamexposure.discal.core.database.DatabaseManager;
import org.dreamexposure.discal.core.enums.event.EventColor;
@@ -58,7 +57,7 @@ public class EventUtils {
return false;
}
public static PreEvent copyEvent(Snowflake guildId, Event event) {
public static PreEvent copyEvent(long guildId, Event event) {
PreEvent pe = new PreEvent(guildId);
pe.setSummary(event.getSummary());
pe.setDescription(event.getDescription());
@@ -1,7 +1,5 @@
package org.dreamexposure.discal.core.utils;
import discord4j.core.object.util.Snowflake;
import java.awt.*;
public class GlobalConst {
@@ -9,13 +7,13 @@ public class GlobalConst {
public static final String iconUrl = "https://www.discalbot.com/assets/images/logos/Dark/Opaque/Logo%20Dark%20+bg.png";
public static final String lineBreak = System.getProperty("line.separator");
public static final Snowflake novaId = Snowflake.of(130510525770629121L);
public static final Snowflake xaanitId = Snowflake.of(233611560545812480L);
public static final Snowflake calId = Snowflake.of(142107863307780097L);
public static final Snowflake dreamId = Snowflake.of(142107863307780097L);
public static final long novaId = 130510525770629121L;
public static final long xaanitId = 233611560545812480L;
public static final long calId = 142107863307780097L;
public static final long dreamId = 142107863307780097L;
public static final Snowflake errorLog = Snowflake.of(142107863307780097L);
public static final Snowflake serverId = Snowflake.of(142107863307780097L);
public static final long errorLog = 142107863307780097L;
public static final long serverId = 142107863307780097L;
public static final Color discalColor = new Color(56, 138, 237);
public static final String discalSite = "https://www.discalbot.com";
@@ -1,10 +1,9 @@
package org.dreamexposure.discal.core.utils;
import discord4j.core.DiscordClient;
import discord4j.core.object.entity.Guild;
import discord4j.core.object.entity.Member;
import discord4j.core.object.util.Snowflake;
import org.dreamexposure.discal.core.object.web.WebGuild;
import sx.blah.discord.api.IDiscordClient;
import sx.blah.discord.handle.obj.IGuild;
import sx.blah.discord.handle.obj.IUser;
import java.util.ArrayList;
import java.util.List;
@@ -15,20 +14,19 @@ import java.util.List;
* For Project: DisCal-Discord-Bot
*/
public class GuildUtils {
public static boolean active(Snowflake id) {
public static boolean active(long id) {
//TODO: Determine an accurate way to detect if a guild is still connected to DisCal
return true;
//return Main.client.getGuildByID(id) != null;
}
public static List<WebGuild> getGuilds(String userId, DiscordClient client) {
public static List<WebGuild> getGuilds(String userId, IDiscordClient client) {
List<WebGuild> guilds = new ArrayList<>();
for (Guild g : client.getGuilds().toIterable()) {
for (Member m : g.getMembers().toIterable()) {
if (m.getId().asString().equals(userId)) {
for (IGuild g : client.getGuilds()) {
for (IUser m : g.getUsers()) {
if (m.getStringID().equals(userId)) {
WebGuild wg = new WebGuild().fromGuild(g);
wg.setManageServer(PermissionChecker.hasManageServerRole(m));
wg.setManageServer(PermissionChecker.hasManageServerRole(g, m));
wg.setDiscalRole(PermissionChecker.hasSufficientRole(g, m));
guilds.add(new WebGuild().fromGuild(g));
@@ -1,14 +1,10 @@
package org.dreamexposure.discal.core.utils;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.object.entity.Guild;
import discord4j.core.object.entity.GuildChannel;
import discord4j.core.object.entity.Member;
import discord4j.core.object.entity.Role;
import discord4j.core.object.util.Permission;
import org.dreamexposure.discal.core.database.DatabaseManager;
import org.dreamexposure.discal.core.logger.Logger;
import org.dreamexposure.discal.core.object.GuildSettings;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.handle.obj.*;
/**
* Created by Nova Fox on 1/19/17.
@@ -23,24 +19,25 @@ public class PermissionChecker {
* @param event The Event received to check for the user and guild.
* @return <code>true</code> if the user has the proper role, otherwise <code>false</code>.
*/
public static boolean hasSufficientRole(MessageCreateEvent event) {
public static boolean hasSufficientRole(MessageReceivedEvent event) {
//TODO: Figure out exactly what is causing a NPE here...
try {
GuildSettings settings = DatabaseManager.getManager().getSettings(event.getGuild().block().getId());
GuildSettings settings = DatabaseManager.getManager().getSettings(event.getGuild().getLongID());
if (!settings.getControlRole().equalsIgnoreCase("everyone")) {
IUser sender = event.getMessage().getAuthor();
String roleId = settings.getControlRole();
Role role = null;
IRole role = null;
for (Role r : event.getGuild().map(Guild::getRoles).block().toIterable()) {
if (r.getId().asString().equalsIgnoreCase(roleId)) {
for (IRole r : event.getMessage().getGuild().getRoles()) {
if (r.getStringID().equals(roleId)) {
role = r;
break;
}
}
if (role != null) {
for (Role r : event.getMember().get().getRoles().toIterable()) {
if (r.getId() == role.getId() || r.getPosition().block() > role.getPosition().block())
for (IRole r : sender.getRolesForGuild(event.getMessage().getGuild())) {
if (r.getStringID().equals(role.getStringID()) || r.getPosition() > role.getPosition())
return true;
}
@@ -54,30 +51,30 @@ public class PermissionChecker {
}
} catch (Exception e) {
//Something broke so we will harmlessly allow access and email the dev.
Logger.getLogger().exception(event.getMessage().getAuthor().block(), "Failed to check for sufficient control role.", e, PermissionChecker.class);
Logger.getLogger().exception(event.getMessage().getAuthor(), "Failed to check for sufficient control role.", e, PermissionChecker.class);
return true;
}
return true;
}
public static boolean hasSufficientRole(Guild guild, Member member) {
public static boolean hasSufficientRole(IGuild guild, IUser user) {
//TODO: Figure out exactly what is causing a NPE here...
try {
GuildSettings settings = DatabaseManager.getManager().getSettings(guild.getId());
GuildSettings settings = DatabaseManager.getManager().getSettings(guild.getLongID());
if (!settings.getControlRole().equalsIgnoreCase("everyone")) {
String roleId = settings.getControlRole();
Role role = null;
IRole role = null;
for (Role r : guild.getRoles().toIterable()) {
if (r.getId().asString().equals(roleId)) {
for (IRole r : guild.getRoles()) {
if (r.getStringID().equals(roleId)) {
role = r;
break;
}
}
if (role != null) {
for (Role r : member.getRoles().toIterable()) {
if (r.getId().equals(role.getId()) || r.getPosition().block() > role.getPosition().block())
for (IRole r : user.getRolesForGuild(guild)) {
if (r.getStringID().equals(role.getStringID()) || r.getPosition() > role.getPosition())
return true;
}
@@ -91,26 +88,18 @@ public class PermissionChecker {
}
} catch (Exception e) {
//Something broke so we will harmlessly allow access and notify the dev team
Logger.getLogger().exception(member, "Failed to check for sufficient control role.", e, PermissionChecker.class);
Logger.getLogger().exception(user, "Failed to check for sufficient control role.", e, PermissionChecker.class);
return true;
}
return true;
}
public static boolean hasManageServerRole(MessageCreateEvent event) {
//PermissionSet set = event.getMessage().getChannel().ofType(TextChannel.class)
//.flatMap(c -> c.getEffectivePermissions(event.getMember().get().getId())).block();
//return set.contains(Permission.MANAGE_GUILD);
return true;
public static boolean hasManageServerRole(MessageReceivedEvent event) {
return event.getMessage().getAuthor().getPermissionsForGuild(event.getMessage().getGuild()).contains(Permissions.MANAGE_SERVER);
}
public static boolean hasManageServerRole(Member m) {
for (Role r : m.getRoles().toIterable()) {
if (r.getPermissions().contains(Permission.MANAGE_GUILD))
return true;
}
return false;
public static boolean hasManageServerRole(IGuild g, IUser u) {
return u.getPermissionsForGuild(g).contains(Permissions.MANAGE_SERVER);
}
/**
@@ -119,22 +108,24 @@ public class PermissionChecker {
* @param event The event received to check for the correct channel.
* @return <code>true</code> if in correct channel, otherwise <code>false</code>.
*/
public static boolean isCorrectChannel(MessageCreateEvent event, GuildSettings settings) {
public static boolean isCorrectChannel(MessageReceivedEvent event) {
try {
GuildSettings settings = DatabaseManager.getManager().getSettings(event.getGuild().getLongID());
if (settings.getDiscalChannel().equalsIgnoreCase("all"))
return true;
GuildChannel channel = null;
for (GuildChannel c : event.getGuild().block().getChannels().toIterable()) {
if (c.getId().toString().equals(settings.getDiscalChannel())) {
IChannel channel = null;
for (IChannel c : event.getMessage().getGuild().getChannels()) {
if (c.getStringID().equals(settings.getDiscalChannel())) {
channel = c;
break;
}
}
if (channel != null)
return event.getMessage().getChannel().block().getId().equals(channel.getId());
return event.getMessage().getChannel().getStringID().equals(channel.getStringID());
//If we got here, the channel no longer exists, reset data and return true.
settings.setDiscalChannel("all");
@@ -142,17 +133,12 @@ public class PermissionChecker {
return true;
} catch (Exception e) {
//Catch any errors so that the bot always responds...
Logger.getLogger().exception(event.getMessage().getAuthor().block(), "Failed to check for discal channel.", e, PermissionChecker.class);
Logger.getLogger().exception(event.getMessage().getAuthor(), "Failed to check for discal channel.", e, PermissionChecker.class);
return true;
}
}
public static boolean botHasMessageManagePerms(MessageCreateEvent event) {
//PermissionSet set = event.getMessage().getChannel().ofType(TextChannel.class)
//.flatMap(c -> c.getEffectivePermissions(c.getClient().getSelfId().get())).block();
//return set.contains(Permission.MANAGE_MESSAGES);
return true;
public static boolean botHasMessageManagePerms(MessageReceivedEvent event) {
return event.getGuild().getClient().getOurUser().getPermissionsForGuild(event.getMessage().getGuild()).contains(Permissions.MANAGE_MESSAGES);
}
}
}
@@ -1,10 +1,13 @@
package org.dreamexposure.discal.core.utils;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.object.entity.Guild;
import discord4j.core.object.entity.Message;
import discord4j.core.object.entity.Role;
import discord4j.core.object.util.Snowflake;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.handle.obj.IGuild;
import sx.blah.discord.handle.obj.IMessage;
import sx.blah.discord.handle.obj.IRole;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* Created by Nova Fox on 3/29/2017.
@@ -13,89 +16,84 @@ import discord4j.core.object.util.Snowflake;
*/
@SuppressWarnings("ConstantConditions")
public class RoleUtils {
public static Role getRoleFromMention(String mention, MessageCreateEvent event) {
for (Role r : event.getMessage().getGuild().block().getRoles().toIterable()) {
if (mention.equalsIgnoreCase("<@&" + r.getId().asString() + ">") || mention.equalsIgnoreCase("<@&!" + r.getId().asString() + ">"))
public static IRole getRoleFromMention(String mention, MessageReceivedEvent event) {
for (IRole r : event.getMessage().getGuild().getRoles()) {
if (mention.equalsIgnoreCase("<@&" + r.getStringID() + ">") || mention.equalsIgnoreCase("<@&!" + r.getStringID() + ">"))
return r;
}
return null;
}
public static Role getRoleFromID(String id, MessageCreateEvent event) {
for (Role r : event.getMessage().getGuild().block().getRoles().toIterable()) {
if (id.equals(r.getId().asString()) || id.equals(r.getName()))
public static IRole getRoleFromID(String id, MessageReceivedEvent event) {
for (IRole r : event.getMessage().getGuild().getRoles()) {
if (id.equals(r.getStringID()) || id.equals(r.getName()))
return r;
}
return null;
}
public static Role getRoleFromID(String id, Guild guild) {
for (Role r : guild.getRoles().toIterable()) {
if (id.equalsIgnoreCase(r.getId().asString()) || id.equals(r.getName()))
public static IRole getRoleFromID(String id, IGuild guild) {
for (IRole r : guild.getRoles()) {
if (id.equalsIgnoreCase(r.getStringID()) || id.equals(r.getName()))
return r;
}
return null;
}
public static boolean roleExists(String id, MessageCreateEvent event) {
for (Role r : event.getGuild().block().getRoles().toIterable()) {
if (id.equals(r.getId().asString()))
public static boolean roleExists(String id, MessageReceivedEvent event) {
for (IRole r : event.getMessage().getGuild().getRoles()) {
if (id.equals(r.getStringID()))
return true;
}
return false;
}
public static boolean roleExists(String id, Guild guild) {
for (Role r : guild.getRoles().toIterable()) {
if (id.equals(r.getId().asString()))
public static boolean roleExists(String id, IGuild guild) {
for (IRole r : guild.getRoles()) {
if (id.equals(r.getStringID()))
return true;
}
return false;
}
public static String getRoleNameFromID(String id, MessageCreateEvent event) {
Role role = getRoleFromID(id, event);
public static String getRoleNameFromID(String id, MessageReceivedEvent event) {
IRole role = getRoleFromID(id, event);
if (role != null)
return role.getName();
else
return "ERROR";
}
public static String getRoleNameFromID(String id, Guild guild) {
Role role = getRoleFromID(id, guild);
public static String getRoleNameFromID(String id, IGuild guild) {
IRole role = getRoleFromID(id, guild);
if (role != null)
return role.getName();
else
return "ERROR";
}
public static Snowflake getRole(String toLookFor, Message m) {
return getRole(toLookFor, m.getGuild().block());
public static long getRole(String toLookFor, IMessage m) {
return getRole(toLookFor, m.getGuild());
}
public static Snowflake getRole(String toLookFor, Guild guild) {
public static long getRole(String toLookFor, IGuild guild) {
toLookFor = GeneralUtils.trim(toLookFor);
final String lower = toLookFor.toLowerCase();
if (lower.matches("@&[0-9]+") || lower.matches("[0-9]+")) {
final String parse = toLookFor.replaceAll("[<@&>]", "");
Role exists = getRoleFromID((toLookFor.replaceAll("[<@&>]", "")), guild);
IRole exists = guild.getRoleByID(Long.parseLong(toLookFor.replaceAll("[<@&>]", "")));
if (exists != null)
return exists.getId();
return exists.getLongID();
}
return getRoleFromID(toLookFor, guild).getId();
}
public static Role getRoleFromSearch(String toLookFor, Guild guild) {
toLookFor = GeneralUtils.trim(toLookFor);
final String lower = toLookFor.toLowerCase();
if (lower.matches("@&[0-9]+") || lower.matches("[0-9]+")) {
final String parse = toLookFor.replaceAll("[<@&>]", "");
Role exists = getRoleFromID((toLookFor.replaceAll("[<@&>]", "")), guild);
if (exists != null)
return exists;
}
List<IRole> roles = new ArrayList<>();
List<IRole> rs = guild.getRoles();
roles.addAll(rs.stream().filter(r -> r.getName().equalsIgnoreCase(lower)).collect(Collectors.toList()));
roles.addAll(rs.stream().filter(r -> r.getName().toLowerCase().contains(lower)).collect(Collectors.toList()));
if (!roles.isEmpty())
return roles.get(0).getLongID();
return getRoleFromID(toLookFor, guild);
return 0;
}
}
@@ -1,14 +1,13 @@
package org.dreamexposure.discal.core.utils;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.object.entity.Guild;
import discord4j.core.object.entity.Member;
import discord4j.core.object.entity.Message;
import discord4j.core.object.entity.User;
import discord4j.core.object.util.Snowflake;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.handle.obj.IGuild;
import sx.blah.discord.handle.obj.IMessage;
import sx.blah.discord.handle.obj.IUser;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* Created by Nova Fox on 3/29/2017.
@@ -17,18 +16,17 @@ import java.util.List;
*/
@SuppressWarnings("ConstantConditions")
public class UserUtils {
public static Member getUserFromMention(String mention, MessageCreateEvent event) {
for (Member u : event.getGuild().block().getMembers().toIterable()) {
if (mention.equalsIgnoreCase("<@" + u.getId().asString() + ">") || mention.equalsIgnoreCase("<@!" + u.getId().asString() + ">"))
public static IUser getUserFromMention(String mention, MessageReceivedEvent event) {
for (IUser u : event.getGuild().getUsers()) {
if (mention.equalsIgnoreCase("<@" + u.getStringID() + ">") || mention.equalsIgnoreCase("<@!" + u.getStringID() + ">"))
return u;
}
return null;
}
public static Snowflake getUserID(String toLookFor, MessageCreateEvent m) {
return getUserID(toLookFor, m.getGuild().block());
public static long getUser(String toLookFor, IMessage m) {
return getUser(toLookFor, m.getGuild());
}
/**
@@ -38,80 +36,73 @@ public class UserUtils {
* @param guild The guild
* @return The user if found, null otherwise
*/
@SuppressWarnings("OptionalGetWithoutIsPresent")
public static Snowflake getUserID(String toLookFor, Guild guild) {
public static long getUser(String toLookFor, IGuild guild) {
toLookFor = GeneralUtils.trim(toLookFor);
final String lower = toLookFor.toLowerCase();
if (lower.matches("@!?[0-9]+") || lower.matches("[0-9]+")) {
final String parse = toLookFor.replaceAll("[<@!>]", "");
String finalToLookFor = toLookFor;
Member exists = guild.getMembers().filter(m -> m.getId().asString().equalsIgnoreCase(finalToLookFor.replaceAll("[<@!>]", ""))).blockLast();
IUser exists = guild.getUserByID(Long.parseLong(toLookFor.replaceAll("[<@!>]", "")));
if (exists != null)
return exists.getId();
return exists.getLongID();
}
List<Member> users = new ArrayList<>();
for (Member m : guild.getMembers().toIterable()) {
if (m.getUsername().equalsIgnoreCase(lower))
users.add(m);
if (m.getUsername().toLowerCase().contains(lower))
users.add(m);
if ((m.getUsername() + "#" + m.getDiscriminator()).equalsIgnoreCase(lower))
users.add(m);
if (m.getDiscriminator().equalsIgnoreCase(lower))
users.add(m);
if (m.getDisplayName().equalsIgnoreCase(lower))
users.add(m);
if (m.getDisplayName().toLowerCase().equalsIgnoreCase(lower))
users.add(m);
if (m.getNickname().get().equalsIgnoreCase(lower))
users.add(m);
if (m.getNickname().get().toLowerCase().contains(lower))
users.add(m);
}
List<IUser> users = new ArrayList<>();
List<IUser> us = guild.getUsers();
users.addAll(us.stream().filter(u -> u.getName().equalsIgnoreCase(lower)).collect(Collectors.toList()));
users.addAll(us.stream().filter(u -> u.getName().toLowerCase().contains(lower)).collect(Collectors.toList()));
users.addAll(us.stream().filter(u -> (u.getName() + "#" + u.getDiscriminator()).equalsIgnoreCase(lower)).collect(Collectors.toList()));
users.addAll(us.stream().filter(u -> u.getDiscriminator().equalsIgnoreCase(lower)).collect(Collectors.toList()));
users.addAll(us.stream().filter(u -> u.getDisplayName(guild).equalsIgnoreCase(lower)).collect(Collectors.toList()));
users.addAll(us.stream().filter(u -> u.getDisplayName(guild).toLowerCase().contains(lower)).collect(Collectors.toList()));
if (!users.isEmpty())
return users.get(0).getId();
return users.get(0).getLongID();
return Snowflake.of(0);
return 0;
}
public static Member getUser(String toLookFor, Message m, Guild guild) {
public static IUser getIUser(String toLookFor, IMessage m, IGuild guild) {
toLookFor = toLookFor.trim();
final String lower = toLookFor.toLowerCase();
Member res = null;
IUser res = null;
if (m != null && m.getUserMentions().count().block() > 0)
res = m.getUserMentions().blockFirst().asMember(guild.getId()).block();
if (m != null && !m.getMentions().isEmpty())
res = m.getMentions().get(0);
if (toLookFor.matches("<@!?[0-9]+>")) {
Member u = getUserFromID(toLookFor.replaceAll("[^0-9]", ""), guild);
IUser u = guild.getUserByID(Long.parseUnsignedLong(toLookFor.replaceAll("[^0-9]", "")));
if (u != null)
return u;
}
return guild.getClient().getMemberById(guild.getId(), getUserID(toLookFor, guild)).block();
List<IUser> users = guild.getUsers().stream()
.filter(u -> u.getName().toLowerCase().contains(lower)
|| u.getName().equalsIgnoreCase(lower) || u.getStringID().equals(lower)
|| u.getDisplayName(guild).toLowerCase().contains(lower)
|| u.getDisplayName(guild).equalsIgnoreCase(lower))
.collect(Collectors.toList());
if (!users.isEmpty())
res = users.get(0);
return res;
}
private static Member getUserFromID(String id, Guild guild) {
private static IUser getUserFromID(String id, IGuild guild) {
try {
return guild.getClient().getMemberById(guild.getId(), Snowflake.of(id)).block();
return guild.getUserByID(Long.parseUnsignedLong(id));
} catch (Exception e) {
//Ignore. Probably invalid ID.
return null;
}
}
public static ArrayList<User> getUsers(ArrayList<String> userIds, Guild guild) {
ArrayList<User> users = new ArrayList<>();
public static ArrayList<IUser> getUsers(ArrayList<String> userIds, IGuild guild) {
ArrayList<IUser> users = new ArrayList<>();
for (String u : userIds) {
User user = getUserFromID(u, guild);
IUser user = getUserFromID(u, guild);
if (user != null)
users.add(user);
}
+3 -79
View File
@@ -49,10 +49,6 @@
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
<repository>
<id>repository.spring.milestone</id>
<url>http://repo.spring.io/milestone</url>
</repository>
<repository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
@@ -72,7 +68,6 @@
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>RELEASE</version>
<optional>false</optional>
</dependency>
<!--NovaUtils API-->
<dependency>
@@ -81,80 +76,40 @@
<version>1.0.0-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
<optional>false</optional>
</dependency>
<!--Discord4J API-->
<dependency>
<groupId>com.discord4j.discord4j</groupId>
<artifactId>discord4j-core</artifactId>
<version>074aff1</version>
<exclusions>
<!--
<exclusion>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
</exclusion>
-->
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</exclusion>
</exclusions>
<groupId>com.discord4j</groupId>
<artifactId>Discord4J</artifactId>
<version>2.10.1</version>
</dependency>
<!-- Allows you to log events from Discord4J -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.7</version>
<optional>false</optional>
</dependency>
<!--discordbots.net API library-->
<dependency>
<groupId>com.github.DiscordBotList</groupId>
<artifactId>Java-Wrapper</artifactId>
<version>v1.0</version>
<optional>false</optional>
</dependency>
<!--Google Calendar API-->
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
<version>1.22.0</version>
<optional>false</optional>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-calendar</artifactId>
<version>v3-rev225-1.22.0</version>
<optional>false</optional>
</dependency>
<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client-jetty</artifactId>
<version>1.22.0</version>
<optional>false</optional>
<exclusions>
<exclusion>
<groupId>org.mortbay.jetty</groupId>
@@ -167,61 +122,30 @@
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>LATEST</version>
<optional>false</optional>
</dependency>
<!--JSON API-->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
<optional>false</optional>
</dependency>
<!--Joda Time-->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.9</version>
<optional>false</optional>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
<optional>false</optional>
</dependency>
<!--OkHTTP API-->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.10.0</version>
<optional>false</optional>
</dependency>
<!--Reactor Core-->
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
<version>3.2.0.M3</version>
<optional>false</optional>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.6</version>
<optional>false</optional>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.6</version>
<optional>false</optional>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.6</version>
<optional>false</optional>
</dependency>
</dependencies>
-8
View File
@@ -19,14 +19,6 @@
<thymeleaf-layout-dialect.version>2.2.1</thymeleaf-layout-dialect.version>
</properties>
<!--
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
</parent>
-->
<parent>
<groupId>org.dreamexposure</groupId>
<artifactId>DisCal</artifactId>
@@ -1,6 +1,5 @@
package org.dreamexposure.discal.server.api.endpoints.v1;
import discord4j.core.object.util.Snowflake;
import org.dreamexposure.discal.core.database.DatabaseManager;
import org.dreamexposure.discal.core.enums.announcement.AnnouncementType;
import org.dreamexposure.discal.core.enums.event.EventColor;
@@ -47,7 +46,7 @@ public class AnnouncementEndpoint {
Long guildId = jsonMain.getLong("guild_id");
String announcementId = jsonMain.getString("id");
Announcement a = DatabaseManager.getManager().getAnnouncement(UUID.fromString(announcementId), Snowflake.of(guildId));
Announcement a = DatabaseManager.getManager().getAnnouncement(UUID.fromString(announcementId), guildId);
if (a != null) {
@@ -103,7 +102,7 @@ public class AnnouncementEndpoint {
JSONObject jsonMain = new JSONObject(requestBody);
Long guildId = jsonMain.getLong("guild_id");
Announcement a = new Announcement(Snowflake.of(guildId));
Announcement a = new Announcement(guildId);
JSONObject body = new JSONObject(requestBody);
a.setAnnouncementChannelId(body.getString("channel"));
@@ -165,7 +164,7 @@ public class AnnouncementEndpoint {
Long guildId = jsonMain.getLong("guild_id");
String announcementId = jsonMain.getString("id");
Announcement a = DatabaseManager.getManager().getAnnouncement(UUID.fromString(announcementId), Snowflake.of(guildId));
Announcement a = DatabaseManager.getManager().getAnnouncement(UUID.fromString(announcementId), guildId);
if (a != null) {
@@ -235,7 +234,7 @@ public class AnnouncementEndpoint {
long guildId = jsonMain.getLong("guild_id");
String announcementId = jsonMain.getString("id");
if (DatabaseManager.getManager().getAnnouncement(UUID.fromString(announcementId), Snowflake.of(guildId)) != null) {
if (DatabaseManager.getManager().getAnnouncement(UUID.fromString(announcementId), guildId) != null) {
if (DatabaseManager.getManager().deleteAnnouncement(announcementId)) {
response.setContentType("application/json");
response.setStatus(200);
@@ -284,7 +283,7 @@ public class AnnouncementEndpoint {
ArrayList<JSONObject> announcements = new ArrayList<>();
if (amount == -1) {
for (Announcement a : DatabaseManager.getManager().getAnnouncements(Snowflake.of(guildId))) {
for (Announcement a : DatabaseManager.getManager().getAnnouncements(guildId)) {
JSONObject obj = new JSONObject();
obj.put("id", a.getAnnouncementId().toString());
obj.put("channel", a.getAnnouncementChannelId());
@@ -303,7 +302,7 @@ public class AnnouncementEndpoint {
}
} else {
int i = 0;
for (Announcement a : DatabaseManager.getManager().getAnnouncements(Snowflake.of(guildId))) {
for (Announcement a : DatabaseManager.getManager().getAnnouncements(guildId)) {
if (i < amount) {
JSONObject obj = new JSONObject();
obj.put("id", a.getAnnouncementId().toString());
@@ -1,6 +1,5 @@
package org.dreamexposure.discal.server.api.endpoints.v1;
import discord4j.core.object.util.Snowflake;
import org.dreamexposure.discal.core.database.DatabaseManager;
import org.dreamexposure.discal.core.logger.Logger;
import org.dreamexposure.discal.core.object.calendar.CalendarData;
@@ -44,7 +43,7 @@ public class CalendarEndpoint {
long guildId = jsonMain.getLong("guild_id");
int calNumber = jsonMain.getInt("number");
CalendarData calendar = DatabaseManager.getManager().getCalendar(Snowflake.of(guildId), calNumber);
CalendarData calendar = DatabaseManager.getManager().getCalendar(guildId, calNumber);
if (!calendar.getCalendarAddress().equalsIgnoreCase("primary")) {
@@ -92,7 +91,7 @@ public class CalendarEndpoint {
long guildId = jsonMain.getLong("guild_id");
ArrayList<JSONObject> cals = new ArrayList<>();
for (CalendarData cal : DatabaseManager.getManager().getAllCalendars(Snowflake.of(guildId))) {
for (CalendarData cal : DatabaseManager.getManager().getAllCalendars(guildId)) {
if (!cal.getCalendarAddress().equalsIgnoreCase("primary")) {
JSONObject body = new JSONObject();
body.put("number", cal.getCalendarNumber());
@@ -5,7 +5,6 @@ import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.model.Event;
import com.google.api.services.calendar.model.EventDateTime;
import com.google.api.services.calendar.model.Events;
import discord4j.core.object.util.Snowflake;
import org.dreamexposure.discal.core.calendar.CalendarAuth;
import org.dreamexposure.discal.core.crypto.KeyGenerator;
import org.dreamexposure.discal.core.database.DatabaseManager;
@@ -62,11 +61,11 @@ public class EventEndpoint {
if (DiscordAccountHandler.getHandler().hasAccount(request)) {
Map m = DiscordAccountHandler.getHandler().getAccount(request);
WebGuild g = (WebGuild) m.get("selected");
g.setSettings(DatabaseManager.getManager().getSettings(Snowflake.of(g.getId())));
g.setSettings(DatabaseManager.getManager().getSettings(Long.valueOf(g.getId())));
settings = g.getSettings();
} else {
long guildId = requestBody.getLong("guild_id");
settings = DatabaseManager.getManager().getSettings(Snowflake.of(guildId));
settings = DatabaseManager.getManager().getSettings(guildId);
}
//okay, lets actually get the month's events.
@@ -128,11 +127,11 @@ public class EventEndpoint {
if (DiscordAccountHandler.getHandler().hasAccount(request)) {
Map m = DiscordAccountHandler.getHandler().getAccount(request);
WebGuild g = (WebGuild) m.get("selected");
g.setSettings(DatabaseManager.getManager().getSettings(Snowflake.of(g.getId())));
g.setSettings(DatabaseManager.getManager().getSettings(Long.valueOf(g.getId())));
settings = g.getSettings();
} else {
long guildId = requestBody.getLong("guild_id");
settings = DatabaseManager.getManager().getSettings(Snowflake.of(guildId));
settings = DatabaseManager.getManager().getSettings(guildId);
}
//okay, lets actually get the month's events.
@@ -234,11 +233,11 @@ public class EventEndpoint {
if (DiscordAccountHandler.getHandler().hasAccount(request)) {
Map m = DiscordAccountHandler.getHandler().getAccount(request);
WebGuild g = (WebGuild) m.get("selected");
g.setSettings(DatabaseManager.getManager().getSettings(Snowflake.of(g.getId())));
g.setSettings(DatabaseManager.getManager().getSettings(Long.valueOf(g.getId())));
settings = g.getSettings();
} else {
long guildId = body.getLong("guild_id");
settings = DatabaseManager.getManager().getSettings(Snowflake.of(guildId));
settings = DatabaseManager.getManager().getSettings(guildId);
}
//Okay, time to update the event
@@ -338,11 +337,11 @@ public class EventEndpoint {
if (DiscordAccountHandler.getHandler().hasAccount(request)) {
Map m = DiscordAccountHandler.getHandler().getAccount(request);
WebGuild g = (WebGuild) m.get("selected");
g.setSettings(DatabaseManager.getManager().getSettings(Snowflake.of(g.getId())));
g.setSettings(DatabaseManager.getManager().getSettings(Long.valueOf(g.getId())));
settings = g.getSettings();
} else {
long guildId = body.getLong("guild_id");
settings = DatabaseManager.getManager().getSettings(Snowflake.of(guildId));
settings = DatabaseManager.getManager().getSettings(guildId);
}
//Okay, time to create the event
@@ -451,11 +450,11 @@ public class EventEndpoint {
if (DiscordAccountHandler.getHandler().hasAccount(request)) {
Map m = DiscordAccountHandler.getHandler().getAccount(request);
WebGuild g = (WebGuild) m.get("selected");
g.setSettings(DatabaseManager.getManager().getSettings(Snowflake.of(g.getId())));
g.setSettings(DatabaseManager.getManager().getSettings(Long.valueOf(g.getId())));
settings = g.getSettings();
} else {
long guildId = requestBody.getLong("guild_id");
settings = DatabaseManager.getManager().getSettings(Snowflake.of(guildId));
settings = DatabaseManager.getManager().getSettings(guildId);
}
//okay, time to properly delete the event
@@ -1,6 +1,5 @@
package org.dreamexposure.discal.server.api.endpoints.v1;
import discord4j.core.object.util.Snowflake;
import org.dreamexposure.discal.core.database.DatabaseManager;
import org.dreamexposure.discal.core.logger.Logger;
import org.dreamexposure.discal.core.object.GuildSettings;
@@ -42,7 +41,7 @@ public class GuildEndpoint {
JSONObject jsonMain = new JSONObject(requestBody);
Long guildId = jsonMain.getLong("guild_id");
GuildSettings settings = DatabaseManager.getManager().getSettings(Snowflake.of(guildId));
GuildSettings settings = DatabaseManager.getManager().getSettings(guildId);
response.setContentType("application/json");
response.setStatus(200);
@@ -90,7 +89,7 @@ public class GuildEndpoint {
Long guildId = body.getLong("guild_id");
GuildSettings settings = DatabaseManager.getManager().getSettings(Snowflake.of(guildId));
GuildSettings settings = DatabaseManager.getManager().getSettings(guildId);
if (body.has("control_role"))
settings.setControlRole(body.getString("control_role"));
@@ -1,6 +1,5 @@
package org.dreamexposure.discal.server.api.endpoints.v1;
import discord4j.core.object.util.Snowflake;
import org.dreamexposure.discal.core.database.DatabaseManager;
import org.dreamexposure.discal.core.logger.Logger;
import org.dreamexposure.discal.core.object.event.RsvpData;
@@ -43,7 +42,7 @@ public class RsvpEndpoint {
long guildId = jsonMain.getLong("guild_id");
String eventId = jsonMain.getString("id");
RsvpData rsvp = DatabaseManager.getManager().getRsvpData(Snowflake.of(guildId), eventId);
RsvpData rsvp = DatabaseManager.getManager().getRsvpData(guildId, eventId);
JSONObject body = new JSONObject();
body.put("on_time", rsvp.getGoingOnTime());
@@ -85,7 +84,7 @@ public class RsvpEndpoint {
long guildId = jsonMain.getLong("guild_id");
String eventId = jsonMain.getString("id");
RsvpData rsvp = DatabaseManager.getManager().getRsvpData(Snowflake.of(guildId), eventId);
RsvpData rsvp = DatabaseManager.getManager().getRsvpData(guildId, eventId);
if (jsonMain.has("on_time")) {
rsvp.getGoingOnTime().clear();
@@ -2,7 +2,6 @@ package org.dreamexposure.discal.server.handler;
import com.google.api.services.calendar.model.AclRule;
import com.google.api.services.calendar.model.Calendar;
import discord4j.core.object.util.Snowflake;
import org.dreamexposure.discal.core.calendar.CalendarAuth;
import org.dreamexposure.discal.core.database.DatabaseManager;
import org.dreamexposure.discal.core.enums.announcement.AnnouncementType;
@@ -166,7 +165,7 @@ public class DashboardHandler {
WebGuild g = (WebGuild) m.get("selected");
if (g.isManageServer()) {
g.setSettings(DatabaseManager.getManager().getSettings(Snowflake.of(g.getId())));
g.setSettings(DatabaseManager.getManager().getSettings(Long.valueOf(g.getId())));
g.getSettings().setPrefix(queryParams.get("prefix"));
DatabaseManager.getManager().updateSettings(g.getSettings());
@@ -177,7 +176,7 @@ public class DashboardHandler {
WebGuild g = (WebGuild) m.get("selected");
if (g.isManageServer()) {
g.setSettings(DatabaseManager.getManager().getSettings(Snowflake.of(g.getId())));
g.setSettings(DatabaseManager.getManager().getSettings(Long.valueOf(g.getId())));
g.getSettings().setLang(queryParams.get("lang"));
DatabaseManager.getManager().updateSettings(g.getSettings());
@@ -188,7 +187,7 @@ public class DashboardHandler {
WebGuild g = (WebGuild) m.get("selected");
if (g.isManageServer()) {
g.setSettings(DatabaseManager.getManager().getSettings(Snowflake.of(g.getId())));
g.setSettings(DatabaseManager.getManager().getSettings(Long.valueOf(g.getId())));
WebRole role = g.getRole((Long.valueOf(queryParams.get("con-role"))));
@@ -213,7 +212,7 @@ public class DashboardHandler {
WebGuild g = (WebGuild) m.get("selected");
if (g.isDiscalRole()) {
g.setSettings(DatabaseManager.getManager().getSettings(Snowflake.of(g.getId())));
g.setSettings(DatabaseManager.getManager().getSettings(Long.valueOf(g.getId())));
for (WebChannel wc : g.getChannels()) {
@@ -235,7 +234,7 @@ public class DashboardHandler {
WebGuild g = (WebGuild) m.get("selected");
if (g.isManageServer()) {
g.setSettings(DatabaseManager.getManager().getSettings(Snowflake.of(g.getId())));
g.setSettings(DatabaseManager.getManager().getSettings(Long.valueOf(g.getId())));
if (g.getSettings().isPatronGuild()) {
if (queryParams.containsKey("value"))
@@ -253,7 +252,7 @@ public class DashboardHandler {
//Guess this one never checked for perms so...
g.setSettings(DatabaseManager.getManager().getSettings(Snowflake.of(g.getId())));
g.setSettings(DatabaseManager.getManager().getSettings(Long.valueOf(g.getId())));
if (queryParams.containsKey("value"))
g.getSettings().setSimpleAnnouncements(true);
@@ -367,7 +366,7 @@ public class DashboardHandler {
scope.setType("default");
rule.setScope(scope).setRole("reader");
service.acl().insert(confirmed.getId(), rule).execute();
CalendarData calendarData = new CalendarData(Snowflake.of(g.getId()), 1);
CalendarData calendarData = new CalendarData(Long.valueOf(g.getId()), 1);
calendarData.setCalendarId(confirmed.getId());
calendarData.setCalendarAddress(confirmed.getId());
DatabaseManager.getManager().updateCalendar(calendarData);
@@ -404,7 +403,7 @@ public class DashboardHandler {
WebGuild g = (WebGuild) m.get("selected");
if (g.isDiscalRole()) {
Announcement a = new Announcement(Snowflake.of(g.getId()));
Announcement a = new Announcement(Long.valueOf(g.getId()));
a.setAnnouncementChannelId(channelId);
a.setMinutesBefore(Integer.valueOf(minutesRaw));
a.setHoursBefore(Integer.valueOf(hoursRaw));
@@ -429,7 +428,7 @@ public class DashboardHandler {
//Update WebGuild to display correctly...
g.getAnnouncements().clear();
g.getAnnouncements().addAll(DatabaseManager.getManager().getAnnouncements(Snowflake.of(g.getId())));
g.getAnnouncements().addAll(DatabaseManager.getManager().getAnnouncements(Long.valueOf(g.getId())));
}
//Finally redirect back to the dashboard
response.sendRedirect("/dashboard/guild/announcements");
@@ -453,11 +452,11 @@ public class DashboardHandler {
WebGuild g = (WebGuild) m.get("selected");
if (g.isManageServer()) {
CalendarData data = DatabaseManager.getManager().getMainCalendar(Snowflake.of(g.getId()));
GuildSettings settings = DatabaseManager.getManager().getSettings(Snowflake.of(g.getId()));
CalendarData data = DatabaseManager.getManager().getMainCalendar(Long.valueOf(g.getId()));
GuildSettings settings = DatabaseManager.getManager().getSettings(Long.valueOf(g.getId()));
CalendarUtils.deleteCalendar(data, settings);
g.setCalendar(new WebCalendar().fromCalendar(DatabaseManager.getManager().getMainCalendar(Snowflake.of(g.getId())), DatabaseManager.getManager().getSettings(Snowflake.of(g.getId()))));
g.setCalendar(new WebCalendar().fromCalendar(DatabaseManager.getManager().getMainCalendar(Long.valueOf(g.getId())), DatabaseManager.getManager().getSettings(Long.valueOf(g.getId()))));
response.sendRedirect("/dashboard/guild/calendar");
return "redirect:/dashboard/guild/calendar";
} else {
@@ -486,7 +485,7 @@ public class DashboardHandler {
//Update announcements list to display correctly.
g.getAnnouncements().clear();
g.getAnnouncements().addAll(DatabaseManager.getManager().getAnnouncements(Snowflake.of(g.getId())));
g.getAnnouncements().addAll(DatabaseManager.getManager().getAnnouncements(Long.valueOf(g.getId())));
}
response.sendRedirect("/dashboard/guild/announcements");
return "redirect:/dashboard/guild/announcements";
@@ -508,7 +507,7 @@ public class DashboardHandler {
WebGuild g = (WebGuild) m.get("selected");
if (g.isManageServer()) {
Announcement a = DatabaseManager.getManager().getAnnouncement(UUID.fromString(announcementId), Snowflake.of(g.getId()));
Announcement a = DatabaseManager.getManager().getAnnouncement(UUID.fromString(announcementId), Long.valueOf(g.getId()));
a.setAnnouncementChannelId(queryParams.get("channel"));
a.setAnnouncementType(AnnouncementType.fromValue(queryParams.get("type")));
@@ -532,7 +531,7 @@ public class DashboardHandler {
//Update announcements list to display correctly.
g.getAnnouncements().clear();
g.getAnnouncements().addAll(DatabaseManager.getManager().getAnnouncements(Snowflake.of(g.getId())));
g.getAnnouncements().addAll(DatabaseManager.getManager().getAnnouncements(Long.valueOf(g.getId())));
}
response.sendRedirect("/dashboard/guild/announcements");
return "redirect:/dashboard/guild/announcements";