/** * Deletes the message at the specified index. The deleted message is NOT removed from the collection. * * @param index The index of the message to delete. * @return The deleted message. */ public IMessage delete(int index) { IMessage message = get(index); message.delete(); return message; }
/** * Deletes the message with the given ID. The deleted message is NOT removed from the collection. * * @param id The ID of the message to delete. * @return The deleted message (or null if no message was found). */ public IMessage delete(long id) { IMessage message = get(id); if (message == null) return null; message.delete(); return message; }
@Override public List<IMessage> bulkDelete(List<IMessage> messages) { PermissionUtils.requirePermissions(this, client.getOurUser(), Permissions.MANAGE_MESSAGES); if (isPrivate()) throw new UnsupportedOperationException("Cannot bulk delete in private channels!"); if (messages.size() == 1) { //Skip further processing if only one message was provided messages.get(0).delete(); return messages; } List<IMessage> toDelete = messages.stream() .filter(msg -> msg.getLongID() >= (((System.currentTimeMillis() - 14 * 24 * 60 * 60 * 1000) - 1420070400000L) << 22)) // Taken from Jake .distinct() .collect(Collectors.toList()); if (toDelete.size() < 1) throw new DiscordException("Must provide at least 1 valid message to delete."); if (toDelete.size() == 1) { //Bulk delete is no longer valid, time for normal delete. toDelete.get(0).delete(); return toDelete; } else if (toDelete.size() > 100) { //Above the max limit, time to create a sublist Discord4J.LOGGER.warn(LogMarkers.HANDLE, "More than 100 messages requested to be bulk deleted! Bulk deleting only the first 100..."); toDelete = toDelete.subList(0, 100); } client.REQUESTS.POST.makeRequest( DiscordEndpoints.CHANNELS + id + "/messages/bulk-delete", new BulkDeleteRequest(toDelete)); return toDelete; }