package discord.jar; import org.json.JSONObject; import java.util.List; public class GroupImpl implements Group, Talkable { private String cid; private String id; private String name; private DiscordAPIImpl api; private Server server; public GroupImpl(String id, String cid, Server server, DiscordAPIImpl api) { this.api = api; this.id = id; this.name = id; this.cid = cid; this.server = server; } @Override public String toString() { return name; } @Override public Server getServer() { return server; } @Override public MessageHistory getMessageHistory() { //if (api.getHistoryContainer().containsKey(id)) // api.getHistoryContainer().put(id, new MessageHistory()); //return api.getHistoryContainer().get(id); return null; } @Override public Message sendMessage(String message) { return sendMessage(new MessageImpl(message, id, id, null, api)); } @Override public Message sendMessage(Message messageInterface) { if (server == null) updateId(); MessageImpl message = (MessageImpl) messageInterface; message.setId(String.valueOf(System.currentTimeMillis())); PacketBuilder pb = new PacketBuilder(api); pb.setType(RequestType.POST); pb.setData(new JSONObject().put("content", message.getMessage()).put("embed", message.getEmbeds().isEmpty() ? new JSONObject() : message.getEmbeds().get(0).toJson()).put("tts", false).toString()); pb.setUrl("https://discordapp.com/api/channels/" + id + "/messages"); String a = pb.makeRequest(); if (a != null) return new MessageImpl(message.getMessage(), new JSONObject(a).getString("id"), id, null, api); return message; } public Webhook getWebhookById(String id) { for (Webhook webhook : getWebhooks()) if (webhook.getId().equals(id)) return webhook; return null; } @Override public Webhook getWebhookByName(String name) { for (Webhook webhook : getWebhooks()) if (webhook.getName().equals(name)) return webhook; return null; } @Override public Webhook createWebhook(String name, String avatar) { PacketBuilder pb = new PacketBuilder(api); pb.setType(RequestType.POST); pb.setData(new JSONObject().put("name", name).put("avatar", avatar).toString()); pb.setUrl("https://discordapp.com/api/channels/" + id + "/webhooks"); String a = pb.makeRequest(); if (a != null) { JSONObject response = new JSONObject(a); return new WebhookImpl(response.getString("name"), response.isNull("avatar") ? null : response.getString("avatar"), response.getString("token"), response.getString("id"), response.getString("channel_id"), api); } return null; } @Override public List<Webhook> getWebhooks() { return getServer().getWebhooksForGroup(id); } private void updateId() { if (id.equals(api.getSelfInfo().getId())) return; PacketBuilder pb = new PacketBuilder(api); pb.setUrl("https://discordapp.com/api/users/" + api.getSelfInfo().getId() + "/channels"); pb.setType(RequestType.POST); pb.setData(new JSONObject().put("recipient_id", id).toString()); String a = pb.makeRequest(); if (a == null) return; id = new JSONObject(a).getString("id"); } public String getCid() { return this.cid; } public void setCid(final String cid) { this.cid = cid; } public String getId() { return this.id; } public void setId(final String id) { this.id = id; } public String getName() { return this.name; } public void setName(final String name) { this.name = name; } }