using SharpChat.Events;
using SharpChat.SockChat.PacketsS2C;

namespace SharpChat.SockChat.Commands {
    public class MessageBroadcastCommand : ISockChatClientCommand {
        public bool IsMatch(SockChatClientCommandContext ctx) {
            return ctx.NameEquals("say")
                || ctx.NameEquals("broadcast");
        }

        public void Dispatch(SockChatClientCommandContext ctx) {
            if(!ctx.User.Permissions.HasFlag(UserPermissions.Broadcast)) {
                ctx.Chat.SendTo(ctx.User, new CommandNotAllowedErrorS2CPacket(ctx.Name));
                return;
            }

            ctx.Chat.Events.Dispatch(
                "msg:add",
                ctx.User,
                new MessageAddEventData(string.Join(' ', ctx.Args))
            );
        }
    }
}