2020-06-14 18:18:29 +03:00
from __future__ import annotations
2024-11-02 16:13:45 +02:00
from typing import TYPE_CHECKING , Any , Optional , Union
2019-11-03 22:14:41 +02:00
2023-12-31 01:40:44 +02:00
from pydantic import Field
2024-01-27 17:19:45 +02:00
from . . client . default import Default
2019-11-03 22:14:41 +02:00
from . . types import (
2025-03-08 02:19:57 +02:00
ChatIdUnion ,
DateTimeUnion ,
InputPollOptionUnion ,
2019-11-03 22:14:41 +02:00
Message ,
2021-01-26 21:20:52 +02:00
MessageEntity ,
2025-03-08 02:19:57 +02:00
ReplyMarkupUnion ,
2023-12-31 01:40:44 +02:00
ReplyParameters ,
2019-11-03 22:14:41 +02:00
)
2023-03-11 20:46:36 +02:00
from . base import TelegramMethod
2020-06-14 18:18:29 +03:00
2019-11-03 22:14:41 +02:00
class SendPoll ( TelegramMethod [ Message ] ) :
"""
2021-01-26 21:20:52 +02:00
Use this method to send a native poll . On success , the sent : class : ` aiogram . types . message . Message ` is returned .
2019-11-03 22:14:41 +02:00
Source : https : / / core . telegram . org / bots / api #sendpoll
"""
__returning__ = Message
2023-03-11 20:46:36 +02:00
__api_method__ = " sendPoll "
2019-11-03 22:14:41 +02:00
2025-03-08 02:19:57 +02:00
chat_id : ChatIdUnion
2021-01-26 21:20:52 +02:00
""" Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`) """
2019-11-03 22:14:41 +02:00
question : str
2021-01-26 21:20:52 +02:00
""" Poll question, 1-300 characters """
2025-03-08 02:19:57 +02:00
options : list [ InputPollOptionUnion ]
2024-05-06 23:27:54 +03:00
""" A JSON-serialized list of 2-10 answer options """
2024-04-22 13:48:49 +03:00
business_connection_id : Optional [ str ] = None
""" Unique identifier of the business connection on behalf of which the message will be sent """
2022-11-06 14:28:21 +02:00
message_thread_id : Optional [ int ] = None
""" Unique identifier for the target message thread (topic) of the forum; for forum supergroups only """
2024-05-06 23:27:54 +03:00
question_parse_mode : Optional [ Union [ str , Default ] ] = Default ( " parse_mode " )
""" Mode for parsing entities in the question. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details. Currently, only custom emoji entities are allowed """
2024-11-02 16:13:45 +02:00
question_entities : Optional [ list [ MessageEntity ] ] = None
2024-05-06 23:27:54 +03:00
""" A JSON-serialized list of special entities that appear in the poll question. It can be specified instead of *question_parse_mode* """
2020-01-24 01:07:22 +02:00
is_anonymous : Optional [ bool ] = None
2021-11-08 02:37:37 +02:00
""" :code:`True`, if the poll needs to be anonymous, defaults to :code:`True` """
2020-01-24 01:07:22 +02:00
type : Optional [ str ] = None
""" Poll type, ' quiz ' or ' regular ' , defaults to ' regular ' """
allows_multiple_answers : Optional [ bool ] = None
2021-11-08 02:37:37 +02:00
""" :code:`True`, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to :code:`False` """
2020-01-24 01:07:22 +02:00
correct_option_id : Optional [ int ] = None
""" 0-based identifier of the correct answer option, required for polls in quiz mode """
2020-05-02 23:01:32 +03:00
explanation : Optional [ str ] = None
2021-01-26 21:20:52 +02:00
""" Text 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 """
2024-01-27 17:19:45 +02:00
explanation_parse_mode : Optional [ Union [ str , Default ] ] = Default ( " parse_mode " )
2021-01-26 21:20:52 +02:00
""" Mode for parsing entities in the explanation. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details. """
2024-11-02 16:13:45 +02:00
explanation_entities : Optional [ list [ MessageEntity ] ] = None
2024-05-06 23:27:54 +03:00
""" A JSON-serialized list of special entities that appear in the poll explanation. It can be specified instead of *explanation_parse_mode* """
2020-05-02 23:01:32 +03:00
open_period : Optional [ int ] = None
2021-01-26 21:20:52 +02:00
""" Amount of time in seconds the poll will be active after creation, 5-600. Can ' t be used together with *close_date*. """
2025-03-08 02:19:57 +02:00
close_date : Optional [ DateTimeUnion ] = None
2021-01-26 21:20:52 +02:00
""" Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future. Can ' t be used together with *open_period*. """
2020-01-24 01:07:22 +02:00
is_closed : Optional [ bool ] = None
2022-08-14 16:32:29 +03:00
""" Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview. """
2019-11-03 22:14:41 +02:00
disable_notification : Optional [ bool ] = None
2021-01-26 21:20:52 +02:00
""" Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound. """
2024-01-27 17:19:45 +02:00
protect_content : Optional [ Union [ bool , Default ] ] = Default ( " protect_content " )
2022-02-19 01:45:59 +02:00
""" Protects the contents of the sent message from forwarding and saving """
2024-11-02 16:13:45 +02:00
allow_paid_broadcast : Optional [ bool ] = None
""" Pass :code:`True` to allow up to 1000 messages per second, ignoring `broadcasting limits <https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once>`_ for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot ' s balance """
2024-05-31 20:07:11 +03:00
message_effect_id : Optional [ str ] = None
""" Unique identifier of the message effect to be added to the message; for private chats only """
2023-12-31 01:40:44 +02:00
reply_parameters : Optional [ ReplyParameters ] = None
""" Description of the message to reply to """
2025-03-08 02:19:57 +02:00
reply_markup : Optional [ ReplyMarkupUnion ] = None
2024-05-06 23:27:54 +03:00
""" Additional interface options. A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_, `custom reply keyboard <https://core.telegram.org/bots/features#keyboards>`_, instructions to remove a reply keyboard or to force a reply from the user """
2023-12-31 01:40:44 +02:00
allow_sending_without_reply : Optional [ bool ] = Field (
None , json_schema_extra = { " deprecated " : True }
)
""" Pass :code:`True` if the message should be sent even if the specified replied-to message is not found
. . deprecated : : API : 7.0
https : / / core . telegram . org / bots / api - changelog #december-29-2023"""
reply_to_message_id : Optional [ int ] = Field ( None , json_schema_extra = { " deprecated " : True } )
""" If the message is a reply, ID of the original message
. . deprecated : : API : 7.0
https : / / core . telegram . org / bots / api - changelog #december-29-2023"""
2023-08-04 00:30:27 +03:00
if TYPE_CHECKING :
# DO NOT EDIT MANUALLY!!!
# This section was auto-generated via `butcher`
def __init__ (
__pydantic__self__ ,
* ,
2025-03-08 02:19:57 +02:00
chat_id : ChatIdUnion ,
2023-08-04 00:30:27 +03:00
question : str ,
2025-03-08 02:19:57 +02:00
options : list [ InputPollOptionUnion ] ,
2024-04-22 13:48:49 +03:00
business_connection_id : Optional [ str ] = None ,
2023-08-04 00:30:27 +03:00
message_thread_id : Optional [ int ] = None ,
2024-05-06 23:27:54 +03:00
question_parse_mode : Optional [ Union [ str , Default ] ] = Default ( " parse_mode " ) ,
2024-11-02 16:13:45 +02:00
question_entities : Optional [ list [ MessageEntity ] ] = None ,
2023-08-04 00:30:27 +03:00
is_anonymous : Optional [ bool ] = None ,
type : Optional [ str ] = None ,
allows_multiple_answers : Optional [ bool ] = None ,
correct_option_id : Optional [ int ] = None ,
explanation : Optional [ str ] = None ,
2024-01-27 17:19:45 +02:00
explanation_parse_mode : Optional [ Union [ str , Default ] ] = Default ( " parse_mode " ) ,
2024-11-02 16:13:45 +02:00
explanation_entities : Optional [ list [ MessageEntity ] ] = None ,
2023-08-04 00:30:27 +03:00
open_period : Optional [ int ] = None ,
2025-03-08 02:19:57 +02:00
close_date : Optional [ DateTimeUnion ] = None ,
2023-08-04 00:30:27 +03:00
is_closed : Optional [ bool ] = None ,
disable_notification : Optional [ bool ] = None ,
2024-01-27 17:19:45 +02:00
protect_content : Optional [ Union [ bool , Default ] ] = Default ( " protect_content " ) ,
2024-11-02 16:13:45 +02:00
allow_paid_broadcast : Optional [ bool ] = None ,
2024-05-31 20:07:11 +03:00
message_effect_id : Optional [ str ] = None ,
2023-12-31 01:40:44 +02:00
reply_parameters : Optional [ ReplyParameters ] = None ,
2025-03-08 02:19:57 +02:00
reply_markup : Optional [ ReplyMarkupUnion ] = None ,
2023-12-31 01:40:44 +02:00
allow_sending_without_reply : Optional [ bool ] = None ,
reply_to_message_id : Optional [ int ] = None ,
2023-08-04 00:30:27 +03:00
* * __pydantic_kwargs : Any ,
) - > None :
# DO NOT EDIT MANUALLY!!!
# This method was auto-generated via `butcher`
# Is needed only for type checking and IDE support without any additional plugins
super ( ) . __init__ (
chat_id = chat_id ,
question = question ,
options = options ,
2024-04-22 13:48:49 +03:00
business_connection_id = business_connection_id ,
2023-08-04 00:30:27 +03:00
message_thread_id = message_thread_id ,
2024-05-06 23:27:54 +03:00
question_parse_mode = question_parse_mode ,
question_entities = question_entities ,
2023-08-04 00:30:27 +03:00
is_anonymous = is_anonymous ,
type = type ,
allows_multiple_answers = allows_multiple_answers ,
correct_option_id = correct_option_id ,
explanation = explanation ,
explanation_parse_mode = explanation_parse_mode ,
explanation_entities = explanation_entities ,
open_period = open_period ,
close_date = close_date ,
is_closed = is_closed ,
disable_notification = disable_notification ,
protect_content = protect_content ,
2024-11-02 16:13:45 +02:00
allow_paid_broadcast = allow_paid_broadcast ,
2024-05-31 20:07:11 +03:00
message_effect_id = message_effect_id ,
2023-12-31 01:40:44 +02:00
reply_parameters = reply_parameters ,
2023-08-04 00:30:27 +03:00
reply_markup = reply_markup ,
2023-12-31 01:40:44 +02:00
allow_sending_without_reply = allow_sending_without_reply ,
reply_to_message_id = reply_to_message_id ,
2023-08-04 00:30:27 +03:00
* * __pydantic_kwargs ,
)