@Override public void unpin(IMessage message) { PermissionUtils.requirePermissions(this, client.getOurUser(), Permissions.MANAGE_MESSAGES); if (!message.getChannel().equals(this)) throw new DiscordException("Message channel doesn't match current channel!"); if (!message.isPinned()) throw new DiscordException("Message is not pinned!"); ((DiscordClientImpl) client).REQUESTS.DELETE.makeRequest(DiscordEndpoints.CHANNELS + id + "/pins/" + message.getStringID()); }
@Override public void pin(IMessage message) { PermissionUtils.requirePermissions(this, client.getOurUser(), Permissions.MANAGE_MESSAGES); if (!message.getChannel().equals(this)) throw new DiscordException("Message channel doesn't match current channel!"); if (message.isPinned()) throw new DiscordException("Message already pinned!"); ((DiscordClientImpl) client).REQUESTS.PUT.makeRequest(DiscordEndpoints.CHANNELS + id + "/pins/" + message.getStringID()); }
@Override public List<IUser> getUsers() { List<IUser> users = new ArrayList<>(); String emoji = getEmoji().isUnicode() ? getEmoji().getName() : getEmoji().getName() + ":" + getEmoji().getStringID(); String endpoint = String.format(DiscordEndpoints.REACTIONS_USER_LIST, getMessage().getChannel().getStringID(), getMessage().getStringID(), emoji); String after = "0"; while (users.size() < count) { UserObject[] json = ((DiscordClientImpl) getClient()).REQUESTS.GET.makeRequest( endpoint + "?after=" + after + "&limit=100", UserObject[].class); for (UserObject obj : json) { users.add(getMessage().getShard().getUserByID(Long.parseUnsignedLong(obj.id))); } // Temporary measure so a refactor can be applied later. if (json.length == 0) break; after = json[json.length - 1].id; } return users; }