Python - Simple wrapper class for a bot API
Does it make sense to re-define a RequestException class within this module?


Yes, that makes total sense. Library users should never be expected to catch dependency exceptions. If there's even the slightest chance a user needs to interact with a dependency exception, you should 'copy' it.



If you wish to create a custom exception, it's nearly always better to derive it from an exception category (type error, value error, lookup error, ...) than directly from Exception. ConnectionError would suffice.



The from ex is unnecessary. The previous exception is already preserved as context.

You should also be asking yourself 'does the user really need to see the full stack trace?'. For trivial problems, things like HTTP 4XX or 5XX status codes, you could adjust the exception message to include the code.