Bound method click of Message.

Use as a shortcut for clicking a button attached to the message instead of:

  • Clicking inline buttons:

await client.request_callback_answer(,,
  • Clicking normal buttons:

await client.send_message(, text=message.reply_markup[i][j].text)


This method can be used in three different ways:

  1. Pass one integer argument only (e.g.: .click(2), to click a button at index 2). Buttons are counted left to right, starting from the top.

  2. Pass two integer arguments (e.g.: .click(1, 0), to click a button at position (1, 0)). The origin (0, 0) is top-left.

  3. Pass one string argument only (e.g.: .click("Settings"), to click a button by using its label). Only the first matching button will be pressed.

  • x (int | str) – Used as integer index, integer abscissa (in pair with y) or as string label. Defaults to 0 (first button).

  • y (int, optional) – Used as ordinate only (in pair with x).

  • quote (bool, optional) – Useful for normal buttons only, where pressing it will result in a new message sent. If True, the message will be sent as a reply to this message. Defaults to True in group chats and False in private chats.

  • timeout (int, optional) – Timeout in seconds.


  • The result of request_callback_answer() in case of inline callback button clicks.

  • The result of reply() in case of normal button clicks.

  • A string in case the inline button is a URL, a switch_inline_query or a switch_inline_query_current_chat button.

  • RPCError – In case of a Telegram RPC error.

  • ValueError – In case the provided index or position is out of range or the button label was not found.

  • TimeoutError – In case, after clicking an inline button, the bot fails to answer within the timeout.