Created
May 3, 2017 09:57
-
-
Save nerd/0aff8c191af6acc931c36ae5cd5884f0 to your computer and use it in GitHub Desktop.
a module implementation for DiscordEmoji4J - https://github.com/nerd/DiscordEmoji4J
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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()); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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