use of net.dv8tion.jda.core.entities.Member in project FlareBot by FlareBot.
the class SaveCommand method onCommand.
@Override
public void onCommand(User sender, GuildWrapper guild, TextChannel channel, Message message, String[] args, Member member) {
if (args.length == 0) {
MessageUtils.sendUsage(this, channel, sender, args);
return;
}
String name = MessageUtils.getMessage(args, 0);
if (name.length() > 20) {
MessageUtils.sendErrorMessage("Name can only be a maximum of 20 characters!", channel);
return;
}
if (!FlareBot.instance().getMusicManager().hasPlayer(channel.getGuild().getId())) {
MessageUtils.sendErrorMessage("Your playlist is empty!", channel);
return;
}
Queue<Track> playlist = FlareBot.instance().getMusicManager().getPlayer(guild.getGuildId()).getPlaylist();
Track currentlyPlaying = FlareBot.instance().getMusicManager().getPlayer(guild.getGuildId()).getPlayingTrack();
channel.sendTyping().complete();
List<String> tracks = playlist.stream().map(track -> track.getTrack().getIdentifier()).collect(Collectors.toList());
if (currentlyPlaying != null) {
tracks.add(currentlyPlaying.getTrack().getIdentifier());
}
if (tracks.isEmpty()) {
MessageUtils.sendErrorMessage("Your playlist is empty!", channel);
return;
}
FlareBot.instance().getManager().savePlaylist(this, channel, sender.getId(), this.getPermissions(channel).hasPermission(member, Permission.SAVE_OVERWRITE), name, tracks);
}
use of net.dv8tion.jda.core.entities.Member in project MantaroBot by Mantaro.
the class CommandListener method onCommand.
private void onCommand(GuildMessageReceivedEvent event) {
try {
Member self = event.getGuild().getSelfMember();
if (!self.getPermissions(event.getChannel()).contains(Permission.MESSAGE_WRITE) && !self.hasPermission(Permission.ADMINISTRATOR))
return;
if (commandProcessor.run(event)) {
commandTotal++;
} else {
// Only run experience if no command has been executed, avoids weird race conditions when saving player status.
try {
// Only run experience if the user is not rate limited (clears every 30 seconds)
if (random.nextInt(15) > 7 && !event.getAuthor().isBot() && experienceRatelimiter.process(event.getAuthor())) {
if (event.getMember() == null)
return;
// some nasty race conditions involving player save.
if (InteractiveOperations.get(event.getChannel()) != null)
return;
Player player = MantaroData.db().getPlayer(event.getAuthor());
PlayerData data = player.getData();
DBGuild dbGuild = MantaroData.db().getGuild(event.getGuild());
GuildData guildData = dbGuild.getData();
if (player.isLocked())
return;
// Set level to 1 if level is zero.
if (player.getLevel() == 0)
player.setLevel(1);
// Set player experience to a random number between 1 and 5.
data.setExperience(data.getExperience() + Math.round(random.nextInt(5)));
// Apply some black magic.
if (data.getExperience() > (player.getLevel() * Math.log10(player.getLevel()) * 1000) + (50 * player.getLevel() / 2)) {
player.setLevel(player.getLevel() + 1);
// Check if the member is not null, just to be sure it happened in-between.
if (player.getLevel() > 1 && event.getGuild().getMemberById(player.getUserId()) != null) {
if (guildData.isEnabledLevelUpMessages()) {
String levelUpChannel = guildData.getLevelUpChannel();
String levelUpMessage = guildData.getLevelUpMessage();
// Player has leveled up!
if (levelUpMessage != null && levelUpChannel != null) {
processMessage(String.valueOf(player.getLevel()), levelUpMessage, levelUpChannel, event);
}
}
}
}
// This time, actually remember to save the player so you don't have to restart 102 shards to fix it.
player.saveAsync();
}
} catch (Exception ignored) {
}
}
} catch (IndexOutOfBoundsException e) {
event.getChannel().sendMessage(EmoteReference.ERROR + "Your query returned no results or you used the incorrect arguments, seemingly. Just in case, check command help!").queue();
} catch (PermissionException e) {
if (e.getPermission() != Permission.UNKNOWN) {
event.getChannel().sendMessage(String.format("%sI don't have permission to do this :<, I need the permission: **%s**%s", EmoteReference.ERROR, e.getPermission().getName(), e.getMessage() != null ? String.format(" | Message: %s", e.getMessage()) : "")).queue();
} else {
event.getChannel().sendMessage(EmoteReference.ERROR + "I cannot perform this action due to the lack of permission! Is the role I might be trying to assign" + " higher than my role? Do I have the correct permissions/hierarchy to perform this action?").queue();
}
} catch (IllegalArgumentException e) {
// NumberFormatException == IllegalArgumentException
String id = Snow64.toSnow64(event.getMessage().getIdLong());
event.getChannel().sendMessage(String.format("%sI think you forgot something on the floor. (Maybe we threw it there? [Error ID: %s]... I hope we didn't)\n" + "- Incorrect type arguments or the message I'm trying to send exceeds 2048 characters, Just in case, check command help!", EmoteReference.ERROR, id)).queue();
log.warn("Exception caught and alternate message sent. We should look into this, anyway (ID: {})", id, e);
} catch (ReqlError e) {
// So much just went wrong...
e.printStackTrace();
SentryHelper.captureExceptionContext("Something seems to have broken in the db! Check this out!", e, this.getClass(), "Database");
} catch (RedisException e) {
// So much just went wrong but on another side of the db...
e.printStackTrace();
SentryHelper.captureExceptionContext("Something seems to have broken in the db! Check this out!", e, this.getClass(), "Redis Database");
} catch (Exception e) {
String id = Snow64.toSnow64(event.getMessage().getIdLong());
Player player = MantaroData.db().getPlayer(event.getAuthor());
event.getChannel().sendMessage(String.format("%s%s\n(Error ID: `%s`)\n" + "If you want, join our **support guild** (Link on `~>about`), or check out our GitHub page (/Mantaro/MantaroBot). " + "Please tell them to quit exploding me and please don't forget the Error ID when reporting!", EmoteReference.ERROR, boomQuotes[rand.nextInt(boomQuotes.length)], id)).queue();
if (player.getData().addBadgeIfAbsent(Badge.FIRE))
player.saveAsync();
SentryHelper.captureException(String.format("Unexpected Exception on Command: %s | (Error ID: ``%s``)", event.getMessage().getContentRaw(), id), e, this.getClass());
log.error("Error happened with id: {} (Error ID: {})", event.getMessage().getContentRaw(), id, e);
}
}
use of net.dv8tion.jda.core.entities.Member in project MantaroBot by Mantaro.
the class CurrencyCmds method inventory.
@Subscribe
public void inventory(CommandRegistry cr) {
cr.register("inventory", new SimpleCommand(Category.CURRENCY) {
@Override
public void call(GuildMessageReceivedEvent event, String content, String[] args) {
Map<String, Optional<String>> t = StringUtils.parse(args);
content = Utils.replaceArguments(t, content, "brief", "calculate");
Member member = Utils.findMember(event, event.getMember(), content);
if (member == null)
return;
Player player = MantaroData.db().getPlayer(member);
if (t.containsKey("brief")) {
event.getChannel().sendMessage(String.format("**%s's inventory:** %s", member.getEffectiveName(), ItemStack.toString(player.getInventory().asList()))).queue();
return;
}
if (t.containsKey("calculate")) {
long all = player.getInventory().asList().stream().filter(item -> item.getItem().isSellable()).mapToLong(value -> (long) (value.getItem().getValue() * value.getAmount() * 0.9d)).sum();
event.getChannel().sendMessage(String.format("%sYou will get **%d credits** if you sell all of your items!", EmoteReference.DIAMOND, all)).queue();
return;
}
EmbedBuilder builder = baseEmbed(event, member.getEffectiveName() + "'s Inventory", member.getUser().getEffectiveAvatarUrl());
List<ItemStack> list = player.getInventory().asList();
List<MessageEmbed.Field> fields = new LinkedList<>();
if (list.isEmpty())
builder.setDescription("There is only dust here.");
else
player.getInventory().asList().forEach(stack -> {
long buyValue = stack.getItem().isBuyable() ? stack.getItem().getValue() : 0;
long sellValue = stack.getItem().isSellable() ? (long) (stack.getItem().getValue() * 0.9) : 0;
fields.add(new MessageEmbed.Field(stack.getItem().getEmoji() + " " + stack.getItem().getName() + " x " + stack.getAmount(), String.format("**Price**: \uD83D\uDCE5 %d \uD83D\uDCE4 %d\n%s", buyValue, sellValue, stack.getItem().getDesc()), false));
});
List<List<MessageEmbed.Field>> splitFields = DiscordUtils.divideFields(18, fields);
boolean hasReactionPerms = event.getGuild().getSelfMember().hasPermission(event.getChannel(), Permission.MESSAGE_ADD_REACTION);
if (hasReactionPerms) {
DiscordUtils.list(event, 45, false, builder, splitFields);
} else {
DiscordUtils.listText(event, 45, false, builder, splitFields);
}
}
@Override
public MessageEmbed help(GuildMessageReceivedEvent event) {
return helpEmbed(event, "Inventory command").setDescription("**Shows your current inventory.**\n" + "You can use `~>inventory -brief` to get a mobile friendly version.\n" + "Use `~>inventory -calculate` to see how much you'd get if you sell every sellable item on your inventory!").build();
}
});
cr.registerAlias("inventory", "inv");
}
use of net.dv8tion.jda.core.entities.Member in project c0debaseBot by Biospheere.
the class CheckCommand method execute.
@Override
public void execute(String[] args, Message msg) {
if (msg.getMember().hasPermission(Permission.ADMINISTRATOR) || msg.getMember().hasPermission(Permission.BAN_MEMBERS)) {
if (args.length < 1) {
return;
}
String id = args[0];
if (msg.getGuild().getMemberById(id) != null) {
Member member = msg.getGuild().getMemberById(id);
EmbedBuilder embedBuilder = getEmbed(msg.getGuild(), member.getUser());
embedBuilder.addField("Erstelldatum: ", member.getUser().getCreationTime().format(DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm")), true);
embedBuilder.addField("Standart Avatar: ", String.valueOf(member.getUser().getAvatarUrl() == null), true);
embedBuilder.addField("Beitritt: ", member.getJoinDate().format(DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm")), true);
msg.getTextChannel().sendMessage(embedBuilder.build()).queue();
}
}
}
use of net.dv8tion.jda.core.entities.Member in project Frost by woojiahao.
the class UserID method checkInput.
@Override
public boolean checkInput(DiscordSet set, String input) {
if (!super.checkInput(set, input))
return false;
if (set.getGuild().getMemberById(input) == null) {
set.getFrom().sendMessage("Unable to find member of ID: " + input).queue();
return false;
}
Member invoker = set.getGuild().getMember(set.getUser());
Member target = set.getGuild().getMemberById(input);
if (invoker.isOwner()) {
return true;
} else if (target.isOwner()) {
set.getFrom().sendMessage("Nice try kiddo, you are still to young to do that").queue();
return false;
}
if (invoker.getRoles().get(0).getPosition() < target.getRoles().get(0).getPosition()) {
set.getFrom().sendMessage("You think I will allow you to do that?").queue();
return false;
}
return true;
}
Aggregations