Available methods

sendPoll()

Use this method to send a native poll. On success, the sent Message is returned.

parameters

parametertyperequireddescription
business_connection_idstringoptionalUnique identifier of the business connection on behalf of which the message will be sent
chat_idnumber | stringrequiredUnique identifier for the target chat or username of the target bot, supergroup or channel in the format @username. Polls can't be sent to channel direct messages chats.
message_thread_idnumberoptionalUnique identifier for the target message thread (topic) of a forum; for forum supergroups and private chats of bots with forum topic mode enabled only
questionstringrequiredPoll question, 1-300 characters
question_parse_modestringoptionalMode for parsing entities in the question. See formatting options for more details. Currently, only custom emoji entities are allowed.
question_entitiesMessageEntity[]optionalA JSON-serialized list of special entities that appear in the poll question. It can be specified instead of question_parse_mode.
optionsInputPollOption[]requiredA JSON-serialized list of 1-12 answer options
is_anonymousbooleanoptionalTrue, if the poll needs to be anonymous, defaults to True
typestringoptionalPoll type, “quiz” or “regular”, defaults to “regular”
allows_multiple_answersbooleanoptionalPass True, if the poll allows multiple answers, defaults to False
allows_revotingbooleanoptionalPass True, if the poll allows to change chosen answer options, defaults to False for quizzes and to True for regular polls
shuffle_optionsbooleanoptionalPass True, if the poll options must be shown in random order
allow_adding_optionsbooleanoptionalPass True, if answer options can be added to the poll after creation; not supported for anonymous polls and quizzes
hide_results_until_closesbooleanoptionalPass True, if poll results must be shown only after the poll closes
members_onlybooleanoptionalPass True, if voting is limited to users who have been members of the chat where the poll is being sent for more than 24 hours; for channel chats only
country_codesstring[]optionalA JSON-serialized list of 0-12 two-letter ISO 3166-1 alpha-2 country codes indicating the countries from which users can vote in the poll; for channel chats only. Use “FT” as a country code to allow users with anonymous numbers to vote. If omitted or empty, then users from any country can participate in the poll.
correct_option_idsnumber[]optionalA JSON-serialized list of monotonically increasing 0-based identifiers of the correct answer options, required for polls in quiz mode
explanationstringoptionalText that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing
explanation_parse_modestringoptionalMode for parsing entities in the explanation. See formatting options for more details.
explanation_entitiesMessageEntity[]optionalA JSON-serialized list of special entities that appear in the poll explanation. It can be specified instead of explanation_parse_mode.
explanation_mediaInputPollMediaoptionalMedia added to the quiz explanation
open_periodnumberoptionalAmount of time in seconds the poll will be active after creation, 5-2628000. Can't be used together with close_date.
close_datenumberoptionalPoint in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 2628000 seconds in the future. Can't be used together with open_period.
is_closedbooleanoptionalPass True if the poll needs to be immediately closed. This can be useful for poll preview.
descriptionstringoptionalDescription of the poll to be sent, 0-1024 characters after entities parsing
description_parse_modestringoptionalMode for parsing entities in the poll description. See formatting options for more details.
description_entitiesMessageEntity[]optionalA JSON-serialized list of special entities that appear in the poll description, which can be specified instead of description_parse_mode
mediaInputPollMediaoptionalMedia added to the poll description
disable_notificationbooleanoptionalSends the message silently. Users will receive a notification with no sound.
protect_contentbooleanoptionalProtects the contents of the sent message from forwarding and saving
allow_paid_broadcastbooleanoptionalPass True to allow up to 1000 messages per second, ignoring broadcasting limits for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance.
message_effect_idstringoptionalUnique identifier of the message effect to be added to the message; for private chats only
reply_parametersReplyParametersoptionalDescription of the message to reply to
reply_markupInlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReplyoptionalAdditional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove a reply keyboard or to force a reply from the user.

returns

Message

usage in yaebal

not (yet) hard-typed on Api — call it through the generic .call<T>() escape hatch documented in @yaebal/types.

bot.ts
import type { Message, SendPollParams } from "@yaebal/types";

await bot.api.call<Message>("sendPoll", {
  chat_id: 123456789,
  question: "...",
  options: [],
} satisfies SendPollParams);

context shortcut

also available as ctx.sendPoll() on 16 context types — see @yaebal/contexts.

context shortcut
/** Use this method to send a native poll. On success, the sent [Message](https://core.telegram.org/bots/api/#message) is returned. */
ctx.sendPoll(params: Omit<SendPollParams, "chat_id">)