Skip to content

Commit

Permalink
update for lambda-based tag registration
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Oct 28, 2019
1 parent 59d4477 commit 6d707de
Show file tree
Hide file tree
Showing 5 changed files with 241 additions and 299 deletions.
Expand Up @@ -84,11 +84,9 @@ public static void registerTags() {
// @description
// Returns the name of the bot.
// -->
registerTag("name", new TagRunnable.ObjectForm<DiscordBotTag>() {
@Override
public ObjectTag run(Attribute attribute, DiscordBotTag object) {
return new ElementTag(object.bot);
}
registerTag("name", (attribute, object) -> {
return new ElementTag(object.bot);

});

// <--[tag]
Expand All @@ -98,15 +96,13 @@ public ObjectTag run(Attribute attribute, DiscordBotTag object) {
// @description
// Returns the bot's own Discord user object.
// -->
registerTag("self_user", new TagRunnable.ObjectForm<DiscordBotTag>() {
@Override
public ObjectTag run(Attribute attribute, DiscordBotTag object) {
DiscordConnection connection = DenizenDiscordBot.instance.connections.get(object.bot);
if (connection == null) {
return null;
}
return new DiscordUserTag(object.bot, connection.client.getSelf().block());
registerTag("self_user", (attribute, object) -> {
DiscordConnection connection = DenizenDiscordBot.instance.connections.get(object.bot);
if (connection == null) {
return null;
}
return new DiscordUserTag(object.bot, connection.client.getSelf().block());

});

// <--[tag]
Expand All @@ -116,19 +112,17 @@ public ObjectTag run(Attribute attribute, DiscordBotTag object) {
// @description
// Returns a list of all groups (aka 'guilds' or 'servers') that this Discord bot has access to.
// -->
registerTag("groups", new TagRunnable.ObjectForm<DiscordBotTag>() {
@Override
public ObjectTag run(Attribute attribute, DiscordBotTag object) {
DiscordConnection connection = DenizenDiscordBot.instance.connections.get(object.bot);
if (connection == null) {
return null;
}
ListTag list = new ListTag();
for (Guild guild : connection.client.getGuilds().toIterable()) {
list.addObject(new DiscordGroupTag(object.bot, guild));
}
return list;
registerTag("groups", (attribute, object) -> {
DiscordConnection connection = DenizenDiscordBot.instance.connections.get(object.bot);
if (connection == null) {
return null;
}
ListTag list = new ListTag();
for (Guild guild : connection.client.getGuilds().toIterable()) {
list.addObject(new DiscordGroupTag(object.bot, guild));
}
return list;

});

// <--[tag]
Expand All @@ -138,40 +132,38 @@ public ObjectTag run(Attribute attribute, DiscordBotTag object) {
// @description
// Returns the Discord group (aka 'guild' or 'server') that best matches the input name, or null if there's no match.
// -->
registerTag("group", new TagRunnable.ObjectForm<DiscordBotTag>() {
@Override
public ObjectTag run(Attribute attribute, DiscordBotTag object) {
if (!attribute.hasContext(1)) {
return null;
}
DiscordConnection connection = DenizenDiscordBot.instance.connections.get(object.bot);
if (connection == null) {
return null;
}
String matchString = CoreUtilities.toLowerCase(attribute.getContext(1));
Guild bestMatch = null;
for (Guild guild : connection.client.getGuilds().toIterable()) {
String guildName = CoreUtilities.toLowerCase(guild.getName());
if (matchString.equals(guildName)) {
bestMatch = guild;
break;
}
if (guildName.contains(matchString)) {
bestMatch = guild;
}
registerTag("group", (attribute, object) -> {
if (!attribute.hasContext(1)) {
return null;
}
DiscordConnection connection = DenizenDiscordBot.instance.connections.get(object.bot);
if (connection == null) {
return null;
}
String matchString = CoreUtilities.toLowerCase(attribute.getContext(1));
Guild bestMatch = null;
for (Guild guild : connection.client.getGuilds().toIterable()) {
String guildName = CoreUtilities.toLowerCase(guild.getName());
if (matchString.equals(guildName)) {
bestMatch = guild;
break;
}
if (bestMatch == null) {
return null;
if (guildName.contains(matchString)) {
bestMatch = guild;
}
return new DiscordGroupTag(object.bot, bestMatch);
}
if (bestMatch == null) {
return null;
}
return new DiscordGroupTag(object.bot, bestMatch);

});
}

public static ObjectTagProcessor<DiscordBotTag> tagProcessor = new ObjectTagProcessor<>();

public static void registerTag(String name, TagRunnable.ObjectForm<DiscordBotTag> runnable) {
tagProcessor.registerTag(name, runnable);
public static void registerTag(String name, TagRunnable.ObjectInterface<DiscordBotTag> runnable, String... variants) {
tagProcessor.registerTag(name, runnable, variants);
}

@Override
Expand Down
Expand Up @@ -109,22 +109,20 @@ public static void registerTags() {
// @description
// Returns the name of the channel.
// -->
registerTag("name", new TagRunnable.ObjectForm<DiscordChannelTag>() {
@Override
public ObjectTag run(Attribute attribute, DiscordChannelTag object) {
Channel chan = object.channel;
String name;
if (chan instanceof GuildChannel) {
name = ((GuildChannel) chan).getName();
}
else if (chan instanceof PrivateChannel) {
name = "private";
}
else {
name = "unknown";
}
return new ElementTag(name);
registerTag("name", (attribute, object) -> {
Channel chan = object.channel;
String name;
if (chan instanceof GuildChannel) {
name = ((GuildChannel) chan).getName();
}
else if (chan instanceof PrivateChannel) {
name = "private";
}
else {
name = "unknown";
}
return new ElementTag(name);

});

// <--[tag]
Expand All @@ -135,11 +133,9 @@ else if (chan instanceof PrivateChannel) {
// Returns the type of the channel.
// Will be any of: GUILD_TEXT, DM, GUILD_VOICE, GROUP_DM, GUILD_CATEGORY
// -->
registerTag("type", new TagRunnable.ObjectForm<DiscordChannelTag>() {
@Override
public ObjectTag run(Attribute attribute, DiscordChannelTag object) {
return new ElementTag(object.channel.getType().name());
}
registerTag("type", (attribute, object) -> {
return new ElementTag(object.channel.getType().name());

});

// <--[tag]
Expand All @@ -149,11 +145,9 @@ public ObjectTag run(Attribute attribute, DiscordChannelTag object) {
// @description
// Returns the ID number of the channel.
// -->
registerTag("id", new TagRunnable.ObjectForm<DiscordChannelTag>() {
@Override
public ObjectTag run(Attribute attribute, DiscordChannelTag object) {
return new ElementTag(object.channel_id);
}
registerTag("id", (attribute, object) -> {
return new ElementTag(object.channel_id);

});

// <--[tag]
Expand All @@ -163,11 +157,9 @@ public ObjectTag run(Attribute attribute, DiscordChannelTag object) {
// @description
// Returns the raw mention string for the channel.
// -->
registerTag("mention", new TagRunnable.ObjectForm<DiscordChannelTag>() {
@Override
public ObjectTag run(Attribute attribute, DiscordChannelTag object) {
return new ElementTag(object.channel.getMention());
}
registerTag("mention", (attribute, object) -> {
return new ElementTag(object.channel.getMention());

});

// <--[tag]
Expand All @@ -177,26 +169,24 @@ public ObjectTag run(Attribute attribute, DiscordChannelTag object) {
// @description
// Returns the group that owns this channel.
// -->
registerTag("group", new TagRunnable.ObjectForm<DiscordChannelTag>() {
@Override
public ObjectTag run(Attribute attribute, DiscordChannelTag object) {
Channel chan = object.channel;
Guild guild;
if (chan instanceof GuildChannel) {
guild = ((GuildChannel) chan).getGuild().block();
}
else {
return null;
}
return new DiscordGroupTag(object.bot, guild);
registerTag("group", (attribute, object) -> {
Channel chan = object.channel;
Guild guild;
if (chan instanceof GuildChannel) {
guild = ((GuildChannel) chan).getGuild().block();
}
else {
return null;
}
return new DiscordGroupTag(object.bot, guild);

});
}

public static ObjectTagProcessor<DiscordChannelTag> tagProcessor = new ObjectTagProcessor<>();

public static void registerTag(String name, TagRunnable.ObjectForm<DiscordChannelTag> runnable) {
tagProcessor.registerTag(name, runnable);
public static void registerTag(String name, TagRunnable.ObjectInterface<DiscordChannelTag> runnable, String... variants) {
tagProcessor.registerTag(name, runnable, variants);
}

@Override
Expand Down

0 comments on commit 6d707de

Please sign in to comment.