mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-12 18:19:34 +00:00
Implement sending media group via webhook-response
This commit is contained in:
parent
3e6114a04a
commit
e51810fc5e
1 changed files with 82 additions and 1 deletions
|
|
@ -4,7 +4,7 @@ import datetime
|
||||||
import functools
|
import functools
|
||||||
import ipaddress
|
import ipaddress
|
||||||
import typing
|
import typing
|
||||||
from typing import Dict, Optional, Union
|
from typing import Dict, List, Optional, Union
|
||||||
|
|
||||||
from aiohttp import web
|
from aiohttp import web
|
||||||
|
|
||||||
|
|
@ -739,6 +739,87 @@ class SendVideoNote(BaseResponse, ReplyToMixin):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class SendMediaGroup(BaseResponse):
|
||||||
|
"""
|
||||||
|
Use this method to send a group of photos or videos as an album.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__slots__ = ('chat_id', 'media', 'disable_notification', 'reply_to_message_id')
|
||||||
|
|
||||||
|
method = api.Methods.SEND_MEDIA_GROUP
|
||||||
|
|
||||||
|
def __init__(self, chat_id: Union[Integer, String],
|
||||||
|
media: Union[types.MediaGroup, List] = None,
|
||||||
|
disable_notification: typing.Union[Boolean, None] = None,
|
||||||
|
reply_to_message_id: typing.Union[Integer, None] = None):
|
||||||
|
"""
|
||||||
|
Use this method to send a group of photos or videos as an album.
|
||||||
|
|
||||||
|
Source: https://core.telegram.org/bots/api#sendmediagroup
|
||||||
|
|
||||||
|
:param chat_id: Unique identifier for the target chat or username of the target channel
|
||||||
|
:type chat_id: :obj:`typing.Union[base.Integer, base.String]`
|
||||||
|
:param media: A JSON-serialized array describing photos and videos to be sent
|
||||||
|
:type media: :obj:`typing.Union[types.MediaGroup, typing.List]`
|
||||||
|
:param disable_notification: Sends the message silently. Users will receive a notification with no sound.
|
||||||
|
:type disable_notification: :obj:`typing.Union[base.Boolean, None]`
|
||||||
|
:param reply_to_message_id: If the message is a reply, ID of the original message
|
||||||
|
:type reply_to_message_id: :obj:`typing.Union[base.Integer, None]`
|
||||||
|
:return: On success, an array of the sent Messages is returned.
|
||||||
|
:rtype: typing.List[types.Message]
|
||||||
|
"""
|
||||||
|
if media is None:
|
||||||
|
media = types.MediaGroup()
|
||||||
|
elif isinstance(media, list):
|
||||||
|
# Convert list to MediaGroup
|
||||||
|
media = types.MediaGroup(media)
|
||||||
|
|
||||||
|
self.chat_id = chat_id
|
||||||
|
self.media = media
|
||||||
|
self.disable_notifications = disable_notification
|
||||||
|
self.reply_to_message_id = reply_to_message_id
|
||||||
|
|
||||||
|
def prepare(self):
|
||||||
|
files = self.media.get_files()
|
||||||
|
if files:
|
||||||
|
raise TypeError('Allowed only file ID or URL\'s')
|
||||||
|
|
||||||
|
media = prepare_arg(self.media)
|
||||||
|
|
||||||
|
return {
|
||||||
|
'chat_id': self.chat_id,
|
||||||
|
'media': media,
|
||||||
|
'disable_notifications': self.disable_notifications,
|
||||||
|
'reply_to_message_id': self.reply_to_message_id
|
||||||
|
}
|
||||||
|
|
||||||
|
def attach_photo(self, photo: String, caption: String = None):
|
||||||
|
"""
|
||||||
|
Attach photo
|
||||||
|
|
||||||
|
:param photo:
|
||||||
|
:param caption:
|
||||||
|
:return: self
|
||||||
|
"""
|
||||||
|
self.media.attach_photo(photo, caption)
|
||||||
|
return self
|
||||||
|
|
||||||
|
def attach_video(self, video: String, caption: String = None, width: Integer = None,
|
||||||
|
height: Integer = None, duration: Integer = None):
|
||||||
|
"""
|
||||||
|
Attach video
|
||||||
|
|
||||||
|
:param video:
|
||||||
|
:param caption:
|
||||||
|
:param width:
|
||||||
|
:param height:
|
||||||
|
:param duration:
|
||||||
|
:return: self
|
||||||
|
"""
|
||||||
|
self.media.attach_video(video, caption, width=width, height=height, duration=duration)
|
||||||
|
return self
|
||||||
|
|
||||||
|
|
||||||
class SendLocation(BaseResponse, ReplyToMixin):
|
class SendLocation(BaseResponse, ReplyToMixin):
|
||||||
"""
|
"""
|
||||||
Use that response type for send location on to webhook.
|
Use that response type for send location on to webhook.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue