replyWithPoll method

Future<Message> replyWithPoll(
  1. String question,
  2. List<InputPollOption> options, {
  3. int? messageThreadId,
  4. bool? isAnonymous,
  5. PollType type = PollType.regular,
  6. bool? allowsMultipleAnswers,
  7. int? correctOptionId,
  8. String? explanation,
  9. ParseMode? explanationParseMode,
  10. List<MessageEntity>? explanationEntities,
  11. int? openPeriod,
  12. DateTime? closeDate,
  13. bool? isClosed,
  14. bool? disableNotification,
  15. bool? protectContent,
  16. ReplyMarkup? replyMarkup,
  17. ReplyParameters? replyParameters,
  18. String? businessConnectionId,
  19. ParseMode? questionParseMode,
  20. List<MessageEntity>? questionEntities,
  21. String? messageEffectId,
  22. bool? allowPaidBroadcast,
})

Sends a poll to the current chat.

This method creates and sends a poll with the specified question and options. Supports both regular and quiz polls with full customization options. All parameters from the RawAPI.sendPoll method are supported.

Example:

final options = [
  InputPollOption(text: 'Option 1'),
  InputPollOption(text: 'Option 2'),
];
await ctx.replyWithPoll('What do you prefer?', options);

// Quiz poll with explanation
await ctx.replyWithPoll(
  'What is 2+2?',
  [
    InputPollOption(text: '3'),
    InputPollOption(text: '4'),
    InputPollOption(text: '5'),
  ],
  type: PollType.quiz,
  correctOptionId: 1,
  explanation: 'Basic mathematics: 2+2=4',
  explanationParseMode: ParseMode.markdown,
);

Implementation

Future<Message> replyWithPoll(
  String question,
  List<InputPollOption> options, {
  int? messageThreadId,
  bool? isAnonymous,
  PollType type = PollType.regular,
  bool? allowsMultipleAnswers,
  int? correctOptionId,
  String? explanation,
  ParseMode? explanationParseMode,
  List<MessageEntity>? explanationEntities,
  int? openPeriod,
  DateTime? closeDate,
  bool? isClosed,
  bool? disableNotification,
  bool? protectContent,
  ReplyMarkup? replyMarkup,
  ReplyParameters? replyParameters,
  String? businessConnectionId,
  ParseMode? questionParseMode,
  List<MessageEntity>? questionEntities,
  String? messageEffectId,
  bool? allowPaidBroadcast,
}) async {
  final chatId = _getChatId();
  _verifyInfo([chatId], APIMethod.sendPoll);

  return api.sendPoll(
    chatId!,
    question,
    options,
    messageThreadId: _threadId(messageThreadId),
    isAnonymous: isAnonymous,
    type: type,
    allowsMultipleAnswers: allowsMultipleAnswers,
    correctOptionId: correctOptionId,
    explanation: explanation,
    explanationParseMode: explanationParseMode,
    explanationEntities: explanationEntities,
    openPeriod: openPeriod,
    closeDate: closeDate,
    isClosed: isClosed,
    disableNotification: disableNotification,
    protectContent: protectContent,
    replyMarkup: replyMarkup,
    replyParameters: replyParameters,
    businessConnectionId: _businessConnectionId(businessConnectionId),
    questionParseMode: questionParseMode,
    questionEntities: questionEntities,
    messageEffectId: messageEffectId,
    allowPaidBroadcast: allowPaidBroadcast,
  );
}