package commands.administration; import commands.Command; import core.Perms; import net.dv8tion.jda.core.EmbedBuilder; import net.dv8tion.jda.core.JDA; import net.dv8tion.jda.core.entities.Guild; import net.dv8tion.jda.core.entities.User; import net.dv8tion.jda.core.events.message.MessageReceivedEvent; import utils.STATICS; import java.awt.Color; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.text.ParseException; import java.util.ArrayList; import java.util.List; /** * Created by zekro on 11.06.2017 / 10:10 * DiscordBot/commands.administration * © zekro 2017 */ public class Broadcast implements Command { private List<Guild> getIgnores(JDA jda) { File f = new File("broadcast_ignores.txt"); List<Guild> out = new ArrayList(); if (!f.exists()) { try { f.createNewFile(); } catch (Exception e) {} return out; } try { BufferedReader br = new BufferedReader(new FileReader(f)); br.lines().forEach(l -> { Guild g = jda.getGuildById(l.replace("\n", "")); if (g != null) out.add(g); }); } catch (Exception e) {} return out; } @Override public boolean called(String[] args, MessageReceivedEvent event) { return false; } @Override public void action(String[] args, MessageReceivedEvent event) throws ParseException, IOException { if (!Perms.isOwner(event.getAuthor(), event.getTextChannel())) return; if (args.length < 1) { event.getTextChannel().sendMessage(new EmbedBuilder().setColor(Color.red).setDescription(help()).build()).queue(); return; } String message = String.join(" ", args); User author = event.getAuthor(); EmbedBuilder eb = new EmbedBuilder() .setColor(Color.cyan) .setAuthor(author.getName(), null, author.getAvatarUrl()) .setDescription(message) .setFooter("This is a broadcast message send by bots host user.", "https://raw.githubusercontent.com/zekroTJA/DiscordBot/dev/.websrc/zekrobot_message.png"); List<Guild> ignores = getIgnores(event.getJDA()); event.getJDA().getGuilds().stream() .filter(g -> !ignores.contains(g)) .forEach(g -> { try { g.getPublicChannel().sendMessage(eb.build()).queue(); } catch (Exception e) { } }); } @Override public void executed(boolean success, MessageReceivedEvent event) { } @Override public String help() { return "**USAGE:**\n" + "`-boradcast <Message>`\n\n" + "**IMPORTANT:** If you want to exclude a several servers, create a text file in the bots location named `broadcast_ignores.txt` and enter there in every line the ID of the ignored servers."; } @Override public String description() { return "Send a message to all servers general chats"; } @Override public String commandType() { return STATICS.CMDTYPE.etc; } @Override public int permission() { return 3; } }