use of net.dv8tion.jda.api.entities.PrivateChannel in project Minecord by Tisawesomeness.
the class MsgCommand method run.
public Result run(String[] args, MessageReceivedEvent e) {
// Check for proper argument length
if (args.length < 2) {
return new Result(Outcome.WARNING, ":warning: Please specify a message.");
}
// Extract user
User user = DiscordUtils.findUser(args[0]);
if (user == null)
return new Result(Outcome.ERROR, ":x: Not a valid user!");
// Send the message
String msg;
try {
PrivateChannel channel = user.openPrivateChannel().submit().get();
msg = String.join(" ", ArrayUtils.remove(args, 0));
channel.sendMessage(msg).queue();
} catch (InterruptedException | ExecutionException ex) {
ex.printStackTrace();
return new Result(Outcome.ERROR, ":x: An exception occured.");
}
EmbedBuilder eb = new EmbedBuilder();
eb.setAuthor(e.getAuthor().getName() + " (" + e.getAuthor().getId() + ")", null, e.getAuthor().getAvatarUrl());
eb.setDescription("**Sent a DM to " + user.getName() + " (" + user.getId() + "):**\n" + msg);
eb.setThumbnail(user.getAvatarUrl());
MessageUtils.log(eb.build());
return new Result(Outcome.SUCCESS);
}
use of net.dv8tion.jda.api.entities.PrivateChannel in project JDA by DV8FromTheWorld.
the class TypingStartHandler method handleInternally.
@Override
protected Long handleInternally(DataObject content) {
GuildImpl guild = null;
if (!content.isNull("guild_id")) {
long guildId = content.getUnsignedLong("guild_id");
guild = (GuildImpl) getJDA().getGuildById(guildId);
if (getJDA().getGuildSetupController().isLocked(guildId))
return guildId;
else if (guild == null)
// Don't cache typing events
return null;
}
final long channelId = content.getLong("channel_id");
// TODO-v5-unified-channel-cache
MessageChannel channel = getJDA().getTextChannelsView().get(channelId);
if (channel == null)
channel = getJDA().getNewsChannelView().get(channelId);
if (channel == null)
channel = getJDA().getPrivateChannelsView().get(channelId);
if (channel == null)
// We don't have the channel cached yet. We chose not to cache this event
return null;
// because that happen very often and could easily fill up the EventCache if
// we, for some reason, never get the channel. Especially in an active channel.
final long userId = content.getLong("user_id");
User user;
MemberImpl member = null;
if (channel instanceof PrivateChannel)
user = ((PrivateChannel) channel).getUser();
else
user = getJDA().getUsersView().get(userId);
if (!content.isNull("member")) {
// Try to load member for the typing event
EntityBuilder entityBuilder = getJDA().getEntityBuilder();
member = entityBuilder.createMember(guild, content.getObject("member"));
entityBuilder.updateMemberCache(member);
user = member.getUser();
}
if (user == null)
// Just like in the comment above, if for some reason we don't have the user
return null;
// then we will just throw the event away.
OffsetDateTime timestamp = Instant.ofEpochSecond(content.getInt("timestamp")).atOffset(ZoneOffset.UTC);
getJDA().handleEvent(new UserTypingEvent(getJDA(), responseNumber, user, channel, timestamp, member));
return null;
}
use of net.dv8tion.jda.api.entities.PrivateChannel in project Lauren by Yuhtin.
the class LootGeneratorTask method startRunnable.
public void startRunnable() {
logger.info("Registered LootGeneratorTask");
val allowedChannels = Arrays.asList(700673056414367825L, 704342124732350645L);
val embed = new EmbedBuilder();
embed.setAuthor("Loot Radiante", null, "https://cdn.discordapp.com/emojis/724759930653114399.png?v=1");
val guild = jda.getGuilds().get(0);
embed.setFooter("© ^Aincrad™ servidor de jogos", guild.getIconUrl());
embed.setThumbnail("https://www.pcguia.pt/wp-content/uploads/2019/11/lootbox.jpg");
embed.setColor(Color.ORANGE);
val arrow = " <:seta:771540348157689886>";
embed.setDescription("Você encontrou uma **lootbox**, seja o primeiro a reajir\n" + "no ícone abaixo para garantir prêmios aleatórios\n" + "\n" + " \uD83C\uDFC6 Prêmios:\n" + arrow + " Experiência **(Garantido)**\n" + arrow + " Pontos de Patente\n" + arrow + " Dinheiro\n" + arrow + " Boost de XP\n" + arrow + " Cargo Sortudo");
TaskHelper.runTaskTimerAsync(new TimerTask() {
@Override
public void run() {
logger.info("Running LootGeneratorTask");
if (new Random().nextInt(100) > 10)
return;
val value = new Random().nextInt(allowedChannels.size());
val channelID = allowedChannels.get(value);
val channel = guild.getTextChannelById(channelID);
if (channel == null) {
logger.warning("Can't select a random channel to drop a loot");
return;
}
logger.info("Dropped loot on channel " + channel.getName());
val message = channel.sendMessageEmbeds(embed.build()).complete();
message.addReaction(":radiante:771541052590915585").queue();
eventWaiter.waitForEvent(MessageReactionAddEvent.class, event -> !event.getMember().getUser().isBot() && event.getMessageIdLong() == message.getIdLong(), event -> {
message.clearReactions().queue();
var nickname = event.getMember().getNickname();
if (nickname == null)
nickname = event.getMember().getEffectiveName();
message.delete().queue();
val privateChannel = event.getUser().openPrivateChannel().complete();
if (privateChannel != null) {
privateChannel.sendMessage("<:felizpakas:742373250037710918> " + "Parabéns **" + nickname + "**, você capturou uma lootbox, você pode abrir ela mais tarde " + "usando `/lootbox`").queue();
}
val player = playerController.get(event.getUserIdLong());
player.setLootBoxes(player.getLootBoxes() + 1);
logger.info("The player " + event.getUser().getAsTag() + " getted the drop");
}, 90, TimeUnit.SECONDS, () -> {
message.delete().queue();
channel.sendMessage("<a:tchau:751941650728747140> " + "Infelizmente acabou o tempo e ninguém coletou o loot.").queue(m -> m.delete().queueAfter(5, TimeUnit.SECONDS));
});
}
}, 25, 60, TimeUnit.MINUTES);
}
use of net.dv8tion.jda.api.entities.PrivateChannel in project dDiscordBot by DenizenScript.
the class DiscordMessageModifiedScriptEvent method getContext.
@Override
public ObjectTag getContext(String name) {
switch(name) {
case "channel":
return new DiscordChannelTag(botID, getEvent().getChannel());
case "group":
if (getEvent().isFromGuild()) {
return new DiscordGroupTag(botID, getEvent().getGuild());
}
break;
case "new_message":
return new DiscordMessageTag(botID, getEvent().getMessage());
case "old_message_valid":
return new ElementTag(oldMessage != null);
case "old_message":
return oldMessage == null ? null : new DiscordMessageTag(botID, oldMessage);
case "old_no_mention_message":
case "old_formatted_message":
DenizenDiscordBot.oldMessageContexts.warn((TagContext) null);
return null;
case "message":
DenizenDiscordBot.oldMessageContexts.warn((TagContext) null);
return new ElementTag(getEvent().getMessage().getContentRaw());
case "message_id":
DenizenDiscordBot.oldMessageContexts.warn((TagContext) null);
return new ElementTag(getEvent().getMessage().getId());
case "no_mention_message":
DenizenDiscordBot.oldMessageContexts.warn((TagContext) null);
return new ElementTag(DiscordMessageTag.stripMentions(getEvent().getMessage().getContentRaw()));
case "formatted_message":
DenizenDiscordBot.oldMessageContexts.warn((TagContext) null);
return new ElementTag(getEvent().getMessage().getContentDisplay());
case "author":
DenizenDiscordBot.oldMessageContexts.warn((TagContext) null);
return new DiscordUserTag(botID, getEvent().getMessage().getAuthor());
case "mentions":
DenizenDiscordBot.oldMessageContexts.warn((TagContext) null);
ListTag list = new ListTag();
for (User user : getEvent().getMessage().getMentionedUsers()) {
list.addObject(new DiscordUserTag(botID, user));
}
return list;
case "is_direct":
DenizenDiscordBot.oldMessageContexts.warn((TagContext) null);
return new ElementTag(getEvent().getChannel() instanceof PrivateChannel);
}
return super.getContext(name);
}
use of net.dv8tion.jda.api.entities.PrivateChannel in project Discord-Core-Bot-Apple by demodude4u.
the class DiscordBot method startUp.
@Override
protected void startUp() throws Exception {
info.addTechnology("[DCBA](https://github.com/demodude4u/Discord-Core-Bot-Apple)", Optional.empty(), "Discord Core Bot Apple");
info.addTechnology("[JDA](https://github.com/DV8FromTheWorld/JDA)", Optional.of("5.0 alpha"), "Java Discord API");
if (configJson.has("command_prefix")) {
setCommandPrefix(Optional.of(configJson.getString("command_prefix")));
}
JDABuilder builder = //
JDABuilder.createDefault(configJson.getString("bot_token")).setEnableShutdownHook(//
false).addEventListeners(new ListenerAdapter() {
@Override
public void onCommandAutoCompleteInteraction(CommandAutoCompleteInteractionEvent event) {
SlashCommandDefinition commandDefinition = commandSlash.get(event.getCommandPath());
Optional<AutoCompleteHandler> autoCompleteHandler = commandDefinition.getAutoCompleteHandler();
if (autoCompleteHandler.isPresent()) {
AutoCompleteEvent autoCompleteEvent = new AutoCompleteEvent(event);
autoCompleteHandler.get().handleAutoComplete(autoCompleteEvent);
}
}
@Override
public void onMessageContextInteraction(MessageContextInteractionEvent event) {
MessageCommandDefinition commandDefinition = commandMessage.get(event.getName());
boolean ephemeral = commandDefinition.hasRestriction(CommandRestriction.EPHEMERAL);
CommandReporting reporting = createReporting(event);
InteractionHook hook = event.deferReply(ephemeral).complete();
MessageCommandEvent commandEvent = new MessageCommandEvent(event, reporting, hook, ephemeral);
commandService.submit(() -> {
try {
commandDefinition.getHandler().handleCommand(commandEvent);
} catch (Exception e) {
reporting.addException(e);
} finally {
if (!commandDefinition.hasRestriction(CommandRestriction.NO_REPORTING)) {
submitReport(reporting);
}
if (!reporting.getExceptions().isEmpty()) {
commandEvent.replyEmbed(new EmbedBuilder().setColor(Color.red).appendDescription("Sorry, there was a problem completing your request.\n" + reporting.getExceptions().stream().map(e -> "`" + e.getMessage() + "`").distinct().collect(Collectors.joining("\n"))).build());
}
if (!commandEvent.hasReplied()) {
hook.deleteOriginal().complete();
}
}
});
}
@Override
public void onMessageDelete(MessageDeleteEvent event) {
if (textWatcher.isPresent()) {
textWatcher.get().deletedMessage(event);
}
}
@Override
public void onMessageReactionAdd(MessageReactionAddEvent event) {
if (reactionWatcher.isPresent()) {
reactionWatcher.get().seenReaction(event);
}
}
@Override
public void onMessageReactionRemove(MessageReactionRemoveEvent event) {
if (reactionWatcher.isPresent()) {
reactionWatcher.get().seenReactionRemoved(event);
}
}
@Override
public void onMessageReactionRemoveAll(MessageReactionRemoveAllEvent event) {
if (reactionWatcher.isPresent()) {
reactionWatcher.get().seenAllReactionRemoved(event);
}
}
@Override
public void onMessageReceived(MessageReceivedEvent event) {
if (textWatcher.isPresent()) {
textWatcher.get().seenMessage(event);
}
Message message = event.getMessage();
MessageChannel channel = message.getChannel();
String rawContent = message.getContentRaw().trim();
String mentionMe = "<@!" + event.getJDA().getSelfUser().getId() + ">";
// String mentionMe = event.getJDA().getSelfUser().getAsMention();
boolean isPrivateChannel = channel instanceof PrivateChannel;
if (isPrivateChannel && ignorePrivateChannels) {
return;
}
boolean startsWithMentionMe = message.getMentionedUsers().stream().anyMatch(u -> u.getIdLong() == event.getJDA().getSelfUser().getIdLong()) && rawContent.startsWith(mentionMe);
if (startsWithMentionMe) {
rawContent = rawContent.substring(mentionMe.length()).trim();
}
Optional<String> effectivePrefix = getOldCommandPrefix(event);
boolean startsWithCommandPrefix = effectivePrefix.isPresent() && rawContent.startsWith(effectivePrefix.get());
if (startsWithCommandPrefix) {
rawContent = rawContent.substring(effectivePrefix.get().length()).trim();
}
if (!event.getAuthor().isBot() && (isPrivateChannel || startsWithMentionMe || startsWithCommandPrefix)) {
String[] split = rawContent.split("\\s+");
if (split.length > 0) {
String command = split[0];
SlashCommandDefinition commandDefinition = commandLegacy.get(command.toLowerCase());
if (commandDefinition != null) {
boolean isPermitted = checkPermitted(channel, event.getMember(), commandDefinition);
if (isPermitted) {
event.getChannel().sendMessageEmbeds(new EmbedBuilder().appendDescription("Please use /" + commandDefinition.getPath().replace("/", " ")).build()).complete();
}
}
}
}
}
@Override
public void onMessageUpdate(MessageUpdateEvent event) {
if (textWatcher.isPresent()) {
textWatcher.get().editedMessage(event);
}
}
@Override
public void onSlashCommandInteraction(SlashCommandInteractionEvent event) {
SlashCommandDefinition commandDefinition = commandSlash.get(event.getCommandPath());
boolean ephemeral = commandDefinition.hasRestriction(CommandRestriction.EPHEMERAL);
CommandReporting reporting = createReporting(event);
InteractionHook hook = event.deferReply(ephemeral).complete();
SlashCommandEvent commandEvent = new SlashCommandEvent(event, reporting, hook, ephemeral);
commandService.submit(() -> {
try {
commandDefinition.getHandler().handleCommand(commandEvent);
} catch (Exception e) {
System.err.println("Uncaught Exception!");
e.printStackTrace();
reporting.addException(e);
} finally {
if (!commandDefinition.hasRestriction(CommandRestriction.NO_REPORTING)) {
submitReport(reporting);
}
if (!reporting.getExceptions().isEmpty()) {
commandEvent.replyEmbed(new EmbedBuilder().setColor(Color.red).appendDescription("Sorry, there was a problem completing your request.\n" + reporting.getExceptions().stream().map(e -> "`" + e.getMessage() + "`").distinct().collect(Collectors.joining("\n"))).build());
}
if (!commandEvent.hasReplied()) {
hook.deleteOriginal().complete();
}
}
});
}
});
if (customSetup != null) {
builder = customSetup.apply(builder);
}
jda = builder.build().awaitReady();
jda.setRequiredScopes("bot", "applications.commands");
reportingUserID = Optional.ofNullable(configJson.optString("reporting_user_id", null));
reportingChannelID = Optional.ofNullable(configJson.optString("reporting_channel_id", null));
if (configJson.has("debug_guild_commands")) {
String guildId = configJson.getString("debug_guild_commands");
Guild guild = jda.getGuildById(guildId);
CommandListUpdateAction updateCommands = guild.updateCommands();
buildUpdateCommands(updateCommands);
updateCommands.queue();
}
CommandListUpdateAction updateCommands = jda.updateCommands();
buildUpdateCommands(updateCommands);
updateCommands.queue();
}
Aggregations