22
22
from .exceptions import LineBotApiError
23
23
from .http_client import HttpClient , RequestsHttpClient
24
24
from .models import (
25
- Error , Profile , MemberIds , Content , RichMenuResponse
25
+ Error , Profile , MemberIds , Content , RichMenuResponse , MessageQuotaResponse ,
26
+ MessageQuotaConsumptionResponse , MessageDeliveryBroadcastResponse
26
27
)
27
28
28
29
@@ -157,6 +158,55 @@ def multicast(self, to, messages, timeout=None):
157
158
'/v2/bot/message/multicast' , data = json .dumps (data ), timeout = timeout
158
159
)
159
160
161
+ def broadcast (self , messages , timeout = None ):
162
+ """Call broadcast API.
163
+
164
+ https://developers.line.biz/en/reference/messaging-api/#send-broadcast-message
165
+
166
+ Send messages to multiple users at any time.
167
+
168
+ :param messages: Messages.
169
+ Max: 5
170
+ :type messages: T <= :py:class:`linebot.models.send_messages.SendMessage` |
171
+ list[T <= :py:class:`linebot.models.send_messages.SendMessage`]
172
+ :param timeout: (optional) How long to wait for the server
173
+ to send data before giving up, as a float,
174
+ or a (connect timeout, read timeout) float tuple.
175
+ Default is self.http_client.timeout
176
+ :type timeout: float | tuple(float, float)
177
+ """
178
+ if not isinstance (messages , (list , tuple )):
179
+ messages = [messages ]
180
+
181
+ data = {
182
+ 'messages' : [message .as_json_dict () for message in messages ]
183
+ }
184
+
185
+ self ._post (
186
+ '/v2/bot/message/broadcast' , data = json .dumps (data ), timeout = timeout
187
+ )
188
+
189
+ def get_message_delivery_broadcast (self , date , timeout = None ):
190
+ """Get number of sent broadcast messages.
191
+
192
+ https://developers.line.biz/en/reference/messaging-api/#get-number-of-broadcast-messages
193
+
194
+ Gets the number of messages sent with the /bot/message/broadcast endpoint.
195
+
196
+ :param str date: Date the messages were sent. The format is `yyyyMMdd`(Timezone is UTC+9).
197
+ :param timeout: (optional) How long to wait for the server
198
+ to send data before giving up, as a float,
199
+ or a (connect timeout, read timeout) float tuple.
200
+ Default is self.http_client.timeout
201
+ :type timeout: float | tuple(float, float)
202
+ """
203
+ response = self ._get (
204
+ '/v2/bot/message/delivery/broadcast?date={date}' .format (date = date ),
205
+ timeout = timeout
206
+ )
207
+
208
+ return MessageDeliveryBroadcastResponse .new_from_json_dict (response .json )
209
+
160
210
def get_profile (self , user_id , timeout = None ):
161
211
"""Call get profile API.
162
212
@@ -519,7 +569,7 @@ def get_rich_menu_list(self, timeout=None):
519
569
or a (connect timeout, read timeout) float tuple.
520
570
Default is self.http_client.timeout
521
571
:type timeout: float | tuple(float, float)
522
- :rtype: list(T <= :py:class:`linebot.models.reponse .RichMenuResponse`)
572
+ :rtype: list(T <= :py:class:`linebot.models.responses .RichMenuResponse`)
523
573
:return: list[RichMenuResponse] instance
524
574
"""
525
575
response = self ._get (
@@ -533,6 +583,46 @@ def get_rich_menu_list(self, timeout=None):
533
583
534
584
return result
535
585
586
+ def get_message_quota (self , timeout = None ):
587
+ """Call Get the target limit for additional messages.
588
+
589
+ https://developers.line.biz/en/reference/messaging-api/#get-quota
590
+
591
+ :param timeout: (optional) How long to wait for the server
592
+ to send data before giving up, as a float,
593
+ or a (connect timeout, read timeout) float tuple.
594
+ Default is self.http_client.timeout
595
+ :type timeout: float | tuple(float, float)
596
+ :rtype: :py:class:`linebot.models.responses.MessageQuotaResponse`
597
+ :return: MessageQuotaResponse instance
598
+ """
599
+ response = self ._get (
600
+ '/v2/bot/message/quota' ,
601
+ timeout = timeout
602
+ )
603
+
604
+ return MessageQuotaResponse .new_from_json_dict (response .json )
605
+
606
+ def get_message_quota_consumption (self , timeout = None ):
607
+ """Get number of messages sent this month.
608
+
609
+ https://developers.line.biz/en/reference/messaging-api/#get-consumption
610
+
611
+ :param timeout: (optional) How long to wait for the server
612
+ to send data before giving up, as a float,
613
+ or a (connect timeout, read timeout) float tuple.
614
+ Default is self.http_client.timeout
615
+ :type timeout: float | tuple(float, float)
616
+ :rtype: :py:class:`linebot.models.responses.MessageQuotaConsumptionResponse`
617
+ :return: MessageQuotaConsumptionResponse instance
618
+ """
619
+ response = self ._get (
620
+ '/v2/bot/message/quota/consumption' ,
621
+ timeout = timeout
622
+ )
623
+
624
+ return MessageQuotaConsumptionResponse .new_from_json_dict (response .json )
625
+
536
626
def _get (self , path , params = None , headers = None , stream = False , timeout = None ):
537
627
url = self .endpoint + path
538
628
0 commit comments