Skip to content

Instantly share code, notes, and snippets.

@nerd
Created May 3, 2017 09:57
Show Gist options
  • Save nerd/0aff8c191af6acc931c36ae5cd5884f0 to your computer and use it in GitHub Desktop.
Save nerd/0aff8c191af6acc931c36ae5cd5884f0 to your computer and use it in GitHub Desktop.
a module implementation for DiscordEmoji4J - https://github.com/nerd/DiscordEmoji4J
import io.github.nerd.discordemoji.CustomEmoji;
import io.github.nerd.discordemoji.EmojiRegistry;
import sx.blah.discord.api.IDiscordClient;
import sx.blah.discord.api.events.IListener;
import sx.blah.discord.handle.impl.events.guild.GuildCreateEvent;
import sx.blah.discord.handle.impl.events.guild.GuildEmojisUpdateEvent;
import sx.blah.discord.handle.obj.IEmoji;
import sx.blah.discord.handle.obj.IGuild;
import sx.blah.discord.modules.IModule;
import java.util.HashMap;
import java.util.Map;
/**
* @author ashley
* @since 5/3/17 2:41 AM
*/
public class Demoji implements IModule {
private final Map<Long, EmojiRegistry> registries = new HashMap<>();
@Override
public boolean enable(IDiscordClient client) {
for (IGuild guild : client.getGuilds()) {
this.registerEmojisFromGuild(guild);
}
client.getDispatcher().registerListener(new IListener<GuildCreateEvent>() {
@Override
public void handle(GuildCreateEvent event) {
Demoji.this.registerEmojisFromGuild(event.getGuild());
}
});
client.getDispatcher().registerListener(new IListener<GuildEmojisUpdateEvent>() {
@Override
public void handle(GuildEmojisUpdateEvent event) {
if (registries.containsKey(event.getGuild().getLongID()))
registries.remove(event.getGuild().getLongID());
Demoji.this.registerEmojisFromGuild(event.getGuild());
}
});
return true;
}
@Override
public void disable() {
registries.clear();
}
@Override
public String getName() {
return "Demoji";
}
@Override
public String getAuthor() {
return "Ashley Null";
}
@Override
public String getVersion() {
return "1.0";
}
@Override
public String getMinimumDiscord4JVersion() {
return "2.8.0";
}
private void registerEmojisFromGuild(IGuild guild) {
EmojiRegistry registry;
registries.put(guild.getLongID(), registry = new EmojiRegistry());
for (IEmoji emoji : guild.getEmojis()) {
registry.registerEmoji(this.createEmojiFromInternal(emoji));
}
}
private CustomEmoji createEmojiFromInternal(IEmoji emoji) {
return new CustomEmoji(emoji.getLongID(), emoji.getName(), emoji.getGuild().getLongID());
}
public EmojiRegistry getRegistryForGuild(IGuild guild) {
if (!registries.containsKey(guild.getLongID()))
registerEmojisFromGuild(guild);
return registries.get(guild.getLongID());
}
}
import io.github.nerd.demoji.Demoji;
import io.github.nerd.discordemoji.CustomEmoji;
import io.github.nerd.discordemoji.Emoji;
import io.github.nerd.discordemoji.EmojiRegistry;
import sx.blah.discord.api.ClientBuilder;
import sx.blah.discord.api.IDiscordClient;
import sx.blah.discord.api.events.IListener;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
/**
* @author ashley
* @since 5/3/17 2:55 AM
*/
public class TestBot {
public static void main(String... args) {
IDiscordClient client = new ClientBuilder().withToken(args[0]).build();
client.login();
Demoji demoji = new Demoji();
client.getModuleLoader().loadModule(demoji);
client.getDispatcher().registerListener(new IListener<MessageReceivedEvent>() {
@Override
public void handle(MessageReceivedEvent e) {
if (e.getMessage().getContent().startsWith("!emojis")) {
StringBuilder builder = new StringBuilder();
EmojiRegistry registry = demoji.getRegistryForGuild(e.getGuild());
List<Emoji> emojis = new ArrayList<>(registry.getEmojis());
emojis.sort(Comparator.comparing(o -> o.getAliases().get(0))); // optional - makes it pretty
for (Emoji emoji : emojis)
if (emoji instanceof CustomEmoji)
builder.append(emoji.toString()).append('\n');
e.getMessage().reply(builder.toString());
}
}
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment