HTTP 400 · Bad Request
HTTP 400 Bots & Inline

When & why it happens

The InputUser does not resolve to a bot — passed a regular user where a bot was required.

Handling in gogram

Surfaced as *gogram.ErrResponseCode. Match on the message:

if err, ok := err.(*gogram.ErrResponseCode); ok { if err.Message == "BOT_INVALID" { // handle this error } }