@Override public synchronized List<TextChannel> getMentionedChannels() { if (channelMentions == null) { channelMentions = new ArrayList<>(); Matcher matcher = MentionType.CHANNEL.getPattern().matcher(content); while (matcher.find()) { try { String id = matcher.group(1); TextChannel channel = getJDA().getTextChannelById(id); if (channel != null && !channelMentions.contains(channel)) channelMentions.add(channel); } catch (NumberFormatException ignored) {} } channelMentions = Collections.unmodifiableList(channelMentions); } return channelMentions; }
while (matcher.find()) TextChannel channel = jda.getTextChannelById(matcher.group(1)); if (channel != null)
private static boolean isValidChannel(String channel) { if (MagiBridge.jda == null) return false; if (MagiBridge.jda.getStatus() != JDA.Status.CONNECTED) return false; if (MagiBridge.jda.getTextChannelById(channel) == null) { MagiBridge.getLogger().error("The channel " + channel + " defined in the config isn't a valid Discord Channel ID!"); MagiBridge.getLogger().error("Replace it with a valid one then reload the plugin!"); return false; } return true; }
Channel channel = jda.getTextChannelById(id); if (channel != null) { return channel;
public static void sendMessageToChannel(String channel, String message) { if (!isValidChannel(channel)) return; message = translateEmojis(message, MagiBridge.jda.getTextChannelById(channel).getGuild()); List<String> usersMentioned = new ArrayList<>(); Arrays.stream(message.split(" ")).filter(word -> word.startsWith("@")).forEach(mention -> usersMentioned.add(mention.substring(1))); if (!usersMentioned.isEmpty()) { for (String user : usersMentioned) { List<User> users = MagiBridge.jda.getUsersByName(user, true); if (!users.isEmpty()) { message = message.replaceAll("@" + user, "<@" + users.get(0).getId() + ">"); } } } if (message.isEmpty()) return; MagiBridge.jda.getTextChannelById(channel).sendMessage(message.replaceAll("&([0-9a-fA-FlLkKrR])", "")).queue(); }
public static void sendMessageToChannel(String channel, String message, long deleteTime) { if (!isValidChannel(channel)) return; message = translateEmojis(message, MagiBridge.jda.getTextChannelById(channel).getGuild()); if (message.isEmpty()) return; MagiBridge.jda.getTextChannelById(channel).sendMessage(message.replaceAll("&([0-9a-fA-FlLkKrR])", "")) .queue(m -> m.delete().queueAfter(deleteTime, TimeUnit.SECONDS)); }
@Override public void run() { while (true) { if (MagiBridge.getConfig().CORE.ENABLE_UPDATER && MagiBridge.jda.getStatus() == JDA.Status.CONNECTED) { String topic = FormatType.TOPIC_FORMAT.get() .replace("%players%", Integer.valueOf(Sponge.getServer().getOnlinePlayers().size()).toString()) .replace("%maxplayers%", Integer.valueOf(Sponge.getServer().getMaxPlayers()).toString()) .replace("%tps%", Long.valueOf(Math.round(Sponge.getServer().getTicksPerSecond())).toString()) .replace("%daysonline%", Long.valueOf(ManagementFactory.getRuntimeMXBean().getUptime() / (24 * 60 * 60 * 1000)).toString()) .replace("%hoursonline%", Long.valueOf((ManagementFactory.getRuntimeMXBean().getUptime() / (60 * 60 * 1000)) % 24).toString()) .replace("%minutesonline%", Long.valueOf((ManagementFactory.getRuntimeMXBean().getUptime() / (60 * 1000)) % 60).toString()); try { if (MagiBridge.jda.getTextChannelById(MagiBridge.getConfig().CHANNELS.MAIN_CHANNEL) == null) { MagiBridge.getLogger().error("The main-discord-channel is INVALID, replace it with a valid one and restart the server!"); continue; } MagiBridge.jda.getTextChannelById(MagiBridge.getConfig().CHANNELS.MAIN_CHANNEL).getManager().setTopic(topic).queue(); } catch (NullPointerException e) { e.printStackTrace(); } } int interval = MagiBridge.getConfig().CORE.UPDATER_INTERVAL * 1000; try { Thread.sleep(interval < 10000 ? 10000 : interval); } catch (InterruptedException e) { MagiBridge.getLogger().error("The topic updater was interrupted!"); e.printStackTrace(); } } }
private static Webhook getWebhook(String channelID) { TextChannel channel = MagiBridge.jda.getTextChannelById(channelID); if (!channel.getGuild().getSelfMember().hasPermission(Permission.MANAGE_WEBHOOKS)) { MagiBridge.getLogger().error("The bot does not have the MANAGE WEBHOOKS permission, so it can't create webhooks!"); MagiBridge.getLogger().error("Please give it or disable the use-webhooks feature!"); return null; } Webhook webhook = channel.getGuild() .getWebhooks().complete().stream().filter(wh -> wh.getName().equals("MB: " + channel.getName())).findFirst().orElse(null); if (webhook == null) { webhook = channel.createWebhook("MB: " + channel.getName()).complete(); } return webhook; }
message = translateEmojis(message, MagiBridge.jda.getTextChannelById(channel).getGuild()); MagiBridge.jda.getTextChannelById(channel).sendMessage(message) .queue(m -> m.delete().queueAfter(deleteTime, TimeUnit.SECONDS)); } else if (MagiBridge.getConfig().CHANNELS.USE_WEBHOOKS && withWebhook) { message = ReplacerUtil.replaceEach(placeholders.get("%message%"), placeholders); message = translateEmojis(message, MagiBridge.jda.getTextChannelById(channel).getGuild()); if (removeEveryone) { message = message.replace("@everyone", ""); if (message.isEmpty()) return; MagiBridge.jda.getTextChannelById(channel).sendMessage(message).queue();
@Override public void run() { int roll = rng.nextInt(100); TextChannel inviteChannel = bot.getShardFor(BotConfig.BOT_GUILD_ID).getJda().getTextChannelById(BotConfig.BOT_CHANNEL_ID); if (inviteChannel != null && roll < 10) { String fallback = "Feedback @ https://discord.gg/eaywDDt | #%s"; bot.getShardFor(BotConfig.BOT_GUILD_ID).queue.add(inviteChannel.getInvites(), invites -> { if (invites != null && !invites.isEmpty()) { setGameOnShards(bot, "Feedback @ https://discord.gg/" + invites.get(0).getCode() + " | %s"); } else { setGameOnShards(bot, fallback); } }); } else if (roll < 50) { String username = bot.getShards()[0].getJda().getSelfUser().getName(); setGameOnShards(bot, "@" + username + " help | @" + username + " invite | #%s"); } else { setGameOnShards(bot, statusList[new Random().nextInt(statusList.length)]); } }
public void editBlocking(Message msg, String newContent) { if (!msg.getChannelType().equals(ChannelType.TEXT)) { return; } TextChannel channel = botInstance.getJda().getTextChannelById(msg.getTextChannel().getId()); if (channel == null) { return; } botInstance.queue.add(channel.editMessageById(msg.getId(), newContent)); }
public void stopStuff(Boolean fake) { if (!fake) { if (jda != null) { DiscordHandler.sendMessageToChannel(Config.CHANNELS.MAIN_CHANNEL, Config.MESSAGES.SERVER_STOPPING); DiscordHandler.close(); if (updater != null) updater.interrupt(); jda.getTextChannelById(Config.CHANNELS.MAIN_CHANNEL).getManager().setTopic(FormatType.OFFLINE_TOPIC_FORMAT.get()).queue(); jda.shutdown(); long time = System.currentTimeMillis(); while ((System.currentTimeMillis() - time < 10000) && (jda != null && jda.getStatus() != JDA.Status.SHUTDOWN)) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } return; } } logger.info("Disconnecting from Discord..."); if (jda != null && jda.getStatus() != JDA.Status.SHUTDOWN && jda.getStatus() != JDA.Status.SHUTTING_DOWN) { jda.shutdownNow(); } // Unregistering listeners Sponge.getEventManager().unregisterPluginListeners(this); Sponge.getEventManager().registerListeners(this, this); Config = null; }
guildwide = true; } else { TextChannel tmp = channel.getJDA().getTextChannelById(item.channelId); if (tmp == null) { continue; TextChannel c = channel.getJDA().getTextChannelById(channelId); if (c == null) { return Templates.invalid_use.formatGuild(channel); TextChannel c = channel.getJDA().getTextChannelById(channelId); if (c == null) { return Templates.invalid_use.formatGuild(channel);
private void credit(JDA jda) { Guild dbots = jda.getGuildById(110373943822540800L); if(dbots==null) return; if(bot.getConfig().getDBots()) return; jda.getTextChannelById(119222314964353025L) .sendMessage("This account is running JMusicBot. Please do not list bot clones on this server, <@"+bot.getConfig().getOwnerId()+">.").complete(); dbots.leave().queue(); } }
/** * retrieves a list of subscribed channels for service * * @return list of {@link TextChannel} channels */ public List<TextChannel> getSubscribedChannels() { List<TextChannel> channels = new ArrayList<>(); List<QActiveSubscriptions> subscriptionsForService = CSubscriptions.getSubscriptionsForService(CServices.getCachedId(getIdentifier())); for (QActiveSubscriptions activeSubscriptions : subscriptionsForService) { OChannel databaseChannel = CChannels.findById(activeSubscriptions.channelId); DiscordBot botInstance = bot.getShardFor(CGuild.getCachedDiscordId(activeSubscriptions.guildId)); TextChannel botChannel = botInstance.getJda().getTextChannelById(databaseChannel.discord_id); if (botChannel != null) { channels.add(botChannel); } else { if (BotConfig.SUBSCRIBE_UNSUB_ON_NOT_FOUND) { OSubscription subscription = CSubscriptions.findBy(databaseChannel.server_id, databaseChannel.id, CServices.getCachedId(getIdentifier())); subscription.subscribed = 0; CSubscriptions.insertOrUpdate(subscription); botInstance.getContainer().reportError(new Exception("Subscription channel not found"), "result", "Now unsubscribed!", "channelID", databaseChannel.discord_id, "subscription", getIdentifier()); } } } return channels; }
/** * Retrieves the message again before deleting it * Mostly for delayed deletion * * @param messageToDelete the message to delete */ public void saveDelete(Message messageToDelete) { if (messageToDelete != null && botInstance.getJda() == messageToDelete.getJDA()) { TextChannel channel = botInstance.getJda().getTextChannelById(messageToDelete.getChannel().getId()); if (channel != null && PermissionUtil.checkPermission(channel, channel.getGuild().getSelfMember(), Permission.MESSAGE_HISTORY)) { botInstance.queue.add(channel.deleteMessageById(messageToDelete.getId())); } } }
if (argument.startsWith("<#")) { String id = argument.substring(2, argument.length() - 1); channel = isCrossGuild ? jda.getTextChannelById(id) : c.issuer.getIssuer().getGuild().getTextChannelById(id); } else { List<TextChannel> channelList = isCrossGuild ? jda.getTextChannelsByName(argument, true) :
if (!messagesToDelete.isEmpty()) { for (MessageMetaData messageMetaData : messagesToDelete) { TextChannel chan = getJDA().getTextChannelById(messageMetaData.getChannelId()); if (chan != null) { chan.deleteMessageById(messageMetaData.getMessageId()).queue();