// Path: src/main/java/com/jagrosh/giveawaybot/Constants.java
// public class Constants 
// {
//     public static final OffsetDateTime STARTUP = OffsetDateTime.now();
//     public static final int PRIZE_MAX   = 250;
//     public static final long SERVER_ID  = 585687812548853760L;
//     public static final String TADA     = "\uD83C\uDF89"; // 🎉
//     public static final String WARNING  = "\uD83D\uDCA5"; // 💥
//     public static final String ERROR    = "\uD83D\uDCA5"; // 💥
//     public static final String YAY      = "<:yay:585696613507399692>";//"<:yay:440620097543864320>";
//     public static final String REACTION = "yay:585696613507399692";//"yay:440620097543864320";
//     public static final Color  BLURPLE  = Color.decode("#7289DA");
//     public static final String INVITE   = "https://giveawaybot.party/invite";
//     public static final String DONATE   = "https://giveawaybot.party/donate";
//     public static final int MIN_TIME    = 10;
//     public static final String WEBSITE  = "https://giveawaybot.party";
//     public static final String OWNER    = "**jagrosh**#4824";
//     public static final String GITHUB   = "https://github.com/jagrosh/GiveawayBot";
//     public static final String VERSION  = "2.2";
//     public static final String PERMS    = "`Read Messages`, `Write Messages`, `Read Message History`, `Embed Links`, `Use External Emoji`, and `Add Reactions`";
//     
//     public static final boolean canSendGiveaway(TextChannel channel)
//     {
//         return channel.getGuild().getSelfMember().hasPermission(channel, Permission.MESSAGE_READ, Permission.MESSAGE_WRITE, 
//                 Permission.MESSAGE_HISTORY, Permission.MESSAGE_EMBED_LINKS, Permission.MESSAGE_EXT_EMOJI, Permission.MESSAGE_ADD_REACTION);
//     }
// }


import com.jagrosh.giveawaybot.Constants;
import java.util.Objects;
import com.jagrosh.jdautilities.command.Command;
import com.jagrosh.jdautilities.command.Command.Category;
import com.jagrosh.jdautilities.command.CommandEvent;
import java.util.Collection;
import java.util.HashMap;
import net.dv8tion.jda.api.JDA;
/*
 * Copyright 2017 John Grosh (john.a.grosh@gmail.com).
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.jagrosh.giveawaybot.util;


/**
 *
 * This file contains utility methods to help with formatting output.
 * 
 * @author John Grosh (john.a.grosh@gmail.com)
 */
public class FormatUtil 
{
    public static String filter(String input)
    {
        return input.replace("\u202E","") // RTL override
                .replace("@everyone","@\u0435veryone") // cyrillic e
                .replace("@here","@h\u0435re") // cyrillic e
                .trim();
    }
    
    public static String formatShardStatuses(Collection<JDA> shards)
    {
        HashMap<JDA.Status, String> map = new HashMap<>();
        shards.forEach(jda -> map.put(jda.getStatus(), map.getOrDefault(jda.getStatus(), "") + " " + jda.getShardInfo().getShardId()));
        StringBuilder sb = new StringBuilder("```diff");
        map.entrySet().forEach(entry -> sb.append("\n").append(entry.getKey()==JDA.Status.CONNECTED ? "+ " : "- ")
                .append(entry.getKey()).append(":").append(entry.getValue()));
        return sb.append(" ```").toString();
    }
    
    public static String pluralise(long x, String singular, String plural) 
    {
        return x == 1 ? singular : plural;
    }
    
    public static String formatHelp(CommandEvent event)
    {
// Path: src/main/java/com/jagrosh/giveawaybot/Constants.java
// public class Constants 
// {
//     public static final OffsetDateTime STARTUP = OffsetDateTime.now();
//     public static final int PRIZE_MAX   = 250;
//     public static final long SERVER_ID  = 585687812548853760L;
//     public static final String TADA     = "\uD83C\uDF89"; // 🎉
//     public static final String WARNING  = "\uD83D\uDCA5"; // 💥
//     public static final String ERROR    = "\uD83D\uDCA5"; // 💥
//     public static final String YAY      = "<:yay:585696613507399692>";//"<:yay:440620097543864320>";
//     public static final String REACTION = "yay:585696613507399692";//"yay:440620097543864320";
//     public static final Color  BLURPLE  = Color.decode("#7289DA");
//     public static final String INVITE   = "https://giveawaybot.party/invite";
//     public static final String DONATE   = "https://giveawaybot.party/donate";
//     public static final int MIN_TIME    = 10;
//     public static final String WEBSITE  = "https://giveawaybot.party";
//     public static final String OWNER    = "**jagrosh**#4824";
//     public static final String GITHUB   = "https://github.com/jagrosh/GiveawayBot";
//     public static final String VERSION  = "2.2";
//     public static final String PERMS    = "`Read Messages`, `Write Messages`, `Read Message History`, `Embed Links`, `Use External Emoji`, and `Add Reactions`";
//     
//     public static final boolean canSendGiveaway(TextChannel channel)
//     {
//         return channel.getGuild().getSelfMember().hasPermission(channel, Permission.MESSAGE_READ, Permission.MESSAGE_WRITE, 
//                 Permission.MESSAGE_HISTORY, Permission.MESSAGE_EMBED_LINKS, Permission.MESSAGE_EXT_EMOJI, Permission.MESSAGE_ADD_REACTION);
//     }
// }


// Path: src/main/java/com/jagrosh/giveawaybot/util/FormatUtil.java
import com.jagrosh.giveawaybot.Constants;
import java.util.Objects;
import com.jagrosh.jdautilities.command.Command;
import com.jagrosh.jdautilities.command.Command.Category;
import com.jagrosh.jdautilities.command.CommandEvent;
import java.util.Collection;
import java.util.HashMap;
import net.dv8tion.jda.api.JDA;

/*
 * Copyright 2017 John Grosh (john.a.grosh@gmail.com).
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.jagrosh.giveawaybot.util;


/**
 *
 * This file contains utility methods to help with formatting output.
 * 
 * @author John Grosh (john.a.grosh@gmail.com)
 */
public class FormatUtil 
{
    public static String filter(String input)
    {
        return input.replace("\u202E","") // RTL override
                .replace("@everyone","@\u0435veryone") // cyrillic e
                .replace("@here","@h\u0435re") // cyrillic e
                .trim();
    }
    
    public static String formatShardStatuses(Collection<JDA> shards)
    {
        HashMap<JDA.Status, String> map = new HashMap<>();
        shards.forEach(jda -> map.put(jda.getStatus(), map.getOrDefault(jda.getStatus(), "") + " " + jda.getShardInfo().getShardId()));
        StringBuilder sb = new StringBuilder("```diff");
        map.entrySet().forEach(entry -> sb.append("\n").append(entry.getKey()==JDA.Status.CONNECTED ? "+ " : "- ")
                .append(entry.getKey()).append(":").append(entry.getValue()));
        return sb.append(" ```").toString();
    }
    
    public static String pluralise(long x, String singular, String plural) 
    {
        return x == 1 ? singular : plural;
    }
    
    public static String formatHelp(CommandEvent event)
    {
        StringBuilder builder = new StringBuilder(Constants.YAY+" __**"+event.getSelfUser().getName()+"** commands:__\n");