Opposition ‘silenced’ for by-election vote