I'm looking for a way to bypass the Change Event trigger for some cases, for example, I have a batch that updates records and I want to bypass the Change Event trigger for that object to be triggered because it will hit the limit and it will be useless to run them at the same time, I know using static variable will not work because the trigger will be running on a different context, is there a way to disable it without using custom settings also?
As @identigral mentioned in the comment, it is possible to define a filter on channel member using subset of SOQL operators and field types.
You may introduce a custom checkbox
Skip__c and use a filter
Skip__c = false on channel member to skip records which have value true inside custom Skip__c checkbox. Then you just set the value of that checkbox to true if you want to skip the record or to false if you want to process that records from CDC.
To make things easier.
You don't have to update 100 places in your code.
Instead, you can implement a simple before update trigger with the following logic.
If Skip__c attribute was false but became true, do nothing. If Skip__c attribute was true, change to false.
This logic would automatically reset Skip__c field to false for UI updates, and any other updates. While when set by batch it will be preserved, since the previous value was false.
Alternatively, you may even disable a trigger when run from batch and simplify the trigger logic to always set to false.